TCP 3-Way Handshake (SYN, SYN-ACK, ACK)

⚡ Chytré shrnutí

TCP 3-Way Handshake je rituál navazování spojení, kterým začíná každá TCP relace. Klient a server si vyměňují pakety SYN, SYN-ACK a ACK, aby synchronizovali pořadová čísla a potvrdili, že obě strany jsou připraveny, než je odeslán jediný bajt dat aplikace.

  • 📨 Znát čtyři typy zpráv: SYN inicializuje, ACK potvrzuje, SYN-ACK obojí kombinuje a FIN ukončuje TCP spojení.
  • 🔁 Postupujte podle těchto tří kroků: SYN klienta → SYN-ACK serveru → ACK klienta; relace je navázána až po doručení třetího paketu.
  • 🔢 Pořadová čísla jsou důležitá: Každá strana si vybere počáteční pořadové číslo; druhá strana ho potvrdí přidáním jedné, což udržuje pořadí bajtového proudu.
  • 🚪 Plán demontáže: Po přenosu dat TCP uzavře spojení pomocí párů FIN/ACK, aby uvolnil socket na obou koncích.
  • 🤖 Použijte umělou inteligenci pro analýzu paketů: Asistenti s umělou inteligencí vysvětlují Wireshark zachycení, označení chybějících potvrzení (ACK) a zvýraznění SYN záplav nebo polootevřených spojení.

TCP 3-Way Handshake

Co je to třícestné navazování spojení TCP?

Jedno TCP třícestný handshake je procedura, kterou klient a server používají na TCP/IP síť nastavit spolehlivé spojení před výměnou dat aplikace. Jak název napovídá, skládá se ze tří kroků, ve kterých si obě strany vyměňují synchronizační (SYN) a potvrzovací (ACK) pakety a dohodnou se na počátečních pořadových číslech, která budou používat.

Handshake je navržen tak, aby oba koncové body mohly symetricky iniciovat, vyjednávat a rušit TCP sockety. Po dokončení handshake je spojení plně duplexní – obě strany mohou odesílat a přijímat paralelně, dokud jedna z nich nevydá příkaz FIN k ukončení relace.

Typy TCP zpráv

Během handshake a teardownu se opakovaně objevují čtyři kontrolní příznaky.

Zpráva Description
SYN Zahájí připojení a synchronizuje pořadová čísla mezi zařízeními.
ACK Potvrzuje druhé straně, že byl přijat předchozí segment.
SYN-ACK Kombinovaná zpráva – SYN z lokálního zařízení a ACK předchozího SYN peer-u.
PLOUTEV Používá se k elegantnímu ukončení spojení.

TCP třícestný proces handshake

TCP komunikace vždy začíná třístranným navázáním kontaktu (handshake). Klient zahajuje konverzaci požadavkem na relaci se serverem.

Diagram třícestného handshake protokolu TCP

Schéma třícestného handshake.

  • Krok 1 – SYN: Klient odešle segment s nastaveným příznakem SYN. ​​Sdělí serveru „Chci zahájit komunikaci“ a navrhne počáteční pořadové číslo.
  • Krok 2 – SYN-ACK: Server odpovídá segmentem, ve kterém jsou nastaveny příznaky SYN i ACK. ACK potvrzuje SYN klienta a SYN navrhuje vlastní počáteční pořadové číslo serveru.
  • Krok 3 – ACK: Klient potvrdí SYN-ACK serveru finálním ACK. Spojení je nyní navázáno a obě strany mohou začít. transmitzpracování dat aplikace.

Příklad reálného světa

Příklad třícestného handshake protokolu TCP z reálného světa

Zde je zpracovaný příklad s konkrétními pořadovými čísly.

  • Hostitel X zahájí spojení odesláním TCP SYN paketu na server. Paket obsahuje náhodné počáteční pořadové číslo – například 4321 — který označuje začátek bajtového proudu, který hostitel X odešle.
  • Server přijme SYN a odpoví SYN-ACK. Číslo ACK je pořadové číslo hostitele X zvýšené o 1 (4322) a SYN navrhne vlastní počáteční pořadové číslo serveru.
  • Hostitel X odpoví finálním potvrzením (ACK), jehož potvrzovací číslo je pořadové číslo serveru zvýšené o 1.

