Architektura Internetu

TCP (Transmission Control Protocol)

Architektura Internetu

Format nagłówka TCP

TCP (RFC 793 i 1323) jest protokołem alternatywnym wobec UDP, wykorzystywanym do transportu danych w trybie połączeniowym, a więc z gwarancją dostarczenia ich odbiorcy. Różne uzupełnienia i rozszerzenia tego protokołu, w tym internetowe, są opisane w RFC: 1122, 1323, 1185, 2001 i kilku innych.

Wszystkie połączenia TCP są wirtualne, rozpoznawane po adresach i portach komputerów źródłowych i docelowych. Transmisje są głównie dupleksowe, ale protokół dopuszcza wyłączenie jednego z kierunków. Informacje TCP są przesyłane w datagramach IP. Pakiety noszą nazwę segmentów TCP.

TCP negocjuje warunki połączenia w 3 etapach i jeśli nie nastąpi przerwanie uzgodnione lub wymuszone, to utrzymuje je do końca sesji. Mechanizm sterowania przepływem danych może być w razie potrzeby wyłączany zadeklarowaniem danych jako pilnych (urgent). Wtedy nadawca ustawia URG = 1, a w polu Wskaźnik pilności określa położenie pilnych danych w segmencie danych, ale nic więcej. TCP nie zajmuje się więcej tymi danymi. Poza tym TCP sprawdza i porządkuje pakiety, obsługuje wiele strumieni danych, wysyła potwierdzenia, sprawdza poprawność danych i koryguje błędy - pakiety uszkodzone lub zagubione są ponownie przesyłane.

Nagłówek TCP, którego długość musi być wielokrotnością 32 bitów, zawiera m.in. pola dla numeru portu źródłowego, numeru portu docelowego, numeru sekwencyjnego, numeru potwierdzenia i rozmiaru okna. Port źródłowy, który zainicjował sesję, oraz adres źródłowy IP tworzą adres zwrotny. Natomiast w polach Port docelowy i Port źródłowy znajdują się adresy interfejsów programów wyższej warstwy aplikacji w komputerach odbiorcy i nadawcy, które używają połączenia TCP. Z kolei 16-bitowe pole rozmiaru okna umożliwia przystosowanie transmisji do warunków sieci: większy natłok - niższa szybkość transmisji. W pole Okno odbiorca wpisuje liczbę bajtów danych, jaką są w stanie przyjąć bufory. Może również wpisać zero. Wtedy nadawca musi przerwać nadawanie. Wznowienie transmisji nastąpi w chwili, kiedy odbiorca wpisze w pole Okno liczbę większą od zera, a w pole Numer potwierdzenia - kolejny numer sekwencyjny oczekiwanego segmentu. Dzięki takim procedurom sieć TCP/IP jest bardzo odporna na przeciążenia.

Flagi jednobitowe są w RFC 793 określone następująco: URG (Urgent Pointer field significant), ACK (Acknowledgment field significant), PSH (Push Function), RST (Reset the connection), SYN (Synchronize sequence numbers) i FIN (No more data from sender). PSH - przesyłanie bezpośrednie - ustawia nadawca. W odpowiedzi odbiorca przesyła dane bezpośrednio do aplikacji, pomijając powszechne w TCP/IP buforowanie. SYN - synchronizacja numerów sekwencyjnych - wiąże się z ACK. Podczas żądania połączenia ustawia się SYN = 1 i ACK = 0, a SYN = 0 i ACK = 1 oznaczają akceptację połączenia. Potwierdzenie ustalenia połączenia jest sygnowane ustawieniami: ACK = 1 i SYN = 0. RST = 1 oznacza konieczność ponownego nawiązania połączenia, gdyż dotychczasowe uważa się z pewnych przyczyn za nieważne. Wreszcie FIN = 1 rozpoczyna proces rozłączenia.

Numer sekwencyjny umożliwia odbiorcy skompletowanie pakietów przenoszących kolejne fragmenty pewnej całości danych. Pakiety mogą jednak przybywać różnymi drogami, a ponadto z przerwami spowodowanymi fizycznym uszkodzeniem trasy i ponownym ustalaniem połączenia. Numer sekwencyjny określa położenie pierwszego bajtu bieżącego segmentu w całym ciągu danych przesyłanych porcjami. Pole Numer potwierdzenia wypełnia odbiorca kolejnym numerem oczekiwanego segmentu. W ten sposób informuje jednocześnie nadawcę, że zdążył odebrać poprzedni segment.

TCP ma identyfikator 6, który wpisuje się w odpowiednie pole IP. Wiadomo wówczas, że w polu danych pakietu IP znajduje się ładunek TCP. Protokół IP jest bezpołączeniowy, a więc nie gwarantuje dostarczania danych. TCP - przeciwnie - gwarantuje, że odbiorca otrzyma dane. Ta niejednoznaczność jest pozorna: TCP w odniesieniu do IP jest protokołem nadrzędnym.

PPP (Point-to-Point Protocol) i PPTP

PPP to starszy standardowy protokół komunikacyjny Internetu, gwarantujący głównie niezawodność asynchronicznej transmisji łączem szeregowym punkt-punkt bez ograniczania szybkości. Negocjuje on m.in. parametry konfiguracji, sprawdza jakość połączeń i umożliwia szyfrowanie haseł. Pakiety danych wysyła w ramkach PPP, przystosowanych do różnych formatów sieciowych. Ogólnie na PPP składają się: kapsułkowanie datagramów wieloprotokołowych (IP, IPX, NetBEUI, AppleTalk i in.), protokół LCP (Link Control Protocol) oraz pakiety nazywane protokołami sterowania siecią - NCP (Network Control Protocols). LCP zestawia, konfiguruje i kontroluje łącze, a NCP kompletuje i konfiguruje różne protokoły sieciowe, odpowiadając m.in. za przydzielanie i zarządzanie adresami. NCP dla datagramów IP nosi nazwę IPCP (IP Control Protocol).


TOP 200