11. Zadania warstwy transportowej

Warstwa transportowa jest bardzo ważnym elementem procesu komunikacji. Do najważniejszych zadań tej warstwy należą:

·         nawiązywanie i obsługiwanie połączenia (sesji) pomiędzy hostami,

·         śledzenie połączenia między hostami,

·         dzielenie danych na mniejsze kawałki,

·         identyfikacja poszczególnych aplikacji,

·         kontrola przepływu danych,

·         retransmisja w przypadku utraty danych.

Śledzenie połączeń, które są konwersacjami między hostami, umożliwia wielu aplikacjom jednoczesne wysyłanie i odbieranie danych. Na jednym komputerze możemy sprawdzać pocztę, korzystać z bankowości elektronicznej czy komunikować się ze znajomymi. W tej chwili wydaje nam się naturalne, że właściwie trudno wyobrazić sobie funkcjonowanie w cyberprzestrzeni bez tej możliwości, ale warto pamiętać, że jest to możliwe dzięki warstwie transportowej.

Możliwość korzystania z wielu usług jednocześnie, obejmuje również dzielenie danych, czyli rozbijanie ich na mniejsze kawałki. Pozwala to na wydajniejszą komunikację, ponieważ duże ilości danych nie są przesyłane jednocześnie. Gdyby nie segmentacja, tylko jedna aplikacja na raz mogłaby odbierać dane, a pozostałe aplikacje z których korzystamy, musiałyby czekać na swoją kolej. Jak widać na poniższym obrazku, segmenty są przesyłane naprzemiennie, segmenty strony internetowej, segmenty wiadomości e-mail, segmenty komunikatora itp. są przesyłane naprzemiennie. Cały proces naprzemiennego przesyłania wielu segmentów aplikacji nazywa się multipleksowaniem.

Innym ważnym zadaniem lub funkcją warstwy transportowej jest przekazywanie danych do właściwej aplikacji. Każda aplikacja ma swój własny identyfikator, aby ją jednoznacznie zdefiniować. Ten identyfikator to numer portu aplikacji.

Jest przypisywany do segmentu lub datagramu podczas enkapsulacji na poziomie warstwy transportowej i gwarantuje dostarczenie danych do określonej aplikacji.

Podobnie jak w przypadku adresów IP, numery portów są przydzielane przez urząd IANA (Internet Assigned Numbers Authority), który dzieli numery portów na 3 grupy: 

Nazwa grupy portów

Zakres numeracji

Zastosowanie

Dobrze znane (ang. well known)

0 – 1023

Usługi i aplikacje serwera

Zarejestrowane (ang. registered)

1024 – 49151

Usługi i aplikacje użytkownika

Dynamiczne (ang. dynamic)

49152 – 65535

Losowo wybierane dla aplikacji klienta


Dobrze znane porty, tj. porty od 0 do 1023, są zarejestrowane dla usług i określonych aplikacji serwerowych, np. serwery WWW domyślnie uruchamiane są na porcie 80, a serwery POP3 domyślnie uruchamiane są na porcie 110. Zestaw aplikacji ze znanymi portami, w tym protokołami warstwy transportowej, pokazano poniżej:

Protokół warstwy aplikacji

Numer portu

Protokół warstwy transportowej

HTTP

80

TCP

HTTPS

443

TCP

POP3

110 (szyfrowany 995)

TCP

IMAP

143 (szyfrowany 993)

TCP

SMTP

25 (szyfrowany 465 lub 587)

TCP

FTP

21 (polecenia) i 20 (pliki)

TCP

FTPS

990

TCP

TELNET

23

TCP

SSH

22

TCP

DNS

53

TCP lub UDP

DHCP

67 i 68 (IPv6 – 546 i 547)

UDP

LDAP

389 (szyfrowany 639)

TCP lub UDP

SNMP

161

UDP


Druga grupa, zarejestrowane porty, jest wykorzystywana przez aplikacje zainstalowane na komputerze użytkownika. Na przykład, jeśli zainstalujemy na naszym komputerze aplikację systemu zarządzania bazą danych MySQL, będzie ona działać na porcie 3306. Trzecia i ostatnia grupa, dynamiczny numer portu, jest losowo przypisywana do aplikacji klienckiej, np. gdy klient wysyła do serwera żądanie udostępnienia strony internetowej, serwer domyślnie akceptuje żądanie na porcie 80, ale klient otrzymuje żądanie z serwera. Przychodząca odpowiedź nie zostanie wysłana na port 80, ponieważ jest on zarezerwowany dla procesu serwera WWW, ale na losową liczbę portów przydzielonych z puli portów dynamicznych.

Na tym samym numerze portu nie może działać wiele aplikacji jednocześnie. Gdy dana aplikacja działa na porcie 53 (DNS), niemożliwe jest, aby inna aplikacja działała na tym porcie.

Skoro już wiemy, czym jest port aplikacji, przedstawmy inne pojęcie, czyli gniazdo. Gniazdo to kombinacja adresu IP i numeru portu:

185.191.171.141:80

Gniazdo jednoznacznie identyfikuje dany proces działający na urządzeniu, więc na przykład, gdy nasza przeglądarka będzie odwoływać się do serwera WWW, aby obsłużyć stronę internetową, żądania serwera będą wysyłane do jego gniazda.