MSL是Maximum Segment Lifetime的缩写,译为报文最大生存时间,也就是任何报文在网络上存活的最大时间,一旦超过该时间,报文就会被丢弃。2MSL也就是指的2倍MSL的时间。

回归主题,首先回顾一下TCP的三次握手与四次挥手。

假如第四次挥手失败了,因为丢失而未到达服务器会怎样呢?这样,服务器会一直收不到客户端的回应,也就无法得知客户端是否收到了即将要断开连接的请求。客户端此刻还蒙在鼓里,还在等待服务器继续发送消息。服务器不能判断客户端是否收到,本身就是一个BUG,于是才有的等待2MSL的情况。为了保证客户端最后一次挥手的报文能够到达服务器,若第4次挥手的报文段丢失了,服务器就会超时重传第3次挥手的报文段,所以客户端此时不是直接进入CLOSED,而是保持TIME_WAIT(等待2MSL就是TIME_WAIT)。当客户端再次受到服务器因为超时重传而发送的第3次挥手的请求时,客户端就会重新给服务器发送第4次挥手的报文(保证服务器能够受到客户端的回应报文)。最后,客户端、服务器才真正断开连接。说白了,等待2MSL就是为了确保服务器能够受到客户端最后的回应。
如果客户端直接CLOSED,然后又再次向服务器发起一个新连接,谁也不能保证新发起的连接和刚关闭的连接的端口号是不同的,有可能新、老连接的端口号就是一样的。假设新、老连接端口号一致,若老连接的一些数据仍滞留在网络中,这些滞留数据在新连接建立后才到达服务器,鉴于前后端口号一致,TCP协议就默认这些数据属于新连接,于是数据就这样乱成一锅粥了。所以TCP连接还要在TIME_WAIT状态下等待2MSL,确保所有老连接的数据都在网络中消失!

TCP第4次挥手为何要等待2MSL才关闭?相关推荐

  1. TCP第四次挥手为什么要等待2MSL(最长报文段寿命,Maximum Segment Lifetime)

    当客户端进入TIME-WAIT状态的时候(也就是第四次挥手的时候),必须经过时间计数器设置的时间2MSL(最长报文段寿命)后,才能进入关闭状态,这时为什么呢??? 这最主要是因为两个理由: 1.为了保 ...

  2. TCP第四次挥手为什么要等待2MSL

    当客户端进入TIME-WAIT状态的时候(也就是第四次挥手的时候),必须经过时间计数器设置的时间2MSL(最长报文段寿命)后,才能进入关闭状态,这时为什么呢???  这最主要是因为两个理由: 1.为了 ...

  3. TCP的四次挥手中的等待2MSL

    为什么time_wait需要等待2MSL? MSL:一个最大的生命周期,30秒--1分钟 1.保证TCP协议的全双工连接能够可靠关闭. 如果主动关闭方和被动关闭方的最后的一个确认(ack)包不等待2M ...

  4. 【计算机网络】2、TCP:四次挥手与TIME_WAIT、shutdown() 优雅关闭 server、探活、拥塞窗口与 Nagle 算法、端口占用、tcp 的流式协议、可靠性

    文章目录 六.四次挥手 与 TIME_WAIT 6.1 TIME_WAIT 的作用 6.2 TIME_WAIT 的危害和方案 七.server 用 shutdown() 优雅关闭 7.1 close( ...

  5. TCP第四次挥手后为什么要等待2MSL后才断开链接?等待时间为什么是2MSL?

    为何要等待2MSL? 1.假如第四次挥手失败了,因为丢失而未到达服务器会怎样呢?这样,服务器会一直收不到客户端的回应,也就无法得知客户端是否收到了即将要断开连接的请求.客户端此刻还蒙在鼓里,还在等待服 ...

  6. tcp四次挥手为何最后要等待2MSL时间?

    之前别人问过的一个问题,说是四次挥手为何要等待2MSL时间? 首先我们需要明白,MSL是表示什么意思? 其实是maxinum segment lifttime(报文最大存活时间),tcp发出的包是有一 ...

  7. TCP的四次挥手及为什么要等待2MSL

    一.四次挥手的详述 1.假设Client端发起中断连接请求,也就是发送FIN报文. 2.Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还 ...

  8. 【计算机网络】传输层 : TCP 连接管理 ( TCP 连接建立 | 三次握手 | TCP 连接释放 | 四次挥手 )

    文章目录 一.TCP 连接管理 二.TCP 连接建立 三.TCP 连接建立 相关报文段 字段 四.SYN 洪泛攻击 五.TCP 连接释放 一.TCP 连接管理 TCP 传输数据过程 : 建立连接 -& ...

  9. TCP协议-握手与挥手

    认识TCP协议 TCP全称为"传输控制协议",这是传输层的一个协议,对数据的传输进行一个详细的控制.  特点: 面向字节流 安全可靠 面向连接 TCP协议段格式 源端口号与目的端口 ...

最新文章

  1. IDEA 回滚SVN更新内容
  2. Spring boot使用Rabbitmq注解及消息序列化
  3. 【90】沟通:跨部门管理
  4. Storm集群开启HA高可用
  5. php判断简写,怎么简写php 中的三元运算符
  6. wampp更新php版本,有没有办法在XAMPP中使用两个PHP版本?
  7. 开课吧:AI智能语言产品会运用到哪些技术?
  8. Java Level 2 学习的八大名著
  9. 使用MySQL管理工具-SQLyog9.63报错号码2003,超详细解析
  10. Excepted in :flat namespace
  11. java spy_Java Spy - 代码跟踪神器
  12. Typora自制主题
  13. 全球及中国EOG放大器行业运行状况与投资前景建议报告2021-2027年版
  14. Android实现3DTouch效果
  15. 新人学Kungfu功夫开源量化,应该这样入手
  16. NBMiner_42.2内核震撼发布下载,nvidia30LHR版本显卡全系解锁100%
  17. 将毫秒转换为时间(HH:ss:mm)
  18. postgresql 随笔
  19. 无向图判断是否为欧拉回路(以HDU1878为板子题)
  20. [一键CV] Blazor 拖放上传文件转换格式并推送到浏览器下载

热门文章

  1. 多态实现机制:静态分派和动态分派
  2. JavaSE学习总结(六)——接口、抽象类、内部类
  3. python3 入门 (四) 类与继承
  4. 国内国外虚拟主机的对比
  5. 求大数阶乘(10000以内)
  6. memcached 安装
  7. WCF后传系列(5):深入WCF寻址Part 5—逻辑地址和物理地址
  8. kali 安装输入法
  9. 本蒟蒻对于二分图一些定理的理解
  10. mysql设计规范和原则