一、参考文章
https://blog.csdn.net/lengxiao1993/article/details/82771768
多次在网络博客上学习到的错误解读是:
- 防止已失效的连接请求又传送到服务器端,因而产生错误。
但这种解释不准确。
正确的解释是:
- 为了实现可靠数据传输, TCP 协议的通信双方, 都必须维护一个序列号, 以标识发送出去的数据包中, 哪些是已经被对方收到的。 三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已经收到了序列号起始值的必经步骤。
- 如果只是两次握手, 至多只有连接发起方的起始序列号能被确认, 另一方选择的序列号则得不到确认。
第一次握手:客户端向服务器端发送链接请求的报文段,syn(请求序列连接)=1,seq=x,等待服务器确认;
第二次握手:服务器收到syn包并确认,同时发送一个syn包应答,syn=1,seq=y,ack=x+1;
第三次握手:客户端收到服务器的连接应答包后,向服务器发送确认包ACK,发送完毕后,双方进入TCP成功连接状态&#x