Przegląd portów

Bez portów nie sposób wyobrazić sobie komunikacji za pomocą standardowych protokołów komunikacyjnych Internetu, Transmission Control Protocol (TCP) i User Datagram Protocol (UDP). To właśnie dzięki portom wiele aplikacji może jednocześnie wymieniać dane za pośrednictwem jednego łącza internetowego.

Bez portów nie sposób wyobrazić sobie komunikacji za pomocą standardowych protokołów komunikacyjnych Internetu, Transmission Control Protocol (TCP) i User Datagram Protocol (UDP). To właśnie dzięki portom wiele aplikacji może jednocześnie wymieniać dane za pośrednictwem jednego łącza internetowego.

Podstawowa wiedza o portach jest również niezbędna do prawidłowej konfiguracji firewalla. Każdy datagram przechodzi przez pakiet filtrów, który na podstawie określonych reguł decyduje, czy przesłać go dalej, czy nie. Odczytywane są przy tym między innymi informacje z nagłówka, takie jak port nadania i port docelowy. Na podstawie tych reguł firewall może filtrować usługi. Procesy usługowe zawsze korzystają z określonych portów. Wystarczy na przykład odfiltrować pakiety, które mają w nagłówku wpisany port 21, aby zablokować usługi FTP. Równie duże znaczenie ma informacja, z jakiego komputera nawiązano połączenie - z klienta w sieci LAN, czy też z komputera zewnętrznego.

W tym artykule opiszemy funkcjonowanie portów i ich grupy.

Czym są numery portów?

Porty - dane po otrzymaniu przekazywane są do właściwych aplikacji.

Porty - dane po otrzymaniu przekazywane są do właściwych aplikacji.

Numery portów są podstawa stosowania protokołów TCP oraz UDP. Gdy dane dotrą już do komputera docelowego, trzeba je jeszcze dostarczyć do właściwej aplikacji.

W trakcie przesyłu informacji przez warstwy sieci potrzebny jest mechanizm, który przede wszystkim zapewnia przekazanie do właściwego w każdym przypadku protokołu.

Łączenie danych pochodzących z różnych źródeł w pojedynczy strumień danych określa się mianem multipleksingu. Protokół internetowy (IP) musi zatem zdemultipleksować dane przychodzące z Internetu. W tym celu IP oznacza protokoły transportowe numerami protokołów. Z kolei same protokoły transportowe wykorzystują numery portów do identyfikacji aplikacji.

Numer protokołu IP znajduje się w jednym bajcie w trzecim słowie nagłówka datagramu. Wartość ta stanowi o przekazaniu do odpowiedniego protokołu warstwy transportowej, na przykład 6 oznacza TCP, zaś 17 - UDP. Protokół transportowy musi przekazać otrzymane dane do właściwej aplikacji. Aplikacje identyfikowane są na podstawie numeru portu o długości 16 bitów, do którego dane przesyłane są po nadejściu do komputera docelowego. Dlatego też pierwsze słowo każdego nagłówka TCP oraz UDP zawiera numer source port (port źródłowy) i destination port (port docelowy). Aplikacja, która chce być dostępna pod określonym numerem portu, informuje o tym stos protokołów TCP/IP.

Gniazda

Nagłówek TCP - numer port docelowy o długości 16 bitów decyduje o tym, do której aplikacji przeznaczone są dane.

Nagłówek TCP - numer port docelowy o długości 16 bitów decyduje o tym, do której aplikacji przeznaczone są dane.

Kombinacja adresu IP i numeru portu nosi nazwę gniazda. W ten sposób możliwa jest jednoznaczna identyfikacja pojedynczego procesu sieciowego w całym Internecie. Zapis wygląda następująco: adres IP:numer portu, na przykład 62.96.227.70:80. Dwa gniazda definiują połączenie - jedno dla komputera-nadawcy, drugie dla odbiorcy.

