Misterji Ewlenin tal-Konnessjonijiet TCP tan-Netwerk Packet Broker: Ċertifikaw il-ħtieġa għal Triple Handshake

Konfigurazzjoni tal-Konnessjoni TCP
Meta nibbrawżjaw il-web, nibagħtu email, jew nilagħbu logħba online, ħafna drabi ma naħsbux dwar il-konnessjoni kumplessa tan-netwerk warajha. Madankollu, huma dawn il-passi li jidhru żgħar li jiżguraw komunikazzjoni stabbli bejnietna u s-server. Wieħed mill-aktar passi importanti huwa t-twaqqif tal-konnessjoni TCP, u l-qalba ta' dan hija l-handshake bi tliet direzzjonijiet.

Dan l-artiklu se jiddiskuti fid-dettall il-prinċipju, il-proċess u l-importanza tat-three-way handshake. Pass pass, se nispjegaw għaliex huwa meħtieġ it-three-way handshake, kif jiżgura l-istabbiltà u l-affidabbiltà tal-konnessjoni, u kemm huwa importanti għat-trasferiment tad-dejta. B'fehim aktar profond tat-three-way handshake, se niksbu fehim aħjar tal-mekkaniżmi sottostanti tal-komunikazzjoni tan-netwerk u stampa aktar ċara tal-affidabbiltà tal-konnessjonijiet TCP.

Proċess ta' Handshake bi Tliet Direzzjonijiet tat-TCP u Tranżizzjonijiet tal-Istat
TCP huwa protokoll ta' trasport orjentat lejn il-konnessjoni, li jirrikjedi l-istabbiliment ta' konnessjoni qabel it-trażmissjoni tad-dejta. Dan il-proċess ta' stabbiliment ta' konnessjoni jsir permezz ta' handshake bi tliet direzzjonijiet.

 Handshake bi tliet direzzjonijiet tat-TCP

Ejja nagħtu ħarsa aktar mill-qrib lejn il-pakketti TCP li jintbagħtu f'kull konnessjoni.

Inizjalment, kemm il-klijent kif ukoll is-server huma MAGĦLUQA. L-ewwel, is-server jisma' b'mod attiv fuq port u jkun fl-istat LISTEN, li jfisser li s-server irid jinbeda. Imbagħad, il-klijent ikun lest biex jibda jaċċessa l-paġna web. Jeħtieġ li jistabbilixxi konnessjoni mas-server. Il-format tal-ewwel pakkett ta' konnessjoni huwa kif ġej:

 Pakkett SYN

Meta klijent jibda konnessjoni, jiġġenera numru ta' sekwenza inizjali każwali (client_isn) u jqiegħdu fil-qasam "Numru tas-sekwenza" tal-intestatura TCP. Fl-istess ħin, il-klijent jistabbilixxi l-pożizzjoni tal-bandiera SYN għal 1 biex jindika li l-pakkett ħiereġ huwa pakkett SYN. ​​Il-klijent jindika li jixtieq jistabbilixxi konnessjoni mas-server billi jibgħat l-ewwel pakkett SYN lis-server. Dan il-pakkett ma fihx dejta tas-saff tal-applikazzjoni (jiġifieri, dejta mibgħuta). F'dan il-punt, l-istatus tal-klijent huwa mmarkat bħala SYN-SENT.

Pakkett SYN+ACK

Meta server jirċievi pakkett SYN mingħand klijent, dan jinizzjalizza b'mod każwali n-numru tas-serje tiegħu stess (server_isn) u mbagħad ipoġġi dak in-numru fil-qasam "Numru tas-serje" tal-intestatura tat-TCP. Imbagħad, is-server idaħħal client_isn + 1 fil-qasam "Numru ta' rikonoxximent" u jissettja kemm il-bits SYN kif ukoll ACK għal 1. Fl-aħħar, is-server jibgħat il-pakkett lill-klijent, li ma fih l-ebda dejta tas-saff tal-applikazzjoni (u l-ebda dejta biex is-server jibgħatha). F'dan il-ħin, is-server jinsab fl-istat SYN-RCVD.

