如果客户端与服务器的一个socket关闭了(tcp连接关闭了)那么在短时间内(书上说是两分钟)客户端是不能重新建立起一个一模一样的socket的。那么我的理解是:加入我连接了百度,那么因为某种原因tcp连接终止了,那么我在两分钟之内不能再访问百度?这显然是不可能的因为现实中从来没有遇到过这种问题。那么又该怎么理解TIME_WAIT这个东西呢?
如果客户端与服务器的一个socket关闭了(tcp连接关闭了)那么在短时间内(书上说是两分钟)客户端是不能重新建立起一个一模一样的socket的。那么我的理解是:加入我连接了百度,那么因为某种原因tcp连接终止了,那么我在两分钟之内不能再访问百度?这显然是不可能的因为现实中从来没有遇到过这种问题。那么又该怎么理解TIME_WAIT这个东西呢?
15 回答8.4k 阅读
7 回答5.3k 阅读
8 回答6.2k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
local peer主动调用close后,此时的TCP连接进入TIME_WAIT状态,处于该状态下的TCP连接不能立即以同样的四元组建立新连接,即发起active close的那方占用的local port在TIME_WAIT期间不能再被重新分配。由于TIME_WAIT状态持续时间为2MSL,这样保证了旧TCP连接双工链路中的旧数据包均因过期(超过MSL)而消失,此后,就可以用相同的四元组建立一条新连接而不会发生前后两次连接数据错乱的情况。