Podešavanje TCP veze
Kada pregledamo web, pošaljite e-poštu ili igrati online igru, često ne razmišljamo o složenoj mrežnoj vezi s njom. Međutim, to su ovi naizgled mali koraci koji osiguravaju stabilnu komunikaciju između nas i poslužitelja. Jedan od najvažnijih koraka je podešavanje TCP veze, a jezgro toga je trosmjerna ruka za ruke.
Ovaj članak će razgovarati o principu, procesu i važnosti detaljivanja trosmjernog rukovanja. Korak po korak, objasnit ćemo zašto je potreban trosmjerni rukovanje rukovanjem, kako osigurava stabilnost i pouzdanost veze i koliko je važan za prijenos podataka. Uz dublje razumijevanje trosmjernog rukovanja, dobit ćemo bolje razumijevanje osnovnih mehanizama mrežne komunikacije i jasniji pogled na pouzdanost TCP veza.
TCP trosmjerni proces 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 se trosmjernim rukovanjem.
Pogledajmo bliže pakete TCP-a koje se šalju u svakoj vezi.
U početku su i klijent i server zatvoreni. Prvo, poslužitelj aktivno sluša na portu i nalazi se u stanju slušanja, što znači da se poslužitelj mora pokrenuti. Dalje, klijent je spreman za početak pristupa web stranici. Potrebno je uspostaviti vezu sa serverom. Format prvog priključnog paketa je sljedeći:
Kada klijent pokrene vezu, on generira nasumični početni broj sekvence (Client_ISn) i postavlja ga u polje "Redukciju" TCP zaglavlja. Istovremeno, klijent postavlja položaj Syn Flag na 1 kako bi naznačili da je odlazni paket sin paket. Klijent označava da želi uspostaviti vezu sa serverom slanjem prvog Syn paketa na server. Ovaj paket ne sadrži podatke o aplikaciji (to jest, poslani podaci). U ovom trenutku, status klijenta označen je kao syn-poslan.
Kada server primi sin paket od klijenta, nasumično inicijalizira svoj vlastiti serijski broj (server_isn), a zatim postavlja taj broj u polje "serijskog broja" TCP zaglavlja. Sljedeći, poslužitelj unosi Client_isn + 1 u polje "Priznanje" i postavlja i syn i akk bitove na 1. Konačno, poslužitelj šalje paket klijentu, koji ne sadrži podatke o nanosu (i nema podataka za slanje). U ovom trenutku poslužitelj je u Syn-RCVD stanju.
Jednom kada klijent primi paket sa servera, treba izvesti sljedeće optimizacije koje će odgovoriti na konačni odgovor za odgovor: prvo, klijent postavlja ACK bit TCP zaglavlja na 1; Drugo, klijent ulazi u vrijednost servera vredne_isn + 1 u polju "Potvrdi broj odgovora"; Konačno, klijent šalje paket na server. Ovaj paket može nositi podatke klijenta na server. Po završetku ovih operacija, klijent će ući u uspostavljeno stanje.
Nakon što server primi paket za odgovor od klijenta, također se prebacuje u uspostavljeno stanje.
Kao što vidite iz gornjeg procesa, prilikom obavljanja trosmjernog rukovanja, treći ručni okvir dopušteno je da nosi podatke, ali prva dva rukohvaća nisu. Ovo je pitanje koje se često postavlja u intervjuima. Jednom kada se trostruko rukovanje završi, obje strane ulaze u uspostavljenu državu, što ukazuju na to da je veza uspješno uspostavljena, na kojoj tački klijent i server mogu započeti slanje podataka jedni drugima.
Zašto tri ruke? Ne dva puta, četiri puta?
Zajednički odgovor je: "jer trosmjerna ručica garantuje mogućnost primanja i slanja." Ovaj je odgovor tačan, ali to je samo na površinskom razlogu, ne iznese glavni razlog. U nastavku ću analizirati razloge trostrukog rukovanja iz tri aspekta za produbljivanje našeg razumijevanja ovog pitanja.
Trosmjerni rukovanje može učinkovito izbjeći inicijalizacija povijesno opetovanih veza (glavni razlog)
Trosmjerna rukovanje garantira da su obje strane dobile pouzdan početni broj sekvence.
Trosmjerni rukovanje izbjegava trošenje resursa.
Razlog 1: Izbjegavajte istorijski duplikat pridruživanja
Ukratko, glavni razlog za trosmjerni rukovanje je da se izbjegne zabuna uzrokovana starom duplikatnom inicijalizacijom veza. U složenom mrežnom okruženju, prijenos paketa podataka ne šalje uvijek u odredišni domaćin u skladu s određenim vremenom, a stari paketi podataka mogu stići na odredišni domaćin koji prvo mogu doći zbog zagušenja mreže i drugih razloga. Da biste to izbjegli, TCP koristi trosmjerni rukovanje za osnivanje veze.
Kada klijent pošalje višestruku pakete za syn Connection, u situacijama kao što su zagušenje mreže, može se pojaviti sljedeće:
1- Old Syn paketi stižu na server prije najnovijih Syn paketa.
2- Poslužitelj će napisati syn + ACK paket klijentu nakon primitka starog Syn paketa.
3- Kada klijent primi SYN + ACK paket, on određuje da je veza istorijska veza (broj sekvence istekli ili istek), a zatim šalje RST paket na poslužitelj da bi prekinuo vezu.
Sa vezom s dvije ruke, ne postoji način da se utvrdi da li je trenutna veza povijesna veza. Trosmjerna ručka omogućava klijentu da utvrdi da li je trenutna veza povijesna veza na temelju konteksta kada je spremna poslati treći paket:
1- Ako je to povijesna veza (broj sekvence istekao ili timeout), paket koji je poslao trećim rukovanjem je prsluk paket za prekid povijesne veze.
2- Ako nije povijesna veza, paket je po treći put poslao ACK paket, a dvije komunikacijske stranke uspješno uspostavljaju vezu.
Stoga je glavni razlog koji TCP koristi trosmjerni rukovanje je da inicijalizira vezu radi sprečavanja povijesnih veza.
Razlog 2: Da biste sinhronizirali početni niz objekata obje strane
Obje strane TCP protokola moraju održavati niz slijeda, što je ključni faktor za osiguranje pouzdanog mjenjača. Broj sekvenci igraju važnu ulogu u TCP vezi. Oni rade sljedeće:
Prijemnik može eliminirati duplicirane podatke i osigurati tačnost podataka.
Prijemnik može primati pakete redom redoslijeda broja sekvenci kako bi se osigurao integritet podataka.
● Broj sekvence može prepoznati paket podataka koji je primljena od strane druge strane, omogućavajući pouzdan prijenos podataka.
Stoga, nakon uspostavljanja TCP veze, klijent šalje syny pakete s početnim redoslijedom i zahtijeva da server odgovori na ACK paket koji pokazuje uspješan prijem sin paketa klijenta. Zatim poslužitelj šalje sin paket s početnim brojem sekvence klijentu i čeka da klijent odgovori, jednom zauvijek, kako bi se osiguralo da su početni brojevi sekvence pouzdano sinkronizirani.
Iako je četverostrano rukovanje rukom moguće pouzdano sinkronizirati početni niz slijeda obje strane, drugi i treći koraci mogu se kombinirati u jedan korak, što rezultira trosmjerna ručica. Međutim, dva rukohvaća mogu jamčiti samo da će početni niz jedne stranke uspješno primati druga strana, ali ne postoji garancija da se početni niz obje strane može potvrditi. Stoga je trosmjerna ručka najbolji izbor za poduzimanje kako bi se osigurala stabilnost i pouzdanost TCP veza.
Razlog 3: Izbjegavajte trošenje resursa
Ako postoji samo "dvosmislenost", kada je klijent Syn Zahtjev blokiran u mreži, klijent ne može primiti ACK paket koji šalje poslužitelj, tako da će sin biti zamerna. Međutim, jer ne postoji treći rukovanje, poslužitelj ne može odrediti je li klijent primio potvrdu ACK za uspostavljanje veze. Stoga server može samo proaktivno uspostaviti vezu nakon prijema svake singencije. To dovodi do sledećeg:
Otpad resursa: Ako je klijentov zatraži zahtjev blokiran, što rezultira ponovljenim prijenosom višestrukih sin paketa, poslužitelj će uspostaviti višekratne nevažeće veze nakon primitka zahtjeva. To dovodi do nepotrebnog otpada resursa poslužitelja.
Zadržavanje poruke: Zbog nedostatka trećeg rukovanja, poslužitelj nema načina da zna je li klijent pravilno primio potvrdu ACK za uspostavljanje veze. Kao rezultat, ako se poruke zaglave u mreži, klijent će zadržati slanje sin zatraga iznova i iznova, uzrokujući stalno uspostavljanje novih veza. To će povećati zagušenje i odlaganje mreže i negativno utjecati na cjelokupne mrežne performanse.
Stoga, kako bi se osigurala stabilnost i pouzdanost mrežne veze, TCP koristi trosmjerni rukovanje za uspostavljanje veze kako bi se izbjegla pojavu ovih problema.
Sažetak
TheMrežni paket brokerTCP priključak se vrši sa trosmjernim rukovanjem. Tokom trosmjernog rukovanja, klijent prvo šalje paket s sinjnjom zastavom na poslužitelj, što ukazuje na to da želi uspostaviti vezu. Nakon primitka zahtjeva klijenta, poslužitelj odgovara paketu s sinjnjom i aksnim zastavama za klijenta, što ukazuje da je zahtjev za povezivanje prihvaćen i šalje vlastiti početni broj sekvence. Konačno, klijent odgovara s ACK zastavom na poslužitelju da naznači da je veza uspješno uspostavljena. Stoga su dvije strane u uspostavljenom stanju i mogu početi slati podatke jedni drugima.
Općenito, trosmjerni proces rukovanja za uspostavljanje veze TCP-a je dizajniran da osigura stabilnost i pouzdanost veze, izbjegavajte zbrku i gubitak resursa nad povijesnim vezama i osigurajte da obje strane mogu primiti i slati podatke.
Vrijeme post: januar-08-2025