-1

我已经阅读了有关 TIME_WAIT 中套接字的其他线程,但我显然仍然缺少一些东西。

下面是来自“netstat -an”的几行代码。怎么会陷入这种境地?如果我理解我发现的描述,我们不应该有超过一个套接字 63444 的实例......但是在列为“LISTEN”的那个之后,大约有 50 个单独的套接字连接,一端在 63444,全部在“TIME_WAIT” . 这怎么会发生,我该如何解决?

tcp 0 0 0.0.0.0:63444 0.0.0.0:* 听
tcp 0 0 169.254.7.228:63444 169.254.66.84:35391 TIME_WAIT
tcp 0 0 169.254.7.228:63444 169.254.66.84:35283 TIME_WAIT
tcp 0 0 169.254.7.228:63444 169.254.66.84:35352 TIME_WAIT
tcp 0 0 169.254.7.228:63444 169.254.66.84:35431 TIME_WAIT
4

3 回答 3

2

我不确定你找到了什么描述,但那是胡说八道。Web 服务器可能有几十个连接到端口 80 一次处于活动状态,而许多其他连接正在关闭过程中。它们都具有相同的本地端点。

这些 TIME_WAIT 行中的每一个都表示到正在关闭的端口 63444 的不同连接。位于 169.254.66.84 的机器与这台机器建立了一堆连接,其中几个现在处于 TIME_WAIT 状态。这没有什么不寻常的。

于 2015-08-19T22:39:54.057 回答
1

连接由源端口、源地址、目的端口和目的地址唯一(通常)标识。如果其中任何一个不同,那就是不同的连接。在您显示的每一行中,“另一端”都有一个不同的端口,因此每个都是不同的连接。

于 2015-08-19T22:43:53.197 回答
1

为什么TIME_WAIT中的同一个socket多次出现?

它不是同一个插座。查看远程地址。每次都是相同的本地IP地址和端口,但远程地址都不同。

我已经阅读了有关 TIME_WAIT 中套接字的其他线程,但我显然仍然缺少一些东西。下面是来自“netstat -an”的几行代码。怎么会陷入这种境地?

服务器接受了一些连接,然后关闭了它们。

如果我理解我发现的描述,我们不应该有超过一个套接字 63444 的实例......

这是胡说八道,无论您在哪里阅读。否则 TCP 服务器根本无法工作。

但在列为“LISTEN”的那个之后,大约有 50 个单独的套接字连接,一端为 63444,全部在“TIME_WAIT”中。这怎么会发生,我该如何解决?

这是完全正常的。这里没有什么需要修复的。

当一个连接被接受时,一个新的套接字被创建,具有相同的本地 IP 地址和端口,并且源 IP 地址:端口设置为客户端的。当服务器关闭此套接字时,它会随着关闭握手的进行而转换各种状态,以 TIME_WAIT 结束两分钟,然后消失。

于 2015-08-20T00:11:26.753 回答