端口和IP地址之间的关系

7

我的问题是,如果机器A有两个IP地址X、Y。

它能否像 X:80Y:80 一样打开两次端口80呢?

换句话说,端口是由机器还是由IP唯一确定的呢?


1
可能应该在serverfault.com上发布,但对于处理此类问题的程序员来说是一个有趣的问题。 :) - JYelton
3个回答

6
一个IP地址指定了一个网络接口(比如你电脑上的以太网口或者WiFi连接)。端口号指定了将消息路由到给定网络接口上的进程。因此,你可以使用相同的端口号和不同的IP地址,因为它们指定了在该给定接口上监听的端口。请注意,即使使用SO_REUSEADDR选项调用bind函数,您仍然可以在相同的IP地址上重用相同的端口号。

3

这是根据IP地址唯一的。当你进行绑定(bind)操作时,(这是重要的部分),你会将IP地址和端口号绑定在一起,而不是将机器和端口号绑定在一起。要绑定到所有地址,您可以使用诸如INADDR_ANY之类的东西。

如果您只想绑定到几个地址,则必须手动执行此操作。当操作系统接收到一个数据包时,首先检查它是否为目标地址。然后将其转发到已经请求(通过bind、connect等)成为具有特定IP和端口号数据包目标的程序。


1

端口和IP之间有一对一的映射关系。

因此,在同一台计算机上,您可以在两个不同的IP上打开端口80。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接