(T) Warstwa czwarta modelu OSI**

Wstęp do warstwy czwartej modelu OSI

Wstęp do warstwy czwartej modelu OSI

  • Warstwa czwarta nadzorując proces nawiązywania połączenia pomiędzy urządzeniami sieciowymi oraz podział na segmenty, dzięki czemu dane większe od dopuszczalnego rozmiaru jednego segmentu, są dzielone na części, indeksowane a następnie wysyłane do stacji odbiorczej, która przeprowadza odwrotny proces od powyżej opisanego.
  • Do transmisji danych warstwa Transportowa wykorzystuje dwa protokoły:
    • TCP (Transmission Control Protocol) wymusza na odbiorcy wiadomości wysłanie potwierdzenia odebrania danych, ponadto nawiązują oni pomiędzy sobą sesje, a każdy zagubiony w sieci segment zostanie ponownie retransmitowany. Zaletą widoczną dla użytkowników jest gwarancja dotarcia całej transmisji na miejsce przeznaczenia, co jest szczególnie ważne w przypadku przesyłu ważnych plików czy stron internetowych.
    • UDP (User Datagram Protocol) nie wymaga potwierdzenia otrzymana danych przez odbiorcę tym samym nie gwarantując, że dane dotrą na miejsce. Jego zaletą jest szybki czas przesyłu danych poprzez sieć, dzięki czemu nadaje się do transmisji rozmów VoIP czy telekonferencji.

Protokoły warstwy czwartej

TCP – Transmission Control Protocol

Protokół TCP (Transmission Control Protocol) – Został opisany w dokumencie RFC 793.
Budowa nagłówka protokołu TCP

Budowa nagłówka protokołu TCP

  • Source Port (16 bitów) – Numer portu źródłowego połączenia TCP.
  • Destination Port (16 bitów) – Numer portu docelowego połączenia TCP.
  • Sequence Number (32 bity) – Numer pakietu, umożliwiający złożenie danych po dostarczeniu ich do urządzenia końcowego, w odpowiedniej kolejności. Problem związany z dostarczaniem pakietów niezgodnie z kolejnością z jaką były wysyłane, nazywa się (Out-of-order Delivery). Ponadto numer sekwencyjny potwierdza odbiór danych zapowiedzianych w poprzednim pakiecie TCP, przez pole (Acknowledgment Number). Początkowa transmisja TCP może być rozpoczęta od dowolnej liczby z zakresu od 0 do 4,294,967,295 (Podczas rozwiązywania problemów związanych z protokołem TCP wykorzystywana jest numeracja od liczby 0).
  • Acknowledgment Number (32 bity) – Numer (Sequence Number) określający następny pakiet sesji TCP.
  • Offset (4 bity) – Określa liczbę bitów 32 bitowych wierszy w nagłówku pakietu TCP.
  • Reserved (3 bity) – obecnie nie używane pole.
  • TCP Flags (9 bity) – Wartości dziewięciu jedno bitowych flag kontrolnych, wraz z określeniem która z nich jest aktywna w danym pakiecie TCP (Poszczególne flagi są następujące NS, CWR, ECE, URG, ACK, PSH, RST, SYN, FIN).
  • Window (16 bitów) – Ilość bitów jaką nadawca wyśle, zanim będzie oczekiwał na potwierdzenie odbioru danych, ACK (W przypadku funkcji TCP Sliding Window, ramka TCP zawiera również ilość przesyłanych segmentów).
  • Checksum (16 bitów) – Pole sumy kontrolnej, służącej do wykrywania błędów występujących w danym segmencie TCP.
  • Urgent Pointer (16 bitów) – Określa liczbę bitów pomiędzy obecnym numerem sekwencji, a ostatnim ważnym bajtem.
  • TCP Options (od 0 do 32 bitów) – Zawiera dane o sesji TCP.

Cechy protokołu TCP

  • Reliable Transport – Zapewnia przesył danych wolnych od błędów.
  • Connection-Oriented – Przed rozpoczęciem przesyłu danych, protokół TCP wymaga nawiązania sesji (Przy pomocy metody 3-way handshake).
  • Flow Control – Umożliwia regulację przepustowości połączenia (Za pomocą wiadomości Stop oraz Go).
  • Windowing – Aby wiadomość potwierdzająca otrzymanie pakietu (ACK), nie musiała być wysyłana po otrzymaniu każdego nowego pakietu, protokół TCP operuje na zasadzie okien (Window) które określają ilość pakietów jaka ma być przesłana zanim serwer będzie wymagał potwierdzenia odbioru.
  • Acknowledgements – Potwierdza otrzymanie pakietów, umożliwiając ponowne przesłanie tych które nie dotarły.
  • More overhead – Protokół TCP znacząco zwiększa wielkość nagłówka pakietu.

