我想问的是如果两台电脑监听同一个端口,一个信息包通过WAN Ip和同一个端口进入路由器。数据包会发送到两台计算机吗?两者都不?一个还是另一个?
浏览器
电脑1 -(内网IP)-> 192.168.1.3 -(监听端口)-> 4444
电脑2 -(内网IP)-> 192.168.1.2 -(监听端口)-> 4444
计算机 3 -(连接并发送)-> 24.157.358.45:4444
数据包 -> 计算机 1 和计算机 2
VB6中的代码是:
LAN.LocalPort = 4444
LAN.Protocol = sckTCPProtocol
LAN.Listen
我在 VB6 Professional 中使用 Microsoft WinSock Control 6.0 中的 WinSock 对象
如果有什么需要澄清的,我会非常乐意。
最佳答案
除非已经建立通信,否则路由器不会向任何一台机器发送入站数据包。
如果 192.168.1.3 从其端口 4444 调用其他机器(例如 4.5.6.7),路由器将在其外部地址(例如 24.157.358.45 [sic] :5555)上分配一个任意端口并传递数据包到 4.5.6.7。 4.5.6.7 会将回复数据包发送到 24.157.358.45:5555——因为这是它唯一知道的地址——路由器会将这些数据中继到 192.168.1.3:4444。
这是正常的过程,但是这个方案有很多额外的细节,可以通过欺骗手段与路由器后面的机器建立通信。
在具有公共(public)地址的路由器后面拥有具有私有(private) IP 地址的机器的系统称为 network address translation (NAT) ;这是一个很深的话题。
关于networking - 当两台计算机监听同一个端口并且路由器通过该端口接收数据包时会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13371634/