Pakkett ACK

Ladarba l-klijent jirċievi l-pakkett mis-server, jeħtieġ li jwettaq l-ottimizzazzjonijiet li ġejjin biex jirrispondi għall-pakkett ta' tweġiba finali: L-ewwel, il-klijent jissettja l-bit ACK tal-header TCP tal-pakkett ta' tweġiba għal 1; It-tieni, il-klijent idaħħal il-valur server_isn + 1 fil-qasam "Ikkonferma n-numru tat-tweġiba"; Fl-aħħar, il-klijent jibgħat il-pakkett lis-server. Dan il-pakkett jista' jġorr dejta mill-klijent għas-server. Malli jitlestew dawn l-operazzjonijiet, il-klijent jidħol fl-istat ESTABLISHED.

Ladarba s-server jirċievi l-pakkett tat-tweġiba mill-klijent, jaqleb ukoll għall-istat ESTABLISHED.

Kif tistgħu taraw mill-proċess ta’ hawn fuq, meta twettaq handshake bi tliet direzzjonijiet, it-tielet handshake jitħalla jġorr id-dejta, iżda l-ewwel żewġ handshakes le. Din hija mistoqsija li spiss issir fl-intervisti. Ladarba l-handshake bi tliet direzzjonijiet ikun komplut, iż-żewġ partijiet jidħlu fl-istat ESTABLISHED, li jindika li l-konnessjoni ġiet stabbilita b’suċċess, f’liema punt il-klijent u s-server jistgħu jibdew jibagħtu d-dejta lil xulxin.

Għaliex tliet stretti ta' id? Mhux darbtejn, erba' darbiet?
It-tweġiba komuni hija, "Għax it-three-way handshake jiggarantixxi l-abbiltà li wieħed jirċievi u jibgħat." Din it-tweġiba hija korretta, iżda hija biss ir-raġuni superfiċjali, ma tressaqx ir-raġuni ewlenija. Fil-li ġej, se nanalizza r-raġunijiet għat-three-way handshake minn tliet aspetti biex napprofondixxu l-fehim tagħna ta' din il-kwistjoni.

It-tmejjil bi tliet direzzjonijiet jista' effettivament jevita l-inizjalizzazzjoni ta' konnessjonijiet ripetuti storikament (ir-raġuni ewlenija)
Il-handshake bi tliet direzzjonijiet jiggarantixxi li ż-żewġ partijiet ikunu rċevew numru ta' sekwenza inizjali affidabbli.
Il-handshake bi tliet direzzjonijiet jevita l-ħela tar-riżorsi.

Raġuni 1: Evita l-Ingħaqad Duplikat Storiku
Fil-qosor, ir-raġuni ewlenija għall-handshake bi tliet direzzjonijiet hija li tiġi evitata l-konfużjoni kkawżata mill-inizjalizzazzjoni ta' konnessjoni duplikata antika. F'ambjent ta' netwerk kumpless, it-trażmissjoni tal-pakketti tad-dejta mhux dejjem tintbagħat lill-host tad-destinazzjoni skont il-ħin speċifikat, u l-pakketti tad-dejta qodma jistgħu jaslu l-ewwel lill-host tad-destinazzjoni minħabba l-konġestjoni tan-netwerk u raġunijiet oħra. Biex tevita dan, it-TCP juża handshake bi tliet direzzjonijiet biex jistabbilixxi l-konnessjoni.

handshake bi tliet direzzjonijiet jevita konnessjonijiet duplikati storiċi

Meta klijent jibgħat diversi pakketti ta' stabbiliment ta' konnessjoni SYN wara xulxin, f'sitwazzjonijiet bħal konġestjoni fin-netwerk, jista' jseħħ dan li ġej:

