Oczywiście najczęstsze użycie słowa port odnosi się do żeglugi. Jednak w informatyce używa się również terminu port. W rzeczywistości ma dwa zastosowania. Pierwszy odnosi się do gniazda, do którego można podłączyć kabel. Typowe przykłady to port USB lub Ethernet. Technicznie rzecz biorąc, gniazdo Ethernet może być traktowane jako port sieciowy. To nie jest akceptowane znaczenie słowa port w sieci. Port sieciowy to numer logiczny, który identyfikuje proces lub ruch sieciowy usługi sieciowej, dla którego jest przeznaczony lub przez który jest wysyłany.
Dlaczego numery portów są niezbędne?
Kiedy Twój komputer komunikuje się z serwerem internetowym w Internecie, umieszcza swój adres IP w polu nadawcy. Dzięki temu serwer wie, na jaki adres IP musi wysłać odpowiedź. Gdy ta odpowiedź wróci do komputera, przeglądarka zinterpretuje odpowiedź i wyrenderuje stronę internetową.
Działa to dobrze w wyidealizowanym systemie z jednym oprogramowaniem tworzącym i odbierającym ruch sieciowy. Jednak prawdziwy świat taki nie jest. Na każdym komputerze istnieje szereg programów generujących ruch sieciowy. Aby upewnić się, że ruch sieciowy jest prawidłowo przekazywany do właściwego programu, w niektórych przypadkach właściwy proces w programie. Ostatnia warstwa adresowania to numer portu.
Wyobraź sobie, że masz jednocześnie przeglądarkę internetową z dwiema otwartymi kartami i grę wideo online. Każda karta przeglądarki musi być w stanie wysyłać i odbierać ruch sieciowy, potencjalnie jednocześnie. Gra online musi również wysyłać i odbierać ruch sieciowy. Nie chcesz, aby Twoja gra musiała odfiltrowywać losowe odpowiedzi internetowe, a także nie chcesz, aby Twoja przeglądarka musiała filtrować ruch w grze. Obie karty i gra otrzymają co najmniej jeden port sieciowy, aby można było łatwo określić zamierzony proces odbiorcy.
To samo działa również na serwerach. Załóżmy, że masz serwer, na którym działa zarówno serwer WWW, jak i serwer poczty e-mail. W takim przypadku numer portu umożliwia systemowi operacyjnemu łatwe rozróżnienie, które pakiety sieciowe są przeznaczone dla której usługi.
Jakie są numery portów?
Numery portów mają postać 16-bitowej liczby całkowitej bez znaku. Oznacza to, że liczby składają się z szesnastu bitów binarnych, nie ma liczb ujemnych, a wszystkie liczby są całkowite. Pozwala to na 65536 możliwych numerów portów w zakresie od 0 do 65535. Nie ma fizycznego systemu portów.
Cały schemat adresowania, podobnie jak adresy IP i adresy MAC, jest całkowicie logiczny. Możesz myśleć o adresach IP i MAC jako adresie na liście, aby przesłać go do domu/komputera. W tej analogii numer portu przypominałby nazwę na kopercie, upewniając się, że dociera do właściwej osoby/procesu w twoim domu/komputerze.
W przestrzeni numeru portu znajduje się inna struktura. Numer portu 0 jest zarezerwowany. W ruchu TCP 0 jest całkowicie nieużywane. W ruchu UDP numer portu jest opcjonalny, a port 0 oznacza „brak portu”. Działa to dla UDP, ponieważ jest to protokół bezstanowy, który niekoniecznie oczekuje odpowiedzi. Porty TCP i UDP są oddzielne. Jedna usługa może powiązać jeden lub więcej portów w jednym lub obu protokołach. Usługi, które używają obu, zazwyczaj łączą się z tymi samymi numerami portów w protokołach TCP i UDP.
Porty 1-1023 są znane jako porty „dobrze znane” i zazwyczaj wymagają uprawnień administracyjnych, aby się z nimi powiązać. Niektóre dobrze znane porty to 80 dla HTTP, 443 dla HTTPS i 53 dla DNS. Następnie masz zakres 1024 – 49151. Są one znane jako porty „zarejestrowane”. Są to porty regularnie używane przez niektóre usługi, ale nie jest to wystarczająco powszechne lub nie było wystarczająco wcześnie, aby uzyskać liczbę poniżej 1023. Porty od 49152 do 65535 są znane jako porty efemeryczne.
Korzystanie z numerów portów
IANA, Internet Assigned Numbers Authority, utrzymuje dobrze znane i zarejestrowane listy portów. Ze znanymi portami powiązana jest tylko jedna usługa. Zarejestrowane porty mogą jednak mieć szereg znanych usług, które domyślnie korzystają z portu.
Ogólnie rzecz biorąc, nic tak naprawdę nie powstrzymuje żadnego programu przed powiązaniem się z dowolnym numerem portu. Jak wspomniano powyżej, porty o numerach poniżej 1024 zwykle wymagają uprawnień administratora lub administratora, aby się z nimi powiązać. Mimo to możesz wymusić powiązanie dowolnej usługi z portem 80, na przykład, nawet jeśli nie jest to serwer WWW. Numery portów w dobrze znanych i zarejestrowanych zakresach są zwykle używane tylko przez nasłuchiwanie w sieci, przy czym porty efemeryczne są zwykle używane do inicjowania połączeń.
Listener to port, który jest otwarty i pozostawiony otwarty. Nasłuchuje wiadomości, dzięki czemu może je przetworzyć i wysłać odpowiedź. Jest to prawie wyłącznie zachowanie usług typu serwerowego, takich jak serwer WWW. Serwer sieciowy byłby hostowany na portach 80 i 443, podczas gdy przeglądarka łącząca się z tymi portami korzystałaby lokalnie z portu efemerycznego.
Standardowe numery portów dla odbiorników aplikacji oznaczają, że łatwo jest wiedzieć, jak faktycznie połączyć się z usługą. Na przykład, gdy umieścisz HTTPS na początku adresu URL, Twoja przeglądarka domyślnie zakłada, że musi połączyć się z portem 443. W niektórych przypadkach odbiorniki zostaną skonfigurowane na alternatywnych portach. Może to być spowodowane tym, że inna usługa lub wersja usługi korzysta już ze standardowego portu. Może to być również próba zabezpieczenia przez ukrycie.
Wniosek
Port sieciowy to adres logiczny. Oprogramowanie może powiązać się z portem, dzięki czemu system operacyjny wie, że każdy ruch wysyłany do tego portu jest przeznaczony dla tego procesu. Numery portów mieszczą się w zakresie od 0 do 65535. Wiele usług jest powiązanych ze standardowym numerem portu. Serwery korzystają z tych portów, podczas gdy urządzenia łączące się z nimi używają losowo dużej liczby portów. Pozwala to na łatwe domyślne połączenie z usługami i zapewnia, że łączenie się z taką usługą nie uniemożliwia samodzielnego hostowania innej usługi.