传输过程
一般的互联网网络模型分为5层:应用层、传输层、网络层、数据链路层和物理层
- 应用层封装数据后传递给传输层
- 传输层将应用层的数据拼接TCP包头后传递给网络层
- 网络层将数据拼接上以太网包头后传递给数据链路层
- 数据链路层将数据通过物理层传输到网络当中
应用层
https
基本交流程
当客户端访问某个服务器的时候,服务器会返回数字证书(公钥、公司基本信息及数字签名),客户端通过预置的CA列表验证证书合法性,然后生成随机对称秘钥,通过证书中的公钥对对称秘钥进行加密后传输给服务端,服务端通过私钥解密后获取对称秘钥,之后客户端和服务端就可以通过对称秘钥通信
如何防止证书被篡改
- 服务端将公钥和其基本信息通过hash算法生成消息摘要
- 通过CA的私钥将消息摘要再进行加密生成数字签名
- 服务端会将公钥及其基本信息和数字签名组合成数字证书都传输给客户端
- 客户端通过对基本信息通过hash算法生成的摘要信息和用CA公钥解密数字签名后得到的摘要信息对比,如果一致就代表没有被篡改过
TCP
拥塞控制
TCP的拥塞控制主要分为:慢开始和快重传
当刚开始传输时,cwnd(拥塞窗口)大小为1,在达到ssthresh(慢开始门限)前都以指数方式增长,当达到ssthresh后开始以线性增长(每次加1),当网络出现超时后,将ssthresh降为此时窗口大小的一半,窗口按线性继续增长
流量控制
TCP的流量控制主要是让发送方的发送速率不要太快,要让接收方来得及接收。其主要控制手段为滑动窗口协议
在3次握手的阶段,接收方就会把自己能处理的窗口大小告诉发送端,例如:接收端的滑动窗口大小为400,此时发送端发了2个包分别是1-100和101-200,而接收端已经处理完成了第一个1-100的包,所以确认可以发送201-500的包,窗口大小为300。
当发送端连续发出包,而接收端来不及处理,此时就会返回0窗口,那么此时发送端就不再发送数据,当接收端处理部分数据有了存储空间时,接收端会发送非0窗口通知给发送端。但是如果接收端的非0窗口在发送过程中丢失了,就会导致死锁,对于这种情况TCP为每个连接设有一个持续计数器,若此计数器的时间到期,就会发送一个0窗口探测报文段,如果窗口依旧是0,那么就重新设置计数器进行等待,如果此时窗口不为0,就可打破死锁僵局
