参考文献

  • 小林Coding图解网络笔记

TCP三次握手

image.png

原因

  1. 通俗解释:通信双方确保对方有收发信息的能力
  2. 具体原因
    1. 防止历史连接影响(不用2次握手的具体原因)

image.png

只使用两次握手的话,会导致服务器和客户端的历史连接请求建立了连接。造成客户端和服务器端的混乱。

  1. 避免资源浪费(不用四次握手的具体原因)

image.png

四次握手,响应客户端SYN包和返回自己的seq的步骤分成了两步。不是必要的。两步可以合成一步

TCP四次挥手

image.png

原因

  1. 四次挥手的原因:客户端发出FIN终止连接包后,服务端可能还有数据要传输,所以只能响应一个简单的ACK包。之后确实发完数据后,返回一个FIN包。客户端需要礼貌性的再给个ACK。
  2. 2MSL等待时间的作用
    1. 官方解释:2MSL确保客户端的最后一个ACK可以被服务端收到。
      1. 2MSL提供了 ACK丢失且FIN重传的一个时间保证
      2. 2MSL内若收到重发FIN包,会重新计时
      3. 若不保证ACK的被服务端收到,客户端的再次连接可能会被RST掉
    2. 2MSL也可以保证一些FIN包之前服务端数据包延迟的发送到了客户端