1

我读过一本 TCP 和套接字编程书籍。我有个问题,

TCP的TIME_WAIT状态应该如书上说的保持2MSL时间段。但是,如何像互联网探索这样的应用程序没有这个问题呢?

根据文档,它是 4 分钟,但在 Internet explore 中我甚至不需要等待 10 秒来刷新网页?

这是如何工作的?我很困惑请解释一下。

4

1 回答 1

3

有几种可能性,我在下面列出了其中的一些。

首先是并非所有会话都在TIME_WAIT状态中移动。如果对方关闭连接,则本地转换为ESTABLISHED、和CLOSE_WAIT,因此不涉及。LAST_ACKCLOSEDTIME_WAIT

其次,TIME_WAIT状态适用于一个会话,它是一个 5-tuple {protocol,source-ip,source-port,dest-ip,dest-port}

如果这些值中的任何一个在下一个会话(通常是源端口)发生变化,则不受上一个会话的影响。

最后,浏览器不必每次请求后关闭会话。更有可能(为了提高效率)维护一个打开的会话池以便重新使用它们,例如当您想要下载一个包含 50 个图像的页面(一个会话而不是 51 个)时。

它甚至可以在页面完全加载后使此类会话保持打开状态,以防您访问该服务器上的其他内容。

于 2011-09-08T00:50:55.707 回答