TCP 3-smjerno rukovanje (SYN, SYN-ACK,ACK)
โก Pametni saลพetak
TCP trosmjerno rukovanje je ritual uspostavljanja veze kojim zapoฤinje svaka TCP sesija. Klijent i posluลพitelj razmjenjuju SYN, SYN-ACK i ACK pakete kako bi sinkronizirali slijedne brojeve i potvrdili da su obje strane spremne prije slanja ijednog bajta podataka aplikacije.

ล to je TCP trosmjerno rukovanje?
The TCP trosmjerno rukovanje je postupak koji klijent i posluลพitelj koriste na TCP/IP mreลพa uspostaviti pouzdanu vezu prije razmjene bilo kakvih podataka aplikacije. Kao ลกto ime govori, sastoji se od tri koraka u kojima obje strane razmjenjuju pakete sinkronizacije (SYN) i potvrde (ACK) te se dogovaraju o poฤetnim slijednim brojevima koje ฤe koristiti.
Rukovanje je osmiลกljeno tako da obje krajnje toฤke mogu simetriฤno inicirati, pregovarati i prekidati TCP utiฤnice. Nakon ลกto je rukovanje zavrลกeno, veza je full-duplex - obje strane mogu slati i primati paralelno dok jedna od njih ne izda FIN za zatvaranje sesije.
Vrste TCP poruka
ฤetiri kontrolne zastavice se ponavljaju tijekom rukovanja i rastavljanja.
| Poruka | Description |
|---|---|
| SYN | Inicira vezu i sinkronizira slijedne brojeve izmeฤu ureฤaja. |
| ACK | Potvrฤuje drugoj strani da je prethodni segment primljen. |
| SYN-ACK | Kombinirana poruka โ SYN s lokalnog ureฤaja plus ACK ranijeg SYN-a peer-a. |
| FIN | Koristi se za graciozan prekid veze. |
TCP trosmjerni postupak rukovanja
TCP promet uvijek zapoฤinje trostrukim rukovanjem. Klijent zapoฤinje razgovor zahtjevom za sesiju s posluลพiteljem.
Dijagram rukovanja u 3 smjera.
- Korak 1 โ SYN: Klijent ลกalje segment s postavljenom SYN zastavicom. Posluลพitelju govori โลฝelim zapoฤeti komunikacijuโ i predlaลพe poฤetni slijedni broj.
- Korak 2 โ SYN-ACK: Posluลพitelj odgovara segmentom u kojem su postavljene i SYN i ACK zastavice. ACK potvrฤuje SYN klijenta, a SYN predlaลพe posluลพiteljev vlastiti poฤetni slijedni broj.
- Korak 3 โ POTVRDA: Klijent potvrฤuje SYN-ACK posluลพitelja konaฤnim ACK-om. Veza je sada uspostavljena i obje strane mogu zapoฤeti transmitpodaci aplikacije.
Primjer iz stvarnog svijeta
Evo obraฤenog primjera s konkretnim slijednim brojevima.
- Host X zapoฤinje vezu slanjem TCP SYN paketa posluลพitelju. Paket nosi sluฤajni poฤetni slijedni broj - na primjer,
4321โ ลกto oznaฤava poฤetak toka bajtova koji ฤe Host X poslati. - Posluลพitelj prima SYN i odgovara sa SYN-ACK. ACK broj je slijedni broj hosta X uveฤan za 1 (
4322), a SYN predlaลพe vlastiti poฤetni slijedni broj posluลพitelja. - Host X odgovara s konaฤnim ACK-om ฤiji je broj potvrde redni broj posluลพitelja uveฤan za 1.
Nakon ลกto je razmjena podataka zavrลกena, TCP prekida vezu ฤetverosmjernim FIN/ACK nizom kako bi obje krajnje toฤke mogle ฤisto osloboditi socket.
Zaลกto TCP-u treba trostrano rukovanje
Rukovanje nije samo formalnost - ono rjeลกava tri konkretna problema koja dolaze s pouzdanim prijenosom bajtnog toka:
- Sinkronizacija slijednih brojeva: Oba peer-a uฤe poฤetni slijedni broj druge strane, ลกto TCP koristi za otkrivanje izgubljenih ili segmenata izvan redoslijeda.
- Ugovor o stanju veze: Treฤi ACK potvrฤuje da je SYN-ACK posluลพitelja stigao, tako da nijedna strana ne poฤinje slati podatke dok obje ne budu u USTANOVLJENO stanje.
- Zaลกtita od dupliciranih paketa: Sluฤajni poฤetni slijedni brojevi i vremenski ograniฤena stanja rukovanja sprjeฤavaju da se zastarjeli segmenti iz prethodne sesije prihvate greลกkom.
Uobiฤajeni problemi s TCP rukovanjem
Rukovanje je robusno, ali se raspada na prepoznatljive naฤine. Mreลพni inลพenjeri obiฤno vide jedno od sljedeฤeg:
- SYN poplavni napadi: Zlonamjerni klijent ลกalje tisuฤe SYN-ova bez odgovaranja na SYN-ACK-ove, iscrpljujuฤi tablicu povezivanja posluลพitelja. SYN kolaฤiฤi su standardna obrana.
- Poluotvoreni prikljuฤci: Kada se izgubi treฤi ACK, veza ostaje poluotvorena i na kraju se prekida zbog isteka vremena.
- Padovi zaลกtitnog zida ili NAT-a tijekom leta: Middleboxovi sa stanjem koji gube stanje mogu odbaciti SYN-ACK pakete i natjerati klijenta da ponovno pokuลกa.
- RST resetiranja: Ako posluลพitelj ne osluลกkuje na traลพenom portu, odgovara SYN-u s RST-om, ลกto odmah zatvara pokuลกaj.


