Warstwa transportowa (Transport Layer)

Zapewnia kontrolę przepływu danych, niezawodność transmisji oraz segmentację danych. W tej warstwie odbywa się również kontrola błędów. Protokoły takie jak TCP lub UDP zapewniają niezawodną komunikację między hostami, zarządzają przepływem danych oraz ich segmentacją.

TCP

TCP (Transmission Control Protocol – Protokół Sterowania Transmisją): Protokół połączeniowy, zapewniający niezawodne i uporządkowane dostarczanie danych. To jeden z głównych protokołów działających na warstwie transportowej (warstwa 4 OSI). Jest to protokół połączeniowy i niezawodny, który zapewnia pewne i uporządkowane dostarczanie danych pomiędzy dwoma urządzeniami w sieci. TCP gwarantuje, że dane wysłane z jednej aplikacji na jednym urządzeniu zostaną odebrane dokładnie i we właściwej kolejności przez inną aplikację na innym urządzeniu.

Główne właściwości protokołu TCP

  • Połączeniowość (Connection-Oriented) - TCP nawiązuje połączenie między nadawcą a odbiorcą zanim dane zostaną przesłane. To połączenie stanowi wirtualny obwód, który zapewnia niezawodny i uporządkowany transfer danych.

  • Niezawodność (Reliability) - TCP gwarantuje niezawodne dostarczanie danych. Osiąga to za pomocą mechanizmów takich jak: potwierdzenia odbioru (ACK) oraz ponowne przesyłanie utraconych lub uszkodzonych segmentów. Jeśli segment danych nie zostanie potwierdzony, TCP automatycznie go retransmituje.

  • Uporządkowany transfer danych (Ordered Data Transfer) - TCP zapewnia dostarczanie danych w odpowiedniej kolejności. Jeżeli segmenty danych dotrą w nieprawidłowej kolejności, TCP przestawia je zanim zostaną przekazane do aplikacji działającej na wyższej warstwie.

TCP 3-Way Handshake

Example
  • SYN (Synchronizacja): Proces rozpoczyna się, gdy klient wysyła segment TCP z ustawioną flagą SYN. Ta początkowa wiadomość sygnalizuje zamiar nawiązania połączenia i zawiera początkowy numer sekwencyjny (ISN), który jest losowo wybraną wartością.

  • SYN-ACK (Synchronizacja + Potwierdzenie): Po odebraniu segmentu SYN, serwer odpowiada segmentem TCP, który ma ustawione flagi SYN i ACK. Numer potwierdzenia (ACK) jest ustawiany na wartość o 1 większą niż numer sekwencyjny otrzymany od klienta. Serwer generuje również swój własny początkowy numer sekwencyjny (ISN).

  • ACK (Potwierdzenie): Na koniec klient potwierdza odpowiedź serwera, wysyłając segment TCP z ustawioną flagą ACK. Numer potwierdzenia (ACK number) jest ustawiany na wartość o 1 większą niż początkowy numer sekwencyjny serwera. W tym momencie połączenie jest ustanowione, i oba urządzenia mogą rozpocząć przesyłanie danych. Po zakończeniu trójfazowego uzgadniania, urządzenia mogą wymieniać dane w obu kierunkach. Numery potwierdzeń (ACK) w kolejnych segmentach służą do potwierdzania odbioru danych oraz zarządzania przepływem informacji.

TCP - Three-way handshake in details
TCP - Three-way handshake in details
Kliknij, aby otworzyć podgląd
TCP And The Three-Way Handshake Explained Follow-Along Lab
TCP And The Three-Way Handshake Explained Follow-Along Lab
Kliknij, aby otworzyć podgląd
TCP-3 Way Handshake Explained
TCP-3 Way Handshake Explained
Kliknij, aby otworzyć podgląd

Flagi kontrolne TCP

TCP (Transmission Control Protocol – Protokół Kontroli Transmisji) wykorzystuje zestaw flag kontrolnych, aby zarządzać różnymi aspektami procesu komunikacji. Flagi te znajdują się w nagłówku TCP i kontrolują różne funkcje związane z nawiązywaniem, utrzymywaniem oraz zakończeniem połączenia TCP. Flagi kontrolne TCP

  • Nawiązywanie połączenia (inicjacja):

    • SYN (Ustawiona): Inicjuje żądanie połączenia.
    • ACK (Nieustawiona): Brak potwierdzenia (jeszcze).
    • FIN (Nieustawiona): Brak żądania zakończenia połączenia.
  • Nawiązywanie połączenia (odpowiedź):

    • SYN (Ustawiona): Potwierdza żądanie połączenia.
    • ACK (Ustawiona): Potwierdza odebrane dane / numer sekwencyjny.
    • FIN (Nieustawiona): Brak żądania zakończenia połączenia.

    Zamykanie połączenia (Terminating a Connection):

    • SYN (Nieustawiona): Brak żądania nawiązania połączenia (ponieważ już istnieje).
    • ACK (Ustawiona): Potwierdza odebrane dane lub ostatni segment.
    • FIN (Ustawiona): Inicjuje zamknięcie połączenia TCP.
Example

Flagi kontrolne TCP

