Internet jest to złożona sieć wzajemnie powiązanych ze sobą urządzeń i systemów. Porty protokołów odgrywają kluczową rolę w organizacji tego chaosu. Dzięki nim możliwe jest precyzyjne zidentyfikowanie konkretnej usługi lub aplikacji, a co za tym idzie, my jako użytkownicy możemy korzystać jednocześnie z kilku różnych aplikacji na jednym urządzeniu. Ta funkcjonalność jest fundamentem efektywnego działania współczesnych sieci. W artykule tym omówię czym jest port protokołu i jaką odgrywa rolę w warstwie transportowej. Dowiesz się w jaki sposób zostały podzielone numery portów, a także jakie porty zostały domyślnie przypisane do niektórych protokołów warstwy aplikacji.
Kilka słów o warstwie transportowej
W procesie komunikacji pomiędzy urządzeniami w sieci, kluczową rolę pełni warstwa transportowa. Do jej głównych zadań należy nawiązanie połączenia, a także dalsza obsługa sesji pomiędzy hostami. Ponadto warstwa ta odpowiedzialna jest za segmentację danych (podział na mniejsze części), identyfikowanie poszczególnych aplikacji, a w razie utraty danych, retransmisja. Warstwa transportowa kontroluje także przepływ danych i na bieżąco śledzi połączenia pomiędzy hostami.
To właśnie dzięki śledzeniu połączeń można wysyłać i odbierać dane pochodzące z różnych aplikacji na jednym urządzeniu. Na jednym komputerze w tym samym momencie możesz odbierać pocztę, mieć włączonych kilka stron internetowych, rozmawiać przez komunikator, a także przesyłać dane przez FTP. Jednak nie byłoby to możliwe także bez segmentacji danych.
Warstwa transportowa dzieli przesyłane dane (pochodzące od różnych aplikacji) na mniejsze fragmenty i wysyła je naprzemiennie. Dzięki temu mniejsze porcje danych mogą na bieżąco być odbierane przez kilka aplikacji jednocześnie. Jeśli nie byłaby stosowana segmentacja i zostałaby wysłana na raz duża porcja danych pochodząca od jednej aplikacji, wtedy pozostałe aplikacje musiały czekać w kolejce. W takiej sytuacji nie byłoby możliwe efektywne korzystanie z kilku aplikacji na raz.
Teraz jak już wiemy jak działa warstwa transportowa, przejdźmy do definicji portu protokołu.
Definicja portu protokołu
Warstwa transportowa musi dostarczyć przesyłane dane do właściwej aplikacji. W tym właśnie pomagają porty protokołu. Numer portu jest to identyfikator liczbowy, który umożliwia rozpoznanie konkretnej usługi lub aplikacji działającej na urządzeniu. Jest to po prostu identyfikator danej usługi.
Porty współpracują z adresami IP, tworząc w ten sposób tzw. gniazda sieciowe (ang. sockets), które są wykorzystywane do przesyłania danych. Numer protokołu stanowi jeden z parametrów gniazda.
Gniazdo jest to dwukierunkowy punkt końcowy połączenia. Dwukierunkowość oznacza możliwość wysyłania oraz odbierania danych. Aplikacje wykorzystują gniazdo do komunikowania się przez sieć. Przykładowo adres IP identyfikuje urządzenie w sieci, np. 192.168.1.1, a port identyfikuje usługę na tym urządzeniu, np. port 80 dla HTTP (serwer WWW).
Jakie są numery portów
Organizacja IANA (ang. Internet Assigned Numbers Authority) zajmuje się zarządzaniem domenami, a także przydzielaniem adresów IP oraz numerów portów. Numery portów to wartości z zakresu od 0 do 65535, które zostały podzielone na trzy kategorie.
Porty ogólnie znane (ang. well-known ports)
Ogólnie znane porty to zakres numerów portów w protokole TCP/UDP, które zostały zarezerwowane dla określonych usług i aplikacji serwerowych. Obejmują zakres od 0 do 1023.
Te porty są używane przez popularne protokoły komunikacyjne, takie jak np. HTTP, FTP, czy SMTP. Każdy port odpowiada konkretnej usłudze, co ułatwia komunikację pomiędzy urządzeniami w sieci.
Poniżej znajduje się lista wybranych ogólnie znanych portów, które są przypisane do danych protokołów warstwy aplikacji:
Numer protokołu | Protokół warstwy transportowej | Protokół warstwy aplikacji |
|---|---|---|
80 | TCP | HTTP (HyperText Transfer Protocol) Serwer proxy najczęściej przypisany jest do portu 8080. |
443 | TCP | HTTPS (HTTP Secure) |
20, 21 | TCP | FTP (File Transfer Protocol), port 20 – transfer plików, port 21 – transfer poleceń |
22 | TCP | SSH (Secure Shell) |
110 | TCP | POP3 (Post Office Protocol v3) |
995 | TCP | Szyfrowany POP3 (Post Office Protocol v3) |
143 | TCP | IMAP (Internet Message Access Protocol) |
993 | TCP | Szyfrowany IMAP (Internet Message Access Protocol) |
25 | TCP | SMTP (Simple Mail Transfer Protocol) |
465 lub 587 | TCP | Szyfrowany SMTP (Simple Mail Transfer Protocol) |
23 | TCP | TELNET |
53 | TCP lub UDP | DNS (Domain Name System) |
67, 68 | UDP | DHCP (Dynamic Host Configuration Protocol) |
161 | UDP | SNMP (Simple Network Management Protocol) |
389 | TCP lub UDP | LDAP (Lightweight Directory Access Protocol) |
639 | TCP lub UDP | Szyfrowany LDAP (Lightweight Directory Access Protocol) |
UWAGA!
Administrator danego systemu może zmienić numer portu dla danej usługi. Praktyka ta jest stosowana w celu poprawienia bezpieczeństwa. W ten sposób można uniknąć ataków skierowanych na domyślne numery portów protokołów.
Porty zarejestrowane (ang. registered ports)
Pula z zakresu 1024 – 49151 obejmuje porty zarezerwowane dla usług i aplikacji, które są zainstalowane na komputerze użytkownika.
Porty dynamiczne/prywatne (ang. dynamic/private ports)
Kolejna grupa portów obejmuje zakres 49152 – 65535. Numery te są używane dynamicznie przez aplikacje klienckie do tworzenia tymczasowych połączeń.
Czy różne usługi mogą używać tego samego numeru portu?
Przeważnie jeden numer portu jest używany przez jedną usługę. Jednak zdarzają się wyjątki. Czasami dwie różne usługi mogą jednocześnie korzystać z tego samego numeru portu. W takim przypadku każda z usług musi działać na innym protokole warstwy transportowej (TCP lub UDP).
Niektóre usługi wykorzystują ten sam port i protokoły, co jest raczej rzadkością. Przykładem jest DNS, który korzysta z portu 53 za pomocą TCP oraz UDP.
Czasami jedna usługa korzysta z dwóch różnych portów, przy czym każdy z nich pełni inną funkcję. Przykładowo protokół FTP używa portu 20 do transferu plików, a portu 21 do transferu poleceń.

