1. http
-
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World
Wide Web )服务器传输超文本到本地浏览器的广泛应用的网络传输协议。 -
HTTP是基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
-
三个注意事项
- HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
无连接 - HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
- HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
- HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
2. TCP三次握手四次挥手
-
半连接:服务器收到SYN包而还未收到ACK包时的连接状态称为半连接。
-
半连接队列:在三次握手协议中,服务器维护一个半连接队列,该队列为每个客户端的SYN包(SYN=i )开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于SYN_ RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。
参考 -
seq: 序号(seq)用来标识从TCP发端向TCP收端发送的数据字节流,它表示在这个报文段中的的第一个数据字节的编号。
-
ack: 确认号包含发送确认的一端所期望收到的下一个序号。确认号之前的数据已经全部成功接收。
-
DOS(Denial of Service,即拒绝服务)攻击:让目标机器停止提供服务或资源访问。
3. TCP流量控制——滑动窗口
发送TCP要对能够接受多少从发送进程传来的数据进行控制;
接受tcp要对发送TCP能够发送多少数据进行控制
流量控制是为了控制发送方发送速率,防止接受方因数据过多而来不及处理。
接收方发送的确认报文中的窗口字段可以⽤来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为 0,则发送方不能发送数据。
- 为平衡发送方产生数据的速度和接受方消耗数据的速度,两边各有发送缓存和接受缓存。
- 发送窗口一部分是已发送正在等待确认的字节,另一部分是可以发送的字节。
- 接收窗口的大小 = 接收缓存的大小 - 正在等待进程拉取的字节数
- 当发送TCP传来更多数据,接收窗口关闭(左壁右移);当更多字节被进程拉取,接收窗口打开(右壁右移)。
- 发送窗口的大小受接收方的控制。当一个新的确认到达,且这个确认允许时,发送窗口关闭(左壁右移);当接收方通告的窗口大小允许时,发送窗口会打开(右壁右移)。
4. 糊涂窗口综合征(滑动窗口操作中出现的问题)
发送应用程序产生数据的速度很慢,或接收应用程序消耗数据的速度很慢,或二者都有。会使发送数据的报文段很小,会降低运行的效率,使用网络容量的效率非常低。
5. DNS
-
DNS 客户端和本地域名服务器之间使用TCP
-
本地域名服务器和其他的域名服务器之间使用的是UDP
-
为什么要用UDP
参考
浏览器响应时间= DNS域名解析时间 + TCP 连接建立时间 + HTTP交易时间 -
DNS解析过程
-
迭代解析
本地域名服务器不断去问其他的域名服务器
本地问A,A告诉本地去问B -
递归解析
本地域名服务器问A域名服务器,A不知道会去问B,B再去问C -
A记录——记录主机名和IP地址的对应关系
NS记录——用来表明由哪台服务器对该域名进行解析
参考
6. HTTPS
-
提供运输层安全的协议:
- SSL(安全套接层)协议
- TLS(运输层安全)协议
提供对服务器和客户的鉴别以及数据的保密和完整性。从应用层传来的数据经过压缩(可选)、签名和加密,再被传给可靠的运输层协议。
-
加密方法族——密钥交换、散列以及加密算法
- 散列算法——提供报文完整性
-
SSL两层4个协议
-
记录协议:一个载体,运载来自其他三个协议的报文以及来自应用层的数据。
- 上一层的数据经过分片和压缩(可选)处理,再用协商后的散列算法计算得到MAC(报文鉴别码,message authentication code),并将其添加到压缩后的报文上。这个压缩后的分片与MAC一起经过协商后的加密算法的加密。最后在加密的报文上添加SSL首部。
-
握手协议:为记录协议提供安全参数。建立加密集并提供密钥和安全参数,负责客户和服务器的鉴别。
- 第一阶段——安全能力的建立。确定要使用的SSL版本、加密的算法、压缩的方法以及用于密钥生成的两个随机数;
- 第二阶段——服务器密钥的交换和鉴别。用来鉴别服务器;
- 第三阶段——客户密钥的交换和鉴别。用来鉴别客户;
- 第四阶段——完成和结束。客户和服务器互相发送报文以更改加密规约,并结束握手协议。
-
改变加密规约协议:通知各项加密用密钥/参数已准备好。
-
告警协议:报告异常状况。
-
-
加密
- 对称密钥加密方法——加密解密使用相同的密钥(密钥是双方共享的),并且这个密钥可用于双向通信。P706
- 不对称密钥加密方法——密钥属于个人,每个人要生成并保存自己的密钥。P715