FlagaNazwaZnaczenie
CWRCongestion Window ReducedUżywana w mechanizmach kontroli przeciążenia (ECN). Informuje, że nadawca zmniejszył rozmiar okna przeciążenia.
ECEECN EchoECN (Explicit Congestion Notification) – sygnalizuje wykrycie przeciążenia sieci bez utraty pakietów.
URGUrgentWskazuje, że pole Urgent Pointer jest ważne i zawiera dane wymagające natychmiastowego przetworzenia.
ACKAcknowledgmentOznacza, że pole ACK number jest ważne i potwierdza odebrane dane.
PSHPushWymusza natychmiastowe przekazanie danych do aplikacji, bez dalszego buforowania.
RSTResetNatychmiastowe zerwanie połączenia TCP (np. błąd sesji, brak nasłuchującej aplikacji).
SYNSynchronizeSynchronizacja numerów sekwencyjnych — inicjacja połączenia TCP (3‑way handshake).
FINFinishŻądanie kontrolowanego zamknięcia połączenia TCP.

TCP Port Range (Zakresy portów TCP)

TCP (Transmission Control Protocol) używa numerów portów do rozróżniania pomiędzy różnymi usługami lub aplikacjami działającymi na urządzeniu.

  • Numery portów są 16-bitowymi liczbami bez znaku i są podzielone na trzy zakresy.
  • Maksymalny numer portu w zestawie protokołów TCP/IP to 65 535.
  • Wartość ta wynika z zakresu liczby 16-bitowej bez znaku: 2^16 = 65 536 → 0 do 65 535

trzy zakresy


  • Well-known ports - 0 – 1023 - Porty zarezerwowane dla znanych usług (np. HTTP, SSH, DNS)
  • Registered ports - 1024 – 49151 - Porty przypisane aplikacjom przez IANA (np. PostgreSQL: 5432)
  • Dynamic / Ephemeral - 49152 – 65535 - Tymczasowe porty klienta (np. dla NAT, dynamiczne sesje TCP)

Porty znanych usług (0–1023): Numery portów od 0 do 1023 są zarezerwowane dla powszechnie znanych usług i protokołów. Są one standaryzowane przez organizację IANA (Internet Assigned Numbers Authority). Przykłady obejmują:
80 – HTTP (Hypertext Transfer Protocol – protokół przesyłania hipertekstu).
443 – HTTPS (szyfrowany HTTP).
21 – FTP (protokół transferu plików).
22 – SSH (zdalna powłoka w trybie szyfrowanym).
25 – SMTP (wysyłanie poczty elektronicznej).
110 – POP3 (odbieranie poczty elektronicznej).

Zakres portów TCP – Porty zarejestrowane (Registered Ports)

Porty zarejestrowane (1024–49151): Numery portów od 1024 do 49151 są zarezerwowane dla określonych usług lub aplikacji. Zwykle są one przypisywane przez IANA (Internet Assigned Numbers Authority) dostawcom oprogramowania lub programistom.

Choć nie są to porty ściśle standardowe (jak well-known ports), wiele z nich jest rozpoznawalnych i często wykorzystywanych w znanych usługach.

Przykłady:

3389 – RDP (Remote Desktop Protocol)

3306 – MySQL

8080 – Alternatywny port HTTP (np. proxy, debug, dev serwery)

27017 – MongoDB


UDP

UDP (User Datagram Protocol) to bezpołączeniowy i lekki protokół warstwy transportowej, który zapewnia prosty i minimalistyczny sposób przesyłania danych między urządzeniami w sieci. UDP nie nawiązuje połączenia przed wysłaniem danych i nie zapewnia niezawodności ani uporządkowanego dostarczania danych. Zamiast tego skupia się na prostocie i wydajności, co czyni go odpowiednim dla określonych typów aplikacji. (działa szybciej, ale nie zapewnia żadnych gwarancji co do kolejności ani niezawodności dostarczania danych.)

Charakterystyka UDP:

  • Connectionless: UDP to bezpołączeniowy protokół, co oznacza, że nie nawiązuje połączenia przed wysłaniem danych. Każdy pakiet UDP (datagram) jest traktowany niezależnie, a pomiędzy nadawcą a odbiorcą nie jest utrzymywany żaden trwały stan połączenia.
  • Unreliable: UDP nie zapewnia niezawodnego dostarczania danych. Nie gwarantuje, że pakiety zostaną dostarczone i nie posiada mechanizmu ponownej transmisji utraconych pakietów. Brak niezawodności sprawia, że UDP jest szybszy, ale mniej odpowiedni dla aplikacji wymagających gwarantowanego dostarczenia danych.
  • Used for Real-Time App (Stosowany w aplikacjach czasu rzeczywistego): UDP jest powszechnie używany w aplikacjach czasu rzeczywistego, gdzie kluczowe jest niskie opóźnienie, takich jak audio i video streaming, gry online oraz komunikacja VoIP (Voice over IP).
  • Prosty i bezstanowy (stateless): UDP to protokół bezstanowy, co oznacza, że nie przechowuje żadnych informacji o stanie komunikacji.
  • Każdy pakiet UDP działa niezależnie od poprzednich i kolejnych pakietów.

TCP vs UDP

CechaUDPTCP
PołączenieConnectionless (brak nawiązywania połączenia)3-Way Handshake (trzystopniowe ustanawianie połączenia)
NiezawodnośćUnreliable – brak gwarancji dostarczenia pakietówReliable – gwarantuje dostarczenie i kolejność pakietów, wspiera retransmisję
Rozmiar nagłówkaMniejszy nagłówek, mniejsze obciążenieWiększy nagłówek
ZastosowaniaVoIP, streaming, gry onlineHTTP, Email
Przykłady protokołówDNS, DHCP, SNMP, VoIP (np. SIP), online gamingHTTP, FTP, Telnet, SMTP (e-mail), HTTPS


References

  • ine, "Assessment Methodologies: Footprinting & Scanning", Transport Layer - Part 1 & 2