参考文献
- 小林Coding图解网络笔记
TCP三次握手
原因
- 通俗解释:通信双方确保对方有收发信息的能力
- 具体原因
- 防止历史连接影响(不用2次握手的具体原因)
只使用两次握手的话,会导致服务器和客户端的历史连接请求建立了连接。造成客户端和服务器端的混乱。
- 避免资源浪费(不用四次握手的具体原因)
四次握手,响应客户端SYN包和返回自己的seq的步骤分成了两步。不是必要的。两步可以合成一步
TCP四次挥手
原因
- 四次挥手的原因:客户端发出FIN终止连接包后,服务端可能还有数据要传输,所以只能响应一个简单的ACK包。之后确实发完数据后,返回一个FIN包。客户端需要礼貌性的再给个ACK。
- 2MSL等待时间的作用
- 官方解释:2MSL确保客户端的最后一个ACK可以被服务端收到。
- 2MSL提供了 ACK丢失且FIN重传的一个时间保证
- 2MSL内若收到重发FIN包,会重新计时
- 若不保证ACK的被服务端收到,客户端的再次连接可能会被RST掉
- 2MSL也可以保证一些FIN包之前服务端数据包延迟的发送到了客户端
- 官方解释:2MSL确保客户端的最后一个ACK可以被服务端收到。