TCP kontra UDP: Demistyfikacja debaty na temat niezawodności kontra wydajności

Dzisiaj zaczniemy od skupienia się na protokole TCP. Wcześniej w rozdziale o warstwowaniu wspomnieliśmy o ważnym punkcie. Na poziomie sieci i niżej chodzi bardziej o połączenia host-host, co oznacza, że ​​komputer musi wiedzieć, gdzie znajduje się inny komputer, aby się z nim połączyć. Jednak komunikacja w sieci jest często komunikacją międzyprocesową, a nie międzymaszynową. Dlatego protokół TCP wprowadza koncepcję portu. Port może być zajęty tylko przez jeden proces, co zapewnia bezpośrednią komunikację między procesami aplikacji działającymi na różnych hostach.

Zadaniem warstwy transportowej jest zapewnienie bezpośrednich usług komunikacyjnych między procesami aplikacji działającymi na różnych hostach, dlatego jest ona również znana jako protokół typu end-to-end. Warstwa transportowa ukrywa podstawowe szczegóły sieci, umożliwiając procesowi aplikacji widzenie, jakby istniał logiczny kanał komunikacyjny typu end-to-end między dwoma podmiotami warstwy transportowej.

TCP to skrót od Transmission Control Protocol i jest znany jako protokół zorientowany na połączenie. Oznacza to, że zanim jedna aplikacja będzie mogła rozpocząć wysyłanie danych do drugiej, oba procesy muszą wykonać uzgadnianie. Uzgadnianie to logicznie połączony proces, który zapewnia niezawodną transmisję i uporządkowany odbiór danych. Podczas uzgadniania nawiązywane jest połączenie między hostem źródłowym i docelowym poprzez wymianę serii pakietów kontrolnych i uzgodnienie niektórych parametrów i reguł w celu zapewnienia pomyślnej transmisji danych.

Czym jest TCP? (Moje linkiDotknij sieciIBroker pakietów sieciowychmógł przetwarzać pakiety TCP i UDP)
TCP (Transmission Control Protocol) to zorientowany na połączenie, niezawodny, oparty na strumieniu bajtów protokół komunikacyjny warstwy transportowej.

Zorientowany na połączenie:Zorientowany na połączenie oznacza, że ​​komunikacja TCP jest komunikacją typu jeden do jednego, czyli komunikacją typu punkt-punkt-koniec-koniec, w przeciwieństwie do protokołu UDP, który może wysyłać wiadomości do wielu hostów jednocześnie, więc nie jest możliwa komunikacja typu jeden do wielu.
Niezawodny:Niezawodność protokołu TCP zapewnia, że ​​pakiety są dostarczane do odbiorcy w sposób niezawodny, niezależnie od zmian w łączu sieciowym, co sprawia, że ​​format pakietu protokołu TCP jest bardziej złożony niż UDP.
Oparty na strumieniu bajtów:Oparty na strumieniu bajtów charakter protokołu TCP pozwala na transmisję wiadomości o dowolnym rozmiarze i gwarantuje kolejność wiadomości: nawet jeśli poprzednia wiadomość nie została w całości odebrana, a kolejne bajty zostały odebrane, protokół TCP nie przekaże ich do warstwy aplikacji w celu przetworzenia i automatycznie odrzuci zduplikowane pakiety.
Gdy host A i host B nawiążą połączenie, aplikacja musi jedynie użyć wirtualnej linii komunikacyjnej do wysyłania i odbierania danych, zapewniając w ten sposób transmisję danych. Protokół TCP jest odpowiedzialny za kontrolowanie zadań, takich jak nawiązywanie połączenia, rozłączanie i utrzymywanie. Należy zauważyć, że tutaj mówimy, że wirtualna linia oznacza jedynie nawiązywanie połączenia, połączenie protokołu TCP oznacza jedynie, że obie strony mogą rozpocząć transmisję danych i zapewnić niezawodność danych. Węzły routingu i transportu są obsługiwane przez urządzenia sieciowe; sam protokół TCP nie jest zainteresowany tymi szczegółami.

