我读过一本TCP和套接字编程书。我有个问题,
如书所述,TCP的TIME_WAIT状态应该保持2MSL时间周期。但是,像应用程序这样的互联网探索怎么会没有这个问题呢?
根据文档,它是4分钟,但在互联网探索,我不需要等待10秒来刷新一个网页?
这是怎么回事?我很困惑请解释一下。
发布于 2011-09-08 00:50:55
有几种可能性,我在下面列出了其中一些。
首先,并不是所有会话都通过TIME_WAIT状态。如果另一方关闭连接,则本地转换是ESTABLISHED、CLOSE_WAIT、LAST_ACK和CLOSED,因此不涉及TIME_WAIT。
其次,TIME_WAIT状态适用于会话,它是一个5元组{protocol,source-ip,source-port,dest-ip,dest-port}.
如果下一次会话(通常是源端口)中的任何一个值发生了变化,这将不受上一次会话的影响。
最后,浏览器不必在每次请求之后关闭会话。为了提高效率,更有可能维护一个开放会话池,以便重用它们,比如当您想下载一个有50个图像的页面时(一个会话而不是51个会话)。
在页面完全加载后,它甚至可以让这样的会话处于打开状态,否则您可能会访问该服务器上的其他内容。
https://stackoverflow.com/questions/7341924
复制相似问题