Pojęcia związane z protokołem TCP

  • Three-Way Handshake – Opisuje wstępny proces nawiązywania sesji TCP pomiędzy urządzeniami sieciowymi.
  • Właściwa wymiana danych za pomocą protokołu TCP, pomiędzy hostami nie jest możliwa bez ukończenia pełnego procesu Three-Way Handshake. A wygląda on następująco:
    • Faza pierwsza: Inicjator sesji wysyła wiadomość synchronizacyjną (SYN) do odbiorcy.
    • Faza druga: Odbiorca potwierdza otrzymanie wiadomości synchronizacyjnej SYN inicjatora, wysyłając wiadomość potwierdzającą (ACK) oraz własną wiadomość synchronizacyjną SYN.
    • Faza trzecia: Inicjator po otrzymaniu wiadomości synchronizacyjnej SYN, wysyła wiadomość potwierdzającą ACK.
TCP (Three-Way Handshake)
  • TCP Sliding Window – Przesyłanie danych z wykorzystaniem protokołu TCP, jest realizowane przy pomocy tak zwanych okien (Window). Zawierających jeden bądź więcej segmentów protokołu TCP, po przesłaniu których odbiorca musi potwierdzić odebranie danych za pomocą komunikatu ACK (Acknowledged). Proces TCP Sliding Window rozpoczyna się od przesłania jednego segmentu TCP w jednym oknie, a następnie wzrasta do maksymalnej dopuszczalnej ilości segmentów jaką może obsłużyć określona sieć. Ilość ta zależy między innymi od przepustowość łącza. W sytuacji przekroczenia możliwości lokalnej sieci część segmentów może nie dotrzeć przed upływem czasu RTT (Round-trip time) zwanego inaczej real transfer time, a tym samym odbiorca nie potwierdzi otrzymania wszystkich danych za pomocą wiadomości ACK. Sytuacja ta zmusza nadawcę do przywrócenia poprzedniej potwierdzonej ilości segmentów, jaka może zostać użyta w obrębie jednego okna (Dane których odbiór został potwierdzony nie zostaną retransmitowane).
    • Jednym z efektów ubocznych procesu „TCP Sliding Window”, widocznych z punktu widzenia użytkownika, jest zmienny przewidywany czas przesłania danych, który może być niestabilny ulegając ciągłym zmianą.
    • W niektórych przypadkach proces „TCP Sliding Window” może doprowadzić do powstania tak-zwanego głodu sesji TCP (TCP Starvation). Szczególnie narażone są w tym przypadku sieci obarczone dużym ruchem UDP, przy jednoczesnym braku wsparcia ze strony protokołu QoS.
