V prejšnjih letih interneta je bil internetni protokol (IP) edini protokol, ki so ga ljudje uporabljali za povezovanje z internetom. Težava z IP-jem je bila, da ste lahko poslali sporočilo in niste bili prepričani, ali ga bo prejemnik prejel ali ne. Zaradi tega je bil vzpostavljen TCP/IP.
TCP/IP zagotavlja, da vsi podatki, ki jih pošljete, dosežejo prejemnika. To naredi tako, da odjemalcu in strežniku zagotovi varno povezavo pred pošiljanjem podatkov. Ta varna povezava je vzpostavljena s postopkom, znanim kot trismerno rokovanje, znano tudi kot rokovanje TCP/IP.
Kaj je trismerni stisk rok?
Trismerno rokovanje (TCP/IP Handshake) so prve tri interakcije med odjemalcem in strežnikom, ki poskušajo vzpostaviti povezavo TCP. Te začetne interakcije so bistvene za vzpostavitev varne povezave. V tej fazi se bosta tako odjemalec kot strežnik dogovorila o parametrih, ki jih bosta uporabila za preverjanje in preverjanje dohodnih in odhodnih paketov podatkov. Ti parametri bodo v obliki segmentov TCP.
Kaj je segment TCP?
V povezavi TCP/IP morajo biti vsi poslani podatki razrezani in strukturirani na tako imenovani segmenti TCP. Ti segmenti vsebujejo informacije, kot so naslovi IP, vrata, biti zastave, zaporedne številke, številke potrditve in izbirni podatki ali koristna obremenitev.
Prve tri interakcije (trismerno rokovanje) bodo vsebovale samo glave segmenta TCP brez koristnega tovora ali priloženih podatkov. Tukaj je vzorec segmenta TCP
Upoštevajte, da je zgornja slika samo za TCP. Celoten segment TCP/IP zahteva oboje naslovi IP od pošiljatelja in prejemnika na vrhu zgornjega segmenta TCP.
Kadar koli pošljete paket osebi, od vas zahteva dostavna služba, da izpolnite obrazec z informacijami in ga nato priložite paketu pred pošiljanjem. Podobno TCP od pošiljatelja zahteva, da podatkom (paket) priloži glavo segmenta (obrazec z informacijami), preden začne pošiljati segment (paket) prejemniku.
Kadar koli odjemalec komunicira s strežnikom, bosta morali obe strani oblikovati svoje interakcije v obliki segmenta TCP. Segment TCP obsega glavo segmenta TCP, ki je pripeta na podatke, ki jih poskušate poslati. Pošiljatelj bo moral izpolniti podatke, ki jih zahteva glava segmenta.
Za trismerno rokovanje mora pošiljatelj izpolniti naslednje:
- Izvorna vrata: Identificira vrata pošiljatelja
- Ciljno pristanišče: Označuje vrata sprejemnika
- Zaporedna številka: Označuje zaporedje segmentov
- Številka potrditve: Označuje, da je bil segment potrjen z dodajanjem enega k dani zaporedni številki
Poleg izpolnjevanja polj glave segmenta mora pošiljatelj izbrati tudi bit zastave. Skupno je šest bitov zastave, toda za trismerno rokovanje boste potrebovali le naslednja dva:
- SYN: Daje zaporedno številko. Ta zaporedna številka bo uporabljena za štetje zaporedja vseh dohodnih segmentov za preostanek interakcije.
- ACK: Označuje, da prejemnik številke SYN sprejme zahtevo za povezavo tako, da doda eno (1) podani številki SYN.
Zdaj, ko veste, kaj je segment TCP, poglejmo, kako se uporablja pri trismernem rokovanju.
Kako deluje trismerni stisk rok
Trismerno rokovanje se vzpostavi, ko sta si odjemalec in gostitelj izmenjala informacije in si potrdila zaporedne številke. Kot pove že ime, se trismerno rokovanje izvede v treh korakih.
Najprej odjemalec pošlje čisti segment SYN, ki kaže, da želi povezavo. Drugič, strežnik se odzove s segmentom SYN-ACK, kar pomeni, da je potrdil zahtevo in pošilja svojo številko SYN, da jo odjemalec potrdi. Tretjič, odjemalec pošlje strežniku segment ACK, da ga obvesti, da je bila strežnikova številka SYN potrjena in bo uporabljena za nadaljnjo povezavo.
Trismerni stisk roke bo izgledal nekako takole:
Razčlenimo in si oglejmo segmente, da boste vedeli, kaj točno se zgodi, ko si odjemalec in strežnik izmenjujeta in potrdita zaporedne številke.
1. korak: odjemalec pošlje segment SYN
Odjemalec pošlje zahtevo za povezavo tako, da strežniku pošlje segment SYN. Odjemalec uporablja odjemalčev naslov IP, da poišče strežnik in pošlje segment TCP.
Da zmanjšamo kompleksnost segmenta, zanemarimo nekaj segmentnih polj in se osredotočimo na najnujnejše za trismerno povezavo rokovanja. To vključuje izvorna vrata, ciljna vrata, zaporedno številko, številko potrditve in vrsto uporabljenega bita zastavice.
In s tem naj bi segment SYN/zahteva izgledal takole:
Vrata odjemalca so naključno število med 49152 in 65536. Ta obseg vrat je dogovorjen obseg, ki ga javne naprave lahko dinamično uporabljajo za povezavo z internetom. Razponi vrat od 1024 do 49151 so zasebni. Za uporabo vrat v določenem obsegu jih bo moral registrirati subjekt. Številke vrat pod 1024 so vrata, rezervirana za različne funkcije in internetne protokole, kot so FTP (vrata 20), SMTP (vrata 25), DNS (vrata 53) in HTTP (vrata 80).
V resničnem življenju je zaporedna številka naključna številka. Za primer smo uporabili 0000000000 za lažjo vizualizacijo.
Ko napredujemo skozi korake, si zapomnite zaporedno številko. Trenutno je 000000000. Trenutno ni potrditvene številke, saj ni ničesar za potrditi.
2. korak: strežnik odgovori s segmentom SYN-ACK
Ko strežnik prejme segment SYN, se bo odzval s pošiljanjem segmenta ACK, ki vsebuje številko potrditve. Številka potrditve bo zaporedna številka stranke plus ena (1).
Poglejte izvorna vrata. Kaže, da je segment iz vrat 20, kar pomeni, da je prišel iz strežnika kot odgovor.
Zdaj pa poglejte številko potrdila. To je 0000000001, kar je odjemalčeva zaporedna številka (0000000000) plus ena (1). Tako se sledi segmentu. Recimo, da je odjemalec prejel odgovor segmenta ACK, kjer je številka potrditve 0000000002. To bi stranki nakazalo, da manjka segment 0000000001 in da bo morala stranka počakati, dokler ne prispe tako da ne doživite izgube paketov.
Kot lahko vidite, sta aktivirana dva bita zastave – SYN in ACK.
Poleg potrditve zaporedne številke odjemalca bo strežnik poslal tudi svojo lastno zaporedno številko, da bo odjemalec potrdil zaporedno številko strežnika plus ena (1). V našem primeru smo kot zaporedno številko strežnika uporabili 1111111111. Ponovno, v resničnem svetu je to število naključno.
Upoštevajte, da se zaporedni številki odjemalca in strežnika ni treba ujemati. Dokler obe strani drug drugemu priznavata edinstveno zaporedno številko, bo povezava zanesljiva.
3. korak: odjemalec odgovori s segmentom ACK
Na koncu odjemalec potrdi zaporedno številko strežnika.
Končni segment je segment ACK od odjemalca.
Kot lahko, bo odjemalec potrdil zaporedno številko strežnika tako, da bo odgovoril z zaporedno številko strežnika (1111111111) plus eno (1), ki je 1111111112.
Odjemalec in strežnik ne bosta več pošiljala zaporedne številke, saj je bil začetek zaporedja že potrjen. Vendar pa bosta obe strani pričakovali segmente potrditve, ki bodo nadaljevali zaporedne številke plus ena (1) in številski bajti skozi celotno interakcijo. V tem primeru odjemalec pričakuje, da bo naslednji odgovor strežnika imel ACK 0000000002 (če ni priloženih podatkov).
Po tem se vzpostavi trismerni stisk roke!
Razumevanje delovanja omrežnih povezav
Zdaj, ko ste se naučili, kako deluje trismerno rokovanje, boste tudi lažje razumeli, kako deluje TCP po stisku roke. Odjemalec in strežnik bosta začela pošiljati podatke, ko bo vzpostavljeno rokovanje. Tokrat bo uporabljen celoten format segmenta, plus izbirni podatki ali koristna obremenitev.
Podatki so običajno segmentirani/razrezani na manjše kose za lažji prenos. Vsak podatkovni segment ima svojo glavo segmenta, ki vsebuje zaporedno številko in številko potrditve. Razlog za zaporedno številko je vedeti zaporedje segmentov, ko bodo na koncu ponovno sestavljeni. Številke potrditve so na voljo za preverjanje pri pošiljatelju, ali je bil njihov segment prejet in ali se ujema z zaporedjem dohodnih segmentov.
Preštevanje zaporednih številk in njihovo preverjanje s potrditvijo je način, kako lahko TCP zanesljivo prenaša ogromne kose podatkov brez manjkajočih podatkovnih paketov.
In s tem bi morali imeti precej dobro predstavo o tem, kako deluje TCP.