2010-05-30 174 views
7

我的問題是,如果機器A有兩個IP地址X,Y.端口和IP地址的關係

它可以打開端口80兩次,如X:80Y:80

說,端口是唯一的機器或IP?

+1

應該可能在serverfault.com上,但對於處理這類事情的程序員來說是個有趣的問題。 :) – JYelton 2010-05-30 07:11:37

回答

6

IP地址指定一個網絡接口(想想計算機上的以太網端口或WiFi連接)。端口號指定路由到達給定網絡接口的消息的過程。因此,您可以使用具有不同IP地址的相同端口號,因爲它們指定在該給定接口上偵聽的端口。但請注意,如果在調用bind函數時使用SO_REUSEADDR選項,則甚至可以重用具有相同IP地址的端口號。

+0

有趣... – 2010-05-30 09:45:15

3

IP是獨一無二的。當您bind(即重要部分),您綁定到IP和端口號,而不是機器和端口號。綁定到所有addreses你可以使用類似INADDR_ANY

如果你只想綁定幾個地址,你必須「手動」。當操作系統接收到數據包時,首先檢查他是否是目的地。然後它將它轉發到具有requested(通過綁定,通過連接等)的程序,使其成爲具有該特定IP和端口號的數據包的目的地。

1

端口和IP的映射關係爲1對1。

所以,你可以在同一臺機器上的兩個不同IP上打開端口80。