TCP i UDP mogą nadawać te same numery portów. Dopiero kombinacja protokołu i numeru portu jest jednoznaczna. Tak więc port numer 53 w protokole TCP nie jest identyczny z portem numer 53 w protokole UDP. O budowie i sposobie funkcjonowania rodziny protokołów TCP/IP piszemy obszernie w artykule "Tak działa TCP/IP i IPv6".

Grupy portów

User Data Protocol - nawet minimalistyczny mechanizm protokołu UDP zawiera numer docelowego portu pakietu danych

User Data Protocol - nawet minimalistyczny mechanizm protokołu UDP zawiera numer docelowego portu pakietu danych

Do dyspozycji jest ogółem 65 535 portów TCP i UDP. Aby zachować nad nimi kontrolę, a także by móc przydzielać aplikacjom stałe numery, podzielono je na trzy grupy.

Dobrze znane porty (well known ports) - zarezerwowane, standardowe numery portów od 1 do 1023. Ułatwiają nawiązanie połączenia, ponieważ zarówno nadawca, jak i odbiorca z góry wiedzą, że dane muszą być przesłane dla określonego procesu pod określony numer portu. Serwery Telnetu używają na przykład portu nr 23. Dobrze znane porty umożliwiają klientom nawiązywanie połączeń z serwerami bez dodatkowej konfiguracji. Zarządzaniem tymi portami zajmuje się Internet Assigned Numbers Authority (IANA). Listę aktualnie przydzielonych numerów portów można znaleźć pod adresem http://www.iana.org/assignments/port-numbers . Do roku 1992 dobrze znane porty ograniczały się do zakresu 1 do 255. Porty o numerach od 256 do 1023 były stosowane do usług uniksowych.

Zarejestrowane porty (registered ports) - porty o numerach od 1024 do 49.151 przewidziane są dla usług, które zwyczajowo korzystają z określonych portów. Przykładem może być port 3128, często wykorzystywany przez serwery proxy jako alternatywny port HTTP.

Porty przydzielane dynamicznie (dynamically allocated ports, również ephemeral ports) - jak wskazuje nazwa, zawsze przydzielane dynamicznie. Są to porty o numerach od 49.152 do 65.535. Każdy klient może korzystać z nich tak długo, jak długo kombinacja protokołu transportowego, adresu IP i numeru portu jest jednoznaczna. Proces, który potrzebuje dostępu do portu, żąda go od swojego hosta.

Który z portów jest używany?

Jak już wspomnieliśmy, wiedza o portach jest nieodzowna do konfiguracji firewalla. Należy określić, które porty mogą być wykorzystywane do połączeń wychodzących i przychodzących. Jednak często nie wiadomo, z których portów korzysta dana aplikacja. Nieraz dobrze byłoby też wiedzieć, który z portów został już losowo przydzielony aplikacji na komputerze-kliencie.

W celu zdobycia tej wiedzy można się posłużyć się narzędziem Windows, programikiem Netstat. Niestety, jego funkcjonalność jest bardzo ograniczona. Nie podaje ono na przykład informacji o tym, jakie aplikacje używają poszczególnych połączeń.

Godny polecenia jest shareware'owy program Essential NetTools firmy Tamos Software ( http://www.tamos.com ). Jednym z jego składników jest rozbudowane narzędzie Netstat. Dostarcza ono nie tylko informacji o otwartych portach i połączeniach w systemie, lecz również tekstowych tłumaczeń adresów i portów wraz ze ścieżkami dostępu do odpowiednich aplikacji.

Przykładowe połączenie

W naszym przykładzie załadujemy za pomocą przeglądarki internetowej stronę http://www.tecChannel.de . Przeglądarka utworzy połączenie z adresem IP 62.96.227.70. Na serwerze zostanie użyty port TCP numer 80, dobrze znany port serwerów internetowych. Klient wykorzysta dynamicznie przydzielany port 1897.

Klient, który wywołuje stronę internetową, znajduje się w lokalnej sieci, co można poznać po adresie 192.168.80.99. Dane przechodzą przez router, gdzie stosowana jest maskarada z użyciem Network Address Translation (NAT). Więcej informacji o maskaradzie i komunikacji port-port za pośrednictwem routera poniżej.


Zobacz również