Networking 0.0.0.0:端口方式和从何处开始?

Networking 0.0.0.0:端口方式和从何处开始?,networking,network-programming,connection,localhost,netstat,Networking,Network Programming,Connection,Localhost,Netstat,我进退两难 每台机器上都有一个IP地址,0.0.0.0:0也称为所有可用的IP接口 我的问题是这样的:我需要用NETSTAT的格式化输出映射本地主机上的连接,我应该如何考虑在0×0或0 *:端口上进行侦听?我的意思是: 如果S1监听0.0.0:1000,S2监听192.168.0.1:1000,会发生什么情况? 与S1的连接是否会被S2截获,或者反过来,S1会被S1截获 我知道0.0.0.0不是任何连接的端点,但请考虑: 如果S2连接,S1是否听到指向此地址的数据包 如果s1正在监听所有接口:1

我进退两难 每台机器上都有一个IP地址,0.0.0.0:0也称为所有可用的IP接口

我的问题是这样的:我需要用NETSTAT的格式化输出映射本地主机上的连接,我应该如何考虑在0×0或0 *:端口上进行侦听?我的意思是:

如果S1监听0.0.0:1000,S2监听192.168.0.1:1000,会发生什么情况? 与S1的连接是否会被S2截获,或者反过来,S1会被S1截获 我知道0.0.0.0不是任何连接的端点,但请考虑:

如果S2连接,S1是否听到指向此地址的数据包

如果s1正在监听所有接口:1000,包括192.168.1.0:1000,那么192.168.0.1:1000的连接将指向何处

谢谢你的回答

如果S1监听0.0.0:1000,S2监听192.168.0.1:1000,会发生什么情况

你所描述的情况是不可能的。无论哪一个先到,都会阻止第二个绑定。在TCP中重用端口的唯一方法是,如果两个地址都不同,并且都不是0.0.0.0


[Windows不包括在内。Windows允许这样做,如果您能从MSDN中的描述中了解到发生了什么,那么您比我做得更好。]

0.0.0地址只能用于被动侦听端口。一旦建立了连接,该连接就会从连接到达的接口获取本地IP地址。因此,如果我的回答正确,我就无法实际建立连接到侦听0*:*的地址,并且通过该地址:端口,我只能宣布我想要在一个实际存在的接口上建立连接?这就是问题所在,我不得不在Win和Linux下编写应用程序,所以我需要同时考虑这两种情况。MSDN中并没有关于这方面的好文档,windows确实允许绑定端口,正如上面所示。看起来在windows上使用是解决方法。很难看出MS是如何陷入这种困境的。