Zadania warstwy transportowej

Damian Stelmach

Warstwa transportowa czy też warstwa transportu (można stosować te nazwy naprzemiennie) to bardzo ważny element w procesie komunikacji. Do najważniejszych zadań tej warstwy zaliczyć należy:

  • nawiązanie i obsługa połączeń (sesji) pomiędzy hostami,
  • śledzenie połączeń pomiędzy hostami,
  • podział danych na mniejsze fragmenty,
  • identyfikowanie poszczególnych aplikacji,
  • kontrola przepływu danych,
  • retransmisja w przypadku utraty danych.

Śledzenie połączeń, czyli konwersacji pomiędzy hostami daje możliwość przesyłania i odbierania danych przez wiele aplikacji jednocześnie. Na jednym komputerze możemy przeglądać pocztę, korzystać z bankowości elektronicznej czy komunikować się ze znajomymi. Obecnie jest to dla nas naturalne, właściwie to trudno sobie wyobrazić sytuację, w której nie mielibyśmy takiej możliwości, ale warto przy tym pamiętać, że możliwe między innymi dzięki warstwie transportowej.

Na możliwość ciągłego korzystania z wielu usług jednocześnie składa się również segmentacja danych, czyli dzielenie ich na mniejsze fragmenty. Umożliwia to sprawniejszą komunikacje, gdyż nie przesyła się jednocześnie dużej ilości danych. Gdyby nie segmentacja, to dane mogłaby odbierać jednocześnie tylko jedna aplikacja, pozostałe, z których korzystamy, musiałby czekać na swoją kolej. Widać to na grafice poniżej, segmenty przesyłane są na przemian, segment dla strony WWW, segment dla wiadomości e-mail, segment dla komunikatora i tak na przemian. Cały ten proces przesyłania segmentów wielu aplikacji na przemian nazywany jest multipleksingiem.

Przesyłanie segmentów

Kolejnym istotnym zadaniem czy funkcją warstwy transportu jest dostarczanie danych do właściwych aplikacji. Każda aplikacja posiada swój identyfikator, jednoznacznie ją określający. Identyfikatorem tym jest numer portu aplikacji.

Numery portów

Przypisywany jest on do segmentu lub datagramu w procesie enkapsulacji właśnie na poziomie warstwy transportu i gwarantuje on dostarczenie danych do konkretnej aplikacji.

Enkapsulacja

Podobnie jak w przypadku adresów IP, przydzielaniem numerów portów zajmuje się organizacja IANA (ang. Internet Assigned Numbers Authority), która to podzieliła numery portów na 3 grupy:

Nazwa grupy portówZakres numerówZastosowanie
Dobrze znane porty (ang. well knows)0 - 1023usługi i aplikacje serwera
Zarejestrowane porty (ang. registered)1024 - 49151usługi i aplikacje użytkownika
Dynamiczne porty (ang. dynamic)49152 - 65535losowo wybierane dla aplikacji klienta

Dobrze znane porty, czyli te od 0 do 1023 są zarejestrowane dla usług i konkretnych aplikacji serwerowych, przykładowo serwer WWW będzie domyślnie pracował na porcie 80, a serwer POP3 na 110. Zbiór aplikacji o dobrze znanych portach z uwzględnieniem protokołów warstwy transportowej przedstawiony jest poniżej.

Protokół warstwy aplikacjiNumer portuProtokół warstwy transportowej
HTTP80TCP
HTTPS443TCP
POP3110 (szyfrowany 995)TCP
IMAP143 (szyfrowany 993)TCP
SMTP25 (szyfrowany 465 lub 587)TCP
FTP21 (polecenia) i 20 (pliki)TCP
FTPS990TCP
TELNET23TCP
SSH22TCP
DNS53TCP lub UDP
DHCP67 i 68 (dla IPv6 546 i 547)UDP
LDAP389 (szyfrowany 639)TCP lub UDP
SNMP161UDP

Druga grupa, czyli zarejestrowane porty wykorzystywane są przez aplikację zainstalowane na komputerze użytkownika. Jeśli przykładowo zainstalujemy na swoim komputerze aplikację będącą systemem zarządzania bazami danych MySQL, to będzie ona pracować na porcie 3306. Trzecia, ostatnia grupa czyli dynamiczne numery portów, z kolei są przydzielane losowo do aplikacji klienckich, np. kiedy klient wysyła żądanie udostępnienia strony WWW do serwera, to serwer przyjmuje to żądanie domyślnie na porcie 80, ale już odpowiedź, którą od serwera klient otrzymuje nie jest przesyłana na port 80, bo ten zarezerwowany jest dla procesów serwera WWW, ale na przydzielonym losowo numerze portów z puli portów dynamicznych.

Działanie kilku aplikacji na tym samym numerze portu nie jest możliwe. Kiedy dana aplikacja pracuje na porcie np. 53 (DNS), to inna aplikacja już na tym porcie działać nie może, nie jest to możliwe.

Jeśli wiemy już czym są porty aplikacji to wprowadźmy sobie kolejne pojęcie. Będzie nim gniazdo (ang. Socket). Z pojęciem Socketu spotkaliście się już przy okazji omawiania płyt główny i procesorów na zajęciach z urządzeń techniki komputerowej, w sieciach komputerowych również ono występuje. Gniazdo to kombinacja adresu IP i numeru portu:

Gniazdo - IP i port

Gniazdo jednoznacznie identyfikuje dany proces działający na urządzeniu i tak przykładowo, kiedy nasza przeglądarka będzie odwoływała się do serwera WWW o udostępnienie jakiejś strony internetowej, to zapytania do serwera zostanie przesłane do jego gniazda czyli procesu (aplikacji serwera WWW).

Socket