TCP Sliding Window
  • TCP Window Scaling – Umożliwia przenoszenie 32-bitowej wartości, w 16-bitowym nagłówku protokołu TCP. Jest to funkcja przygotowana do wsparcia sieci LFN (Long Fat Networks), charakteryzującej się wysoką szerokością pasma oraz wysokimi opóźnieniami, co zawdzięcza zwiększonej szerokości okna TCP Sliding Window (Maksymalna wielkość okna (TCP Windows size) jaka może być obsłużona na urządzeniach Cisco wynosi: 1 073 741 823 bajtów).
  • Wartość MSS (Maximum Segment Size) – Określa maksymalną wielkość przesyłanego segmentu TCP, liczonego bez nagłówka, a tym samym wskazuje jak duży pakiet może być przesłany przez sieć bez dodatkowej fragmentacji (Wartość MSS określa dane użyteczne, związku z tym musi być mniejsza do wartości MTU, która oprócz danych użytecznych zawiera wszystkie nagłówki warstwy 4, 3 oraz 2).
  • TCP slow start – Podczas transmisji z wykorzystaniem protokołu TCP, może zdarzyć się sytuacja, w której po stracie pewnej liczby segmentów, nastąpi tak zwany powolny start. Zmniejsza on ilość segmentów nadanych w jednym oknie TCP do jednego, a następnie wykładniczo zwiększa tę liczbę do momentu uzyskania połowy wielkości okna, które wywołało przeciążenie. Po osiągnięciu tego etapu, liczba segmentów w jednym oknie będzie rosnąć liniowo.
    • Sytuacja ta może mieć miejsce w przypadku przepełnienia kolejki (Queue) interfejsu sieciowego, kiedy to może dojść do jednoczesnego porzucanie pakietów wielu niezależnych sesji TCP, a tym samym rozpoczęcia procesu powolnego startu każdej z nich. Zjawisko to znane jest jako globalna synchronizacja (Global Synchronization) tudzież synchronizacja TCP (TCP Synchronization), natomiast sam proces losowego porzucania pakietów nazywany jest (Tail drop).
    • Aby zapobiec powstaniu zjawiska powolnego startu Cisco IOS wykorzystuje technologię zwaną WRED (Weighted Random Early Detection), która to pseudolosowo porzuca pakiety należące do różnych sesji TCP, bazują przy wyborze na istniejących zasadach QoS. Rozwiązanie te opróżnia kolejkę wyjściową rutera zapobiegając globalnej synchronizacji.
    • Porównanie Tail Drop vs WRED:
      • Mechanizm Tail Drop losowo porzuca nadmiarowe pakiety, zapobiegając powstawaniu zatorów (Congestion Avoidance), jednocześnie narażając sieć na powstanie zjawiska globalnej synchronizacji.
      • Mechanizm WRED zapobiega zjawisku globalnej synchronizacji.
  • Out-of-order Delivery – W przypadku zastosowania np. funkcjonalności równomiernego obciążenia, istnieje możliwość, że niektóre segmenty TCP dotrą do odbiorcy w innej kolejności niż zostały wysłane. Aby sytuacja ta nie miała negatywnego skutku na funkcjonowanie sieci, protokół TCP został wyposażony w funkcję automatycznego uporządkowywania nadchodzących segmentów zgodnie z numerem sekwencyjnym.
  • TCP Selective Acknowledgment (SACK) – Domyślnie w przypadku utraty jednego z segmentów TCP podczas transportu, odbiorca zamiast potwierdzenia ACK w postaci zapytania o kolejny segment, prześle zapytanie (ACK) dotyczące jednego z zagubionych segmentów. Jako że zapytanie może dotyczyć jedynie jednego segmentu, nadawca nie ma pewności ile z nich tak naprawdę zostało utraconych podczas transportu, związku z tym wyśle zagubiony segment wraz z wszystkimi następującymi po nim (Z puli poprzednio przesłanych segmentów). W przypadku użycia rozwiązania SACK, odbiorca po wykryciu utraty segmentu wyśle zapytanie ACK dotyczące utraconego segmentu wraz z wiadomościami SACK zawierającymi informację o następujących po zagubionym segmencie, segmentach które zostały dostarczone.
    • TCP Time Stamp – Zwiększa jakość pomiarów [1]czasu „TCP Round-trip time” [ip tcp timestamp].
    • TCP Explicit Congestion Notification – Umożliwia ruterowi poinformowanie urządzeń końcowych o nastąpieniu zmian sieciowych (Congestion), zmniejszając ilość zgubionych segmentów [ip tcp ecn].
    • TCP Keepalive Timer – Wykrywa martwe sesje TCP, wysyłając zapytanie TCP keepalive.
  • Bandwidth Delay Product (BDP) – Określa ilość danych, jakie mogą być przesyłane poprzez sieć. Jest to najważniejsza koncepcja stosowana w protokole TCP, ponieważ przepustowość łącza jest ograniczona między innymi przez zjawisko BDP. Przykładowym problemem jest zwiększony czas oczekiwania na otrzymanie potwierdzenia ACK, występujący w przypadku dużego opóźnienia. Rozwiązaniem nie-mniejszego problemu może być zwiększenie wielkości okna (Window) co umożliwi przesłanie większej ilości danych pomiędzy poszczególnymi potwierdzeniami ACK.
  • TCP Latency – Opóźnienie powstałe podczas przesyłu danych, zachodzące pomiędzy urządzeniami sieciowymi.
  • Round-trip time (RTT) / Round-trip delay time (RTD) – Czas przesyłu danych do odbiorcy wraz czasem otrzymania potwierdzenia ACK przez nadawcę (Wartość ta jest utożsamiana z opóźnieniem i jest wyświetlana przez komendę ping).
  • Protokół TCP realizuje funkcje end-to-end dla protokołu IP warstwy trzeciej modelu OSI.
  • Rodzaje komunikatów TCP: ACK, URG, PSH, RST, SYN, FIN oraz NAK.
  • Proces Four-way seque – Kończy sesję TCP w czterech następujących krokach:
    • Host A wysyła pakiety TCP-ACK, FIN informując o chęci zamknięcia sesji TCP.
    • Host B odsyła pakiety TCP-ACK potwierdzając otrzymanie komunikatu.
    • Host A wysyła pakiety kończące sesje TCP-ACK, FIN.
    • Host B potwierdza otrzymanie komunikatu pakietem TCP-ACK.
  • Explicit Congestion Notification (ECN) – Rozszerzenie protokołu IP oraz protokołu TCP, zdefiniowane przez referencję RFC 3168. Wprowadza mechanizm informujący obydwie strony połączenia o przeciążeniu sieci (Network Congestion), tym samym unikając porzucania pakietów (Aby rozwiązanie to zadziałało poprawnie, musi być wspierane przez urządzenia końcowe jak i infrastrukturę sieciową).
  • Selective Acknowledgment – W przypadku uzyskania ograniczonych informacji na temat zagubionych podczas przesyłu danych pakietów, zawartych w zbiorczym potwierdzeniu ACK (Cumulative Acknowledgments). Agresywny nadawca może przedwcześnie wysłać więcej pakietów, niż w rzeczywistości brakowało odbiorcy. Aby zapobiec takiemu zjawisku, funkcja Selective Acknowledgment, umożliwia odbiorcy nadanie dodatkowych selektywnych wiadomości ACK, mogących powierdzić pakiety odebrane poza kolejnością. Dzięki czemu odbiorca ponowi próbę przesłania jedynie brakujących pakietów.
    • Domyślnie w przypadku utraty pakietu 4 oraz 7 z 8 wysłanych, odbiorca TCP odeśle informację o odebraniu jedynie 1, 2 oraz 3 pakietu. Związku z czym nadawca ponowi próbę przesłania pakietów od 4 do 8. Funkcja Selective Acknowledgment sprawi że odbiorca dodatkowo poinformuje o wszystkich otrzymanych pakietach (1, 2, 3, 5, 6, 8) a tym samym nadawca odeśle jedynie te brakujące.
    • Funkcja Selective Acknowledgment jest kompatybilna z:
      • Explicit Congestion Notification, Time Stamp oraz Keepalive.
  • Time Stamp – Zapewnia ulepszony pomiar czasu TCP (Round-Trip).
  • Keepalive Timer – Mechanizm umożliwiający wykrycie martwego połączenia TCP.

