TCP相关

h1 为什么TCP要三次握手?

如果两次握手,会出现如下情况:
Client发送的请求连接,因为网络问题,在某个网络节点堵塞了很长时间。长到Client该次的重传请求都断开连接了。之后的某一个时间节点,server收到了该次连接请求。然后回复ACK
如果只有两次,则直接建立连接。此时client端根本不care此次事件,将不往连接中喂数据。而server端一直在傻等数据,造成资源浪费。

h1 为什么TCP要四次挥手?

因为TCP是全双工的,建立连接的时候,Server端可以在ACK的时候同时将SYN置位1。而断开连接的时候,由于Client不再写数据的时候,Server端可能会继续写数据,所以ACK和FIN是要分开的,因此是四次而不是三次。

h1 为什么TCP四次挥手后,要Wait 2MSL再关闭连接

2MSL是网络中数据报文最大存活时间等待的原因有两点:

  1. 如果直接关闭,另一端未收到ACK,超时重传后,此时链接关闭了,因此找不到链接,会导致链接错乱。
  2. 等待该次连接的数据包都消失在网络中,避免下次链接使用相同的端口号时,错误的收到脏数据。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容