TCP postavljanje veze
Kad pregledavamo internet, pošaljemo e -poštu ili igramo internetsku igru, često ne razmišljamo o složenoj mrežnoj vezi koja stoji iza nje. Međutim, upravo ti naizgled mali koraci osiguravaju stabilnu komunikaciju između nas i poslužitelja. Jedan od najvažnijih koraka je postavljanje TCP veze, a jezgra toga je trosmjerni stisak ruke.
Ovaj će članak detaljno raspravljati o načelu, procesu i važnosti trosmjernog rukovanja. Korak po korak, objasnit ćemo zašto je potreban trosmjerni stisak ruke, kako osigurava stabilnost i pouzdanost veze i koliko je važan za prijenos podataka. Uz dublje razumijevanje trosmjernog rukovanja, dobit ćemo bolje razumijevanje temeljnih mehanizama mrežne komunikacije i jasniji prikaz pouzdanosti TCP veza.
TCP trosmjerni postupak rukovanja i državni prijelazi
TCP je transportni protokol orijentiran na vezu, koji zahtijeva uspostavljanje veze prije prijenosa podataka. Ovaj postupak uspostavljanja veze vrši trosmjerni stisak ruke.
Pogledajmo bliže TCP pakete koji se šalju u svaku vezu.
U početku su i klijent i poslužitelj zatvoreni. Prvo, poslužitelj aktivno sluša port i nalazi se u stanju slušanja, što znači da se poslužitelj mora pokrenuti. Zatim je klijent spreman početi pristupiti web stranici.it mora uspostaviti vezu s poslužiteljem. Format prvog paketa za povezivanje je sljedeći:
Kad klijent pokrene vezu, on generira slučajni početni broj sekvenci (CILES_ISN) i stavlja ga u polje "Broj niza" u zaglavlju TCP. Istodobno, klijent postavlja položaj syn zastave na 1 kako bi naznačio da je odlazni paket SYN paket. Klijent označava da želi uspostaviti vezu s poslužiteljem slanjem prvog SYN paketa na poslužitelj. Ovaj paket ne sadrži podatke o aplikacijskom sloju (to jest, podaci poslani). U ovom trenutku, status klijenta označen je kao Syn-Re-Sind.
Kad poslužitelj primi SYN paket od klijenta, on nasumično inicijalizira vlastiti serijski broj (server_isn), a zatim taj broj stavlja u polje "Serijski broj" u zaglavlju TCP. Zatim poslužitelj unosi u polje "Client_isn + 1 u polje" Broj potvrde "i postavlja i Syn i ACK bitove na 1. Konačno, poslužitelj šalje paket klijentu, koji ne sadrži podatke o udjelu aplikacija (i nema podataka za slanje poslužitelja). U ovom trenutku poslužitelj je u SYN-RCVD stanju.
Jednom kada klijent primi paket s poslužitelja, mora izvršiti sljedeće optimizacije da bi odgovorio na paket konačnog odgovora: Prvo, klijent postavlja ACK zaglavlje TCP zaglavlja paketa odgovora na 1; Drugo, klijent unosi vrijednost Server_isn + 1 u polje "Potvrdi broj odgovora"; Konačno, klijent šalje paket na poslužitelj. Ovaj paket može prenijeti podatke s klijenta na poslužitelj. Po završetku ovih operacija, klijent će ući u uspostavljeno stanje.
Jednom kada poslužitelj primi paket odgovora od klijenta, on se također prebacuje u utvrđeno stanje.
Kao što možete vidjeti iz gornjeg postupka, prilikom izvođenja trosmjernog stiskanja stiskanjem trećeg rukovanja dopušteno je da nosi podatke, ali prva dva stiskanja nisu. Ovo je pitanje koje se često postavlja u intervjuima. Nakon što je trosmjerno stisak ruke dovršen, obje strane ulaze u utvrđeno stanje, što ukazuje da je veza uspješno uspostavljena, u kojem trenutku klijent i poslužitelj mogu početi slati podatke jedni drugima.
Zašto tri stiskanja? Nije dva puta, četiri puta?
Uobičajeni odgovor je: "jer trosmjerni stisak ruke jamči mogućnost primanja i slanja." Ovaj je odgovor točan, ali to je samo površinski razlog, ne iznosi glavni razlog. U nastavku ću analizirati razloge trostrukog rukovanja iz tri aspekta kako bih produbio naše razumijevanje ovog pitanja.
Trosmjerni stisak ruke može učinkovito izbjeći inicijalizaciju povijesno ponovljenih veza (glavni razlog)
Trosmjerni stisak ruke jamči da su obje strane dobile pouzdan početni broj slijeda.
Trosmjerni stisak ruke izbjegava trošiti resurse.
Razlog 1: Izbjegavajte povijesni duplikat spaja
Ukratko, glavni razlog trosmjernog rukovanja je izbjegavanje zbrke uzrokovane starim inicijalizacijom duplikata. U složenom mrežnom okruženju, prijenos paketa podataka ne šalje se uvijek odredišnom domaćinu u skladu s određenim vremenom, a stari paketi podataka mogu prvo stići do odredišnog domaćina zbog zagušenja mreže i drugih razloga. Da bi se to izbjeglo, TCP koristi trosmjerni stisak ruke za uspostavljanje veze.
Kada klijent uredi više paketa za uspostavljanje syn veze, u situacijama kao što je zagušenje mreže, može se dogoditi sljedeće:
1- Stari SYN paketi stižu na poslužitelj prije najnovijih Syn paketa.
2- Poslužitelj će klijentu odgovoriti Syn + ACK paket nakon primitka starog SYN paketa.
3- Kad klijent primi paket SYN + ACK, određuje da je veza povijesna veza (broj niza istekao ili vremensko vrijeme) prema vlastitom kontekstu, a zatim šalje RST paket poslužitelju da abortira vezu.
S dvostrukom vezom, ne postoji način da se utvrdi je li trenutna veza povijesna veza. Trosmjerni stisak ruke omogućuje klijentu da utvrdi je li trenutna veza povijesna veza na temelju konteksta kada je spremna poslati treći paket:
1- Ako je to povijesna veza (broj slijeda ili istek vremena), paket koji je poslao treći stisak ruke je prvi paket za prekid povijesne veze.
2- Ako to nije povijesna veza, paket poslao po treći put je ACK paket, a dvije komunikacijske stranke uspješno uspostave vezu.
Stoga je glavni razlog što TCP koristi trosmjerni stisak ruke je taj što inicijalizira vezu kako bi se spriječile povijesne veze.
Razlog 2: Sinkronizirati početni broj niza obje strane
Obje strane TCP protokola moraju održavati broj niza, što je ključni faktor koji osigurava pouzdan prijenos. Brojevi slijeda igraju važnu ulogu u TCP vezama. Učinite sljedeće:
Prijemnik može eliminirati duplicirane podatke i osigurati točnost podataka.
Prijemnik može primati pakete redoslijedom broja niza kako bi se osigurao integritet podataka.
● Broj slijeda može identificirati paket podataka koji je primila druga strana, omogućujući pouzdan prijenos podataka.
Stoga, nakon uspostavljanja TCP veze, klijent šalje Syn pakete s početnim brojem sekvence i zahtijeva od poslužitelja da odgovori ACK paketom koji ukazuje na uspješan prijem klijentovog SYN paketa. Zatim poslužitelj šalje Syn paket s početnim brojem sekvenci klijentu i čeka da klijent odgovori, jednom zauvijek, kako bi se osiguralo da su početni brojevi niza pouzdano sinkronizirani.
Iako je moguće četverosmjerno rukovanje također pouzdano sinkronizirati početni broj sekvenci obje strane, drugi i treći koraci mogu se kombinirati u jedan korak, što rezultira trosmjernim rukovanjem. Međutim, dva rukovanja mogu samo jamčiti da je druga stranka uspješno primila početni broj jedne stranke, ali nema garancije da se početni broj obje strane može potvrditi. Stoga je trosmjerni stisak ruke najbolji izbor kako bi se osigurala stabilnost i pouzdanost TCP veza.
Razlog 3: Izbjegavajte trošenje resursa
Ako postoji samo "dvostruka ručka", kada je zahtjev za syn klijent blokiran u mreži, klijent ne može primiti ACK paket koji je poslao poslužitelj, tako da će SYN biti zamjenski. Međutim, budući da nema trećeg rukovanja, poslužitelj ne može utvrditi je li klijent primio potvrdu o ACK -u za uspostavljanje veze. Stoga poslužitelj može proaktivno uspostaviti vezu samo nakon primanja svakog zahtjeva za syn. To dovodi do sljedećeg:
Otpad resursa: Ako je klijentov zahtjev SYN blokiran, što rezultira opetovanim prijenosom više SYN paketa, poslužitelj će uspostaviti više suvišnih nevaljanih veza nakon primanja zahtjeva. To dovodi do nepotrebnog gubitka resursa poslužitelja.
Zadržavanje poruka: Zbog nedostatka trećeg rukovanja, poslužitelj ne može znati je li klijent pravilno primio potvrdu o ACK -u za uspostavljanje veze. Kao rezultat toga, ako se poruke zaglave u mreži, klijent će nastaviti slati Syn zahtjeve iznova i iznova, uzrokujući da poslužitelj stalno uspostavlja nove veze. To će povećati zagušenje mreže i kašnjenje i negativno utjecati na ukupne performanse mreže.
Stoga, kako bi se osigurala stabilnost i pouzdanost mrežne veze, TCP koristi trosmjerni stisak ruke za uspostavljanje veze kako bi se izbjegla pojava ovih problema.
Sažetak
AMrežni paket posrednikTCP uspostavljanje veze vrši se s trosmjernim rukovanjem. Tijekom trosmjernog rukovanja, klijent prvo šalje paket sa Syn zastavom na poslužitelj, što ukazuje da želi uspostaviti vezu. Nakon primitka zahtjeva od klijenta, poslužitelj odgovara paketu s Syn i ACK zastavama klijentu, što ukazuje na to da je zahtjev za vezu prihvaćen i šalje vlastiti početni broj slijeda. Konačno, klijent odgovara ACK zastavi na poslužitelju kako bi naznačio da je veza uspješno uspostavljena. Stoga su dvije strane u utvrđenom stanju i mogu početi slati podatke jedni drugima.
Općenito, trosmjerni postupak rukovanja za uspostavljanje TCP veze dizajniran je kako bi se osigurala stabilnost i pouzdanost povezanosti, izbjegla zbrku i gubitak resursa u odnosu na povijesne veze i osiguralo da obje strane mogu primati i slati podatke.
Post Vrijeme: siječanj-08-2025