gpt4 book ai didi

windows - 多个进程监听同一个端口?

转载 作者:可可西里 更新时间:2023-11-01 02:30:18 28 4
gpt4 key购买 nike

我想了解如何在 Windows XP 上启动多个进程监听同一 TCP {IP、端口} 对。

例如,我可以启动两个监听端口 371 的 ncat.exe 程序。第二个启动没有任何问题并接收传入连接,而第一个则没有。一旦最后启动的进程终止,第一个接收它们。

netstat -a -n | find "LISTENING"
TCP 0.0.0.0:371 0.0.0.0:0 LISTENING
TCP 0.0.0.0:371 0.0.0.0:0 LISTENING

假设这是一个 Windows (XP) 行为,它如何成为安全可靠的行为?这意味着您可以“重载”任何已经监听的端口,而不是收到通常的“地址已在使用”错误消息,并且只需说“允许端口 371 上的任何传入 TCP 连接”的规则即可绕过防火墙。

最佳答案

SO_REUSEADDR 套接字选项在 Windows 中的解释不同,即在 Linux 中它允许您重复使用相同的套接字,除非所有五元组(src/dst 端口/ip 和协议(protocol)完全相同)。

然而,windows实际上允许你窃取套接字。我会引用更好的 written answer此处详细说明两者。

Windows only knows the SO_REUSEADDR option, there is no SO_REUSEPORT. Setting SO_REUSEADDR on a socket in Windows behaves like setting SO_REUSEPORT and SO_REUSEADDR on a socket in BSD, with one exception: A socket with SO_REUSEADDR can always bind to exactly the same source address and port as an already bound socket, even if the other socket did not have this option set when it was bound. This behavior is somewhat dangerous because it allows an* application "to steal" the connected port of another application. Needless to say, this can have major security implications.

关于windows - 多个进程监听同一个端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17212789/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com