一 网络分层模型
OSI七层模型与实际开发中的四层模型
二 TCP/IP协议簇
三 TCP数据包格式
四 TCP的三次握手
-
首先 Client 端发送连接请求报文
-
Server 段接受连接后回复 ACK 报文,并为这次连接分配资源。
-
Client 端接收到 ACK 报文后也向 Server 段发生 ACK 报文,并分配资源,这样 TCP 连接就建立了。
为什么是三次?
他是全双工的,双方同时连接,所以服务器的请求与对客户端的回复一次都实现了。
五 TCP的四次挥手
- 服务端申请断开连接即FIN,发送Seq+Ack
- 客户端接收信息返回,表示我已经接收到
- 客户端发送信息表示可以断开连接
- 服务端接受信息,返回数据表示已接受信息
为什么是四次?
因为双方不是同时断开,所以需要分别确认,即处于半关闭的状态,发送关闭的一方将不会再发送消息,但是他可以接受消息,即半关闭,直至另一端也关闭,才完全关闭。
六 TCP为什么可靠
1 滑动窗口
会确认数据,数据不对会请求重传。重传分为两种:超时重传和快速重传。
超时重传(RTO)
当一个包被发送后,就开启一个定时器,如果定时时间到了,还未收到能确认该发送包的应答包,就重传一份数据。注意收到的应答包可能是该包也可能是后面包的,但是只要能确认该包被收到就行。另外如果,是因为网络延时造成重传,则接受端收到重复数据包后丢弃该包。
快速重传
当如果发送端收到一个包的三次应答包后,立即重传,比超时重传更高效。
2拥塞控制
总共四种:慢开始,拥塞避免,快重传,快恢复
连接