Transmission Control Protocol jest bardzo ważnym protokołem w warstwie transportowej dla modelu OSI lub TCP/IP. TCP ma wiele zalet, takich jak:
- TCP dokonuje retransmisji, jeśli jakiekolwiek wysłane dane nie zostaną potwierdzone przez odbiorcę w ciągu pewnego czasu.
- TCP ustanawia pewne połączenie przed wysłaniem danych. Nazywamy to połączenie trójstronnym uściskiem dłoni.
- TCP ma mechanizm kontroli przeciążenia.
- TCP może wykrywać błędy za pomocą niektórych metod.
Uczmy się głównie na 3-way handshake TCP. Dowiedzmy się również o ważnych polach w programie Wireshark dla 3-kierunkowego uzgadniania.
Trójstronny uścisk dłoni
Podczas trójstronnego uzgadniania zachodzą trzy wymiany ramek:
Pierwsza ramka jest zawsze wysyłana przez klienta do serwera. Zrozummy to na podstawie prostego diagramu:
„KLIENT” „SERWER”
Ramka 1: Klient wysyła ramkę SYN do serwera----------------------------------><-------------------------------------------Serwer wysyła ramkę SYN+ACK do klienta: Frame2
Ramka 3: Klient wysyła ramkę ACK do serwera------------------------------------------------->
Te trzy ramki możemy zobaczyć w programie Wireshark. Filtr „tcp” może być użyty w Wireshark, aby zobaczyć wszystkie ramki TCP. Oto zrzut ekranu dla trzech ramek:
Przyjrzyjmy się teraz szczegółowo wszystkim trzem ramkom:
SYN
Ta ramka zawiera wiele informacji o możliwościach klienta w zakresie informowania serwera. Poniższy zrzut ekranu pokazuje wszystkie ważne pola ramki SYN:
Oto ważne pola dla ramki SYN:
Port źródłowy: 50602Port docelowy: 80
Numer kolejny: 0
Numer potwierdzenia: 0
Długość nagłówka: 32 bajty
Flagi: 0x002 (SYN):
Potwierdzenie: Nie ustawiono
Push: Nie ustawiono
Resetuj: nie ustawiono
Syn: Ustaw -----> Ten bit jest ustawiony, ponieważ jest to ramka SYN.
Płetwa: nie ustawiona
Okno: 65535
Pilny wskaźnik: 0
Opcja TCP - Maksymalny rozmiar segmentu: 1460 bajtów
Opcja TCP — Skala okna: 3 (pomnóż przez 8)
Opcja TCP — SACK dozwolony
WYŚWIETL + POTWIERDŹ
Ta ramka zawiera wiele informacji o możliwościach serwera w zakresie informowania klienta. Poniższy zrzut ekranu pokazuje wszystkie ważne pola ramki SYN+ACK:
Ta ramka potwierdza również ramkę SYN wysłaną przez klienta.
Oto ważne pola dla ramki SYN+ACK:
Port źródłowy: 80Port docelowy: 50602
Numer kolejny: 0
Numer potwierdzenia: 1
Długość nagłówka: 32 bajty (8)
Flagi: 0x012 (SYN, ACK)
Potwierdzenie: Ustaw
Push: Nie ustawiono
Resetuj: nie ustawiono
Jego: Ustaw
Płetwa: nie ustawiona
Okno: 29200
Pilny wskaźnik: 0
Opcja TCP - Maksymalny rozmiar segmentu: 1412 bajtów
Opcja TCP — SACK dozwolony
Opcja TCP — Skala okna: 7 (pomnóż przez 128)
Widzimy, że w tej ramce ustawione są bity „Acknowledge” i „SYN”. Dzieje się tak, ponieważ ta ramka to SYN+ACK.
POK
Ta ramka jest ostatnią ramką 3-kierunkowego uzgadniania, a także potwierdzeniem SYN+ACK przez klienta. Poniższy zrzut ekranu pokazuje wszystkie ważne pola ramki ACK:
Oto ważne pola dla ramki ACK:
Port źródłowy: 50602Port docelowy: 80
Numer kolejny: 1
Numer potwierdzenia: 1
Długość nagłówka: 20 bajtów (5)
Flagi: 0x010 (ACK)
Pilne: nie ustawiono
Potwierdzenie: Ustaw
Push: Nie ustawiono
Resetuj: nie ustawiono
Syn: Nie ustawiono
Płetwa: nie ustawiona
Okno: 32768
Tutaj ustawiony jest tylko bit „Acknowledge”, ponieważ jest to ramka ACK.
Wyjaśnienie niektórych ważnych wspólnych pól
Port 80 : W tym samouczku zaobserwowaliśmy jeden stały port 80. To dlatego, że jest to przechwytywanie HTTP, a port 80 jest stały (po stronie serwera) do komunikacji HTTP.
Numer sekwencji : Numer kolejny tej klatki. Synchronizacja jest pierwszą klatką, więc mamy 0 jako numer sekwencyjny.
Flagi TCP:
Potwierdzenie – Ten bit jest ustawiany, jeśli ramka jest potwierdzeniem. Przykład: SYN+ACK, ramka ACK.
SYN – Ten bit jest ustawiany, jeśli ramka jest SYN. Przykład: SYN.
Okno : To pole udostępnia maksymalny rozmiar okna nadawcy w trybie odbioru. Przykład: Mamy rozmiar okna 65535 bajtów w ramce SYN. Oznacza to, że odbiornik może otrzymać maksymalnie 65535 bajtów danych TCP w dowolnym momencie.
WOREK Dozwolony : Ten bit jest ustawiony, jeśli wysyłanie obsługuje SACK [potwierdzenie selektywne].
Maksymalny rozmiar segmentu : Możemy to również nazwać MSS. Określa maksymalną ramkę danych, którą nadawca może otrzymać. Przykład: Otrzymujemy MSS jako 1460 bajtów w ramce SYN.
Wniosek
Dowiedzieliśmy się o trójstronnym uzgadnianiu TCP i wszystkich przydatnych polach dla ramek SYN, SYN+ACK i ACK. Jeśli chcesz dowiedzieć się więcej o TCP, możesz skorzystać z tego łącza RFC https://tools.ietf.org/html/rfc793 .