关于Tcp TIME_WAIT的疑问

如果客户端与服务器的一个socket关闭了(tcp连接关闭了)那么在短时间内(书上说是两分钟)客户端是不能重新建立起一个一模一样的socket的。那么我的理解是:加入我连接了百度,那么因为某种原因tcp连接终止了,那么我在两分钟之内不能再访问百度?这显然是不可能的因为现实中从来没有遇到过这种问题。那么又该怎么理解TIME_WAIT这个东西呢?

阅读 2.3k
2 个回答

local peer主动调用close后,此时的TCP连接进入TIME_WAIT状态,处于该状态下的TCP连接不能立即以同样的四元组建立新连接,即发起active close的那方占用的local port在TIME_WAIT期间不能再被重新分配。由于TIME_WAIT状态持续时间为2MSL,这样保证了旧TCP连接双工链路中的旧数据包均因过期(超过MSL)而消失,此后,就可以用相同的四元组建立一条新连接而不会发生前后两次连接数据错乱的情况。

有些系统中是有这个限制的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题