Konfigurimi i lidhjes TCP
Kur shfletojmë në internet, dërgojmë një email ose luajmë një lojë në internet, ne shpesh nuk mendojmë për lidhjen komplekse të rrjetit pas saj. Sidoqoftë, janë këto hapa në dukje të vegjël që sigurojnë komunikim të qëndrueshëm midis nesh dhe serverit. Një nga hapat më të rëndësishëm është konfigurimi i lidhjes TCP, dhe thelbi i kësaj është shtrëngimi i dorës me tre drejtime.
Ky artikull do të diskutojë në detaje parimin, procesin dhe rëndësinë e shtrëngimit të duarve të treanshme. Hap pas hapi, ne do të shpjegojmë pse është e nevojshme shtrëngimi i dorës me tre drejtime, si siguron stabilitetin dhe besueshmërinë e lidhjes, dhe sa e rëndësishme është për transferimin e të dhënave. Me një kuptim më të thellë të shtrëngimit të dorës me tre drejtime, ne do të fitojmë një kuptim më të mirë të mekanizmave themelorë të komunikimit në rrjet dhe një pamje më të qartë të besueshmërisë së lidhjeve TCP.
TCP Procesi i shtrëngimit të dorës TCP dhe tranzicionet shtetërore
TCP është një protokoll transporti i orientuar nga lidhja, i cili kërkon krijimin e lidhjes para transmetimit të të dhënave. Ky proces i krijimit të lidhjes bëhet nga një shtrëngim duarsh me tre drejtime.
Le të hedhim një vështrim më të afërt në paketat TCP që dërgohen në secilën lidhje.
Fillimisht, si klienti ashtu edhe serveri janë të mbyllura. Së pari, serveri dëgjon në mënyrë aktive në një port dhe është në gjendjen e dëgjimit, që do të thotë se serveri duhet të fillohet. Tjetra, klienti është i gatshëm të fillojë të hyjë në faqen e internetit. Duhet të krijojë një lidhje me serverin. Formati i paketës së parë të lidhjes është si më poshtë:
Kur një klient fillon një lidhje, ajo gjeneron një numër fillestar të rastësishëm të sekuencës (klient_isn) dhe e vendos atë në fushën "Numri i sekuencës" të kokës TCP. Në të njëjtën kohë, klienti vendos pozicionin e flamurit Syn në 1 për të treguar që paketa dalëse është një paketë SYN. Klienti tregon që dëshiron të krijojë një lidhje me serverin duke dërguar paketën e parë SYN në server. Kjo paketë nuk përmban të dhëna të shtresave të aplikacionit (d.m.th., të dhënat e dërguara). Në këtë pikë, statusi i klientit shënohet si i dërguar.
Kur një server merr një paketë SYN nga një klient, ai inicializon rastësisht numrin e tij serik (Server_ISN) dhe më pas e vendos atë numër në fushën "Numri Serial" të kokës TCP. Tjetra, serveri hyn në Client_ISN + 1 në fushën "Numri i Mirënjohjes" dhe vendos të dyja Syn dhe ACK Bits në 1. Më në fund, serveri dërgon paketën tek klienti, i cili nuk përmban të dhëna për shtresat e aplikimit (dhe asnjë të dhënë për të dërguar serverin). Në këtë kohë, serveri është në gjendje SYN-RCVD.
Pasi klienti të marrë paketën nga serveri, ai duhet të kryejë optimizimet e mëposhtme për t'iu përgjigjur paketës së përgjigjes përfundimtare: Së pari, klienti vendos bit ACK të kokës TCP të paketës së përgjigjes në 1; Së dyti, klienti hyn në vlerën server_isn + 1 në fushën "Konfirmoni numrin e përgjigjes"; Më në fund, klienti dërgon paketën në server. Kjo paketë mund të ketë të dhëna nga klienti në server. Pas përfundimit të këtyre operacioneve, klienti do të hyjë në shtetin e vendosur.
Pasi serveri të marrë paketën e përgjigjes nga klienti, ai gjithashtu kalon në gjendjen e vendosur.
Siç mund ta shihni nga procesi i mësipërm, kur kryeni një shtrëngim duarsh me tre drejtime, shtrëngimi i dorës së tretë lejohet të mbajë të dhëna, por dy shtrëngimet e para të duarve nuk janë. Kjo është një pyetje që bëhet shpesh në intervista. Pasi të përfundojë shtrëngimi i dorës me tre drejtime, të dy palët hyjnë në gjendjen e vendosur, duke treguar që lidhja është krijuar me sukses, në atë pikë klienti dhe serveri mund të fillojnë të dërgojnë të dhëna tek njëri-tjetri.
Pse tre shtrëngime dore? Jo dy herë, katër herë?
Përgjigja e zakonshme është, "sepse shtrëngimi i dorës me tre drejtime garanton aftësinë për të marrë dhe dërguar". Kjo përgjigje është e saktë, por është vetëm arsyeja e sipërfaqes, nuk e paraqet arsyen kryesore. Në vazhdim, unë do të analizoj arsyet e shtrëngimit të duarve të trefishtë nga tre aspekte për të thelluar kuptimin tonë për këtë çështje.
Shtrëngimi i dorës me tre drejtime mund të shmangë në mënyrë efektive fillimin e lidhjeve të përsëritura historikisht (arsyeja kryesore)
Shtrëngimi i dorës me tre drejtime garanton që të dy palët kanë marrë një numër të besueshëm të sekuencës fillestare.
Shtrirja e dorës me tre drejtime shmang humbjen e burimeve.
Arsyeja 1: Shmangni bashkimin e kopjimit historik
Me pak fjalë, arsyeja kryesore për shtrëngimin e dorës me tre drejtime është të shmangni konfuzionin e shkaktuar nga inicializimi i vjetër i lidhjes së kopjuar. Në një mjedis të ndërlikuar të rrjetit, transmetimi i paketave të të dhënave nuk i dërgohet gjithmonë hostit të destinacionit në përputhje me kohën e caktuar, dhe paketat e vjetra të të dhënave mund të arrijnë së pari në hostin e destinacionit për shkak të bllokimeve të rrjetit dhe arsye të tjera. Për të shmangur këtë, TCP përdor një shtrëngim duarsh me tre drejtime për të vendosur lidhjen.
Kur një klient dërgon pako të shumta të vendosjes së lidhjes Syn radhazi, në situata të tilla si bllokimi i rrjetit, mund të ndodhin më poshtë:
1- Paketat e vjetra Syn mbërrijnë në server para paketave më të fundit të Syn.
2- Serveri do t'i përgjigjet një pakete Syn + ACK për klientin pasi të marrë paketën e vjetër SYN.
3- Kur klienti merr paketën Syn + ACK, përcakton që lidhja është një lidhje historike (numri i sekuencës skadoi ose koha e skaduar) sipas kontekstit të vet, dhe pastaj dërgon paketën e parë në server për të abortuar lidhjen.
Me një lidhje me dy dore, nuk ka asnjë mënyrë për të përcaktuar nëse lidhja aktuale është një lidhje historike. Shtrëngimi i dorës me tre drejtime lejon klientin të përcaktojë nëse lidhja aktuale është një lidhje historike bazuar në kontekstin kur është gati të dërgojë paketën e tretë:
1- Nëse është një lidhje historike (numri i sekuencës skadoi ose koha e kohës), paketa e dërguar nga shtrëngimi i dorës së tretë është një pako e parë për të abortuar lidhjen historike.
2- Nëse nuk është një lidhje historike, paketa e dërguar për herë të tretë është një paketë ACK, dhe të dy palët komunikuese vendosin me sukses lidhjen.
Prandaj, arsyeja kryesore që TCP përdor shtrëngimin e dorës me tre drejtime është se inicializon lidhjen për të parandaluar lidhjet historike.
Arsyeja 2: Të sinkronizoni numrat fillestar të sekuencës së të dy palëve
Të dy palët e protokollit TCP duhet të mbajnë një numër sekuence, i cili është një faktor kryesor për të siguruar një transmetim të besueshëm. Numrat e sekuencave luajnë një rol të rëndësishëm në lidhjet TCP. Ata bëjnë sa vijon:
Marrësi mund të eliminojë të dhënat e kopjuara dhe të sigurojë saktësinë e të dhënave.
Marrësi mund të marrë pako në rendin e numrit të sekuencës për të siguruar integritetin e të dhënave.
Numri Numri i sekuencës mund të identifikojë paketën e të dhënave që është marrë nga pala tjetër, duke mundësuar transmetimin e besueshëm të të dhënave.
Prandaj, pas krijimit të një lidhjeje TCP, klienti dërgon pako SYN me numrin fillestar të sekuencës dhe kërkon që serveri të përgjigjet me një paketë ACK që tregon pritjen e suksesshme të paketës SYN të klientit. Pastaj, serveri dërgon paketën SYN me numrin fillestar të sekuencës tek klienti dhe pret që klienti të përgjigjet, një herë e përgjithmonë, për të siguruar që numrat fillestar të sekuencës të sinkronizohen me besueshmëri.
Megjithëse një shtrëngim duarsh me katër drejtime është gjithashtu e mundur që të sinkronizohet në mënyrë të besueshme numrat fillestar të sekuencës së të dy palëve, hapat e dytë dhe të tretë mund të kombinohen në një hap të vetëm, duke rezultuar në një shtrëngim duarsh me tre drejtime. Sidoqoftë, të dy shtrëngimet e duarve mund të garantojnë vetëm se numri fillestar i sekuencës së njërës palë është pranuar me sukses nga pala tjetër, por nuk ka asnjë garanci që numri fillestar i sekuencës së të dy palëve mund të konfirmohet. Prandaj, shtrëngimi i dorës me tre drejtime është zgjidhja më e mirë për të marrë për të siguruar stabilitetin dhe besueshmërinë e lidhjeve TCP.
Arsyeja 3: Shmangni humbjen e burimeve
Nëse ekziston vetëm një "dy-dore", kur kërkesa e Klientit Syn është bllokuar në rrjet, klienti nuk mund të marrë paketën ACK të dërguar nga serveri, kështu që SYN do të jetë i pakënaqur. Sidoqoftë, pasi që nuk ka shtrëngim duarsh të tretë, serveri nuk mund të përcaktojë nëse klienti ka marrë një mirënjohje të ACK për të vendosur lidhjen. Prandaj, serveri mund të krijojë vetëm në mënyrë proaktive një lidhje pasi të marrë secilën kërkesë SYN. Kjo çon në sa vijon:
Mbeturinat e burimeve: Nëse kërkesa SYN e klientit është e bllokuar, duke rezultuar në transmetim të përsëritur të paketave të shumta SYN, serveri do të krijojë lidhje të shumta të tepërta të pavlefshme pas marrjes së kërkesës. Kjo çon në një humbje të panevojshme të burimeve të serverit.
Mbajtja e mesazheve: Për shkak të mungesës së një shtrëngimi të duarve të treta, serveri nuk ka asnjë mënyrë të dijë nëse klienti ka marrë me saktësi njohjen e ACK për të vendosur lidhjen. Si rezultat, nëse mesazhet mbërthehen në rrjet, klienti do të vazhdojë të dërgojë kërkesa të Syn pa pushim, duke bërë që serveri të krijojë vazhdimisht lidhje të reja. Kjo do të rrisë bllokimin e rrjetit dhe do të vonojë dhe do të ndikojë negativisht në performancën e përgjithshme të rrjetit.
Prandaj, për të siguruar stabilitetin dhe besueshmërinë e lidhjes së rrjetit, TCP përdor shtrëngimin e dorës me tre drejtime për të vendosur lidhjen për të shmangur shfaqjen e këtyre problemeve.
Përmbledhje
Broker i paketave të rrjetitTCP Themelimi i lidhjes bëhet me një shtrëngim duarsh me tre drejtime. Gjatë shtrëngimit të dorës me tre drejtime, klienti së pari dërgon një paketë me flamurin Syn në server, duke treguar që dëshiron të krijojë një lidhje. Pas marrjes së kërkesës nga klienti, serveri i përgjigjet një pakete me flamuj Syn dhe ACK tek klienti, duke treguar që kërkesa e lidhjes pranohet, dhe dërgon numrin e tij fillestar të sekuencës. Më në fund, klienti i përgjigjet me një flamur ACK në server për të treguar që lidhja është krijuar me sukses. Kështu, të dy palët janë në gjendjen e vendosur dhe mund të fillojnë t'i dërgojnë të dhëna njëra -tjetrës.
Në përgjithësi, procesi i shtrëngimit të duarve me tre drejtime për krijimin e lidhjes TCP është krijuar për të siguruar stabilitetin dhe besueshmërinë e lidhjes, për të shmangur konfuzionin dhe mbeturinat e burimeve mbi lidhjet historike, dhe të sigurojë që të dy palët të jenë në gjendje të marrin dhe dërgojnë të dhëna.
Koha e postimit: Jan-08-2025