- 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 protokoł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
Ź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 odbierają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 sekwencyjnym 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 sekwencyjnych 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 aplikacje 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 danych, które dotarły do urządzenia odbiorczego. Jeśli w czasie transmisji wystą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 danych 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 formatem 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.