Uzgadnianie trójkierunkowe TCP (SYN, SYN-ACK, ACK)

⚡ Inteligentne podsumowanie

Uzgadnianie TCP 3-Way to rytuał nawiązywania połączenia, od którego rozpoczyna się każda sesja TCP. Klient i serwer wymieniają pakiety SYN, SYN-ACK i ACK, aby zsynchronizować numery sekwencyjne i potwierdzić gotowość obu stron przed wysłaniem choćby jednego bajtu danych aplikacji.

  • 📨 Poznaj cztery typy wiadomości: Protokół SYN inicjuje połączenie, protokół ACK potwierdza połączenie, protokół SYN-ACK łączy oba protokoły, a protokół FIN kończy połączenie TCP.
  • 🔁 Wykonaj trzy kroki: klient SYN → serwer SYN-ACK → klient ACK; sesja zostaje nawiązana dopiero po przybyciu trzeciego pakietu.
  • 🔢 Numery sekwencyjne mają znaczenie: Każda ze stron wybiera początkowy numer sekwencji; druga strona potwierdza go, dodając jeden, co utrzymuje kolejność strumienia bajtów.
  • 🚪 Plan rozbiórki: po przesłaniu danych protokół TCP zamyka połączenie za pomocą par FIN/ACK, aby zwolnić gniazdo na obu końcach.
  • 🤖 Wykorzystaj sztuczną inteligencję do analizy pakietów: Asystenci AI wyjaśniają Wireshark przechwytuje, oznacza brakujące potwierdzenia ACK i podświetla ataki SYN flood lub połączenia półotwarte.

Uzgadnianie trójstronne TCP

Czym jest trójetapowe uzgadnianie protokołu TCP?

Trójstronny uścisk dłoni TCP jest procedurą, z której korzystają klient i serwer Sieć TCP/IP Aby skonfigurować niezawodne połączenie przed wymianą danych aplikacji. Jak sama nazwa wskazuje, składa się ono z trzech kroków, w których obie strony wymieniają pakiety synchronizacji (SYN) i potwierdzenia (ACK) oraz uzgadniają początkowe numery sekwencyjne, których będą używać.

Uzgadnianie zostało zaprojektowane tak, aby oba punkty końcowe mogły symetrycznie inicjować, negocjować i zamykać gniazda TCP. Po zakończeniu uzgadniania połączenie jest w trybie pełnego dupleksu — obie strony mogą wysyłać i odbierać dane równolegle, aż do momentu, gdy któraś z nich wyśle ​​sygnał FIN zamykający sesję.

Typy wiadomości TCP

Podczas uściskania dłoni i demontażu wielokrotnie pojawiają się cztery flagi kontrolne.

Treść wiadomości OPIS
SYN Nawiązuje połączenie i synchronizuje numery sekwencyjne między urządzeniami.
ACK Potwierdza drugiej stronie, że poprzedni segment został odebrany.
SYN-ACK Połączona wiadomość — SYN z urządzenia lokalnego i ACK wcześniejszego SYN od urządzenia równorzędnego.
PŁETWA Służy do łagodnego zakończenia połączenia.

Proces trójstronnego uzgadniania protokołu TCP

Ruch TCP zawsze rozpoczyna się od trzyetapowego uzgadniania. Klient inicjuje konwersację, żądając sesji z serwerem.

Diagram uzgadniania 3-drożnego TCP

Diagram uzgadniania 3-stronnego.

  • Krok 1 — SYN: Klient wysyła segment z ustawioną flagą SYN. ​​Informuje on serwer „Chcę rozpocząć komunikację” i proponuje początkowy numer sekwencyjny.
  • Krok 2 — SYN-ACK: Serwer odpowiada segmentem, w którym ustawione są flagi SYN i ACK. ACK potwierdza SYN klienta, a SYN proponuje początkowy numer sekwencyjny serwera.
  • Krok 3 — ACK: Klient potwierdza SYN-ACK serwera końcowym ACK. Połączenie jest teraz nawiązane i obie strony mogą rozpocząć transmitdane aplikacji.

Przykład ze świata rzeczywistego

Przykład z życia wzięty: uzgadnianie 3-etapowe TCP

Poniżej przedstawiono przykładowy schemat z konkretnymi numerami sekwencyjnymi.

  • Host X nawiązuje połączenie, wysyłając pakiet TCP SYN do serwera. Pakiet zawiera losowy początkowy numer sekwencyjny — na przykład: 4321 — oznacza to początek strumienia bajtów, który wyśle ​​Host X.
  • Serwer odbiera pakiet SYN i odpowiada pakietem SYN-ACK. Numer pakietu ACK to numer sekwencyjny hosta X pomnożony o 1 (4322), a SYN proponuje początkowy numer sekwencyjny serwera.
  • Host X odpowiada końcowym potwierdzeniem ACK, którego numer potwierdzenia jest numerem sekwencyjnym serwera zwiększonym o 1.

