Liczba 22 użyta w adresie http://www.adres_serwera.pl:22 oznacza numer
A. portu, inny od standardowego numeru dla danej usługi.
B. PID procesu uruchomionego na serwerze.
C. sekwencyjny pakietu przekazującego dane.
D. aplikacji, do której kierowane jest zapytanie.
Pytanie z egzaminu CKE, wrzesień 2015 (arkusz E.13-X-15.08).
Liczba 22 po dwukropku w adresie http://www.adres_serwera.pl:22 oznacza numer portu TCP, na który klient ma wysłać żądanie. W składni adresów URI, opisanej m.in. w RFC 3986, część po nazwie hosta i dwukropku to właśnie port, czyli punkt końcowy komunikacji w danym protokole transportowym. Dla zwykłego HTTP standardowym portem jest 80, a dla HTTPS 443. Jeżeli w adresie wpiszemy :22, to przeglądarka spróbuje połączyć się z serwerem HTTP na porcie 22, czyli innym niż domyślny dla tej usługi. Moim zdaniem to jeden z tych drobiazgów, które bardzo pomagają w praktycznej diagnostyce sieci. Port 22 jest standardowo kojarzony z SSH, więc taki adres może nie zadziałać jako strona WWW, jeśli na tym porcie działa serwer SSH zamiast serwera WWW. W administracji często spotyka się adresy typu http://serwer:8080 albo http://localhost:3000, gdzie aplikacja webowa działa na niestandardowym porcie, np. podczas testów lub za reverse proxy. Dobra praktyka jest taka, żeby znać typowe porty usług i umieć sprawdzić nasłuchiwanie narzędziami typu netstat, ss albo nmap, bo wtedy od razu wiadomo, czy problem dotyczy DNS, zapory, usługi czy samego portu.
W tym adresie liczba po dwukropku nie oznacza aplikacji w sensie nazwy programu ani identyfikatora programu, chociaż łatwo się tak pomylić. Port jest używany przez stos TCP/IP do wskazania, do którego punktu końcowego komunikacji na danym hoście mają trafić dane. System operacyjny dopiero później wiąże port z procesem, który nasłuchuje na odpowiednim gnieździe sieciowym. Czyli aplikacja może korzystać z portu, ale sam zapis :22 w URL nie jest numerem aplikacji. To ważna różnica, szczególnie przy diagnozowaniu usług webowych, SSH, baz danych czy paneli administracyjnych. Nie jest to też numer sekwencyjny pakietu. Numery sekwencyjne występują w nagłówkach TCP i służą do porządkowania strumienia danych oraz potwierdzania transmisji, ale użytkownik nie wpisuje ich w adresie strony. One działają niżej, niewidocznie dla osoby korzystającej z przeglądarki. Również PID procesu nie pojawia się w adresie URL. PID jest lokalnym identyfikatorem procesu w systemie operacyjnym, np. w Windows lub Linux, i może się zmieniać po restarcie programu. Klient zdalny nie kieruje zapytania do PID, bo ten numer nie ma sensu poza konkretnym systemem. Typowy błąd myślowy polega na wrzuceniu do jednego worka pojęć: usługa, aplikacja, proces i port. W praktyce wygląda to tak: przeglądarka łączy się z adresem IP serwera i konkretnym portem, a dopiero serwer przekazuje ruch do procesu, który ten port obsługuje. Dlatego w http://www.adres_serwera.pl:22 liczba 22 to port, i to nietypowy dla protokołu HTTP.