Konfigurimi i lidhjes TCP
Kur shfletojmë ueb, dërgojmë një email ose luajmë një lojë në internet, shpesh nuk mendojmë për lidhjen komplekse të rrjetit pas saj. Megjithatë, janë këto hapa në dukje të vegjël që sigurojnë komunikim të qëndrueshëm mes 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 duarve me tre drejtime.
Ky artikull do të diskutojë në detaje parimin, procesin dhe rëndësinë e shtrëngimit të duarve në tre drejtime. Hap pas hapi, ne do të shpjegojmë pse nevojitet shtrëngimi i duarve në 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ë duarve me tre drejtime, 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.
Procesi i shtrëngimit të duarve me tre drejtime TCP dhe tranzicioni i gjendjes
TCP është një protokoll transporti i orientuar drejt lidhjes, i cili kërkon vendosjen e lidhjes përpara transmetimit të të dhënave. Ky proces i vendosjes së lidhjes bëhet me një shtrëngim duarsh në tre drejtime.
Le t'i hedhim një vështrim më të afërt paketave TCP që dërgohen në secilën lidhje.
Fillimisht, klienti dhe serveri janë MBYLLUR. Së pari, serveri dëgjon në mënyrë aktive në një port dhe është në gjendjen LISTEN, që do të thotë se serveri duhet të fillojë. Më pas, klienti është gati 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 inicion një lidhje, ai gjeneron një numër të rastësishëm të sekuencës fillestare (client_isn) dhe e vendos atë në fushën "Sequence number" të titullit 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 se 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ë shtresës së aplikacionit (d.m.th., të dhëna të dërguara). Në këtë pikë, statusi i klientit shënohet si SYN-SENT.
Kur një server merr një paketë SYN nga një klient, ai inicializon në mënyrë të rastësishme numrin e tij serial (server_isn) dhe më pas e vendos atë numër në fushën "Serial number" të titullit TCP. Më pas, serveri fut klientin_isn + 1 në fushën "Numri i njohjes" dhe i vendos të dy bitet SYN dhe ACK në 1. Së fundi, serveri i dërgon paketën klientit, i cili nuk përmban të dhëna të shtresës së aplikacionit (dhe nuk ka të dhëna për serverin për të dërguar). Në këtë moment, serveri është në gjendje SYN-RCVD.
Pasi klienti merr 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 e vendos bitin ACK të kokës TCP të paketës së përgjigjes në 1; Së dyti, klienti fut vlerën server_isn + 1 në fushën "Konfirmo numrin e përgjigjes"; Së fundi, klienti dërgon paketën në server. Kjo paketë mund të bartë të dhëna nga klienti në server. Pas përfundimit të këtyre operacioneve, klienti do të hyjë në gjendjen e KRIJUAR.
Sapo serveri të marrë paketën e përgjigjes nga klienti, ai gjithashtu kalon në gjendjen ESTABLISHED.
Siç mund ta shihni nga procesi i mësipërm, kur kryeni një shtrëngim duarsh me tre drejtime, shtrëngimi i tretë i duarve lejohet të mbajë të dhëna, por dy shtrëngimet e para jo. Kjo është një pyetje që bëhet shpesh në intervista. Pasi të përfundojë shtrëngimi i duarve me tre drejtime, të dyja palët hyjnë në gjendjen E KRIJUAR, që tregon se lidhja është vendosur me sukses, në të cilën pikë klienti dhe serveri mund të fillojnë t'i dërgojnë të dhëna njëri-tjetrit.
Pse tre shtrëngime duarsh? Jo dy herë, katër herë?
Përgjigja e zakonshme është: "Sepse shtrëngimi i duarve me tre drejtime garanton aftësinë për të marrë dhe dërguar". Kjo përgjigje është e saktë, por është vetëm arsyeja sipërfaqësore, nuk parashtron arsyen kryesore. Në vijim do të analizoj arsyet e shtrëngimit të trefishtë të duarve nga tre aspekte për të thelluar kuptimin tonë për këtë çështje.
Shtrëngimi i duarve me tre drejtime mund të shmangë në mënyrë efektive inicializimin e lidhjeve të përsëritura historikisht (arsyeja kryesore)
Shtrëngimi i duarve me tre drejtime garanton që të dyja palët të kenë marrë një numër të besueshëm të sekuencës fillestare.
Shtrëngimi i duarve me tre drejtime shmang humbjen e burimeve.
Arsyeja 1: Shmangni lidhjet e dyfishta historike
Me pak fjalë, arsyeja kryesore për shtrëngimin e duarve me tre drejtime është shmangia e konfuzionit të shkaktuar nga inicializimi i vjetër i dyfishtë i lidhjes. Në një mjedis kompleks rrjeti, transmetimi i paketave të të dhënave nuk dërgohet gjithmonë në hostin e destinacionit në përputhje me kohën e specifikuar dhe paketat e vjetra të të dhënave mund të mbërrijnë së pari në hostin e destinacionit për shkak të mbingarkesës së rrjetit dhe arsyeve 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ë krijimit të lidhjes SYN me radhë, në situata të tilla si bllokimi i rrjetit, mund të ndodhin sa vijon:
1- Paketat e vjetra SYN mbërrijnë në server përpara paketave më të fundit SYN.
2- Serveri do t'i përgjigjet klientit një paketë SYN + ACK pasi të marrë paketën e vjetër SYN.
3- Kur klienti merr paketën SYN + ACK, ai përcakton që lidhja është një lidhje historike (numri i sekuencës ka skaduar ose ka skaduar) sipas kontekstit të tij, dhe më pas dërgon paketën RST në server për të ndërprerë lidhjen.
Me një lidhje me dy shtrëngime duarsh, nuk ka asnjë mënyrë për të përcaktuar nëse lidhja aktuale është një lidhje historike. Shtrëngimi i duarve me tre drejtime i lejon klientit 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 ka skaduar ose ka skaduar), paketa e dërguar nga shtrëngimi i tretë i duarve është një paketë RST për të ndërprerë lidhjen historike.
2- Nëse nuk është një lidhje historike, paketa e dërguar për herë të tretë është një paketë ACK dhe 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 ai inicializon lidhjen për të parandaluar lidhjet historike.
Arsyeja 2: Për të sinkronizuar numrat e sekuencës fillestare të të dy palëve
Të dy anët e protokollit TCP duhet të mbajnë një numër sekuence, i cili është një faktor kyç për të siguruar transmetim të besueshëm. Numrat e sekuencës luajnë një rol të rëndësishëm në lidhjet TCP. Ata bëjnë sa më poshtë:
Marrësi mund të eliminojë të dhënat e dyfishta dhe të sigurojë saktësinë e të dhënave.
Marrësi mund të marrë paketa në rendin e numrit të sekuencës për të siguruar integritetin e të dhënave.
● Numri i sekuencës mund të identifikojë paketën e të dhënave që është marrë nga pala tjetër, duke mundësuar transmetim të besueshëm të të dhënave.
Prandaj, me vendosjen e një lidhjeje TCP, klienti dërgon pako SYN me numrin e sekuencës fillestare dhe kërkon që serveri të përgjigjet me një paketë ACK që tregon marrjen e suksesshme të paketës SYN të klientit. Pastaj, serveri dërgon paketën SYN me numrin e sekuencës fillestare te klienti dhe pret që klienti të përgjigjet, një herë e përgjithmonë, për të siguruar që numrat e sekuencës fillestare të sinkronizohen në mënyrë të besueshme.
Megjithëse një shtrëngim duarsh me katër drejtime është gjithashtu i mundur për të sinkronizuar në mënyrë të besueshme numrat e sekuencës fillestare të të dyja palëve, hapi i dytë dhe i tretë mund të kombinohen në një hap të vetëm, duke rezultuar në një shtrëngim duarsh me tre drejtime. Megjithatë, dy shtrëngimet e duarve mund të garantojnë vetëm që numri fillestar i sekuencës së njërës palë të merret me sukses nga pala tjetër, por nuk ka asnjë garanci që numri fillestar i sekuencës së të dyja palëve mund të konfirmohet. Prandaj, shtrëngimi i duarve me tre drejtime është zgjidhja më e mirë për të siguruar stabilitetin dhe besueshmërinë e lidhjeve TCP.
Arsyeja 3: Shmangni Humbjen e Burimeve
Nëse ka vetëm një "shtrëngim me dy duar", kur kërkesa e klientit SYN është e bllokuar në rrjet, klienti nuk mund të marrë paketën ACK të dërguar nga serveri, kështu që SYN do të dërgohet përsëri. Megjithatë, duke qenë se nuk ka shtrëngim të tretë duarsh, serveri nuk mund të përcaktojë nëse klienti ka marrë një konfirmim ACK për të vendosur lidhjen. Prandaj, serveri mund të krijojë një lidhje në mënyrë proaktive vetëm pasi të marrë çdo kërkesë SYN. Kjo çon në sa vijon:
Humbje burimesh: 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 mesazhit: Për shkak të mungesës së një shtrëngimi të tretë duarsh, serveri nuk ka asnjë mënyrë për të ditur nëse klienti e ka marrë saktë konfirmimin ACK për të krijuar lidhjen. Si rezultat, nëse mesazhet ngecin në rrjet, klienti do të vazhdojë të dërgojë kërkesa SYN pa pushim, duke bërë që serveri të krijojë vazhdimisht lidhje të reja. Kjo do të rrisë mbingarkesën dhe vonesën e rrjetit dhe do të ndikojë negativisht në performancën e përgjithshme të rrjetit.
Prandaj, për të siguruar qëndrueshmërinë dhe besueshmërinë e lidhjes së rrjetit, TCP përdor shtrëngimin e duarve me tre drejtime për të vendosur lidhjen për të shmangur shfaqjen e këtyre problemeve.
Përmbledhje
TëNdërmjetësi i paketave të rrjetitVendosja e lidhjes TCP bëhet me një shtrëngim duarsh në tre drejtime. Gjatë shtrëngimit të duarve me tre drejtime, klienti së pari dërgon një paketë me flamurin SYN në server, duke treguar se dëshiron të krijojë një lidhje. Pas marrjes së kërkesës nga klienti, serveri i përgjigjet klientit një paketë me flamuj SYN dhe ACK, duke treguar se kërkesa e lidhjes është pranuar dhe dërgon numrin e vet të sekuencës fillestare. Së fundi, klienti i përgjigjet serverit me një flamur ACK për të treguar se lidhja është krijuar me sukses. Kështu, të dy palët janë në gjendjen e KRIJUAR 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 vendosjen e lidhjes TCP është projektuar për të siguruar stabilitet dhe besueshmëri të lidhjes, për të shmangur konfuzionin dhe humbjen e burimeve mbi lidhjet historike dhe për të siguruar që të dyja palët të jenë në gjendje të marrin dhe të dërgojnë të dhëna.
Koha e postimit: Jan-08-2025