1- Il-pakketti SYN qodma jaslu fis-server qabel l-aħħar pakketti SYN.
2- Is-server se jwieġeb pakkett SYN + ACK lill-klijent wara li jirċievi l-pakkett SYN il-qadim.
3- Meta l-klijent jirċievi l-pakkett SYN + ACK, jiddetermina li l-konnessjoni hija konnessjoni storika (in-numru tas-sekwenza skada jew it-timeout) skont il-kuntest tiegħu stess, u mbagħad jibgħat il-pakkett RST lis-server biex iwaqqaf il-konnessjoni.

B'konnessjoni b'żewġ handshakes, m'hemm l-ebda mod kif tiddetermina jekk il-konnessjoni attwali hijiex konnessjoni storika. Il-handshake bi tliet direzzjonijiet jippermetti lill-klijent jiddetermina jekk il-konnessjoni attwali hijiex konnessjoni storika bbażata fuq il-kuntest meta jkun lest biex jibgħat it-tielet pakkett:

1- Jekk hija konnessjoni storika (in-numru tas-sekwenza skada jew it-timeout), il-pakkett mibgħut mit-tielet handshake huwa pakkett RST biex jabortixxi l-konnessjoni storika.
2- Jekk ma tkunx konnessjoni storika, il-pakkett mibgħut għat-tielet darba huwa pakkett ACK, u ż-żewġ partijiet li qed jikkomunikaw jistabbilixxu l-konnessjoni b'suċċess.

Għalhekk, ir-raġuni ewlenija għaliex it-TCP juża t-three-way handshake hija li jinizzjalizza l-konnessjoni biex jipprevjeni konnessjonijiet storiċi.

Raġuni 2: Biex jiġu sinkronizzati n-numri tas-sekwenza inizjali taż-żewġ partijiet
Iż-żewġ naħat tal-protokoll TCP iridu jżommu numru ta' sekwenza, li huwa fattur ewlieni biex tiġi żgurata trasmissjoni affidabbli. In-numri tas-sekwenza għandhom rwol importanti fil-konnessjonijiet TCP. Huma jagħmlu dan li ġej:

Ir-riċevitur jista' jelimina d-dejta duplikata u jiżgura l-eżattezza tad-dejta.

Ir-riċevitur jista' jirċievi pakketti fl-ordni tan-numru tas-sekwenza biex jiżgura l-integrità tad-dejta.

● In-numru tas-sekwenza jista' jidentifika l-pakkett tad-dejta li jkun ġie riċevut mill-parti l-oħra, u b'hekk jippermetti trażmissjoni affidabbli tad-dejta.

Għalhekk, malli tiġi stabbilita konnessjoni TCP, il-klijent jibgħat pakketti SYN bin-numru tas-sekwenza inizjali u jirrikjedi li s-server iwieġeb b'pakkett ACK li jindika r-riċeviment b'suċċess tal-pakkett SYN tal-klijent. Imbagħad, is-server jibgħat il-pakkett SYN bin-numru tas-sekwenza inizjali lill-klijent u jistenna li l-klijent iwieġeb, darba għal dejjem, biex jiżgura li n-numri tas-sekwenza inizjali jkunu sinkronizzati b'mod affidabbli.

Sinkronizza n-numri tas-serje inizjali taż-żewġ partijiet

Għalkemm handshake b'erba' direzzjonijiet huwa wkoll possibbli biex jissinkronizza b'mod affidabbli n-numri tas-sekwenza inizjali taż-żewġ partijiet, it-tieni u t-tielet passi jistgħu jiġu kkombinati f'pass wieħed, li jirriżulta fi handshake bi tliet direzzjonijiet. Madankollu, iż-żewġ handshakes jistgħu jiggarantixxu biss li n-numru tas-sekwenza inizjali ta' parti waħda jiġi riċevut b'suċċess mill-parti l-oħra, iżda m'hemm l-ebda garanzija li n-numru tas-sekwenza inizjali taż-żewġ partijiet jista' jiġi kkonfermat. Għalhekk, il-handshake bi tliet direzzjonijiet huwa l-aħjar għażla li għandha tittieħed sabiex tiġi żgurata l-istabbiltà u l-affidabbiltà tal-konnessjonijiet TCP.