Konfiguracja protokołu TCP

(config)# ip tcp window-size 68-1073741823

Określa wielkość okna TCP (TCP Window Scaling).

(config)# ip tcp ecn

Aktywuje funkcję „TCP Explicit Congestion Notification”.

(config)# ip tcp timestamp

Aktywuje funkcję „TCP Time Stamp”.

(config)# ip tcp mss 500-1460(536)

(config)# ip tcp selective-ack

Aktywuje funkcję SACK (Selective Acknowledgment).

(config)# interface interfejs

Przechodzi do poziomu konfiguracji określonego interfejsu sieciowego.

(config-if)# ip tcp adjust-mss 500-1460(536)

UDP – User Datagram Protocol

Protokół UDP – Został opisany w dokumencie RFC 793.
Budowa nagłówka protokołu UDP
  • Connectionless – Protokół UDP nie nawiązuje sesji pomiędzy urządzeniami, nie dając tym samym gwarancji dostarczenia danych do odbiorcy, ale zapewniając większą wydajność transmisji.

Pojęcia związane z protokołem UDP

  • Starvation (TCP-Starvation / UDP-Dominance) – W przypadku łączenia ruchu TCP z ruchem UDP, w jednej klasie QoS. Ruch UDP może zawładnąć całym możliwym do wykorzystania pasmem, Tym samym blokując sesje TCP. Funkcja WRED nie jest w tym przypadku pomocna ponieważ nie wpływa ona na protokół UDP a jedynie protokół TCP, najlepszym rozwiązaniem tego problemu jest rozdzielenie ruchu TCP od UDP w kwasji polis QoS.
  • UDP Latency – Opóźnienie powstałe podczas przesyłu danych. Może być zniwelowane wielkością buforów.

