tcpip是什么 tcpip协议通俗易懂( 三 )


3.为什么要等待 2MSL
MSL:报文段最大生存时间,它是任何报文段被丢弃前在网络内的最长时间
原因如下:
保证TCP协议的全双工连接能够可靠关闭
保证这次连接的重复数据从网络中消息
第一点: 如果主机1直接 关闭,由于IP协议的不可靠性或者其他网络原因,导致主机2没有收到主机1最后回复的 ACK 。那么主机2就会在超时之后继续发送 FIN,此时由于主机1已经关闭,就找不到与重发的 FIN 对应的连接 。所以,主机1 不是直接进入 关闭,而是TIME_WAIT 状态 。当再次收到 FIN 的时候,能够保证对方收到 ACK,最后正确关闭连接 。
第二点:如果主机1直接 关闭,然后又再向主机 2 发起一个新连接,我们不能保证这个新连接与刚才关闭的连接端口是不同的 。也就是说有可能新连接和老连接的端口号是相同的 。一般来说不会发生什么问题,但还是有特殊情况出现;假设新连接和已经关闭的老连接端口号是一样的,如果前一次连接的某些数据仍然滞留在网络中( Lost Duplicate ),那些延迟数据在建立新连接之后才到达主机2,由于新连接和老连接的端口号是一样的,TCP 协议就认为哪个延迟的数据时属于新连接的,这样就和真正的新连接的数据包发生混淆了 。所以TCP连接要在 TIME_WAIT 状态等待两倍 MSL,保证本次连接的所有数据都从网络中消失 。
【tcpip是什么 tcpip协议通俗易懂】注:需要C/C++ Linux服务器开发学习资料私信“资料”(资料包括C/C++,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等),免费分享

推荐阅读