Raġuni 3: Evita l-Ħela tar-Riżorsi
Jekk ikun hemm biss "two-handshake", meta t-talba SYN tal-klijent tkun imblukkata fin-netwerk, il-klijent ma jistax jirċievi l-pakkett ACK mibgħut mis-server, għalhekk is-SYN jerġa' jintbagħat. Madankollu, peress li ma jkunx hemm it-tielet handshake, is-server ma jistax jiddetermina jekk il-klijent irċeviex konferma ACK biex jistabbilixxi l-konnessjoni. Għalhekk, is-server jista' biss jistabbilixxi konnessjoni b'mod proattiv wara li jirċievi kull talba SYN. ​​Dan iwassal għal dan li ġej:

Ħela ta' riżorsi: Jekk it-talba SYN tal-klijent tiġi mblukkata, u dan jirriżulta fit-trażmissjoni ripetuta ta' diversi pakketti SYN, is-server se jistabbilixxi diversi konnessjonijiet invalidi żejda wara li jirċievi t-talba. Dan iwassal għal ħela bla bżonn ta' riżorsi tas-server.

Żamma tal-messaġġi: Minħabba n-nuqqas ta' tielet handshake, is-server m'għandu l-ebda mod kif ikun jaf jekk il-klijent irċeviex b'mod korrett ir-rikonoxximent tal-ACK biex jistabbilixxi l-konnessjoni. B'riżultat ta' dan, jekk il-messaġġi jeħlu fin-netwerk, il-klijent jibqa' jibgħat talbiet SYN darba wara l-oħra, u dan iwassal biex is-server jistabbilixxi konnessjonijiet ġodda kontinwament. Dan iżid il-konġestjoni u d-dewmien tan-netwerk u jaffettwa b'mod negattiv il-prestazzjoni ġenerali tan-netwerk.

Evita l-ħela tar-riżorsi

Għalhekk, sabiex tiġi żgurata l-istabbiltà u l-affidabbiltà tal-konnessjoni tan-netwerk, it-TCP juża t-three-way handshake biex jistabbilixxi l-konnessjoni biex jevita li jseħħu dawn il-problemi.

Sommarju
Il-Sensar tal-Pakketti tan-NetwerkL-istabbiliment ta' konnessjoni TCP isir permezz ta' handshake bi tliet direzzjonijiet. Matul il-handshake bi tliet direzzjonijiet, il-klijent l-ewwel jibgħat pakkett bil-bandiera SYN lis-server, li jindika li jrid jistabbilixxi konnessjoni. Wara li jirċievi t-talba mingħand il-klijent, is-server iwieġeb pakkett bil-bandiera SYN u ACK lill-klijent, li jindika li t-talba għall-konnessjoni ġiet aċċettata, u jibgħat in-numru tas-sekwenza inizjali tiegħu stess. Fl-aħħarnett, il-klijent iwieġeb b'bandiera ACK lis-server biex jindika li l-konnessjoni ġiet stabbilita b'suċċess. Għalhekk, iż-żewġ partijiet ikunu fl-istat ESTABLISHED u jistgħu jibdew jibagħtu d-dejta lil xulxin.

B'mod ġenerali, il-proċess ta' handshake bi tliet direzzjonijiet għall-istabbiliment ta' konnessjoni TCP huwa mfassal biex jiżgura l-istabbiltà u l-affidabbiltà tal-konnessjoni, jevita l-konfużjoni u l-ħela ta' riżorsi fuq konnessjonijiet storiċi, u jiżgura li ż-żewġ partijiet ikunu jistgħu jirċievu u jibagħtu d-dejta.


Ħin tal-posta: 08 ta' Jannar 2025