Pojęcia dotyczące warstwy czwartej

Pojęcia dotyczące warstwy czwartej

  • Multiplexing using ports (UDP/TCP) – Multiplikacja umożliwia rozdzielenie wielu transmisji TCP nadchodzących do jednego urządzenie docelowego. Dzięki wykorzystaniu portów poszczególne segmenty trafiają do odpowiednich programów (np. port 80 definiuje stronę WWW) oraz do np. odpowiedniej strony w przeglądarce. Multiplikacja wykorzystuje Socket zawierający następujące dane:
    • Adres IP.
    • Protokół warstwy czwartej.
    • Numer portu.
  • Error recovery (TCP) – W przypadku nieotrzymania przez klienta jednego lub większej liczby pakietów, wysyła on wiadomość ACK zawierającą numery sekwencyjne pakietów które nie zostały mu dostarczone.
  • Ordered data transfer and data segmentation (TCP) – Dzięki metodzie oznaczania poszczególnych pakietów numerami sekwencyjnymi. Dane przychodzące niezgodnie z kolejnością, mogą być uporządkowane po stronie klienta.
  • Connection-oriented protocol (TCP) – TCP wymaga nawiązania wstępnej sesji pomiędzy urządzeniami.
  • Connectionless protocol (UDP) – UDP nie wymaga nawiązania wstępnej sesji pomiędzy urządzeniami.
  • URI (Uniform Resource Identifier) (RFC 7595) – Zgodnie z założeniami konsorcjum W3C oraz grupy IETF, URI jest domyślą formą używaną przez adresy WWW.
  • URL (Uniform Resource Locator) – Stanowi starszą formę URI.

Zalecenia warstwy czwartej

  • Poleca się mieszać ruch sieciowy TCP z ruchem UDP, szczególnie w przypadku streamingu wideo. Łączenie te może jednak doprowadzić do głodu sesji TCP zwanego inaczej (TCP-Starvation / UDP-Dominance), którego objawem jest zmniejszenie przepustowości (Lower Throghput) jak i zwiększenie opóźnień sesji (Latency) TCP względem połączeń UDP (Opisane łączenie ruchu sieciowego dotyczy wspólnych polis protokołu QoS).

Porty warstwy czwartej

  • Well-Known Ports (0 1023) – Pula portów zarezerwowanych dla dobrze znanych protokołów.
  • Registered Ports (102449151) – Pula portów, z których mogą korzystać wszelkie aplikację oraz protokoły.
  • Dynamic or Private Ports (4915265535) – Pula portów dynamicznie przypisywanych podczas korzystania z np. przeglądarki Internetowej jako porty źródłowe Hostów.
Skrót Nazwa Port L4 RFC / INNE
DNS Domain Name Service 53 UDP / TCP
SNMP Simple Network Management Protocol    
GREGeneric Routing Encapsulation47IP
NTPNetwork Time Protocol123UDP
DHCP Dynamic Host Configuration Protocol    
RIP Router Information Protocol    
TFTP Trivial File Transport Protocol    
FTP data / control File Transport Protocol 20 / 21  
SSH Secure Shell 22  
Telnet Telnet 23  
HTTP Hypertext Transfer Protocol 80 / 8080  
OSPF Open Shortest Patch First    
EIGRP Enhanced Interior Gateway Routing Protocol    
BGP Border Gateway Protocol    
HTTPS (SSL) Hypertext Transfer Protocol Secure 443  
SNMP Trap Inform Simple Network Management Protocol 162 UDP
SNMP Get Response Simple Network Management Protocol 161 UDP
HSRP (IPv4) Hot Standby Router Protocol 1985 UDP
HSRP (IPv6) Hot Standby Router Protocol 2029 UDP
VRRP Virtual Router Redundancy Protocol 112 IP
GLBP Gateway Load Balancing Protocol 3222 UDP

Porty warstwy czwartej

Pozostałe tematy związane z modelem OSI/ISO, TCP/IP

Podstawy sieci komputerowych

Warstwy modelu OSI

PDFPRINT

Robert T Kucharski

Cisco Network Engineer in GPW.

1 Response

  1. 11 października 2020

    […] jest używany więc zawsze posiada wartość 0). Wartość dd jest wykorzystywana przez mechanizm WRED (Weighted Random Early […]

Dodaj komentarz