Połączenie TCP jest usługą full-duplex, co oznacza, że ​​host A i host B mogą przesyłać dane w obu kierunkach w połączeniu TCP. Oznacza to, że dane mogą być przesyłane między hostem A i hostem B w przepływie dwukierunkowym.

TCP tymczasowo przechowuje dane w buforze wysyłania połączenia. Ten bufor wysyłania jest jedną z pamięci podręcznych skonfigurowanych podczas trzyetapowego uzgadniania. Następnie TCP wyśle ​​dane z pamięci podręcznej wysyłania do pamięci podręcznej odbioru hosta docelowego w odpowiednim czasie. W praktyce każdy peer będzie miał pamięć podręczną wysyłania i pamięć podręczną odbioru, jak pokazano tutaj:

TCP-UDP

Bufor wysyłania to obszar pamięci utrzymywany przez implementację TCP po stronie nadawcy, który jest używany do tymczasowego przechowywania danych do wysłania. Gdy przeprowadzane jest trzyetapowe uzgadnianie w celu nawiązania połączenia, pamięć podręczna wysyłania jest konfigurowana i używana do przechowywania danych. Bufor wysyłania jest dynamicznie dostosowywany zgodnie z przeciążeniem sieci i sprzężeniem zwrotnym od odbiorcy.

Bufor odbiorczy to obszar pamięci utrzymywany przez implementację TCP po stronie odbiorczej, który jest używany do tymczasowego przechowywania odebranych danych. TCP przechowuje odebrane dane w pamięci podręcznej odbiorczej i czeka, aż aplikacja nadrzędna je odczyta.

Należy pamiętać, że rozmiar pamięci podręcznej wysyłania i odbioru jest ograniczony. Gdy pamięć podręczna jest pełna, protokół TCP może przyjąć pewne strategie, takie jak kontrola przeciążenia, kontrola przepływu itp., aby zapewnić niezawodną transmisję danych i stabilność sieci.

W sieciach komputerowych transmisja danych między hostami odbywa się za pomocą segmentów. Czym więc jest segment pakietu?

TCP tworzy segment TCP lub segment pakietu, dzieląc strumień przychodzący na fragmenty i dodając nagłówki TCP do każdego fragmentu. Każdy segment może być przesyłany tylko przez ograniczony czas i nie może przekroczyć maksymalnego rozmiaru segmentu (MSS). Podczas przesyłania w dół segment pakietu przechodzi przez warstwę łącza. Warstwa łącza ma maksymalną jednostkę transmisji (MTU), która jest maksymalnym rozmiarem pakietu, jaki może przejść przez warstwę łącza danych. Maksymalna jednostka transmisji jest zwykle związana z interfejsem komunikacyjnym.

Jaka jest więc różnica pomiędzy MSS i MTU?

W sieciach komputerowych architektura hierarchiczna jest bardzo ważna, ponieważ uwzględnia różnice między różnymi poziomami. Każda warstwa ma inną nazwę; w warstwie transportowej dane nazywane są segmentem, a w warstwie sieciowej dane nazywane są pakietem IP. Dlatego też Maksymalna Jednostka Transmisji (MTU) może być rozumiana jako Maksymalny Rozmiar Pakietu IP, który może być przesłany przez warstwę sieciową, podczas gdy Maksymalny Rozmiar Segmentu (MSS) jest koncepcją warstwy transportowej, która odnosi się do maksymalnej ilości danych, które mogą być przesłane przez pakiet TCP w danym momencie.

Należy pamiętać, że gdy maksymalny rozmiar segmentu (MSS) jest większy niż maksymalna jednostka transmisji (MTU), fragmentacja IP zostanie przeprowadzona na warstwie sieciowej, a TCP nie podzieli większych danych na segmenty odpowiednie dla rozmiaru MTU. W warstwie sieciowej będzie sekcja poświęcona warstwie IP.

Struktura segmentu pakietu TCP
Przyjrzyjmy się formatowi i zawartości nagłówków TCP.

Segment TCP

