为什么TIME_WAIT状态是2MSL?(2个原因)
为什么TIME_WAIT的时间是2MSL? 先来看看上文中TIME_WAIT状态存在的两个理由。
首先看理由1,为了可靠地实现全双工连接的终止,假设图2-5中客户端发送的最后一个ACK丢失,服务端将重传FIN,为了能够收到这个超时重传的FIN,客户端需要TIME_WAIT状态;那TIME_WAIT状态就必须是2MSL了吗?其实这个要看服务端FIN的超时重传时间RTO,如果RTO小于MSL,那TIME_WAIT状态MSL就够了,如果RTO大于2MSL那么TIME_WAIT状态2MSL也是不够的,所以只有RTO在MSL和2MSL之间的时候,TIME_WAIT状态存在的理由1才是TIME_WAIT的时间是2MSL的原因。其实一般情况下,RTO都是远远小于MSL的,但考虑到最糟糕的情况,RTO是为2MSL,所以TIME_WAIT状态为2MSL可以保证最糟糕情况也可以收到超时重传的FIN。
TIME_WAIT的时间是2MSL另外一个重要原因理由2,为了保证本连接持续的时间所产生的所有分组都从网络中消失,也就是保证新建立一个TCP连接时,来自该连接老的重复分组都已经在网络中消失了。这里可能有的人会有个疑问:客户端回复最后一个ACK之后,感觉一个MSL就可以所有分组消失了啊,为什么还要2MSL所有分组才消失呢?我的理解是:
假设客户端发送ACK刚刚过了一个MSL时间,而服务端在收到这个ACK之前一瞬间刚好启动超时重传FIN,所以要等这个FIN也消失,就是2MSL了。文中所指的另一个方向的应答应该就是这个超时重传的FIN。
参考来源:《UNIX 网络编程 卷1》第3版)
为什么TIME_WAIT状态是2MSL?(2个原因)相关推荐
- linux服务器上tcp有大量time_wait状态的解决方法和原因解释
在检查服务器时,发现有很多连接超时情况出现,用netstat命令查看,tcp的time_wait状态较多,需要进行优化. 1. 看一下现在time_wait的数量 netstat -an | grep ...
- TCP的TIME_WAIT状态为什么要等待2MSL的时长
TCP四次挥手的第四次挥手后为什么要经过TIME_WAIT状态? TIME_WAIT状态为什么是2MSL的时长?为什么不是等待其他时长? TCP第四次挥手后为什么要经过TIME_WAIT状态? 第四次 ...
- TIME_WAIT状态产生的原因、过多的危害
一.TCP连接断开的四次挥手: 由于TCP连接是全双工的,因此每个方向都必须单独进行关闭. 其原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接.收到一个 FIN只意味着这一方向 ...
- 为什么tcp的TIME_WAIT状态要维持2MSL
本文主要分析为什么TIME_WAIT状态的持续时间是2MSL而不是1MSL,3MSL或其它的时长,而不会详细描述为什么需要TIME_WAIT状态. 阅读本文需要的预备知识: 了解TCP协议的状态变迁: ...
- TIME_WAIT状态及存在原因
1. 客户端与服务器端建立TCP/IP连接后关闭SOCKET后,服务器端连接的端口状态为TIME_WAIT: 2. 主动关闭的Socket端会进入TIME_WAIT状态,并且持续2MSL时间长度, ...
- Linux-TCP/IP TIME_WAIT状态原理
TIME_WAIT状态原理 ---------------------------- 通信双方建立TCP连接后,主动关闭连接的一方就会进入TIME_WAIT状态. 客户端主动关闭连接时,会发送最后一个 ...
- TCP/IP TIME_WAIT状态原理
TIME_WAIT状态原理 ---------------------------- 通信双方建立TCP连接后,主动关闭连接的一方就会进入TIME_WAIT状态. 客户端主动关闭连接时,会发送最后一个 ...
- linux 进程 状态 ri,LINUX下解决netstat查看TIME_WAIT状态过多问题(转)
# netstat -an|awk '/tcp/ {print $6}'|sort|uniq -c 16 CLOSING 130 ESTABLISHED 298 FIN_WAIT1 13 FIN_WA ...
- TCP/IP详解--TIME_WAIT状态详解
Socket中的TIME_WAIT状态 在高并发短连接的server端,当server处理完client的请求后立刻closesocket此时会出现time_wait状态然后如果client再并发20 ...
- 网络基础问题整理:为什么TCP四次挥手最后需要TIME_WAIT状态?
一:首先奉上 TCP三次握手的过程 TCP三次握手的过程 TCP连接释放的过程: TCP连接释放的过程 二: 1.为什么两次就建立连接还要三次握手呢?这主要是为了防止已失效的连接请求报文又突然传递服务 ...
最新文章
- uboot移植参考资料
- 基于MATLAB的TDOA算法的仿真
- 网易云信助力中国航空工业集团,打造数字化云办公平台
- Hibernate二级缓存配置
- 自动化测试 之 “好用例、坏用例”
- python 新建文件 hdfs_python基础操作以及hdfs操作
- easyPR源码解析之chars_identify.h
- java 网页通讯_Vue+Java 通过websocket实现服务器与客户端双向通信操作
- pandas 导入excel_三行Python代码,合并多个Excel文件
- Scrapy爬虫框架详解
- php定义一个矩形类rectangle,Python3面向对象—点和矩形类
- Crate 数据库安装与使用
- 高端装备的AC主轴头结构
- excel减法函数_数据工作中常用到的EXCEL技巧之文本分析类
- 厦门大学437社会工作实务考研参考书目
- python初学一(字符串str的处理方式)
- 个人小作品之迷你音乐播放器(移动端)
- 第六届蓝桥杯决赛真题:穿越雷区
- 活动预告:BetaEX线上春季发布会 | TokenInsight
- CAN通讯方式--秉火STM32学习笔记