TCP/IP 协议要点
TCP 协议三次握手,四次挥手
- 三次握手
SYN, seq = x
A -----------------> B
ACK = x + 1, seq = y
A <----------------- B
ACK = y + 1
A -----------------> B
三次握手从根本上来讲是为了保证在一个不可信的信道上,进行可信的传输。在三次握手中,双方告知对方自己的序列号,并给出 ACK 确认, 有了序列号,就可以知道此后的传输是否乱序,是否重复,保证可靠的传输。
从建立连接的角度看,如果两次握手,假如客户端发出的一个请求连接的包在某个网络节点长时间滞留,那么客户端会发出新的请求,这次 请求正常到达,并与服务器通信,随后,通信关闭。此时,之前滞留的请求连接的包到达服务器,如果是两次握手,服务器就会建立连接,并等待 客户端发送数据,但是客户端永远不会发送数据。
- 四次挥手
FIN seq=x+3, ACK=y+1
A -----------------> B
ACK=x+3
A <----------------- B
FIN seq=y+1
A <----------------- B
ACK = y + 2
A -----------------> B
四次挥手的原因在于 TCP 的全双工通信,两端都需要发出 FIN,表示自己不再发送数据,并且给对方的 FIN 发出 ACK 确认。