Podstawy sieci komputerowych
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.