Po zakończeniu wymiany danych protokół TCP rozłącza połączenie za pomocą czterokierunkowej sekwencji FIN/ACK, aby oba punkty końcowe mogły bez przeszkód zwolnić gniazdo.

Dlaczego TCP potrzebuje trójstronnego uzgadniania

Uścisk dłoni nie jest jedynie formalnością — rozwiązuje on trzy konkretne problemy związane z niezawodnym transportem strumieniowym bajtów:

  • Synchronizacja numerów sekwencyjnych: obie strony poznają początkowy numer sekwencyjny drugiej strony, który jest wykorzystywany przez protokół TCP do wykrywania utraconych lub nieuporządkowanych segmentów.
  • Umowa o stanie połączenia: trzecie ACK potwierdza, że ​​SYN-ACK serwera dotarł, więc żadna ze stron nie rozpocznie wysyłania danych, dopóki obie nie znajdą się w PRZYJĘTY stan.
  • Ochrona przed duplikatami pakietów: Losowe początkowe numery sekwencji i ustalone stany uzgadniania zapobiegają przypadkowemu zaakceptowaniu nieaktualnych segmentów z poprzedniej sesji.

Typowe problemy z uzgadnianiem TCP

Uścisk dłoni jest solidny, ale zdarzają się awarie, które można zidentyfikować. Inżynierowie sieci zazwyczaj obserwują jeden z poniższych przypadków:

  • Ataki typu SYN flood: Złośliwy klient wysyła tysiące pakietów SYN bez odpowiadania na pakiety SYN-ACK, wyczerpując tabelę połączeń serwera. Standardową metodą obrony są pliki cookie SYN.
  • Połączenia półotwarte: po utracie trzeciego ACK połączenie pozostaje w stanie półotwartym i zostaje ostatecznie naprawione przez przekroczenie limitu czasu.
  • Zapora sieciowa lub NAT zrywają połączenie w trakcie transmisji: stanowe urządzenia pośredniczące, które tracą stan, mogą odrzucać pakiety SYN-ACK i zmuszać klienta do ponawiania prób.
  • Resetowanie RST: Jeśli serwer nie nasłuchuje na żądanym porcie, odpowiada SYN-em za pomocą RST, co natychmiast zamyka próbę.

FAQ

Dwie wiadomości nie mogą potwierdzić, że obie strony uzgodniły początkowe numery sekwencji i są gotowe do wysłania. Trzecie potwierdzenie potwierdza otrzymanie pakietu SYN-ACK serwera, zapewniając, że oba punkty końcowe osiągną stan ESTABLISHED przed przepływem danych.

SYN to pojedyncza flaga, która otwiera konwersację i proponuje początkowy numer sekwencyjny. SYN-ACK łączy SYN z potwierdzeniem wcześniejszego SYN partnera, kończąc synchronizację w jednym pakiecie.

Atak typu SYN flood przeciąża serwer, wysyłając wiele pakietów SYN bez ukończenia uzgadniania. Połączenia półotwarte zapełniają kolejkę oczekujących i blokują legalnych użytkowników. Pliki cookie SYN to standardowe rozwiązanie.

Protokół TCP zamyka połączenie za pomocą czterokierunkowego uzgadniania (handshake) wymiany FIN i ACK. Każdy kierunek jest zamykany niezależnie, co pozwala jednej stronie dokończyć wysyłanie danych, nawet gdy druga strona zamknie swoją połowę.

Początkowy numer sekwencji to losowo wybrana 32-bitowa wartość, którą każdy punkt końcowy wybiera dla swojego strumienia bajtów. Jest on inicjatorem licznika używanego do wykrywania brakujących lub zduplikowanych segmentów oraz do obrony przed podrobionymi pakietami.

Nie. UDP jest bezpołączeniowy i wysyła datagramy bez uzgadniania. Dzięki temu jest szybszy i lżejszy niż TCP, ale aplikacje muszą same obsługiwać niezawodność, kolejność i kontrolę przeciążenia.

Asystenci AI adnotują przechwytywane pakiety, klasyfikują je ponownietransmits i RST oraz wykrywają powodzie SYN. ​​Tłumaczą Wireshark filtry na prosty język angielski i zalecają kolejny krok diagnostyczny w przypadku problemów z łącznością.

Tak. Asystenci kodowania AI zamieniają prośbę napisaną zwykłym językiem w Python Scapy lub skrypt netcat, który uruchamia i sprawdza potrójne uzgadnianie, a następnie wyjaśnia każdą linijkę, aby inżynierowie mogli ją przejrzeć przed uruchomieniem.

Podsumuj ten post następująco: