我的问题是,如果机器A有两个IP地址X、Y。
它能否像 X:80
和 Y:80
一样打开两次端口80呢?
换句话说,端口是由机器还是由IP唯一确定的呢?
这是根据IP地址唯一的。当你进行绑定(bind)
操作时,(这是重要的部分),你会将IP地址和端口号绑定在一起,而不是将机器和端口号绑定在一起。要绑定到所有地址,您可以使用诸如INADDR_ANY
之类的东西。
如果您只想绑定到几个地址,则必须手动执行此操作。当操作系统接收到一个数据包时,首先检查它是否为目标地址。然后将其转发到已经请求
(通过bind、connect等)成为具有特定IP和端口号数据包目标的程序。
端口和IP之间有一对一的映射关系。
因此,在同一台计算机上,您可以在两个不同的IP上打开端口80。