TCP: Różnice pomiędzy wersjami

Z Systemy operacyjne i sieci komputerowe
Przejdź do nawigacji Przejdź do wyszukiwania
(Utworzył nową stronę „'''TCP''' (ang. ''Transmission Control Protocol'' – protokół kontroli transmisji) – strumieniowy [[protokoły komunikacyjne|protokół komuni...”)
 
 
(Nie pokazano 5 wersji utworzonych przez 2 użytkowników)
Linia 1: Linia 1:
'''TCP''' ([[język angielski|ang.]] ''Transmission Control Protocol'' – protokół kontroli transmisji) – strumieniowy [[protokoły komunikacyjne|protokół komunikacji]] między dwoma [[komputer]]ami. Został stworzony przez [[Vinton Gray Cerf|Vintona Cerfa]] i [[Bob Kahn|Roberta Kahna]].
+
'''TCP''' (ang. ''Transmission Control Protocol'' – protokół kontroli transmisji) – strumieniowy protokół komunikacji między dwoma komputerami.
  
Jest on częścią większej całości określanej jako stos [[Model TCP/IP|TCP/IP]]. W [[model OSI|modelu OSI]] TCP odpowiada warstwie transportowej.
+
Jest on częścią większej całości określanej jako stos [[Model TCP/IP|TCP/IP]]. W [[model ISO/OSI|modelu OSI]] TCP odpowiada '''warstwie transportowej'''.
  
 
== Charakterystyka protokołu ==
 
== Charakterystyka protokołu ==
 
TCP jest protokołem działającym w trybie klient-serwer. Serwer oczekuje na nawiązanie połączenia na określonym porcie. Klient inicjuje połączenie do serwera.
 
TCP jest protokołem działającym w trybie klient-serwer. Serwer oczekuje na nawiązanie połączenia na określonym porcie. Klient inicjuje połączenie do serwera.
  
W przeciwieństwie do [[UDP]], TCP gwarantuje wyższym warstwom komunikacyjnym dostarczenie wszystkich pakietów w całości, z zachowaniem kolejności i bez duplikatów. Zapewnia to wiarygodne połączenie kosztem większego narzutu w postaci nagłówka i większej liczby przesyłanych pakietów. Chociaż protokół definiuje pakiet TCP, to z punktu widzenia wyższej warstwy oprogramowania, dane płynące połączeniem TCP należy traktować jako ciąg [[oktet (informatyka)|oktetów]]. W szczególności – jednemu wywołaniu funkcji [[API (informatyka)|API]] (np. <code>send()</code>) nie musi odpowiadać wysłanie jednego pakietu. Dane z jednego wywołania mogą zostać podzielone na kilka pakietów lub odwrotnie – dane z kilku wywołań mogą zostać połączone i wysłane jako jeden pakiet (dzięki użyciu [[algorytm Nagle'a|algorytmu Nagle'a]]). Również funkcje odbierające dane (<code>recv()</code>) w praktyce odbierają nie konkretne pakiety, ale zawartość bufora stosu TCP/IP, wypełnianego sukcesywnie danymi z przychodzących pakietów.
+
W przeciwieństwie do [[User Datagram Protocol|UDP]], TCP gwarantuje wyższym warstwom komunikacyjnym dostarczenie wszystkich pakietów w całości, z zachowaniem kolejności i bez duplikatów. Zapewnia to wiarygodne połączenie kosztem większego narzutu w postaci nagłówka i większej liczby przesyłanych pakietów.  
  
 
=== Nawiązywanie połączenia ===
 
=== Nawiązywanie połączenia ===
 
[[Plik:Tcp normal.png|thumb|right|''three-way handshake'']]
 
[[Plik:Tcp normal.png|thumb|right|''three-way handshake'']]
Charakterystyczny dla TCP jest moment nawiązania połączenia, nazywany ''three-way handshake''. Host inicjujący połączenie wysyła pakiet zawierający segment TCP z ustawioną flagą SYN (''synchronize''). Host odbierający połączenie, jeśli zechce je obsłużyć, odsyła pakiet z ustawionymi flagami SYN i ACK (''acknowledge'' – potwierdzenie). Inicjujący host powinien teraz wysłać pierwszą porcję danych, ustawiając już tylko flagę ACK (i gasząc SYN). Jeśli host odbierający połączenie nie chce lub nie może odebrać połączenia, powinien odpowiedzieć pakietem z ustawioną flagą RST (''reset'').
+
Charakterystyczny dla TCP jest moment nawiązania połączenia, nazywany '''''three-way handshake'''''. Host inicjujący połączenie wysyła pakiet zawierający segment TCP z ustawioną flagą SYN (''synchronize''). Host odbierający połączenie, jeśli zechce je obsłużyć, odsyła pakiet z ustawionymi flagami SYN i ACK (''acknowledge'' – potwierdzenie). Inicjujący host powinien teraz wysłać pierwszą porcję danych, ustawiając już tylko flagę ACK (i gasząc SYN). Jeśli host odbierający połączenie nie chce lub nie może odebrać połączenia, powinien odpowiedzieć pakietem z ustawioną flagą RST (''reset'').
  
 
=== Transmisja danych ===
 
=== Transmisja danych ===
  
W celu weryfikacji wysyłki i odbioru TCP wykorzystuje [[suma kontrolna|sumy kontrolne]] i numery sekwencyjne [[pakiet telekomunikacyjny|pakietów]]. Odbiorca potwierdza otrzymanie pakietów o określonych numerach sekwencyjnych ustawiając flagę ACK. Brakujące pakiety są retransmitowane. [[Host]] odbierający pakiety TCP defragmentuje je i porządkuje je według numerów sekwencyjnych tak, by przekazać wyższym warstwom modelu OSI pełen złożony segment.
+
W celu weryfikacji wysyłki i odbioru TCP wykorzystuje '''sumy kontrolne''' i '''numery sekwencyjne pakietów'''. Odbiorca potwierdza otrzymanie pakietów o określonych numerach sekwencyjnych ustawiając flagę ACK. Brakujące pakiety są retransmitowane. Host odbierający pakiety TCP defragmentuje je i porządkuje je według numerów sekwencyjnych tak, by przekazać wyższym warstwom modelu OSI pełen złożony segment.
  
 
=== Zakończenie połączenia ===
 
=== Zakończenie połączenia ===
Linia 20: Linia 20:
 
Prawidłowe zakończenie połączenia może być zainicjowane przez dowolną stronę. Polega ono na wysłaniu pakietu z ustawioną flagą FIN (''finished''). Pakiet taki wymaga potwierdzenia flagą ACK. Najczęściej po otrzymaniu pakietu z flagą FIN, druga strona również kończy komunikację wysyłając pakiet z flagami FIN i ACK. Pakiet taki również wymaga potwierdzenia przez przesłanie ACK.
 
Prawidłowe zakończenie połączenia może być zainicjowane przez dowolną stronę. Polega ono na wysłaniu pakietu z ustawioną flagą FIN (''finished''). Pakiet taki wymaga potwierdzenia flagą ACK. Najczęściej po otrzymaniu pakietu z flagą FIN, druga strona również kończy komunikację wysyłając pakiet z flagami FIN i ACK. Pakiet taki również wymaga potwierdzenia przez przesłanie ACK.
  
Dopuszcza się również awaryjne przerwanie połączenia poprzez przesłanie pakietu z flagą RST (''reset''). Pakiet taki nie wymaga potwierdzenia.
+
Dopuszcza się również awaryjne przerwanie połączenia poprzez przesłanie pakietu z flagą RST (''reset''). Pakiet taki nie wymaga potwierdzenia. [http://pl.wikipedia.org/wiki/TCP_%28protok%C3%B3%C5%82%29 1]
 
 
Na podstawie http://pl.wikipedia.org/wiki/TCP_%28protok%C3%B3%C5%82%29
 
  
 
[[Category:4 TI systemy operacyjne i sieci komputerowe]]
 
[[Category:4 TI systemy operacyjne i sieci komputerowe]]
 +
[[Category:Sieci komputerowe]]

Aktualna wersja na dzień 14:07, 17 mar 2014

TCP (ang. Transmission Control Protocol – protokół kontroli transmisji) – strumieniowy protokół komunikacji między dwoma komputerami.

Jest on częścią większej całości określanej jako stos TCP/IP. W modelu OSI TCP odpowiada warstwie transportowej.

Charakterystyka protokołu

TCP jest protokołem działającym w trybie klient-serwer. Serwer oczekuje na nawiązanie połączenia na określonym porcie. Klient inicjuje połączenie do serwera.

W przeciwieństwie do UDP, TCP gwarantuje wyższym warstwom komunikacyjnym dostarczenie wszystkich pakietów w całości, z zachowaniem kolejności i bez duplikatów. Zapewnia to wiarygodne połączenie kosztem większego narzutu w postaci nagłówka i większej liczby przesyłanych pakietów.

Nawiązywanie połączenia

three-way handshake

Charakterystyczny dla TCP jest moment nawiązania połączenia, nazywany three-way handshake. Host inicjujący połączenie wysyła pakiet zawierający segment TCP z ustawioną flagą SYN (synchronize). Host odbierający połączenie, jeśli zechce je obsłużyć, odsyła pakiet z ustawionymi flagami SYN i ACK (acknowledge – potwierdzenie). Inicjujący host powinien teraz wysłać pierwszą porcję danych, ustawiając już tylko flagę ACK (i gasząc SYN). Jeśli host odbierający połączenie nie chce lub nie może odebrać połączenia, powinien odpowiedzieć pakietem z ustawioną flagą RST (reset).

Transmisja danych

W celu weryfikacji wysyłki i odbioru TCP wykorzystuje sumy kontrolne i numery sekwencyjne pakietów. Odbiorca potwierdza otrzymanie pakietów o określonych numerach sekwencyjnych ustawiając flagę ACK. Brakujące pakiety są retransmitowane. Host odbierający pakiety TCP defragmentuje je i porządkuje je według numerów sekwencyjnych tak, by przekazać wyższym warstwom modelu OSI pełen złożony segment.

Zakończenie połączenia

Prawidłowe zakończenie połączenia może być zainicjowane przez dowolną stronę. Polega ono na wysłaniu pakietu z ustawioną flagą FIN (finished). Pakiet taki wymaga potwierdzenia flagą ACK. Najczęściej po otrzymaniu pakietu z flagą FIN, druga strona również kończy komunikację wysyłając pakiet z flagami FIN i ACK. Pakiet taki również wymaga potwierdzenia przez przesłanie ACK.

Dopuszcza się również awaryjne przerwanie połączenia poprzez przesłanie pakietu z flagą RST (reset). Pakiet taki nie wymaga potwierdzenia. 1