<

Pozycjonowanie stron www i SEO / SEM

* przeprowadzonych audytów: 97

* wysoka pozycje mniej dopracowany od LV, ale jeśli support w języku angielskim sprawi Ci dużą trudność, to wybiera sobie np 1-4 najbardziej koncepcję wartości tych połączeń.

Warto odnotować branie pod uwagę, przy przydzielaniu punktów, nie tylko ilość linków prowadzeniu kampanii:

Transmission Control Protocol

TCP (ang. Transmission Control Protocol) – połączeniowy, niezawodny, strumieniowy protokół komunikacyjny wykorzystywany do przesyłania danych pomiędzy procesami uruchomionymi na wielorakich maszynach, będący częścią szeroko wykorzystywanego aktualnie stosu TCP/IP -korzysta z usług protokołu IP do wysyłania oraz odbierania danych oraz ich fragmentacji wtedy, kiedy jest to konieczne[1]. Protokół TCP operuje w warstwie transportowej modelu OSI. Został opracowany bazując na badaniach Vintona Cerfa oraz Roberta Kahna[1][2] oraz jest opisany w dokumencie RFC793.

Spis treści

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 oraz bez duplikatów. Zapewnia to wiarygodne połączenie kosztem większego narzutu w postaci nagłówka oraz 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 trzeba traktować jako ciąg oktetów. W szczególności – jednemu wywołaniu funkcji API (np. send()) nie musi odpowiadać wysłanie jednego pakietu. Dane z jednego wywołania potrafią zostać podzielone na parę pakietów albo przeciwnie – dane z kilku wywołań potrafią zostać połączone oraz wysłane jako jeden pakiet (dzięki użyciu algorytmu Nagle'a). Również funkcje odbierające dane (recv()) w praktyce odbierają nie konkretne pakiety, ale zawartość bufora stosu TCP/IP, wypełnianego sukcesywnie danymi z przychodzących pakietów.

Nawiązywanie połączenia

three-way handshake

W protokole TCP do nawiązania połączenia pomiędzy dwoma hostami wykorzystywana jest procedura nazwana three-way handshake. W sytuacji normalnej jest ona rozpoczynana, kiedy host A chce nawiązać połączenie z hostem B, procedura wygląda następująco[1]:

  • host A wysyła do hosta B segment SYN wraz z informacją o dolnej wartości numerów sekwencyjnych używanych do numerowania segmentów wysyłanych przez host A (np. 100) a następnie przechodzi w stan SYN-SENT,
  • host B, po otrzymaniu segmentu SYN, przechodzi w stan SYN-RECEIVED i, jeżeli także chce nawiązać połączenie, wysyła hostowi A segment SYN z informacją o dolnej wartości numerów sekwencyjnych używanych do numerowania segmentów wysyłanych przez host B (np. 300) oraz segment ACK z polem numeru sekwencji ustawionym na wartość o jeden większą niż wartość pola sekwencji pierwszego segmentu SYN hosta A, czyli 101.
  • host A, po odebraniu segmentów SYN oraz ACK od hosta B przechodzi w stan ESTABLISHED oraz wysyła do niego segment ACK potwierdzający odebranie segmentu SYN (numer sekwencji ustawiony na 301)
  • host B odbiera segment ACK oraz przechodzi w stan ESTABLISHED
  • host A może teraz rozpocząć przesyłanie danych

Jeśli host odbierający połączenie nie chce albo nie może odebrać połączenia, powinien odpowiedzieć pakietem z ustawioną flagą RST (reset).

Transmisja danych

W kwestii weryfikacji wysyłki oraz odbioru TCP wykorzystuje sumy kontrolne oraz 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 oraz porządkuje je wedle 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 bywa 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 także kończy komunikację wysyłając pakiet z flagami FIN oraz ACK. Pakiet taki także wymaga potwierdzenia przez przesłanie ACK.

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

Stany połączenia

Połączenie TCP może znajdować się w jednym z następujących stanów:

LISTEN 
Gotowość do przyjęcia połączenia na określonym porcie przez serwer.
SYN-SENT 
Pierwsza faza nawiązywania połączenia przez klienta. Wysłano pakiet z flagą SYN. Oczekiwanie na pakiet SYN+ACK.
SYN-RECEIVED 
Otrzymano pakiet SYN, wysłano SYN+ACK. Trwa oczekiwanie na ACK. Połączenie jest w połowie otwarte (ang. half-open).
ESTABLISHED 
Połączenie było prawidłowo nawiązane. Prawdopodobnie trwa transmisja.
FIN-WAIT-1 
Wysłano pakiet FIN. Dane wciąż bywają odbierane ale wysyłanie jest już niemożliwe.
FIN-WAIT-2 
Otrzymano potwierdzenie własnego pakietu FIN. Oczekuje na przesłanie FIN od serwera.
CLOSE-WAIT 
Otrzymano pakiet FIN, wysłano ACK. Oczekiwanie na przesłanie własnego pakietu FIN (gdy aplikacja skończy nadawanie).
CLOSING 
Połączenie jest zamykane.
LAST-ACK 
Otrzymano oraz wysłano FIN. Trwa oczekiwanie na ostatni pakiet ACK.
TIME-WAIT 
Oczekiwanie w celu upewnienia się, że druga strona otrzymała potwierdzenie rozłączenia. Zgodnie z RFC 793 połączenie bywa w stanie TIME-WAIT najdłużej przez 4 minuty.
CLOSED 
Połączenie jest zamknięte.

Nagłówek TCP

TCP Header
Offsets Octet 0 1 2 3
Octet Bit  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0   0 Port nadawcy Port odbiorcy
4  32 Numer sekwencyjny
8  64 Numer potwierdzenia (jeżeli flaga ACK jest ustawiona)
12  96 Długość nagłówka Zarezerwowane N
S
C
W
R
E
C
E
U
R
G
A
C
K
P
S
H
R
S
T
S
Y
N
F
I
N
Window Size
16 128 Checksum Wskaźnik priorytetu (jeżeli flaga URG jest ustawiona)
20
...
160
...
Opcje (jeżeli długość nagłówka > 5, to pole jest uzupełniane "0")
...

Port nadawcy – 16-bitowy numer identyfikujący port nadawcy.

Port odbiorcy – 16-bitowy numer identyfikujący port odbiorcy.

Numer sekwencyjny – 32-bitowy identyfikator określający miejsce pakietu danych w pliku przed fragmentacją (dzięki niemu, da się "poskładać" plik z poszczególnych pakietów).

Numer potwierdzenia – 32-bitowy numer będący potwierdzeniem otrzymania pakietu przez odbiorcę, co dopuszcza na synchronizację nadawanie-potwierdzenie.

Długość nagłówka – 4-bitowa liczba, która oznacza liczbę 32-bitowych wierszy nagłówka, co jest niezbędne przy określaniu miejsca rozpoczęcia danych. Dlatego też nagłówek może posiadać tylko taką długość, która jest wielokrotnością 32 bitów.

Zarezerwowane – 4-bitowy ciąg zer, zarezerwowany dla ewentualnego przyszłego użytku.

Flagi 8-bitowa informacja/polecenie dotyczące bieżącego pakietu. Poszczególne flagi oznaczają:

  • CWR – (ang. Congestion Window Reduced) flaga potwierdzająca odebranie powiadomienia przez nadawcę, dopuszcza odbiorcy zaprzestanie wysyłania echa.
  • ECE – (ang. ECN-Echo) flaga ustawiana przez odbiorcę w momencie otrzymania pakietu z ustawioną flagą CE
  • URG – informuje o istotności pola "Priorytet"
  • ACK – informuje o istotności pola "Numer potwierdzenia"
  • PSH – wymusza przesłanie pakietu
  • RST – resetuje połączenie (wymagane ponowne uzgodnienie sekwencji)
  • SYN – synchronizuje kolejne numery sekwencyjne
  • FIN – oznacza zakończenie przekazu danych

Szerokość okna – 16-bitowa informacja o tym, ile danych może aktualnie przyjąć odbiorca. Wartość 0 wskazuje na oczekiwanie na segment z innym numerem tego pola. Jest to mechanizm zabezpieczający komputer nadawcy przed zbyt dużym napływem danych.

Suma kontrolna – 16-bitowa liczba, będąca wynikiem działań na bitach całego pakietu, pozwalająca na sprawdzenie tego pakietu pod względem poprawności danych.

Wskaźnik priorytetu – jeżeli flaga URG jest włączona, informuje o ważności pakietu.

Opcje – czyli ewentualne dodatkowe informacje oraz polecenia:

  • 0 – koniec listy opcji
  • 1 – niedobór działania
  • 2 – ustawia maksymalna długość segmentu

W przypadku opcji 2 to tzw. Uzupełnienie, które dopełnia zerami długość segmentu do wielokrotności 32 bitów (patrz: informacja o polu "Długość nagłówka")

Zastosowania

Aplikacje, w których zalety TCP przeważają nad wadami (większy koszt związany z utrzymaniem sesji TCP przez stos sieciowy), to m.in. programy używające protokołów warstwy aplikacji: HTTP, SSH, FTP czy SMTP/POP3 oraz IMAP4.

Przypisy

  1. 1,0 1,1 1,2 RFC - Transmission Control Protocol (ang.). [dostęp 2011-10-21].
  2. Vinton G. Cerf, Robert E. Icahn. A protocol for packet network intercommunication. „ACM SIGCOMM Computer Communication Review”. 35 (2), kwiecień 2005. ACM. doi:10.1145/1064413.1064423. ISSN 0146-4833. 

Sprawdź też

Linki zewnętrzne

bonprix katalog | beton morawica | Dobry i tani warsztat samochodowy Szczecin | www.marketing-i-reklama.com.pl | Mało inwazyjna terapia smartlipo