Numer sekwencyjny: Losowa liczba generowana przez komputer, gdy połączenie jest nawiązywane jako jego wartość początkowa, gdy połączenie TCP jest nawiązywane, a numer sekwencyjny jest wysyłany do odbiorcy za pośrednictwem pakietu SYN. ​​Podczas transmisji danych nadawca zwiększa numer sekwencyjny zgodnie z ilością wysłanych danych. Odbiorca ocenia kolejność danych zgodnie z otrzymanym numerem sekwencyjnym. Jeśli dane zostaną znalezione w niewłaściwej kolejności, odbiorca zmieni kolejność danych, aby zapewnić kolejność danych.

Numer potwierdzenia: Jest to numer sekwencyjny używany w protokole TCP do potwierdzania odbioru danych. Wskazuje numer sekwencyjny następnych danych, które nadawca spodziewa się otrzymać. W połączeniu TCP odbiorca ustala, które dane zostały pomyślnie odebrane na podstawie numeru sekwencyjnego odebranego segmentu pakietu danych. Gdy odbiorca pomyślnie odbierze dane, wysyła pakiet ACK do nadawcy, który zawiera numer potwierdzenia odbioru. Po odebraniu pakietu ACK nadawca może potwierdzić, że dane zostały pomyślnie odebrane przed potwierdzeniem numeru odpowiedzi.

Bity sterujące segmentu TCP obejmują:

bit ACK: Gdy ten bit jest równy 1, oznacza to, że pole odpowiedzi potwierdzenia jest prawidłowe. TCP określa, że ​​ten bit musi być ustawiony na 1, z wyjątkiem pakietów SYN, gdy połączenie jest początkowo nawiązywane.
bit RST:Gdy ten bit ma wartość 1, oznacza to, że wystąpił wyjątek w połączeniu TCP i należy wymusić rozłączenie połączenia.
bit SYN: Gdy ten bit jest ustawiony na 1, oznacza to, że połączenie ma zostać nawiązane, a w polu numeru sekwencyjnego zostaje ustawiona wartość początkowa numeru sekwencyjnego.
Bit FIN:Gdy ten bit ma wartość 1, oznacza to, że w przyszłości nie będzie wysyłane żadne dane i połączenie jest pożądane.
Różnorodne funkcje i cechy protokołu TCP są ucieleśnione w strukturze segmentów pakietów TCP.

Co to jest UDP? (Mylinking)Dotknij sieciIBroker pakietów sieciowychmógł przetwarzać zarówno pakiety TCP, jak i UDP)
User Datagram Protocol (UDP) to protokół komunikacji bezpołączeniowej. W porównaniu z TCP, UDP nie zapewnia złożonych mechanizmów kontroli. Protokół UDP pozwala aplikacjom na bezpośrednie wysyłanie enkapsulowanych pakietów IP bez nawiązywania połączenia. Gdy programista zdecyduje się na użycie UDP zamiast TCP, aplikacja komunikuje się bezpośrednio z IP.

Pełna nazwa protokołu UDP to User Datagram Protocol, a jego nagłówek ma tylko osiem bajtów (64 bity), co jest bardzo zwięzłe. Format nagłówka UDP jest następujący:

Segment UDP

Porty docelowe i źródłowe:Ich głównym celem jest wskazanie, do którego procesu UDP powinien wysyłać pakiety.
Rozmiar pakietu:Pole rozmiaru pakietu zawiera rozmiar nagłówka UDP i rozmiar danych
Suma kontrolna: : Zaprojektowano, aby zapewnić niezawodne dostarczanie nagłówków i danych UDP. Rolą sumy kontrolnej jest wykrycie, czy podczas przesyłania pakietu UDP wystąpił błąd lub uszkodzenie, aby zapewnić integralność danych.

Różnice między TCP i UDP w MylinkingDotknij sieciIBroker pakietów sieciowychmógł przetwarzać pakiety TCP i UDP
Protokoły TCP i UDP różnią się pod następującymi względami:

TCP czy UDP

Połączenie: TCP to zorientowany na połączenie protokół transportowy, który wymaga nawiązania połączenia przed przesłaniem danych. Z drugiej strony UDP nie wymaga połączenia i może przesyłać dane natychmiast.