Jakmile je výměna dat dokončena, TCP ukončí spojení pomocí čtyřcestné sekvence FIN/ACK, aby oba koncové body mohly socket čistě uvolnit.

Proč TCP potřebuje třícestné navazování spojení

Handshake není jen formalita – řeší tři konkrétní problémy, které s sebou nese spolehlivý přenos bajtového proudu:

  • Synchronizace pořadových čísel: Oba protějšky se dozvědí počáteční pořadové číslo druhé strany, které TCP používá k detekci ztracených nebo neuspořádaných segmentů.
  • Dohoda o stavu připojení: Třetí ACK potvrzuje, že SYN-ACK serveru dorazil, takže žádná strana nezačne odesílat data, dokud obě strany nejsou v ZALOŽENO stav.
  • Ochrana proti duplicitním paketům: Náhodná počáteční pořadová čísla a časované stavy handshake zabraňují omylem přijímat zastaralé segmenty z předchozí relace.

Běžné problémy s TCP Handshake

Handshake je robustní, ale rozpadá se identifikovatelnými způsoby. Síťoví inženýři obvykle vidí jeden z následujících:

  • SYN flood útoky: Zlomyslný klient odesílá tisíce SYNů, aniž by odpověděl na SYN-ACKy, čímž vyčerpává tabulku připojení serveru. Soubory cookie SYN jsou standardní obranou.
  • Polootevřené spoje: Když se ztratí třetí potvrzení (ACK), spojení zůstane napůl otevřené a nakonec je vyčištěno po uplynutí časového limitu.
  • Výpadky firewallu nebo NATu během provozu: Stavové middleboxy, které ztratí stav, mohou zahodit pakety SYN-ACK a nechat klienta znovu se pokusit o operaci.
  • Resety RST: Pokud server nenaslouchá na požadovaném portu, odpoví na SYN pomocí RST, což pokus o navázání kontaktu okamžitě ukončí.

Nejčastější dotazy

Dvě zprávy nemohou dokázat, že se obě strany dohodly na počátečních pořadových číslech a jsou připraveny k odeslání. Třetí zpráva ACK potvrzuje doručení SYN-ACK serveru, čímž zajišťuje, že oba koncové body dosáhnou stavu ESTABLISHED před zahájením datového toku.

SYN je jediný příznak, který zahajuje konverzaci a navrhuje počáteční pořadové číslo. SYN-ACK kombinuje SYN s potvrzením dřívějšího SYN uzlu, čímž dokončuje synchronizaci v jednom paketu.

SYN záplava zahlcuje server odesláním mnoha SYN paketů bez dokončení handshake. Polootevřená připojení zaplňují frontu nevyřízených paketů a blokují legitimní uživatele. Standardním způsobem ochrany jsou SYN soubory cookie.

TCP uzavírá spojení čtyřcestným handshake, který zahrnuje výměnu FIN a ACK. Každý směr je uzavírán nezávisle, což umožňuje jedné straně dokončit odesílání dat i poté, co druhá strana uzavřela svou polovinu.

Počáteční pořadové číslo je náhodně zvolená 32bitová hodnota, kterou si každý koncový bod vybere pro svůj vlastní bajtový proud. Nastavuje počitadlo používané k detekci chybějících nebo duplicitních segmentů a k obraně proti falešným paketům.

Ne. UDP je bezspojkový protokol a odesílá datagramy bez jakéhokoli navazování spojení (handshake). Díky tomu je rychlejší a lehčí než TCP, ale aplikace si musí samy postarat o spolehlivost, řazení a řízení přetížení.

Asistenti umělé inteligence anotují zachycené pakety a klasifikují jetransmits a RST a detekují SYN záplavy. Překládají Wireshark filtry převedou do srozumitelné angličtiny a doporučí další diagnostický krok pro problémy s připojením.

Ano. Asistenti kódování s umělou inteligencí promění požadavek v jednoduché angličtině v Python Scapy nebo skript netcat, který spouští a kontroluje třícestné navazování spojení (handshake), a poté vysvětluje každý řádek, aby si ho inženýři mohli před spuštěním zkontrolovat.

Shrňte tento příspěvek takto: