Protokoły warstwy transportu: TCP, UDP, porty i niezawodność transmisji danych
Warstwa transportowa (czwarta w modelu OSI oraz druga w modelu TCP/IP) odpowiada za nawiązanie logicznego połączenia między aplikacjami działającymi na różnych hostach, dzielenie dużych strumieni danych na mniejsze segmenty oraz kontrolowanie ich poprawnego doręczenia. W ramach przedmiotu LSK (Lokalne Sieci Komputerowe) przyszły technik musi doskonale rozróżniać dwa fundamentalne protokoły tej warstwy: TCP i UDP, a także rozumieć mechanizmy portów i kontroli przepływu.
1. Główne zadania warstwy transportowej
Zanim dane trafią do warstwy internetowej (IP), warstwa transportowa nadaje im odpowiednie ramy operacyjne:
- Segmentacja i składanie: Dzielenie dużych bloków danych z aplikacji na mniejsze segmenty oraz składanie ich w pierwotną całość po stronie odbiorcy.
- Multiplexing (Multipleksacja): Umożliwianie jednoczesnego korzystania z sieci przez wiele aplikacji na jednym komputerze za pomocą systemów portów.
- Kontrola przepływu i błędów: Monitorowanie prędkości przesyłu, wykrywanie zgubionych pakietów i żądanie ich ponownego wysłania (w protokołach niezawodnych).
2. Protokół TCP (Transmission Control Protocol)
TCP to połączeniowy protokół o wysokiej niezawodności, stosowany wszędzie tam, gdzie utrata nawet jednego bajtu danych jest niedopuszczalna (np. przeglądanie WWW, transfer plików, poczta e-mail, baza danych):
- Połączeniowość (Three-Way Handshake): Przed przesłaniem właściwych danych, hosty nawiązują sesję w procesie trzykrotnego uzgadniania połączenia za pomocą flag:
SYN,SYN-ACK,ACK. - Gwarancja doręczenia i potwierdzenia: Każdy segment posiada numer porządkowy (Sequence Number), a odbiorca odsyła potwierdzenia odebrania (ACK). Jeśli pakiet zaginie w transmiji, TCP automatycznie wymusza jego retransmisję.
- Kontrola przepływu (Flow Control): Mechanizm tzw. okna przesuwnego (Sliding Window) zapobiega zasypaniu odbiorcy zbyt dużą ilością danych, dostosowując prędkość nadawania do jego aktualnych możliwości.
3. Protokół UDP (User Datagram Protocol)
UDP to bezpołączeniowy protokół o minimalnym narzucie nagłówka, nastawiony na maksymalną prędkość i brak opóźnień, kosztem braku gwarancji doręczenia (wykorzystywany w streamingu wideo, VoIP, grach online oraz zapytań DNS):
- Brak nawiązywania sesji: Nadawca wysyła datagramy bezpośrednio do odbiorcy bez wcześniejszego "pytania" o gotowość i bez potwierdzania odbioru.
- Brak retransmisji: Jeśli pakiet ulegnie zagubieniu lub uszkodzeniu w drodze, protokół UDP nie podejmuje prób jego odzyskania (aplikacja musi radzić sobie z tym we własnym zakresie).
4. System portów sieciowych
Aby router lub system operacyjny wiedział, do jakiej konkretnie aplikacji przekazać odebrane dane, wykorzystuje się numery portów o długości 16 bitów (zakres od 0 do 65535):
- Porty dobrze znane (Well-Known Ports: 0 – 1023): Zarezerwowane dla kluczowych usług systemowych (np. port 80 dla HTTP, port 443 dla HTTPS, port 53 dla DNS).
- Porty zarejestrowane (Registered Ports: 1024 – 49151): Przypisywane aplikacjom i usługom komercyjnym.
- Porty dynamiczne / prywatne (Dynamic / Ephemeral Ports: 49152 – 65535): Przydzielane automatycznie przez system operacyjny jako porty źródłowe dla klientów inicjujących połączenie.
Strategia technika
Analizując ruch sieciowy za pomocą narzędzi takich jak Wireshark lub diagnozując błędy połączeń za pomocą poleceń systemowych (np. netstat czy ss), zawsze zwracaj uwagę na stan gniazd (sockets) składających się z adresu IP oraz numeru portu. Rozróżnienie, czy dana aplikacja opiera się na stabilnym protokole TCP (wymagającym poprawnego zamknięcia sesji flagą FIN / RST), czy na szybkim UDP, pozwala błyskawicznie zidentyfikować źródło problemów z wydajnością lub zablokowanym ruchem na zaporze sieciowej.