出站 TCP 连接是否会阻止端口绑定以进行监听?

出站 TCP 连接是否会阻止端口绑定以进行监听?

我正在运行一个尝试侦听端口 的应用程序34002。当它尝试这样做时,它会收到错误:

Address already in use

当我用来lsof查找罪魁祸首时,我发现它是一个出站 TCP 连接:

sudo lsof -i | grep "some-process"
some-command 53344  some-process    7u  IPv4 344298      0t0  TCP <my-local-ip-redacted>:34002-><remote-ip-redacted>:https (ESTABLISHED)

我觉得这很奇怪。出站 TCP 会话在随机选择的端口上启动。 操作系统是否真的会阻止绑定到它随机选择的端口? 或者我理解错了?似乎将会话移至其他端口是有逻辑的。我无法想象这会是一种罕见的情况。

答案1

操作系统是否真的会阻止绑定到它随机选择的端口?

如果某个端口正在使用,那么它就是正在使用的。不管它是随机分配的还是明确选择的,重要的是它正在使用。建议您不要将服务绑定到临时端口范围内的端口,因为这样就有可能出现这种情况。

相关内容