Protokół TCP

Protokół ten zapewnia niezawodną transmisję danych pomiędzy warstwą sie­ciową a warstwą aplikacji. Do cech charakterystycznych protokołu TCP należą:
  • możliwość sterowania przepływem,
  • potwierdzanie odbioru,
  • zachowanie kolejności danych,
  • kontrola błędów,
  • przeprowadzanie retransmisji.

TCP nazywany jest czasem protokołem „gwarantowanego przekazu danych „, ponieważ jeżeli do komputera docierają błędne lub niekompletne dane, wówczas żąda od serwera powtórnego przesłania tego pakietu. Dzięki temu jesteśmy pewni, iż przesyłane dane dotrą w niezmienionej formie do komputera odbiorczego. Protokół ten jednak nie zapewnia określonego czasu w jaki to dane mają zostać dostarczone do adresata. W przypadku dużego ruchu, gdy łącza są zapchane, prędkość transmisji spada, niekiedy zatrzymując się całkowicie. Powodem tego zjawiska jest duża ilość pakietów, które zostają błędnie przetransmitowane, a co za tym idzie muszą zostać retransmitowane przez serwer.

Protokół TCP rozpatruje dane jako ciągły strumień informacji, ale ponieważ dane te muszą zostać przesłane przy wykorzystaniu datagramów protokołu IP, to każdy komunikat TCP (segment), który jest przesyłany w rzeczywistości jest pojedynczym segmentem ze strumieniem bajtów protokołu TCP. Segment proto­kołu TCP składa się z nagłówka i danych jak pokazuje Rysunek 2.9, sam nagłówek składa się z kilku pól.

Rysunek 2.9. Format segmentu TCP

0          4          8          12        16         20        24         28            31
Port nadawcy
Port odbiorcy
Numer porządkowy
Numer potwierdzenia
Dł.Nagł.
Zarezerwowane
Bity kodu
Okno
Suma kontrolna
Wskaźnik pilnych danych
Opcje IP
Uzupełnienie
Dane
 Źródło: Opracowanie własne na podstawie [27]

Każde z nich podobnie jak pole danych ma określoną funkcję:

  • port nadawcy – jest to pole 16-bitowe, które zawiera numer portu TCP wysy­łającego dane;
  • port odbiorcy – jest to pole 16-bitowe, które zawiera numer portu TCP odbie­rającego dane;
  • numer porządkowy – pole to zajmuje 32 bity, określa położenie pierwszego bajtu w polu danych w segmencie TCP. W czasie ustanawiania połączenia i gdy bit syn (w znaczniku) jest ustawiony na „1”, wówczas w polu tym zawarty jest numer, który inicjuje sekwencyjny numer ins, od którego zaczyna się numeracja bajtów w połączeniu. Stąd też pierwszy bajt jaki jest wysyłany ma numer ins + 1;
  • numer potwierdzenia – pole to zajmuje 32 bity, informuje nas o numerze se­kwencyjnym kolejnego bajtu jaki powinien dotrzeć do odbiorcy, równocześnie jest to potwierdzenie poprawnego odbioru bajtu, którego numer sekwencyjny jest mniejszy od występującego w tym polu;
  • długość nagłówka – jest to pole 4-bitowe, określa nam długość nagłówka segmentu będącą wielokrotnością 32 bitów. Pole pełni taką funkcję tylko wtedy, gdy bit ack ma wartość „1”;
  • zarezerwowane – pole to jest przeznaczone dla przyszłych zastosowań;
  • bity kodu – jest to pole 6-bitowe informujące o przeznaczeniu zawartości segmentu. Pole to składa się z sześciu sterujących bitów:

–  UGR – wskazuje na ważność pola wskaźnik pilności,

–  ACK – wskazuje na ważność pola numer potwierdzania,

– PSH – wskazuje na działanie funkcji, które wymusza wysyłanie segmentu,

– RST – potwierdzenie wyzerowania połączenia,

