社区
网络编程
帖子详情
tcp 的 2MSL状态 究竟指哪两个数据包的MSL?
shark_boss
2013-11-05 04:48:18
tcp 的 2MSL状态 究竟指哪两个数据包的MSL?
...全文
361
3
打赏
收藏
tcp 的 2MSL状态 究竟指哪两个数据包的MSL?
tcp 的 2MSL状态 究竟指哪两个数据包的MSL?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shark_boss
2013-11-07
打赏
举报
回复
一个MSL为ack的MSL,第二个MSL为FIN的MSL,只是如果这两个数据包中途都丢失怎么办?主动关闭方经过2MSL后变为CLOSED状态,被动关闭方还处在LAST_ACK状态,还一直在重发FIN么?那这个重发的FIN会影响后续的相同四元组连接吧,这样来看,不能完全安全的关闭tcp连接呀
shark_boss
2013-11-05
打赏
举报
回复
大家积极参与呀///
shark_boss
2013-11-05
打赏
举报
回复
我的理解是这样的: 主动关闭方发送最后的ACK后有可能经过较长时间到达被动关闭方(或者丢失了),此时被动关闭方因为超时而重传FIN,这个超时时间应该远远小于MSL,所以第一个MSL应该是重传的FIN,第二个MSL应该是对重传的FIN的ACK数据包的
说一下什么是
tcp
的
2
MSL
,为什么客户端在 TIME-WAIT
状态
必须等待
2
MSL
的时间?
说一下什么是
tcp
的
2
MSL
,为什么客户端在 TIME-WAIT
状态
必须等待
2
MSL
的时间?
TCP
的TIME_WAIT
状态
为什么要等待
2
MSL
的时长
首先回答
TCP
四次挥手的第四次挥手后为什么要经过TIME_WAIT
状态
? 然后回答TIME_WAIT
状态
为什么要等待
2
MSL
的时长?为什么不是其他时间长度? 第四次挥手后为什么要经过TIME_WAIT
状态
? TIME_WAIT
状态
之后为什么要经过
2
MSL
(
2
MSL
,即
两个
最大报文段生存时间)的时长后才进入CLOSED
状态
,为什么不直接进入CLOSED
状态
? 因为客户端发送的第四次挥手的ACK
数据包
,服务端可能没有收到,那么服务端会在等待一段时候后重新发送第三次挥手的FIN
数据包
,客户端收到后再次发送第四次挥
TCP
中的
2
MSL
详解
MSL
是一个
TCP
段在网络中可以存活的最长时间,
2
MSL
就是两倍的这个时间。让网络中的
TCP
报文段自然消失。防止"老"
数据包
在网络中滞留。
TCP
的四次挥手中的等待
2
MSL
为什么time_wait需要等待
2
MSL
?
MSL
:一个最大的生命周期,30秒--1分钟 1、保证
TCP
协议的全双工连接能够可靠关闭。 如果主动关闭方和被动关闭方的最后的一个确认(ack)包不等待
2
MSL
时间的话,没发关闭。 如果说主动关闭方发送ack包给被动关闭方,被动关闭方没有收到请求,就会请求主动关闭方重传这个
数据包
,等待
2
MSL
是说如果遇到这种
数据包
的丢失,还可以重传
数据包
。 如果不等待
2
MSL
的话,遇到
数据包
丢失,就不可以重传
数据包
。那么被动关闭方就会一直保持一个LAST_ACK
状态
..
TCP
四次挥手中为什么 TIME_WAIT 等待的时间是
2
MSL
?
TIME_WAIT 等待 2 倍的
MSL
,比较合理的解释是: 网络中可能存在来自发送方的
数据包
,当这些发送方的
数据包
被接收方处理后又会向对方发送响应,所以。字段,是 IP 数据报可以经过的最大路由数,每经过一个处理他的路由器此值就减 1,当此值为 0 则数据报将被丢弃,同时发送 ICMP 报文通知源主机。比如,若 ACK 在一个
MSL
内丢失,这样被动方重发的 FIN 会在第 2 个
MSL
内到达,TIME_WAIT
状态
的连接可以应对。因为
TCP
报文基于是 IP 协议的,而 IP 头中有一个。
网络编程
18,363
社区成员
64,187
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章