www.eprace.edu.pl » rejestrowanie-multimediow » Stos protokołów TCP/IP » Protokół TCP

Protokół TCP

Protokół TCP implementuje warstwę transportową modelu OSI. Protokół ten zapewnia niezawodność przesyłania informacji, co oznacza w szczególności, że:

Połączenia w protokole TCP

W celu zapewnienia niezawodności i zachowania kolejności przesyłanych danych transmisja protokołem TCP odbywa się za pomocą tzw. połączenia logicznego między nadawcą a odbiorcą, wobec czego protokół ten jest zaliczany do tzw. protokołów połączeniowych.

Przed rozpoczęciem wymiany danych urządzenie inicjujące transmisję (klient) wysyła do urządzenia, z którym chce wymieniać dane (serwera) żądanie zestawienia połączenia (pakiet SYN). W odpowiedzi serwer wysyła pakiet SYN do klienta, jednocześnie potwierdzając odebranie od niego pakietu. Następnie klient wysyła potwierdzenie, co kończy procedurę zestawiania połączenia. W tym momencie może się rozpocząć transmisja danych.

Zestawienie połączenia oznacza ustalenie trasy, którą będą przesyłane wszystkie pakiety danych. Zapobiegnie to sytuacji, w której dany pakiet trafiłby na trasę zapewniającą znacząco krótszy czas transmisji niż pakiet poprzedni i w efekcie dotarłby do celu wcześniej.

Po zakończeniu wymiany danych dowolna ze stron wysyła pakiet FIN, oznaczający żądanie zakończenia połączenia. W odpowiedzi druga strona wysyła również pakiet FIN wraz z potwierdzeniem odebrania poprzedniego pakietu. Potwierdzenie drugiego pakietu FIN kończy połączenie.

Potwierdzenia i retransmisje oraz mechanizm okna

Ponieważ protokół TCP wykorzystuje protokół IP, który dopuszcza zagubienie datagramu, istnieje mechanizm pozwalający zachować poprawną transmisję w takich sytuacjach.

Podstawowym rozwiązaniem stosowanym w systemach, w których występuje wyżej wymieniony problem, jest mechanizm pozytywnych potwierdzeń i retransmisji. Polega on na tym, że każdy nadany pakiet musi zostać potwierdzony przez odbiorcę. Nadawca po wysłaniu pakietu czeka przez określony czas. Jeżeli w tym czasie nie otrzyma potwierdzenia, będzie to dla niego znak, że pakiet nie dotarł do celu lub dotarł w postaci uszkodzonej. W tej sytuacji nadawca podejmuje retransmisję, czyli ponowną próbę wysłania pakietu.

Wadą tego rozwiązania jest fakt, że nadawca musi oczekiwać na potwierdzenie w czasie, kiedy mógłby wysyłać następne dane. Celem zredukowania tego zjawiska w protokole TCP wprowadzono zmodyfikowaną wersję powyższego algorytmu, w której odbiorca nie musi potwierdzać każdego pakietu oddzielnie, lecz wysyła zbiorowe potwierdzenie, w którym podaje numer ostatniego poprawnie odebranego bajtu. Wprowadza się tu ograniczenie na liczbę bajtów, które nadawca może wysłać nie otrzymawszy potwierdzenia. Jest to tzw. okno transmisyjne.

Dodatkową zaletą mechanizmu okna jest sterowanie przez odbiorcę szybkością wysyłania danych przez nadawcę. Odbywa się to w ten sposób, że odbiorca w pakietach potwierdzeń (ACK) informuje nadawcę o tym, ile bajtów może on wysłać nie oczekując na potwierdzenie, czyli o rozmiarze okna transmisyjnego. Gdy odbiorca jest obciążony i nie może obsłużyć dużej liczby nadchodzących pakietów, wówczas stosownie obniża wielkość okna, co zmusza nadawcę do spowolnienia transmisji. Jeżeli tym nadawcą jest węzeł pośredni, który otrzymuje dużą ilość pakietów, to prześle on z kolei do swojego poprzednika informację o zmniejszeniu okna transmisyjnego. W ten sposób informacja o właściwej szybkości wysyłania dociera ostatecznie do węzła źródłowego, który się do niej dostosowuje.

Koncepcja portów

Ponieważ komputery obecnej doby pracują w systemach wielozadaniowych, często zachodzi potrzeba, aby kilka zadań na danym komputerze niezależnie od siebie komunikowało się przez sieć opartą na protokołach TCP/IP. W związku z tym musi istnieć możliwość rozróżnienia do którego zadania kierowane są przychodzące pakiety. W tym celu protokół obsługuje tzw. porty.

W każdym pakiecie TCP informacja o źródłowym i docelowym adresie IP uzupełniona jest o numer źródłowego i docelowego portu, będący liczbą 16-bitową, co daje zakres 0-65535. Numery portu nie wpływają na to, do którego urządzenia pakiet zostanie dostarczony, ale są analizowane przez to urządzenie i na tej podstawie przekazywane do zadania, które oczekuje informacji na danym porcie. Na każdym wykorzystywanym porcie ustanawiane jest niezależne połączenie.

Rozwiązanie takie pozwala na multipleksację, czyli wykorzystanie jednego kanału transmisyjnego do przesyłania wielu niezależnych strumieni danych.

Format pakietu TCP

akiet TCP, nazywany również segmentem TCP, wypełnia pole danych datagramu IP. Z kolei pakiet TCP składa się z nagłówka i następującego po nim pola danych, które zawiera informacje wyższych warstw. Strukturę nagłówka segmentu TCP pokazuje rysunek 2.4.

P
Rys. 2.4. Nagłówek pakietu protokołu TCP


Znaczenie poszczególnych pól jest następujące:



komentarze

Copyright © 2008-2010 EPrace oraz autorzy prac.