2010-05-30 5 views
7

Moje pytanie brzmi, czy komputer A ma dwa adresy IP X, Y.Relacja między portem a adresem IP

Czy można dwukrotnie otworzyć port 80, np. X:80 i Y:80?

Powiedzmy, czy port jest unikalny na maszynie lub przez IP?

+1

Prawdopodobnie powinien być na serverfault.com, ale interesujące pytanie dla programistów, którzy zajmują się tego typu rzeczami. :) – JYelton

Odpowiedz

6

Adres IP określa interfejs sieciowy (należy pomyśleć o porcie Ethernet na komputerze lub połączeniu WiFi). Numer portu określa proces, do którego należy kierować wiadomości przychodzące na dany interfejs sieciowy. W związku z tym można użyć tego samego numeru portu z różnymi adresami IP, ponieważ określają port do nasłuchu w danym interfejsie. Pamiętaj jednak, że możesz ponownie użyć numeru portu o tym samym adresie IP, jeśli używasz opcji SO_REUSEADDR podczas wywoływania funkcji bind.

+0

Interesujące ... –

3

Jest unikalny według adresu IP. Gdy jesteś bind, (to jest część ważna), wiążesz się z adresem IP i numerem portu, a nie numerem maszyny i numerem portu. Aby powiązać wszystkie adresy, możesz użyć czegoś takiego jak INADDR_ANY.

Jeśli chcesz powiązać tylko kilka adresów, musisz to zrobić "ręcznie". Gdy system operacyjny otrzymuje pakiet, najpierw sprawdza, czy jest on miejscem docelowym. Następnie przekazuje go do programu, który ma requested (przez bind, przez connect itp.), Że jest celem pakietów o tym konkretnym IP i numerze portu.

1

Port i adresy IP mają od 1 do 1 mapowania.

Tak, tak, możesz mieć port 80 otwarty na dwóch różnych adresach IP na tym samym komputerze.