两个进程如何绑定到同一个端口?

两个进程如何绑定到同一个端口?

我刚刚遇到一个问题,localhost:8080从 curl 发出的请求与从 Node 内部发出的相同请求到达了不同的服务器。 lsof -i :8080显示两个进程都绑定到同一个端口:

COMMAND   PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node    51961 mball   14u  IPv4 0xd980e0df7f175e13      0t0  TCP *:http-alt (LISTEN)
java    62704 mball  320u  IPv6 0xd980e0df7fe08643      0t0  TCP *:http-alt (LISTEN)

这怎么可能?它们绑定到不同的接口了吗?还是 IPv4 与 IPv6 的比较?

如果您好奇的话,node 正在影响其他 node 进程,而 curl 正在影响 java 进程。java 进程是在 node 进程之后启动的。

答案1

它们可能是相同的端口,但它们不是相同的地址 - 甚至不是相同的地址系列!是的,IPv4 与 IPv6 很重要。

要修复此问题,请期望进程绑定到 IPv4 和 IPv6 地址系列。

相关内容