我已经阅读了TCP和套接字编程书。我有一个问题,
TCP的TIME_WAIT状态应保持2MSL时间段 书上说。但是,互联网如何探索应用程序 没有这个问题?
根据文档,它是4分钟,但在Internet探索 我不需要等待10秒才能刷新网页?
这是如何运作的?我很困惑请解释。
答案 0 :(得分:3)
有几种可能性,其中一些我在下面列出。
首先,并非所有会话都会在TIME_WAIT
状态下移动。如果另一方关闭了连接,则本地转换为ESTABLISHED
,CLOSE_WAIT
,LAST_ACK
和CLOSED
,因此不会涉及TIME_WAIT
。
其次,TIME_WAIT
状态适用于会话,这是一个5元组{protocol,source-ip,source-port,dest-ip,dest-port}
。
如果这些值的任何更改为下一个会话(通常是源端口),则不受上一个会话的影响。
最后,浏览器 以在每次请求后关闭会话。为了重新使用它们,更有可能(为了效率)维护一个开放会话池,例如当你想要下载一个包含50个图像(一个会话而不是五十个)的页面时。
它甚至可以在页面完全加载后让这些会话保持打开状态,因为你很可能会访问该服务器上的其他内容。