Porty - przegląd

Gdyby nie było portów, komunikacja za pośrednictwem standardowych protokołów internetowych Transmission Control Protocol (TCP) i User Datagram Protocol (UDP) byłaby niemożliwa. To dzięki portom wiele aplikacji może jednocześnie wymieniać dane, wykorzystując jedno łącze internetowe.

Gdyby nie było portów, komunikacja za pośrednictwem standardowych protokołów internetowych Transmission Control Protocol (TCP) i User Datagram Protocol (UDP) byłaby niemożliwa. To dzięki portom wiele aplikacji może jednocześnie wymieniać dane, wykorzystując jedno łącze internetowe.

Podstawowa wiedza o numerach portów potrzebna jest również podczas konfiguracji firewalla. Filtr pakietów decyduje na podstawie określonych reguł filtrowania, czy dany pakiet zostanie przepuszczony, czy też nie. Filtr odczytuje przy tym m.in. takie informacje nagłówka, jak port nadania i port docelowy. Na podstawie tych reguł firewall może filtrować usługi.

Procesy usług korzystają zawsze z określonych portów. Na przykład, aby zablokować usługę FTP, firewall odfiltrowuje wszystkie pakiety, które w nagłówku mają wpisany port 21. Równie ważne jest, z jakiego komputera zostało nawiązane połączenie - z klienta w sieci LAN czy z komputera zewnętrznego.

W dalszym ciągu tekstu wyjaśnimy funkcjonowanie portów i opiszemy ich grupy. Opracowaliśmy też zestawienie najważniejszych reguł firewalla do sieci firmowej, które w regularnych odstępach czasu uzupełniamy.

Czym są numery portów?

Numer portu docelowego o długości 16 bitów określa, do jakiej aplikacji przeznaczony jest pakiet danych.

Numer portu docelowego o długości 16 bitów określa, do jakiej aplikacji przeznaczony jest pakiet danych.

Numery portów stanowią jeden z podstawowych elementów stosowania protokołów TCP i UDP. Gdy dane docierają do komputera docelowego, muszą jeszcze zostać dostarczone do właściwej aplikacji. Podczas transportu informacji przez warstwy sieci potrzebny jest mechanizm, który najpierw gwarantuje przekazanie danych do właściwego w danym wypadku protokołu.

Łączenie danych z wielu źródeł w jeden strumień danych nosi nazwę multipleksingu. Protokół internetowy (IP) musi zatem poddać dane nadchodzące z sieci procesowi demultipleksingu. W tym celu IP oznacza protokoły transportowe numerami protokołów. Same protokoły transportowe wykorzystują z kolei numery portów do identyfikacji aplikacji.

Numer protokołu IP zawarty jest w jednym bajcie w trzecim słowie nagłówka datagramu. Wartość ta determinuje przekazanie do odnośnego protokołu w warstwie transportowej; przykładowo 6 to TCP, 17 to UDP. Protokół transportowy musi przekazać otrzymane dane do właściwego procesu aplikacji.

Aplikacje identyfikowane są na podstawie numerów portów o długości 16 bitów, do których dane kierowane są po nadejściu do komputera docelowego. W pierwszym słowie każdego nagłówka TCP czy UDP zapisany jest też numer portu źródłowego i numer portu docelowego. Jeżeli aplikacja ma być dostępna pod określonym numerem portu, musi przekazać tę informację do stosu protokółu TCP/IP.

Gniazda

Kombinację adresu IP i numeru portu określa się jako gniazdo. To połączenie umożliwia jednoznaczną identyfikację poszczególnych procesów sieciowych w ramach całego Internetu. Zapis ma następującą postać: adres IP:port, np. 62.96.227.70:80. Dwa gniazda definiują połączenie: jedno określa komputer źródłowy, drugie - docelowy.

TCP i UDP mogą nadawać te same numery portów. Dopiero połączenie protokołu i numeru portu jest jednoznaczne. Numer portu 53 w TCP nie jest identyczny z numerem portu 53 w UDP.

Grupy portów

Ogółem jest do dyspozycji 65 535 różnych portów TCP i UDP. Dla ułatwienia oraz po to, żeby móc przypisać określonym aplikacjom stałe numery, podzielono je na trzy grupy:

