Dzisiaj skupimy się na protokole TCP. Wcześniej w rozdziale poświęconym warstwowaniu wspomnieliśmy o ważnej kwestii. W warstwie sieciowej i niższych, chodzi bardziej o połączenia między hostami, 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 usług bezpośredniej komunikacji między procesami aplikacji działającymi na różnych hostach, dlatego nazywa się ją również protokołem end-to-end. Warstwa transportowa ukrywa podstawowe szczegóły sieci, umożliwiając procesowi aplikacji postrzeganie istnienia logicznego, kompleksowego kanału komunikacyjnego między dwoma elementami warstwy transportowej.
TCP to skrót od Transmission Control Protocol (protokół kontroli transmisji) 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ą przeprowadzić proces uzgadniania (handshake). Uzgadnianie to logicznie powiązany 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 a docelowym poprzez wymianę serii pakietów kontrolnych oraz uzgodnienie parametrów i reguł, aby zapewnić pomyślną transmisję danych.
Czym jest TCP? (Mylinking'sDotknij sieciIBroker pakietów sieciowychmógł przetwarzać pakiety TCP i UDP)
TCP (Transmission Control Protocol) to zorientowany na połączenie, niezawodny protokół komunikacyjny warstwy transportowej oparty na strumieniu bajtów.
Zorientowany na połączenie:Zorientowany na połączenie oznacza, że komunikacja TCP jest komunikacją jeden do jednego, czyli komunikacją typu punkt-punkt-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 zostaną dostarczone do odbiorcy niezawodnie, niezależnie od zmian w łączu sieciowym, co sprawia, że format pakietu protokołu TCP jest bardziej złożony niż format protokołu UDP.
Oparty na strumieniu bajtów:Oparta na strumieniu bajtów natura protokołu TCP pozwala na transmisję wiadomości o dowolnej wielkości 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.
Po nawiązaniu połączenia przez hosta A i hosta B, aplikacja musi jedynie korzystać z wirtualnej linii komunikacyjnej do wysyłania i odbierania danych, zapewniając w ten sposób transmisję danych. Protokół TCP odpowiada za sterowanie zadaniami takimi jak nawiązywanie, rozłączanie i podtrzymywanie połączenia. Należy zauważyć, że w tym przypadku linia wirtualna oznacza jedynie nawiązanie połączenia, natomiast połączenie protokołu TCP oznacza jedynie, że obie strony mogą rozpocząć transmisję danych i zapewnić jej niezawodność. Węzły routingu i transportu są obsługiwane przez urządzenia sieciowe; sam protokół TCP nie zajmuje się tymi szczegółami.
Połączenie TCP to usługa pełnodupleksowa, co oznacza, że host A i host B mogą przesyłać dane w obu kierunkach w ramach połączenia TCP. Oznacza to, że dane między hostem A i hostem B mogą być przesyłane dwukierunkowo.
Protokół TCP tymczasowo przechowuje dane w buforze nadawczym połączenia. Ten bufor nadawczy jest jedną z pamięci podręcznych konfigurowanych podczas trzyetapowego uzgadniania. Następnie, w odpowiednim momencie, protokół TCP prześle dane z bufora nadawczego do bufora odbiorczego hosta docelowego. W praktyce każdy komputer będzie miał bufor nadawczy i bufor odbiorczy, jak pokazano poniżej:
Bufor nadawania to obszar pamięci utrzymywany przez implementację protokołu TCP po stronie nadawcy, który służy do tymczasowego przechowywania danych do wysłania. Podczas trzyetapowego uzgadniania w celu nawiązania połączenia, pamięć podręczna nadawania jest konfigurowana i używana do przechowywania danych. Bufor nadawania jest dynamicznie dostosowywany w zależności od obciążenia sieci i informacji zwrotnych od odbiorcy.
Bufor odbiorczy to obszar pamięci utrzymywany przez implementację TCP po stronie odbiorczej, który służy do tymczasowego przechowywania odebranych danych. Protokół TCP przechowuje odebrane dane w pamięci podręcznej odbiorczej i czeka na ich odczyt przez aplikację nadrzędną.
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?
Protokół TCP tworzy segment TCP, czyli segment pakietu, dzieląc strumień przychodzący na fragmenty i dodając do każdego z nich nagłówki TCP. Każdy segment może być transmitowany tylko przez ograniczony czas i nie może przekroczyć maksymalnego rozmiaru segmentu (MSS). Podczas transmisji segment pakietu przechodzi przez warstwę łącza danych. Warstwa łącza danych ma maksymalną jednostkę transmisji (MTU), która określa maksymalny rozmiar pakietu, jaki może przejść przez warstwę łącza danych. Maksymalna jednostka transmisji jest zazwyczaj związana z interfejsem komunikacyjnym.
Jaka jest więc różnica pomiędzy MSS i MTU?
W sieciach komputerowych architektura hierarchiczna jest niezwykle ważna, ponieważ uwzględnia różnice między poszczególnymi poziomami. Każda warstwa ma inną nazwę; w warstwie transportowej dane nazywane są segmentem, a w warstwie sieciowej pakietem IP. Dlatego też Maksymalna Jednostka Transmisji (MTU) może być rozumiana jako maksymalny rozmiar pakietu IP, jaki może zostać przesłany przez warstwę sieciową, natomiast Maksymalny Rozmiar Segmentu (MSS) to pojęcie warstwy transportowej odnoszące się do maksymalnej ilości danych, jaką można przesłać jednocześnie w pakiecie TCP.
Należy pamiętać, że gdy maksymalny rozmiar segmentu (MSS) jest większy niż maksymalna jednostka transmisji (MTU), fragmentacja IP zostanie przeprowadzona na poziomie warstwy sieciowej, a protokół TCP nie podzieli większych danych na segmenty odpowiednie dla rozmiaru MTU. W warstwie sieciowej znajduje się sekcja poświęcona warstwie IP.
Struktura segmentu pakietu TCP
Przyjrzyjmy się formatowi i zawartości nagłówków TCP.
Numer sekwencyjny: Liczba losowa generowana przez komputer podczas nawiązywania połączenia jako wartość początkowa w momencie nawiązania połączenia TCP, 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ą przesłanych danych. Odbiorca ocenia kolejność danych na podstawie odebranego numeru sekwencyjnego. Jeśli dane zostaną uznane za nieuporządkowane, odbiorca zmieni ich kolejność, aby zapewnić ich prawidłową kolejność.
Numer potwierdzenia: Jest to numer sekwencyjny używany w protokole TCP do potwierdzenia odbioru danych. Wskazuje on numer sekwencyjny kolejnych danych, które nadawca spodziewa się otrzymać. W połączeniu TCP odbiorca określa, które dane zostały pomyślnie odebrane, na podstawie numeru sekwencyjnego odebranego segmentu pakietu danych. Po pomyślnym odebraniu danych odbiorca wysyła do nadawcy pakiet ACK, który zawiera numer potwierdzenia odbioru. Po odebraniu pakietu ACK nadawca może potwierdzić, że dane zostały pomyślnie odebrane, a następnie potwierdzić numer odpowiedzi.
Bity kontrolne segmentu TCP obejmują następujące elementy:
Bit ACK:Gdy ten bit ma wartość 1, oznacza to, że pole odpowiedzi potwierdzenia jest prawidłowe. Protokół 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:Jeśli ten bit ma wartość 1, oznacza to, że w połączeniu TCP wystąpił wyjątek 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 ustawiana jest 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'sDotknij sieciIBroker pakietów sieciowychmógł przetwarzać pakiety TCP i UDP)
Protokół UDP (User Datagram Protocol) to bezpołączeniowy protokół komunikacyjny. W porównaniu z TCP, UDP nie zapewnia złożonych mechanizmów kontroli. Protokół UDP umożliwia aplikacjom bezpośrednie wysyłanie pakietów IP w kapsułkach bez nawiązywania połączenia. Gdy programista zdecyduje się na użycie UDP zamiast TCP, aplikacja komunikuje się bezpośrednio z protokołem 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:
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 transmisji pakietu UDP wystąpił błąd lub uszkodzenie, w celu zapewnienia integralności 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:
PołączenieTCP to protokół transportowy zorientowany na połączenie, który wymaga nawiązania połączenia przed przesłaniem danych. Z kolei UDP nie wymaga połączenia i może przesyłać dane natychmiast.
Obiekt usługowyTCP to usługa typu jeden do jednego i dwóch punktów, co oznacza, że połączenie ma tylko dwa punkty końcowe, z którymi może się komunikować. UDP obsługuje jednak interaktywną komunikację typu jeden do jednego, jeden do wielu i wiele do wielu, która umożliwia jednoczesną komunikację z wieloma hostami.
Niezawodność:Protokół TCP zapewnia niezawodne dostarczanie danych, gwarantując, że dane są wolne od błędów, bezstratne, niepowielone i docierają na żądanie. Z kolei protokół UDP dokłada wszelkich starań i nie gwarantuje niezawodnego dostarczania. Protokół UDP może ucierpieć na skutek utraty danych i innych problemów podczas transmisji.
Kontrola przeciążenia, kontrola przepływu:Protokół TCP posiada mechanizmy kontroli przeciążenia i przepływu, które mogą dostosowywać szybkość transmisji danych do warunków sieciowych, zapewniając bezpieczeństwo i stabilność transmisji. Protokół UDP nie posiada mechanizmów kontroli przeciążenia ani przepływu, więc nawet w przypadku dużego obciążenia sieci, nie będzie on dostosowywał szybkości wysyłania UDP.
Nagłówek nadrzędny:Protokół TCP ma długi nagłówek, zazwyczaj 20 bajtów, który zwiększa się po użyciu pól opcjonalnych. Z kolei protokół UDP ma stały nagłówek, wynoszący zaledwie 8 bajtów, więc narzut nagłówka UDP jest mniejszy.
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 używany głównie w sytuacjach, w których wymagane jest niezawodne dostarczanie danych. Oto kilka typowych przypadków użycia:
Przesyłanie plików FTP:Protokół TCP może zagwarantować, że pliki nie zostaną utracone ani uszkodzone podczas transferu.
HTTP/HTTPS:TCP zapewnia integralność i poprawność treści internetowych.
Ponieważ UDP jest protokołem bezpołączeniowym, nie gwarantuje niezawodności, ale charakteryzuje się wydajnością i działaniem w czasie rzeczywistym. UDP nadaje się do następujących scenariuszy:
Ruch o niskim poziomie pakietów, taki jak DNS (Domain Name System):Zapytania DNS są zwykle 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, gwarantując terminową 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 poznaliśmy TCP. TCP to zorientowany na połączenie, niezawodny protokół komunikacyjny warstwy transportowej oparty na strumieniu bajtów. 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 jednoczesny dwukierunkowy transfer danych. Z kolei UDP to bezpołączeniowy protokół komunikacyjny, który nie gwarantuje niezawodności i nadaje się do scenariuszy o wysokich wymaganiach 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 także scenariuszami ich zastosowań.
Czas publikacji: 03-12-2024