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

这最主要是因为两个理由:

1、为了保证客户端发送的最后一个ACK报文段能够到达服务器。因为这个ACK有可能丢失,从而导致处在LAST-ACK状态的服务器收不到对FIN-ACK的确认报文。服务器会超时重传这个FIN-ACK,接着客户端再重传一次确认,重新启动时间等待计时器。最后客户端和服务器都能正常的关闭。假设客户端不等待2MSL,而是在发送完ACK之后直接释放关闭,一但这个ACK丢失的话,服务器就无法正常的进入关闭连接状态。

2、他还可以防止已失效的报文段。客户端在发送最后一个ACK之后,再经过经过2MSL,就可以使本链接持续时间内所产生的所有报文段都从网络中消失。从保证在关闭连接后不会有还在网络中滞留的报文段去骚扰服务器。

注意:在服务器发送了FIN-ACK之后,会立即启动超时重传计时器。客户端在发送最后一个ACK之后会立即启动时间等待计时器。

TCP第四次挥手为什么要等待2MSL相关推荐

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

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

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

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

  3. TCP第4次挥手为何要等待2MSL才关闭?

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

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

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

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

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

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

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

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

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

  8. 详解TCP连接释放四次挥手过程

    TCP连接释放的过程叫做挥手,挥手需要在客户和服务器之间交换四个TCP报文段. 下图是四报文挥手释放TCP连接的过程: 数据传输结束后,通信的双方都可释放连接.现在A和B都处于ESTABLISHED状 ...

  9. TCP/IP / 四次挥手之状态转换图、过程说明和原因

    一.状态转换图 二.过程说明 1.Client:我要断开连接啦! 2.Server:好的!稍等,我这还有一些数据需要发送给你,等完事我再断开连接哈. --(server 向 client 发送数据) ...

最新文章

  1. 热议:这样的开源项目,你会支持吗?
  2. 第一个简单的DEMO
  3. 月薪5K的运维小白如何成为月薪5W的高级架构师?
  4. 改变静态文本notify 属性_CocosCreator脚本属性个性化定制——下拉列表属性、滑动条属性...
  5. Sybase数据库中找回丢失的sa密码
  6. 前端开发学习笔记(一)深入浅出Javascript
  7. 计算机改计数器的方法,第五章定时器计数器(修改)-计算机原理及应用资源共享课.ppt...
  8. MySql-流程函数
  9. iOS数据持久化 -- Core Data
  10. Spring框架中XML配置文件注入集合(数组、LIST、MAP、SET)属性
  11. mysql特有语法_MySQL 独有SQL语法汇总(一)
  12. (03)两个模型的交集、并集、差集
  13. 平时收集的一些有关UED的团队和个人博客
  14. [GIS] 火星坐标GCJ-02的实质 | 高德地图的实际坐标系
  15. 图片水印如何去除,怎样处理带水印的图片?
  16. 纸老虎【PATB1070】结绳 (25 分)
  17. Foxtable筛选特定时间的行
  18. acwing-378. 骑士放置(最小独立集)
  19. Nginx 读书摘抄
  20. hadoop集群迁移

热门文章

  1. link-cut-tree 简单介绍
  2. codeforces 732/D 二分
  3. 2016年,我的和自己谈谈
  4. Hibernate 笔记4 实现对数据库的增删改查
  5. 取消XP和2000专业版的IIS的用户数量限制
  6. dev c++ 报错[Error] ld returned 1 exit status 的解决办法
  7. python基础学习_35岁零基础学习Python编程是否能学得会并用得上
  8. Mysql函数访问oracle,Oracle与MySql函数
  9. 转义字符的使用和功能python_Python中转义符和格式符的混合使用,python,转义字符,与,格式化...
  10. yum mysql5.7位置_CentOS yum 安装 Mysql5.7