Setup tal-konnessjoni TCP
Meta żżur 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 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 jiddiskuti l-prinċipju, il-proċess u l-importanza tal-handshake bi tliet direzzjonijiet fid-dettall. Pass pass, aħna nispjegaw għaliex hija meħtieġa l-handshake bi tliet direzzjonijiet, kif tiżgura l-istabbiltà u l-affidabbiltà tal-konnessjoni, u kemm hija importanti għat-trasferiment tad-dejta. B'għarfien aktar profond tal-handshake bi tliet direzzjonijiet, aħna se nifhmu aħjar il-mekkaniżmi sottostanti tal-komunikazzjoni tan-netwerk u veduta aktar ċara tal-affidabbiltà tal-konnessjonijiet TCP.
TCP Proċess ta 'Handshake Three Way u Transizzjonijiet tal-Istat
TCP huwa protokoll tat-trasport orjentat lejn il-konnessjoni, li jirrikjedi stabbiliment tal-konnessjoni qabel it-trasmissjoni tad-dejta. Dan il-proċess ta 'stabbiliment ta' konnessjoni jsir minn 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 tas-smigħ, li jfisser li s-server għandu jinbeda. Sussegwentement, il-klijent huwa lest biex jibda jaċċessa l-webpage.it 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 bl-addoċċ (client_isn) u jpoġġih 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, id-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, huwa inizjalizza bl-addoċċ in-numru tas-serje tiegħu stess (server_isn) u mbagħad ipoġġi dak in-numru fil-qasam "numru tas-serje" tal-intestatura TCP. Sussegwentement, is-server jidħol fil-qasam Client_ISN + 1 fil-qasam "Numru ta 'Rikonoxximent" u jistabbilixxi kemm bits SYN kif ukoll ACK għal 1. Finalment, is-server jibgħat il-pakkett lill-klijent, li ma fih l-ebda dejta dwar is-saff tal-applikazzjoni (u l-ebda dejta 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 iwieġeb għall-pakkett ta 'tweġiba finali: l-ewwel, il-klijent jistabbilixxi l-bit ACK tal-intestatura TCP tal-pakkett ta' tweġiba għal 1; It-tieni, il-klijent jidħol fil-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 dejta mill-klijent għas-server. Mat-tlestija ta 'dawn l-operazzjonijiet, il-klijent se jidħol fl-istat stabbilit.
Ladarba s-server jirċievi l-pakkett ta 'tweġiba mill-klijent, huwa 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 titħalla ġġorr data, iżda l-ewwel żewġ handshakes mhumiex. Din hija mistoqsija li ħafna drabi ssir fl-intervisti. Ladarba l-handshake bi tliet direzzjonijiet tkun kompluta, iż-żewġ partijiet jidħlu fl-istat stabbilit, u jindikaw 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 tressqetx ir-raġuni ewlenija. F'dan li ġej, se tanalizza r-raġunijiet għall-handshake triplu minn tliet aspetti biex napprofondixxu l-għarfien tagħna ta 'din il-kwistjoni.
Il-handshake bi tliet direzzjonijiet tista 'effettivament tevita l-inizjalizzazzjoni ta' konnessjonijiet storikament ripetuti (ir-raġuni ewlenija)
L-handshake bi tliet direzzjonijiet tiggarantixxi li ż-żewġ partijiet irċivew numru ta 'sekwenza inizjali affidabbli.
L-handshake bi tliet direzzjonijiet tevita li taħli riżorsi.
Raġuni 1: Evita li jingħaqad ma 'duplikat storiku
Fil-qosor, ir-raġuni ewlenija għall-handshake bi tliet direzzjonijiet hija li tevita konfużjoni kkawżata mill-inizjalizzazzjoni tal-konnessjoni duplikata l-qadima. F'ambjent kumpless tan-netwerk, it-trasmissjoni ta 'pakketti ta' dejta mhux dejjem tintbagħat lill-host tad-destinazzjoni skont il-ħin speċifikat, u pakketti ta 'dejta qodma jistgħu jaslu għand l-ospitanti 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 ta 'stabbiliment ta' konnessjoni SYN multipli wara xulxin, f'sitwazzjonijiet bħal konġestjoni tan-netwerk, jista 'jkun hemm dawn li ġejjin:
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 (numru tas-sekwenza skada jew timeout) skont il-kuntest tiegħu stess, u mbagħad jibgħat il-pakkett RST lis-server biex jabbanduna l-konnessjoni.
B'konnessjoni b'żewġ handshake, 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 tkun lesta li tibgħat it-tielet pakkett:
1- Jekk hija konnessjoni storika (numru tas-sekwenza skadut jew timeout), il-pakkett mibgħut mit-tielet handshake huwa pakkett RST biex jabbanduna l-konnessjoni storika.
2- Jekk mhix 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 TCP juża l-handshake bi tliet direzzjonijiet hija li inizjalizza l-konnessjoni biex tevita konnessjonijiet storiċi.
Raġuni 2: Biex tissinkronizza n-numri inizjali tas-sekwenza taż-żewġ partijiet
Iż-żewġ naħat tal-protokoll TCP għandhom iżommu numru ta 'sekwenza, li huwa fattur ewlieni biex jiżgura 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 rċevut mill-parti l-oħra, li jippermetti trasmissjoni ta' dejta affidabbli.
Għalhekk, malli jiġi stabbilit 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 riċeviment ta '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 jiġu sinkronizzati b'mod affidabbli.
Għalkemm handshake b'erba 'direzzjonijiet huwa possibbli wkoll li tissinkronizza b'mod affidabbli n-numri inizjali tas-sekwenza taż-żewġ partijiet, it-tieni u t-tielet passi jistgħu jiġu kkombinati f'pass wieħed, li jirriżulta f'waħda ta' handshake bi tliet direzzjonijiet. Madankollu, iż-żewġ handshakes jistgħu jiggarantixxu biss li n-numru tas-sekwenza inizjali ta 'parti waħda jintlaqgħu 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 tkun żgurata l-istabbiltà u l-affidabbiltà tal-konnessjonijiet TCP.
Raġuni 3: Evita li taħli riżorsi
Jekk hemm biss "żewġ handshake", meta t-talba tal-klijent SYN tkun imblukkata fin-netwerk, il-klijent ma jistax jirċievi l-pakkett ACK mibgħut mis-server, u għalhekk is-SYN se jerġa 'jkun. Madankollu, peress li m'hemm l-ebda handshake, is-server ma jistax jiddetermina jekk il-klijent irċieva 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:
Skart ta 'Riżorsi: Jekk it-talba SYN tal-klijent tkun imblukkata, li tirriżulta fi trasmissjoni ripetuta ta' pakketti SYN multipli, is-server se jistabbilixxi konnessjonijiet invalidi multipli żejda wara li jirċievi t-talba. Dan iwassal għal ħela bla bżonn ta 'riżorsi tas-server.
Żamma tal-Messaġġ: Minħabba n-nuqqas ta 'tielet handshake, is-server m'għandu l-ebda mod li jkun jaf jekk il-klijent irċeviex b'mod korrett ir-rikonoxximent tal-ACK biex jistabbilixxi l-konnessjoni. Bħala riżultat, jekk il-messaġġi jeħlu fin-netwerk, il-klijent jibqa 'jibgħat talbiet minn SYN aktar u aktar mill-ġdid, u jikkawża li s-server jistabbilixxi kontinwament konnessjonijiet ġodda. Dan iżid il-konġestjoni u d-dewmien tan-netwerk u jaffettwa b'mod negattiv il-prestazzjoni ġenerali tan-netwerk.
Għalhekk, sabiex tkun assigurata 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
IlBroker tal-pakketti tan-netwerkL-istabbiliment tal-konnessjoni TCP isir bi handshake bi tliet direzzjonijiet. Matul il-handshake bi tliet direzzjonijiet, il-klijent l-ewwel jibgħat pakkett bil-bandiera SYN lis-server, u jindika li jrid jistabbilixxi konnessjoni. Wara li rċieva t-talba mill-klijent, is-server iwieġeb pakkett bi bnadar SYN u ACK lill-klijent, li jindika li t-talba tal-konnessjoni hija aċċettata, u tibgħat in-numru tas-sekwenza inizjali tiegħu stess. Fl-aħħarnett, il-klijent iwieġeb bi bandiera ACK lis-server biex jindika li l-konnessjoni ġiet stabbilita b'suċċess. Għalhekk, iż-żewġ partijiet jinsabu fl-istat stabbilit u jistgħu jibdew jibagħtu dejta lil xulxin.
B'mod ġenerali, il-proċess bi tliet direzzjonijiet tal-handshake għall-istabbiliment tal-konnessjoni TCP huwa maħsub biex jiżgura l-istabbiltà u l-affidabbiltà tal-konnessjoni, jevita konfużjoni u skart ta 'riżorsi fuq konnessjonijiet storiċi, u jiżgura li ż-żewġ partijiet ikunu jistgħu jirċievu u jibagħtu data.
Ħin ta 'wara: Jan-08-2025