Articles

Co to jest tcp three way handshake ? Co to są pakiety SYN , ACK ?

Wiemy, że TCP jest jednym z przykładów implementacji protokołu warstwy transportowej zgodnie z modelem OSI. Protokół ten jest zorientowany na połączenie, co oznacza, że przed wysłaniem jakichkolwiek danych do zdalnego peera, klient tcp ustanawia wirtualne połączenie poprzez bazującą na pakietach sieć IP. Trójdrożny handshake jest procedurą protokołu do osiągnięcia połączenia. Tutaj omówimy szczegółowo procedurę zestawiania połączenia tcp. Pierwsze pytanie, które się nasuwa, to kto jest odpowiedzialny za uruchomienie połączenia TCP? Czy sama warstwa protokołu, podczas uruchamiania, czy też jakaś inna zewnętrzna jednostka instruuje tę warstwę do nawiązania połączenia? Odpowiedź brzmi: użytkownik TCP jest odpowiedzialny za rozpoczęcie trójstronnego uścisku dłoni TCP. Na przykład HTTP (przeglądarka internetowa używa HTTP), jest jednym z użytkowników TCP. Kiedy użytkownik HTTP musi wysłać zapytanie do zdalnego serwera. Przed wysłaniem jakichkolwiek danych użytkownik HTTP prosi TCP o nawiązanie połączenia ze zdalnym serwerem. Po otrzymaniu żądania połączenia warstwa TCP rozpoczyna trójstronną wymianę danych. Jak każdy inny protokół, procedura trójstronnego uścisku dłoni wymaga wymiany pakietów lub wiadomości pomiędzy klientem a serwerem. Poniżej przedstawione są komunikaty wykorzystywane w konfiguracji połączenia.

Poniżej przedstawiono przepływ komunikatów dla trójstronnego uścisku dłoni.

Użytkownik protokołu HTTP wysyła żądanie połączenia do warstwy TCP. Warstwa TCP działa jak klient tcp i wysyła syn tcp z początkowym numerem sekwencji. Numer sekwencji służy do zachowania sekwencyjności wiadomości. Po otrzymaniu SYN Sever wysyła do klienta nowy syn i potwierdzenie otrzymania syn, następnie klient wysyła do serwera ACK dla syn otrzymanego od serwera. To kończy zestawianie połączenia. Poniżej opisano szczegółowo każdą wiadomość dla trójstronnego uścisku dłoni.

To jest pierwszy pakiet od klienta do serwera. Wiadomość TCP ustawia flagę SYN na 1 w wiadomości, więc czyni wiadomość tcp pakietem SYN. Zawiera on początkowy numer sekwencji klienta wraz z kilkoma innymi parametrami.

PakietTCP SYN ACK:

Po otrzymaniu pakietu SYN, serwer wysyła pakiet syn ack do klienta. Jest to pojedynczy pakiet tcp z bitem syn i ack ustawionym na 1. Numer sekwencji syn jest początkowym numerem sekwencji serwera akceptującego połączenie. Część ack posiada numer sekwencyjny klienta plus jeden. W ten sposób serwer informuje, że jest gotowy do przyjęcia pakietu z kolejnym numerem sekwencyjnym od klienta.

Pakiet tcp ACK:

Ostatnim pakietem do zestawienia połączenia jest pakiet tcp ack. Klient wysyła pakiet tcp ack po otrzymaniu pakietu tcp syn ack od serwera. Pakiet ten zawiera numer sekwencji z serwera plus jeden.

Wskazanie użytkownika TCP po trójstronnym uścisku dłoni :

Na początku wspomnieliśmy, że to użytkownik inicjuje żądanie połączenia. Ale skąd użytkownik ma wiedzieć, że połączenie zostało nawiązane? I że użytkownik może użyć tego połączenia do wysłania danych do zdalnego serwera? Użytkownik otrzymuje informację od warstwy TCP o wyniku nawiązania połączenia. Jeśli handshake jest udany, to dostaje identyfikator połączenia. W przeciwnym wypadku i błąd. Identyfikator połączenia działa jako handler dla wysyłania/odbierania danych do/od serwera. W innym poście pokażemy dokładną implementację klienta/serwera TCP, wtedy będziesz mógł uzyskać bardziej przejrzysty obraz obsługi połączenia.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *