请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

TCP释放连接的TIME-WAIT细节咨询

图片描述

老师您好!

一:这个TIME-WAIT环节是每次都要经历的吗?2MSL的等待时间内,主动释放端的所有资源都没有释放吗?这不是浪费了很多资源嘛。如果短时间内(在2MSL时间内),我大量建立tcp连接然后又快速断开,资源一直申请但是得不到释放。是不是最后导致后续真正想要用连接的时候反而资源不足,无法通信呢?

二:所以TIME-WAIT环节:是一个等待对方【不发消息】的过程,这个好被动。
还不如再加一条:对端在CLOSED之前再发一条【我已关闭】消息,然后立马CLOSED。

  1. 如果这个消息到达主动释放端,那么主动释放端就不要等2MSL,而是立即CLOSED。
  2. 如果消息由于网络原因丢失了,那么也没事,可以退化到之前的等待2MSL过程,也不会出问题。

为啥TCP官方没有这么设计,而是非要等待,具体原因是什么呢?

正在回答

1回答

AlexWang 2024-05-10 10:09:04
因为这个等待是必要的。在这个连接中可能发了很多请求,有的请求及时到了,有的请求可能被堵在路上,迟迟没有到,所以在释放连接时,多等一会儿,保证这个连接中的所有请求要么到达,要么死路上。如果不等,可能出现这样的情况:之前的连接关闭了,下一次连接也建立了,结果上一次连接的请求才姗姗来迟
0 回复 有任何疑惑可以回复我~
  • 提问者 慕妹3585395 #1
    嗯嗯,有道理。怪不得要等2MSL,要么到达,要么死了。(主动释放端的最后一个ACK,以及超时后被动端再重新发送的FIN,刚好是MSL + MSL = 2MSL)。如果只是发送【我已关闭】消息不科普,毕竟消息的路由可能不同,在【我已关闭】之后很可能还有消息从被动释放端到达主动释放端,就会产生问题。
    回复 有任何疑惑可以回复我~ 2024-05-11 05:27:33
  • 我这里显示的有问题,怎么没看到追问的问题呢?
    回复 有任何疑惑可以回复我~ 2024-05-11 08:52:37
  • 提问者 慕妹3585395 #3
    非常感谢!
    回复 有任何疑惑可以回复我~ 2024-05-18 17:11:40
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信