- Dobrze znane porty (well known ports) to zarezerwowane i standaryzowane numery portów od 1 do 1023. Upraszcza to budowę połączenia, ponieważ nadawca i odbiorca z góry wiedzą, że dane muszą być przesłane do określonego procesu i do konkretnego portu. Na przykładu wszystkie serwery telnetu wykorzystują port 23.

Dobrze znane porty umożliwiają klientom łączenie się z serwerami bez konfigurowania. Zarządzaniem tymi portami zajmuje się Internet Assigned Number 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 zawierały się w obszarze 1 do 255. Numery od 256 do 1023 stosowano do usług uniksowych.

- Porty zarejestrowane (registered ports) to porty od numeru 1024 do 49.151. Przeznaczone są do 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 dla protokołu HTTP.

- Porty przydzielane dynamicznie (dynamically allocated ports, również nazywane ephemeral ports). Przydzielane są zawsze dynamicznie i mają numery od 49.152 do 65.535. Może z nich korzystać dowolny klient, jeśli kombinacja protokołu transportowego, adresu IP i numeru portu jest jednoznaczna. Proces, który potrzebuje portu, żąda od hosta jego udostępnienia.

Który port jest używany?

Minimalistyczny mechanizm protokołu UDP zawiera również informację o porcie docelowym pakietu danych.

Minimalistyczny mechanizm protokołu UDP zawiera również informację o porcie docelowym pakietu danych.

Jak już wspomnieliśmy, wiedza o portach jest niezbędna do prawidłowej konfiguracji firewalla. Trzeba zdecydować, z jakich portów mogą korzystać połączenia przychodzące i wychodzące. Natomiast często nie wiadomo, z których portów korzysta dana aplikacja. Nieraz warto wiedzieć, który z portów jest dynamicznie przydzielony (na zasadzie przypadkowości) aplikacji działającej na komputerze kliencie.

Tego rodzaju informacje można uzyskać za pomocą Netstat, narzędzia Windows. Niestety, jego funkcjonalność jest ograniczona - nie pokazuje na przykład, którego połączenia używa dana aplikacja.

Godny polecenia jest shareware'owy program Essential NetTools ( http://www.tamos.com/products/nettools/ ) firmy Tamos Software. Jednym z elementów programu jest bardzo rozbudowane narzędzie Netstat. Pokazuje nie tylko otwarte porty i aktywne połączenia w systemie, ale również tłumaczenie tekstowe adresów i portów wraz z przynależnymi aplikacjami i kompletnymi ścieżkami.

Router - maskarada

Microsoft Netstat podaje niewiele szczegółów na temat otwartych połączeń.

Microsoft Netstat podaje niewiele szczegółów na temat otwartych połączeń.

Jeżeli dostęp do Internetu odbywa się za pośrednictwem routera, bezpośrednia komunikacja port-port w ramach TCP/IP nie jest możliwa.

W sieciach lokalnych stosuje się najczęściej prywatne adresy IPv4, ponieważ w ostatnim czasie przydzielanie oficjalnych adresów IPv4 stało się trudne. Cały ruch internetowy przechodzi przez router. Mając wspomniane powyżej adresy prywatne, komputery klienty nie mogą jednak kontaktować się bezpośrednio z Internetem. Pakiety odpowiedzi nie mogą trafić na właściwą drogę powrotną. Skąd zatem serwer w Internecie zna odpowiedni numer portu komputera klienta w sieci LAN?

Stosuje się tzw. maskaradę, specjalny rodzaj przekształcenia adresu, zwany także Source Network Address Translation (SNAT). W wypadku pakietów z sieci, które mają być wysłane na zewnątrz za pośrednictwem routera, adres źródłowy jest zastępowany adresem routera, a pierwotnym port źródłowy - nowym. Dane te składowane są w specjalnej tablicy, dzięki czemu można odpowiednio przekształcić pakiety odpowiedzi. W ten sposób usługa internetowa "nie zauważa", że kontaktowała się z routerem, a nie z komputerem klientem.


Zobacz również