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

Co je TCP Three-Way HandShake?

Tล™รญcestnรฉ podรกnรญ ruky nebo TCP 3-way handshake je proces, kterรฝ se pouลพรญvรก v sรญti TCP/IP k navรกzรกnรญ spojenรญ mezi serverem a klientem. Jednรก se o tล™รญstupลˆovรฝ proces, kterรฝ vyลพaduje, aby si klient i server vymฤ›nili synchronizaฤnรญ a potvrzovacรญ pakety pล™ed zahรกjenรญm procesu skuteฤnรฉ datovรฉ komunikace.

Tล™รญcestnรฝ proces handshake je navrลพen tak, aby vรกm oba konce pomohly iniciovat, vyjednรกvat a oddฤ›lovat pล™ipojenรญ TCP soketu souฤasnฤ›. Umoลพลˆuje pล™enรกลกet vรญce pล™ipojenรญ TCP soketu v obou smฤ›rech souฤasnฤ›.

Typy zprรกv TCP

Zprรกva Description
syn Pouลพรญvรก se k zahรกjenรญ a navรกzรกnรญ spojenรญ. Pomรกhรก vรกm takรฉ synchronizovat sekvenฤnรญ ฤรญsla mezi zaล™รญzenรญmi.
ACK Pomรกhรก druhรฉ stranฤ› potvrdit, ลพe obdrลพela SYN.
SYN-ACK Zprรกva SYN z mรญstnรญho zaล™รญzenรญ a ACK pล™edchozรญho paketu.
PLOUTEV Slouลพรญ k ukonฤenรญ spojenรญ.

TCP tล™รญcestnรฝ proces handshake

Provoz TCP zaฤรญnรก tล™รญstrannรฝm handshake. V tomto procesu TCP handshake musรญ klient zahรกjit konverzaci vyลพรกdรกnรญm komunikaฤnรญ relace se serverem:

Tล™รญcestnรฝ proces podรกnรญ ruky
Schรฉma tล™รญcestnรฉho handshake
  • Krok 1: V prvnรญm kroku klient navรกลพe spojenรญ se serverem. Odeลกle segment se SYN a informuje server o tom, ลพe klient mรก zahรกjit komunikaci a jakรฉ mรก bรฝt jeho poล™adovรฉ ฤรญslo.
  • Krok 2: V tomto kroku server odpovรญ na poลพadavek klienta nastavenรญm signรกlu SYN-ACK. ACK vรกm pomลฏลพe oznaฤit odezvu segmentu, kterรฝ je pล™ijat, a SYN udรกvรก, jakรฉ poล™adovรฉ ฤรญslo by mฤ›lo zaฤรญt se segmenty.
  • Krok 3: V tomto poslednรญm kroku klient potvrdรญ odpovฤ›ฤ serveru a oba vytvoล™รญ stabilnรญ spojenรญ a zahรกjรญ vlastnรญ proces pล™enosu dat.

Pล™รญklad z reรกlnรฉho svฤ›ta

Pล™รญklad z reรกlnรฉho svฤ›ta

Zde je jednoduchรฝ pล™รญklad procesu tล™รญcestnรฉho podรกnรญ ruky, kterรฝ se sklรกdรก ze tล™รญ krokลฏ:

  • Hostitel X zahรกjรญ pล™ipojenรญ odeslรกnรญm paketu TCP SYN do cรญlovรฉho hostitele. Pakety obsahujรญ nรกhodnรฉ poล™adovรฉ ฤรญslo (napล™รญklad 4321), kterรฉ oznaฤuje zaฤรกtek poล™adovรฝch ฤรญsel pro data, kterรก by mฤ›l hostitel X vysรญlat.
  • Potรฉ server pล™ijme paket a odpovรญ svรฝm poล™adovรฝm ฤรญslem. Jeho odpovฤ›ฤ takรฉ obsahuje potvrzovacรญ ฤรญslo, coลพ je poล™adovรฉ ฤรญslo hostitele X zvรฝลกenรฉ o 1 (zde je to 4322).
  • Hostitel X odpovรญ serveru odeslรกnรญm potvrzovacรญho ฤรญsla, kterรฉ je vฤ›tลกinou poล™adovรฝm ฤรญslem serveru, kterรฉ se zvรฝลกรญ o 1.

Po ukonฤenรญ procesu pล™enosu dat TCP automaticky ukonฤรญ spojenรญ mezi dvฤ›ma samostatnรฝmi koncovรฝmi body.

Shrnutรญ

  • TCP 3-way handshake nebo three-way handshake nebo TCP 3-way handshake je proces, kterรฝ se pouลพรญvรก v TCP/IP sรญลฅ k vytvoล™enรญ spojenรญ mezi serverem a klientem.
  • Syn se pouลพรญvรก k zahรกjenรญ a navรกzรกnรญ spojenรญ
  • ACK pomรกhรก potvrdit druhรฉ stranฤ›, ลพe pล™ijala SYN.
  • SYN-ACK je zprรกva SYN z mรญstnรญho zaล™รญzenรญ a ACK dล™รญvฤ›jลกรญho paketu.
  • FIN se pouลพรญvรก pro ukonฤenรญ spojenรญ.
  • TCP handshake proces, klient potล™ebuje zahรกjit konverzaci vyลพรกdรกnรญm komunikaฤnรญ relace se serverem
  • V prvnรญm kroku klient navรกลพe spojenรญ se serverem
  • V tomto druhรฉm kroku server odpovรญ na poลพadavek klienta nastavenรญm signรกlu SYN-ACK
  • V tomto poslednรญm kroku klient potvrdรญ odpovฤ›ฤ serveru
  • TCP automaticky ukonฤรญ spojenรญ mezi dvฤ›ma samostatnรฝmi koncovรฝmi body.

Shrลˆte tento pล™รญspฤ›vek takto: