首页 文章

从Windows PC向VMware计算机发送UDP消息时使用的网络连接?

提问于
浏览
1

我正在做一个小插座编程,遇到了我不理解的网络行为;我希望有人可以了解正在发生的事情 .

我在PC上运行Windows 7 Professional . 我安装了VMware,并且正在运行QNX Neutrino RTOS作为VMware会话中的目标 . 因此Windows PC是主机PC,客户操作系统是QNX Neutrino RTOS . 我将虚拟机配置为使用NAT网络连接 .

好了,现在进入IP和接口配置 . 在我的Windows机器上运行'ipconfig'给出以下内容:

Windows IP Configuration

Ethernet adapter Local Area Connection:

  Connection-specific DNS Suffix  . :
  IPv4 Address. . . . . . . . . . . : 192.168.1.100
  Subnet Mask . . . . . . . . . . . : 255.255.255.0
  Default Gateway . . . . . . . . . : 192.168.1.1

Ethernet adapter VMware Network Adapter VMnet1:

  Connection-specific DNS Suffix  . :
  Link-local IPv6 Address . . . . . : fe80::c558:ae9f:e58e:e005%24
  IPv4 Address. . . . . . . . . . . : 192.168.184.1
  Subnet Mask . . . . . . . . . . . : 255.255.255.0
  Default Gateway . . . . . . . . . :

Ethernet adapter VMware Network Adapter VMnet8:

  Connection-specific DNS Suffix  . :
  Link-local IPv6 Address . . . . . : fe80::fce2:d22f:9ec:bd005%25
  IPv4 Address. . . . . . . . . . . : 192.168.248.1
  Subnet Mask . . . . . . . . . . . : 255.255.255.0
  Default Gateway . . . . . . . . . :

(** Other entries omitted for brevity **)

当我在VMware QNX系统上运行'ifconfig'时,我得到以下内容:

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33192
        inet 127.0.0.1 netmask 0xff000000
ni0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        capabilities rx=7<IP4CSUM,TCP4CSUM,UDP4CSUM>
        capabilities tx=3f<IP4CSUM,TCP4CSUM,UDP4CSUM,TCP6CSUM,UDP6CSUM,TSO4>
        enabled=0
        address: 00:0c:29:04:00:ae
        media: Ethernet autoselect (1000baseT full-duplex)
        status: active
        inet 192.168.184.15 netmask 0xffffff00 broadcast 192.168.184.255
ni1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        capabilities rx=7<IP4CSUM,TCP4CSUM,UDP4CSUM>
        capabilities tx=3f<IP4CSUM,TCP4CSUM,UDP4CSUM,TCP6CSUM,UDP6CSUM,TSO4>
        enabled=0
        address: 00:0c:29:04:00:b8
        media: Ethernet autoselect (1000baseT full-duplex)
        status: active
        inet 192.168.248.15 netmask 0xffffff00 broadcast 192.168.248.255

到现在为止还挺好 . 现在,我在VMware计算机上运行的套接字程序可以成功地从VMware IP地址192.168.184.15(端口65527)向Windows PC 192.168.1.100(端口2023)发送UDP消息,并且我的Windows套接字程序收到该消息 . 但是,当我尝试从IP地址为192.168.1.100(端口2044)的Windows计算机向192.168.248.15(端口2045)的VMware计算机发送UDP消息时,消息无法以某种方式到达目的地 . 我确实使用Wireshark验证UDP消息是否具有预期的IP源地址和IP目标地址,但即便如此,在VMware计算机上运行的套接字程序也不会收到UDP消息 .

但是,我能做的是从Windows机器发送UDP消息,IP地址为192.168.248.1到192.168.248.15 . 执行此操作时,VMware计算机上运行的套接字程序将获取UDP消息 . 但我想知道的是为什么我不能成功地将消息从192.168.1.100发送到192.168.248.15?除了NAT之外,我还需要使用其他类型的网络连接吗?

1 回答

  • 1

    NAT是您能够从VMWare计算机发送和接收而不是反向的原因 .

    原因是在发送时,NAT将构建包含原始IP地址和端口的转换表,然后使用不同的IP地址和端口 . 当答案到来时,将查询此表并将答复委托回原始IP地址和端口 .

    如果出现转换表中没有条目的消息,则将删除该消息 . 这就是为什么如果你的邻居也在那些也使用NATPAT的典型家用路由器后面就不能发送消息说你的邻居的原因 .

    您可以通过使用非差别化区域或端口转发来解决此问题 . 但是如何在vm中这样做对我来说是未知的 .

相关问题