Nastavitev povezave TCP
Ko brskamo po spletu, pošljemo e -pošto ali igramo spletno igro, pogosto ne razmišljamo o zapleteni omrežni povezavi za njo. Vendar pa ti na videz majhni koraki zagotavljajo stabilno komunikacijo med nami in strežnikom. Eden najpomembnejših korakov je nastavitev povezave TCP, jedro tega pa je tristranski stisk roke.
Ta članek bo podrobno razpravljal o načelu, procesu in pomenu tristranskega stiskanja rok. Korak za korakom bomo razložili, zakaj je potreben tristranski stisk roke, kako zagotavlja stabilnost in zanesljivost povezave ter kako pomembno je za prenos podatkov. Z globljim razumevanjem tristranskega stiskanja rok bomo bolje razumeli osnovne mehanizme omrežne komunikacije in jasnejši pogled na zanesljivost povezav TCP.
TCP tristranski postopek stiskanja rok in državni prehodi
TCP je transportni protokol, usmerjen v povezavo, ki zahteva vzpostavitev povezave pred prenosom podatkov. Ta postopek vzpostavitve povezave poteka s tristranskim stiskanjem rok.
Oglejmo si natančneje pakete TCP, ki so poslani v vsaki povezavi.
Sprva sta odjemalec in strežnik zaprta. Najprej strežnik aktivno posluša na vratih in je v stanju poslušanja, kar pomeni, da je treba strežnik začeti. Nato je odjemalec pripravljen začeti dostopati do spletne strani. Vzpostaviti mora povezavo s strežnikom. Oblika prvega paketa povezave je naslednja:
Ko stranka sproži povezavo, ustvari naključno začetno zaporedno številko (client_isn) in jo postavi v polje "zaporedna številka" glave TCP. Obenem odjemalec nastavi položaj zastavice SYN na 1, da označi, da je odhodni paket paket SYN. Odjemalec označuje, da želi vzpostaviti povezavo s strežnikom s pošiljanjem prvega paketa SYN na strežnik. Ta paket ne vsebuje podatkov o plasti aplikacij (to je poslani podatki). Na tej točki je stanje odjemalca označeno kot Syn-Sent.
Ko strežnik prejme paket SYN od odjemalca, naključno inicializira svojo serijsko številko (server_isn) in nato to številko vstavi v polje "serijska številka" glave TCP. Nato strežnik vstopi v polje "Pod potrditev številke" in nastavi tako SYN in ACK bite na 1. Končno strežnik pošlje paketu odjemalcu, ki ne vsebuje podatkov o aplikacijskem sloju (in nobenih podatkov, ki bi jih strežnik poslal). V tem času je strežnik v stanju SYN-RCVD.
Ko odjemalec prejme paket s strežnika, mora izvesti naslednje optimizacije, da se odzove na končni paket odgovorov: Najprej odjemalec nastavi ACK bit TCP glave paketa odgovorov na 1; Drugič, odjemalec vnese vrednost server_isn + 1 v polje "Potrdi številke odgovora"; Končno odjemalec pošlje paket strežniku. Ta paket lahko prenaša podatke od odjemalca do strežnika. Po zaključku teh operacij bo stranka vstopila v uveljavljeno državo.
Ko strežnik od odjemalca prejme paket odgovorov, se preklopi tudi v ustaljeno stanje.
Kot je razvidno iz zgornjega postopka, pri izvajanju tristranskega stiskanja rok lahko tretji stisk roke prenaša podatke, vendar prva dva stiskanja rok nista. To je vprašanje, ki se pogosto zastavi v intervjujih. Ko je tristranski stisk roke končan, obe strani vstopita v ustanovljeno stanje, kar kaže, da je povezava uspešno vzpostavljena, takrat lahko odjemalec in strežnik začneta pošiljati podatke drug drugemu.
Zakaj tri stiske? Ne dvakrat, štirikrat?
Pogost odgovor je: "Ker tristranski stisk roke zagotavlja možnost sprejemanja in pošiljanja." Ta odgovor je pravilen, vendar je samo površinski razlog, ne daje glavnega razloga. V nadaljevanju bom analiziral razloge za trojni stisk roke iz treh vidikov, da bom poglobil naše razumevanje tega vprašanja.
Trismerni stisk roke se lahko učinkovito izogne inicializaciji zgodovinsko ponavljajočih se povezav (glavni razlog)
Trismerni stisk roke zagotavlja, da sta obe strani prejeli zanesljivo začetno zaporedno številko.
Trismerni stisk roke se izogiba zapravljanju virov.
Razlog 1: Izogibajte se zgodovinskim dvojnim združevanjem
Na kratko je glavni razlog za tristranski stisk roke, da se izognemo zmedi, ki jo je povzročila stara inicializacija podvojenih povezav. V zapletenem omrežnem okolju prenos podatkovnih paketov ni vedno poslan ciljnemu gostitelju v skladu z določenim časom, stari podatkovni paketi pa lahko najprej pridejo do ciljnega gostitelja zaradi omrežnih zastojev in drugih razlogov. Da bi se temu izognili, TCP za vzpostavitev povezave s pomočjo tristranskega stiskanja rok.
Ko stranka zaporedno pošlje več paketov vzpostavitve povezave SYN, v situacijah, kot so omrežne zastoje, se lahko zgodi naslednja:
1- Stari paketi Syn prispejo na strežnik pred najnovejšimi paketi SYN.
2- Strežnik bo odjemalcu odgovoril paket SYN + ACK po prejemu starega paketa SYN.
3- Ko odjemalec prejme paket SYN + ACK, določa, da je povezava zgodovinska povezava (zaporedna številka, ki je potekala ali časovno omejitev) v skladu z lastnim kontekstom, nato pa strežniku pošlje RST paket, da prekine povezavo.
S povezavo z dvema rokama ni mogoče ugotoviti, ali je trenutna povezava zgodovinska povezava. Trismerni stisk roke omogoča stranki, da ugotovi, ali je trenutna povezava zgodovinska povezava, ki temelji na kontekstu, ko je pripravljen poslati tretji paket:
1- Če gre za zgodovinsko povezavo (zaporedna številka je potekel ali časovna omejitev), je paket, ki ga je poslal tretji stisk roke, prvi paket za prekinitev zgodovinske povezave.
2- Če ne gre za zgodovinsko povezavo, je paket, poslan tretjič, paket ACK in obe komunikacijski strani uspešno vzpostavita povezavo.
Zato je glavni razlog, da TCP uporablja tristranski stisk roke, ta, da inicializira povezavo, da prepreči zgodovinske povezave.
Razlog 2: Za sinhronizacijo začetnih zaporednih številk obeh strani
Obe strani protokola TCP morata ohraniti zaporedno številko, kar je ključni dejavnik za zagotovitev zanesljivega prenosa. Zaporedne številke igrajo pomembno vlogo pri povezavah TCP. Naredijo naslednje:
Sprejemnik lahko odpravi podvojene podatke in zagotovi natančnost podatkov.
Sprejemnik lahko prejme pakete v vrstnem redu zaporedne številke, da se zagotovi celovitost podatkov.
● Zaporedna številka lahko identificira podatkovni paket, ki ga je prejela druga stranka, kar omogoča zanesljiv prenos podatkov.
Zato odjemalec ob vzpostavitvi povezave TCP pošlje pakete Syn z začetno zaporedno številko in zahteva, da strežnik odgovori s paketom ACK, ki kaže na uspešen sprejem odjemalčevega SYN paketa. Nato strežnik odjemalcu pošlje paket SYN z začetno zaporedno številko in čaka, da odjemalec enkrat za vselej odgovori, da zagotovi, da so začetne zaporedne številke zanesljivo sinhronizirane.
Čeprav je možno tudi štirismerni stisk roke zanesljivo sinhronizirati začetne zaporedne številke obeh strani, lahko drugi in tretji korak združimo v en korak, kar ima za posledico tristranski stisk roke. Vendar pa lahko oba stiskanja rok zagotavljata le, da začetna zaporedna številka ene stranke uspešno prejme druga stranka, vendar ni zagotovila, da je mogoče potrditi začetno zaporedno številko obeh strani. Zato je tristranski stisk roke najboljša izbira za zagotovitev stabilnosti in zanesljivosti povezav TCP.
Razlog 3: Izogibajte se zapravljanju virov
Če obstaja samo "dvoročni", ko je zahteva za SYN odjemalec blokirana v omrežju, odjemalec ne more prejeti paketa ACK, ki ga je poslal strežnik, zato bo SYN zameril. Ker pa ni tretjega stiskanja rok, strežnik ne more ugotoviti, ali je odjemalec prejel potrditev ACK za vzpostavitev povezave. Zato lahko strežnik proaktivno vzpostavi povezavo šele po prejemu vsake zahteve SYN. To vodi do naslednjega:
Odpadki virov: Če je odjemalčeva zahteva SYN blokirana, kar ima za posledico večkratni prenos več paketov SYN, bo strežnik po prejemu zahteve vzpostavil več odvečnih neveljavnih povezav. To vodi do nepotrebnih odpadkov strežniških virov.
Zadrževanje sporočil: Zaradi pomanjkanja tretjega stiskanja rok strežnik ne ve, ali je odjemalec pravilno prejel potrditev ACK za vzpostavitev povezave. Kot rezultat, če se sporočila zataknejo v omrežju, bo odjemalec vedno znova pošiljal zahteve SYN, zaradi česar strežnik nenehno vzpostavlja nove povezave. To bo povečalo omrežne zastoje in zamude in negativno vplivalo na celotno delovanje omrežja.
Zato TCP za zagotovitev stabilnosti in zanesljivosti omrežne povezave s tristranskim stiskanjem roke vzpostavi povezavo, da se izogne pojavu teh težav.
Povzetek
TheNetwork Packet BrokerTCP Povezava vzpostavitev se izvede s tristranskim stiskanjem roke. Med tristranskim stiskom odjemalca strežniku najprej pošlje paket z zastavico SYN, kar kaže, da želi vzpostaviti povezavo. Po prejemu zahteve od odjemalca strežnik odgovori na paket z zastavico SYN in ACK odjemalcu, kar kaže, da je zahteva za povezavo sprejeta in pošlje svojo začetno zaporedno številko. Nazadnje stranka odgovori z zastavico ACK strežniku, da navede, da je bila povezava uspešno vzpostavljena. Tako sta obe strani v ustaljenem stanju in lahko začneta pošiljanje podatkov drug drugemu.
Na splošno je tristranski postopek stiskanja rok za vzpostavitev povezave s TCP zasnovan tako, da zagotavlja stabilnost in zanesljivost povezave, izogibanje zmedi in zapravljanju virov nad zgodovinskimi povezavami ter zagotavlja, da obe strani lahko sprejemata in pošiljata podatke.
Čas objave: januar-08-2025