Obiekt usługowy: TCP to usługa typu jeden do jednego, czyli połączenie ma tylko dwa punkty końcowe do komunikowania się ze sobą. Jednak UDP obsługuje interaktywną komunikację typu jeden do jednego, jeden do wielu i wiele do wielu, która może komunikować się z wieloma hostami jednocześnie.

Niezawodność: TCP zapewnia usługę niezawodnego dostarczania danych, zapewniając, że dane są wolne od błędów, bezstratne, niepowielone i docierają na żądanie. Z drugiej strony UDP dokłada wszelkich starań i nie gwarantuje niezawodnego dostarczania. UDP może ucierpieć z powodu utraty danych i innych sytuacji podczas transmisji.

Kontrola przeciążenia, kontrola przepływu: TCP ma mechanizmy kontroli przeciążenia i kontroli przepływu, które mogą dostosować szybkość transmisji danych do warunków sieciowych, aby zapewnić bezpieczeństwo i stabilność transmisji danych. UDP nie ma mechanizmów kontroli przeciążenia i kontroli przepływu, nawet jeśli sieć jest bardzo przeciążona, nie będzie dokonywać korekt szybkości wysyłania UDP.

Nagłówek nadrzędny: TCP ma długi nagłówek, zwykle 20 bajtów, który zwiększa się, gdy używane są pola opcji. UDP z drugiej strony ma stały nagłówek o długości zaledwie 8 bajtów, więc UDP ma niższy narzut nagłówka.

TCP czy UDP

Scenariusze zastosowań TCP i UDP:
TCP i UDP to dwa różne protokoły warstwy transportowej, które różnią się w pewnych scenariuszach zastosowań.

Ponieważ TCP jest protokołem zorientowanym na połączenie, jest on używany głównie w scenariuszach, w których wymagane jest niezawodne dostarczanie danych. Niektóre typowe przypadki użycia obejmują:

Przesyłanie plików FTP:Protokół TCP może zapewnić, że pliki nie zostaną utracone ani uszkodzone podczas transferu.
Protokół HTTP/HTTPS:Protokół TCP zapewnia integralność i poprawność treści internetowych.
Ponieważ UDP jest protokołem bezpołączeniowym, nie zapewnia gwarancji niezawodności, ale ma cechy wydajności i czasu rzeczywistego. UDP nadaje się do następujących scenariuszy:

Ruch o niskim poziomie pakietów, taki jak DNS (Domain Name System):Zapytania DNS są zazwyczaj krótkimi pakietami, a protokół UDP może je realizować szybciej.
Komunikacja multimedialna, taka jak wideo i audio:W przypadku transmisji multimedialnych wymagających dużej szybkości transmisji, protokół UDP zapewnia mniejsze opóźnienie, co pozwala na szybką transmisję danych.
Komunikacja nadawcza:UDP obsługuje komunikację jeden do wielu i wiele do wielu i może być używany do przesyłania komunikatów rozgłoszeniowych.

Streszczenie
Dzisiaj dowiedzieliśmy się o TCP. TCP to zorientowany na połączenie, niezawodny, oparty na strumieniu bajtów protokół komunikacyjny warstwy transportowej. Zapewnia niezawodną transmisję i uporządkowany odbiór danych poprzez nawiązywanie połączenia, uzgadnianie i potwierdzanie. Protokół TCP wykorzystuje porty do realizacji komunikacji między procesami i zapewnia bezpośrednie usługi komunikacyjne dla procesów aplikacji działających na różnych hostach. Połączenia TCP są pełnodupleksowe, umożliwiając jednoczesne dwukierunkowe przesyłanie danych. Natomiast UDP jest zorientowanym bezpołączeniowo protokołem komunikacyjnym, który nie zapewnia gwarancji niezawodności i nadaje się do niektórych scenariuszy z wysokimi wymaganiami czasu rzeczywistego. TCP i UDP różnią się trybem połączenia, obiektem usługi, niezawodnością, kontrolą przeciążenia, kontrolą przepływu i innymi aspektami, a ich scenariusze zastosowań również są różne.


Czas publikacji: 03-12-2024