Jeśli widzisz tę wiadomość oznacza to, że mamy problemy z załadowaniem zewnętrznych materiałów na naszej stronie internetowej.

If you're behind a web filter, please make sure that the domains *.kastatic.org and *.kasandbox.org are unblocked.

Główna zawartość

Protokół kontroli transmisji (TCP)

Protokół sterowania transmisją (ang. Transmission Control Protocol, TCP) jest protokołem transportowym, który jest używany na szczycie protokołu IP w celu zapewnienia niezawodnej transmisji pakietów.
TCP zawiera mechanizmy rozwiązujące wiele problemów, które pojawiają się w przesyłaniu wiadomości opartych na pakietach, takich jak utracone pakiety, pakiety poza kolejnością, zduplikowane pakiety i uszkodzone pakiety.
Ponieważ TCP jest protokołem najczęściej stosowanym na szczycie IP, stos protokołów internetowych jest czasami określany jako TCP/IP.

Format pakietu

Podczas wysyłania pakietów za pomocą protokołu TCP/IP, część danych każdego pakietu IP jest formatowana jako segment TCP.
Każdy segment TCP zawiera nagłówek i dane. Nagłówek TCP zawiera o wiele więcej pól niż nagłówek UDP i może mieć rozmiar od 20 do 60 bajtów, w zależności od rozmiaru pola opcji.
Nagłówek TCP współdzieli niektóre pola z nagłówkiem UDP: numer portu źródłowego, numer portu docelowego i sumę kontrolną. Aby przypomnieć sobie, jak są one używane, przeczytaj artykuł o UDP.

Od początku do końca

Prześledźmy proces przesyłania pakietów za pomocą protokołu TCP/IP.

Krok 1: Nawiązanie połączenia

Kiedy dwa komputery chcą przesłać do siebie dane za pomocą protokołu TCP, muszą najpierw nawiązać połączenie za pomocą trójstronnego uścisku dłoni (ang. three-way handshake).
Pierwszy komputer wysyła pakiet z bitem SYN ustawionym na 1 (SYN = "synchronize?"). Drugi komputer odsyła pakiet z bitem ACK ustawionym na 1 (ACK = "acknowledge!") i bitem SYN ustawionym na 1. Pierwszy komputer odpowiada ACK.
Bity SYN i ACK są częścią nagłówka TCP:
Bity ACK i SYN są zaznaczone w czwartym wierszu nagłówka.
W rzeczywistości, trzy pakiety biorące udział w trójstronnym uścisku dłoni (ang. three-way handshake) nie zawierają zazwyczaj żadnych danych. Kiedy komputery zakończą proces uścisku dłoni, są gotowe do odbioru pakietów zawierających rzeczywiste dane.

Krok 2: Wysyłanie pakietów danych

Kiedy pakiet danych jest wysyłany przez TCP, odbiorca musi zawsze potwierdzić to, co otrzymał.
Pierwszy komputer wysyła pakiet z danymi i numerem sekwencyjnym. Drugi komputer potwierdza to ustawiając bit ACK i zwiększając numer potwierdzenia o długość odebranych danych. W rzeczywistości, trzy pakiety biorące udział w trójstronnym uścisku dłoni nie zawierają zazwyczaj żadnych danych. Kiedy komputery zakończą proces uścisku dłoni, są gotowe do odbioru pakietów zawierających rzeczywiste dane.
Numery sekwencji i potwierdzenia są częścią nagłówka TCP:
Podświetlone są 32-bitowe numery sekwencji i potwierdzenia.
Te dwie liczby pomagają komputerom śledzić, które dane zostały pomyślnie odebrane, które dane zostały utracone, a które dane zostały przypadkowo wysłane dwukrotnie.

Krok 3: Zamknięcie połączenia

Każdy komputer może zamknąć połączenie, gdy nie chce już wysyłać lub odbierać danych.
Komputer inicjuje zamknięcie połączenia poprzez wysłanie pakietu z bitem FIN ustawionym na 1 (FIN = finish). Drugi komputer odpowiada pakietem ACK i kolejnym FIN. Po jeszcze jednym ACK od komputera inicjującego, połączenie zostaje zamknięte.

Wykrywanie utraconych pakietów

Połączenia TCP mogą wykrywać utracone pakiety za pomocą limitu czasu.
Po wysłaniu pakietu, nadawca uruchamia licznik czasu i umieszcza pakiet w kolejce retransmisji. Jeśli czas ten upłynie, a nadawca nie otrzymał jeszcze ACK od odbiorcy, wysyła pakiet ponownie.
Retransmisja może prowadzić do otrzymania przez odbiorcę zduplikowanych pakietów, jeśli pakiet nie został faktycznie utracony tylko bardzo wolno docierał lub był potwierdzany. Jeśli tak jest, odbiorca może po prostu odrzucić zduplikowane pakiety. Lepiej jest mieć dane dostarczone dwa razy niż wcale!

Obsługa nieuporządkowanych pakietów

Połączenia TCP mogą wykryć nieuporządkowane pakiety za pomocą numerów sekwencji i potwierdzenia.
Gdy odbiorca widzi wyższy numer sekwencji niż ten, który do tej pory potwierdził, wie, że brakuje mu co najmniej jednego pakietu pomiędzy nimi. W sytuacji przedstawionej powyżej, odbiorca widzi numer sekwencji 73, ale spodziewał się numeru sekwencji 37. Odbiorca daje znać nadawcy, że coś jest nie tak, wysyłając pakiet z numerem potwierdzenia ustawionym na oczekiwany numer sekwencji.
Czasami brakujący pakiet po prostu porusza się wolniejszą trasą przez Internet i dociera na miejsce wkrótce potem.
W innych przypadkach, brakujący pakiet może być w rzeczywistości utraconym pakietem i nadawca musi retransmitować pakiet.
W obu sytuacjach odbiorca musi sobie radzić z nieuporządkowanymi pakietami. Na szczęście, odbiorca może użyć numerów sekwencji, aby ponownie złożyć dane pakietu w prawidłowej kolejności.
🙋🏽🙋🏻‍♀️🙋🏿‍♂️Czy masz jakieś pytania na ten temat? Chętnie na nie odpowiemy — wystarczy, że zadasz pytanie w poniższym obszarze pytań!

Chcesz dołączyć do dyskusji?

Na razie brak głosów w dyskusji
Rozumiesz angielski? Kliknij tutaj, aby zobaczyć więcej dyskusji na angielskiej wersji strony Khan Academy.