Setup 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 tan-netwerk kumplessa warajha. Madankollu, huma dawn il-passi apparentement żgħar li jiżguraw komunikazzjoni stabbli bejnna u s-server. Wieħed mill-aktar passi importanti huwa s-setup tal-konnessjoni TCP, u l-qalba ta 'dan hija l-handshake bi tliet direzzjonijiet.
Dan l-artikolu ser jiddiskuti l-prinċipju, il-proċess u l-importanza tal-handshake bi tliet direzzjonijiet fid-dettall. Pass pass, aħna ser nispjegaw għaliex il-handshake bi tliet direzzjonijiet hija meħtieġa, kif tiżgura l-istabbiltà u l-affidabbiltà tal-konnessjoni, u kemm hija importanti għat-trasferiment tad-data. B'fehim aktar profond tal-handshake three-way, se niksbu fehim aħjar tal-mekkaniżmi sottostanti tal-komunikazzjoni tan-netwerk u ħarsa aktar ċara tal-affidabbiltà tal-konnessjonijiet TCP.
TCP Three-way Handshake Proċess u Transizzjonijiet Statali
TCP huwa protokoll tat-trasport orjentat lejn il-konnessjoni, li jeħtieġ l-istabbiliment tal-konnessjoni qabel it-trażmissjoni tad-dejta. Dan il-proċess ta' stabbiliment ta' konnessjoni jsir permezz ta' handshake bi tliet direzzjonijiet.
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 jinsab fl-istat LISTEN, li jfisser li s-server għandu jinbeda. Sussegwentement, il-klijent huwa 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:
Meta klijent jibda konnessjoni, jiġġenera numru ta' sekwenza inizjali każwali (client_isn) u jpoġġih fil-qasam "Numru ta' sekwenza" tal-header TCP. Fl-istess ħin, il-klijent jistabbilixxi l-pożizzjoni tal-bandiera SYN għal 1 biex jindika li l-pakkett ħerġin 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.
Meta server jirċievi pakkett SYN minn klijent, inizjalizza 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-header TCP. Sussegwentement, is-server idaħħal client_isn + 1 fil-qasam "Acknowledgement number" u jistabbilixxi kemm SYN kif ukoll ACK bits għal 1. Fl-aħħarnett, is-server jibgħat il-pakkett lill-klijent, li ma fih l-ebda data tas-saff tal-applikazzjoni (u l-ebda data għas-server biex tibgħat). F'dan iż-żmien, is-server jinsab fl-istat SYN-RCVD.
Ladarba l-klijent jirċievi l-pakkett mis-server, jeħtieġ li jwettaq l-ottimizzazzjonijiet li ġejjin biex jirrispondi għall-pakkett tar-risposta finali: L-ewwel, il-klijent jistabbilixxi l-bit ACK tal-header TCP tal-pakkett tat-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ħħarnett, il-klijent jibgħat il-pakkett lis-server. Dan il-pakkett jista 'jġorr data mill-klijent għas-server. Meta jitlestew dawn l-operazzjonijiet, il-klijent jidħol fl-istat STABBILIT.
Ladarba s-server jirċievi l-pakkett tat-tweġiba mill-klijent, jaqleb ukoll għall-istat STABBILIT.
Kif tistgħu taraw mill-proċess ta 'hawn fuq, meta twettaq handshake bi tliet direzzjonijiet, it-tielet handshake jitħalla jġorr data, iżda l-ewwel żewġ handshake mhumiex. Din hija mistoqsija li spiss issir fl-intervisti. Ladarba l-handshake tat-tliet direzzjonijiet titlesta, iż-żewġ partijiet jidħlu fl-istat STABBILIT, li jindika li l-konnessjoni ġiet stabbilita b'suċċess, f'liema punt il-klijent u s-server jistgħu jibdew jibagħtu data lil xulxin.
Għaliex tliet handshakes? Mhux darbtejn, erba’ darbiet?
It-tweġiba komuni hija, "Minħabba li l-handshake bi tliet direzzjonijiet tiggarantixxi l-abbiltà li tirċievi u tibgħat." Din it-tweġiba hija korretta, iżda hija biss ir-raġuni tal-wiċċ, ma tressaqx ir-raġuni ewlenija. F'dan li ġej, ser tanalizza r-raġunijiet għat-triple handshake minn tliet aspetti biex napprofondixxu l-fehim tagħna ta 'din il-kwistjoni.
L-handshake bi tliet direzzjonijiet jista 'jevita b'mod effettiv l-inizjalizzazzjoni ta' konnessjonijiet ripetuti storikament (ir-raġuni ewlenija)
Il-handshake three-way jiggarantixxi li ż-żewġ partijiet irċevew numru ta' sekwenza inizjali affidabbli.
Il-handshake three-way jevita ħela ta 'riżorsi.
Raġuni 1: Evita Joins Storiċi Duplikati
Fil-qosor, ir-raġuni ewlenija għall-handshake bi tliet direzzjonijiet hija li tiġi evitata l-konfużjoni kkawżata mill-inizjalizzazzjoni tal-konnessjoni duplikata l-antika. F'ambjent ta 'netwerk kumpless, it-trażmissjoni ta' pakketti tad-dejta mhux dejjem tintbagħat lill-ospitant tad-destinazzjoni skont iż-żmien speċifikat, u pakketti tad-dejta qodma jistgħu jaslu fl-ospitant tad-destinazzjoni l-ewwel minħabba konġestjoni tan-netwerk u raġunijiet oħra. Biex tevita dan, TCP juża handshake bi tliet direzzjonijiet biex jistabbilixxi l-konnessjoni.
Meta klijent jibgħat pakketti multipli ta' stabbiliment ta' konnessjoni SYN wara xulxin, f'sitwazzjonijiet bħal konġestjoni tan-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 l-antik.
3- Meta l-klijent jirċievi l-pakkett SYN + ACK, jiddetermina li l-konnessjoni hija konnessjoni storika (numru ta 'sekwenza skada jew timeout) skont il-kuntest tiegħu stess, u mbagħad jibgħat il-pakkett RST lis-server biex twaqqaf il-konnessjoni.
B'konnessjoni ta 'żewġ handshake, m'hemm l-ebda mod biex jiġi ddeterminat jekk il-konnessjoni attwali hijiex konnessjoni storika. L-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 (numru ta 'sekwenza skada jew timeout), il-pakkett mibgħut mit-tielet handshake huwa pakkett RST biex twaqqaf il-konnessjoni storika.
2- Jekk ma tkunx konnessjoni storika, il-pakkett mibgħut għat-tielet darba huwa pakkett ACK, u ż-żewġ partijiet li jikkomunikaw jistabbilixxu b'suċċess il-konnessjoni.
Għalhekk, ir-raġuni ewlenija li t-TCP juża l-handshake bi tliet direzzjonijiet hija li jinizjalizza l-konnessjoni biex jipprevjeni konnessjonijiet storiċi.
Raġuni 2: Biex tissinkronizza n-numri tas-sekwenza inizjali taż-żewġ partijiet
Iż-żewġ naħat tal-protokoll TCP għandhom iż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 data duplikata u jiżgura l-eżattezza tad-data.
Ir-riċevitur jista 'jirċievi pakketti fl-ordni tan-numru tas-sekwenza biex jiżgura l-integrità tad-data.
● In-numru tas-sekwenza jista 'jidentifika l-pakkett tad-data li jkun ġie riċevut mill-parti l-oħra, li jippermetti trasmissjoni ta' data affidabbli.
Għalhekk, malli jistabbilixxi konnessjoni TCP, il-klijent jibgħat pakketti SYN bin-numru ta 'sekwenza inizjali u jeħtieġ lis-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.
Għalkemm handshake b'erba' naħat huwa wkoll possibbli li jissinkronizza b'mod affidabbli n-numri tas-sekwenza inizjali taż-żewġ partijiet, it-tieni u t-tielet pass jistgħu jingħaqdu 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 hija l-aħjar għażla li tieħu sabiex tiżgura 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 'jiġi mibgħut. Madankollu, peress li m'hemm l-ebda tielet handshake, is-server ma jistax jiddetermina jekk il-klijent irċievax rikonoxximent 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 tkun imblukkata, li tirriżulta fi trażmissjoni ripetuta ta' pakketti SYN multipli, is-server jistabbilixxi konnessjonijiet multipli 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 tat-tielet handshake, is-server m'għandu l-ebda mod li jkun jaf jekk il-klijent irċievax b'mod korrett ir-rikonoxximent ACK biex jistabbilixxi l-konnessjoni. Bħala riżultat, jekk il-messaġġi jeħlu fin-netwerk, il-klijent jibqa 'jibgħat talbiet SYN għal darb'oħra, u b'hekk is-server jistabbilixxi b'mod kostanti konnessjonijiet ġodda. Dan se jżid il-konġestjoni tan-netwerk u dewmien u jaffettwa b'mod negattiv il-prestazzjoni ġenerali tan-netwerk.
Għalhekk, sabiex jiġu żgurati l-istabbiltà u l-affidabbiltà tal-konnessjoni tan-netwerk, TCP juża l-handshake bi tliet direzzjonijiet biex jistabbilixxi l-konnessjoni biex jevita l-okkorrenza ta 'dawn il-problemi.
Sommarju
Il-Sensar tal-Pakketti tan-NetwerkL-istabbiliment tal-konnessjoni TCP isir b'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 mill-klijent, is-server iwieġeb pakkett b'bnadar SYN u ACK lill-klijent, li jindika li t-talba ta 'konnessjoni hija aċċettata, u jibgħat in-numru ta' sekwenza inizjali tiegħu stess. Fl-aħħarnett, il-klijent iwieġeb b'marka ACK lis-server biex jindika li l-konnessjoni ġiet stabbilita b'suċċess. Għalhekk, iż-żewġ partijiet huma fl-istat STABBILIT u jistgħu jibdew jibagħtu data lil xulxin.
B'mod ġenerali, il-proċess ta 'handshake bi tliet direzzjonijiet għall-istabbiliment ta' konnessjoni TCP huwa ddisinjat biex jiżgura l-istabbiltà u l-affidabbiltà tal-konnessjoni, jevita konfużjoni u ħela ta 'riżorsi fuq konnessjonijiet storiċi, u jiżgura li ż-żewġ partijiet ikunu jistgħu jirċievu u jibagħtu data.
Ħin tal-post: Jan-08-2025