当虚拟机(具有多个 NIC)中的某个进程与其他虚拟机(或可能是互联网上)上的其他进程通信时,它会在不同时间通过不同的 IP 地址进行通信。
这个 IP 地址是如何分配给进程的?它是否取决于目标进程的网络配置?
答案1
IP 地址不绑定到进程本身或“赋予”进程。IP 绑定到某个网络适配器。话虽如此,它是虚拟机还是裸机系统并不重要。虚拟机的类型(VMware、MS 等)也不重要。
过于简化了进程请求以创建所谓的套接字来进行通信,这主要是通过操作系统处理的 TCP/IP 堆栈来完成的。这样,许多进程就可以使用相同的 IP(尽管在不同的端口上)。
套接字将被分配到哪个网络适配器也由操作系统处理,至少大部分情况下如此(想想具有多个网络适配器的系统上的浏览器)。有多种方法可以强制应用程序使用某个端口(例如 ForceBindIP),其他应用程序会让您选择适配器(例如 Wireshark),但这里没有通用答案。如果您有具体问题,请直接询问。