– SYN – wskazuje, że w polu numer sekwencyjny umieszczony jest numer sekwencyjny inicjujący INS. Służy ono do synchronizacji numerów se­kwencyjnych w czasie ustawiania połączenia,

– FIN – wskazuje, że nadawca skończył nadawanie, jest to sygnał informujący

o końcu danych;

  • okno – pole to zajmuje 16 bitów, zawiera informację o tym ile bajtów może jeszcze odebrać strona docelowa;
  • suma kontrolna – pole to zajmuje 16 bitów, jest sumą 16-bitowych słów w obrębie segmentu;
  • wskaźnik pilnych danych – pole to zajmuje 16 bitów, jest sprawdzane tylko wtedy, gdy UGR ma wartość „1”. Pokazuje nam wówczas, gdzie znajduje się ostatni bajt danych, które przesyłane są w trybie przyspieszonym;
  • opcje IP – pole to ma długość równą wielokrotności 8 bitów. W polu tym znajduje się numer opcji, przy czym każdy numer jest zapisany w jednym bajcie. W przypadku TCP są określone trzy opcje:

–  0 – koniec listy opcji,

–  1 – brak działania,

–  2 – maksymalna długość segmentu;

  • uzupełnienie – pole to ma zmienną długość, będącą dopełnieniem nagłówka do wielokrotności 32 bitów;
  • dane – pole to ma zmienną długość, która to jest równą długości danych transmitowanych w sieci [12, 16, 27].

Jak już wcześniej zostało powiedziane protokół TCP jest stosowany, gdy apli­kacje wymagają niezawodnego przesłania danych. Tą niezawodność zapewniają konkretne funkcje oprogramowania sieciowego przy pomocy procedur protokołu TCP, które to analizują stan kanałów transmisyjnych stacji sieci, do funkcji tych należą:

  • orientacja strumienia danych – funkcja ta służy do analizowania kompletności odebranych danych, sprawdzenia czy do urządzenia odbiorczego dotarły wszystkie oktety jakie zostały wysłane;
  • połączenie wirtualne – jest „zestawiane” między aplikacjami a programami, któ­re nadają i odbierają dane. Urządzenia nadające wywołują proces odbioru, który powinien być zatwierdzony przez urządzenie odbiorcze. Dopiero po zatwierdzeniu może rozpocząć się transmisja danych. Po zakończeniu pobierania danych następuje sprawdzanie poprawności da­nych, które dotarły do urządzenia odbiorczego. Jeśli w czasie transmisji wy­stąpił błąd obie strony są o tym poinformowane, a transmisja powtórzona;
  • buforowanie kanałów – funkcja ta pozwala na gromadzenie części składowych ciągu danych, które zostały wysłane w formie pakietów. Po otrzymanie da­nych wysyłany jest komunikat o tym, że dane gotowe są do zweryfikowania oraz sprawdzenia kompletności. Aby występowała zadowalająca efektywność procesu przesyłania konieczne jest, aby po stronie nadawcy nastąpiła koncentracja danych zgodnie z forma­tem datagramów jakie obowiązują w systemie przesyłania danych poprzez sieci rozległe;
  • formatowanie ciągu danych – funkcja ta mówi o dopasowywaniu przesyłanych plików do standardów określonych w sieci internetowej, przez którą pliki są przesyłane;
  • transmisja obustronna – funkcja ta informuje o możliwości jednoczesnej transmisji danych w obu kierunkach linii tzw. full duplex.

Rozdział drugi zawiera informacje dotyczące protokołu TCP/IP, który jest najczę­ściej stosowanym protokołem w przypadku transmisji danych poprzez sieci komputerowe. Opisałam w nim dwa protokoły, a mianowicie protokół TCP, oraz protokół IPv4 i IPv6. Dodatkowo przedstawiłam także sposób adresowania urządzeń przy wykorzystaniu adresów IPv4 i IPv6.