Usanidi wa Muunganisho wa TCP
Tunapovinjari wavuti, kutuma barua pepe, au kucheza mchezo wa mtandaoni, mara nyingi hatufikirii kuhusu muunganisho changamano wa mtandao nyuma yake. Hata hivyo, ni hatua hizi zinazoonekana kuwa ndogo zinazohakikisha mawasiliano thabiti kati yetu na seva. Moja ya hatua muhimu zaidi ni usanidi wa uunganisho wa TCP, na msingi wa hii ni kushikana mikono kwa njia tatu.
Nakala hii itajadili kanuni, mchakato na umuhimu wa kupeana mikono kwa njia tatu kwa undani. Hatua kwa hatua, tutaeleza kwa nini kupeana mkono kwa njia tatu kunahitajika, jinsi inavyohakikisha uthabiti wa muunganisho na kutegemewa, na jinsi ilivyo muhimu kwa uhamisho wa data. Kwa uelewa wa kina wa kupeana mkono kwa njia tatu, tutapata ufahamu bora wa taratibu za msingi za mawasiliano ya mtandao na mtazamo wazi zaidi wa kuaminika kwa miunganisho ya TCP.
Mchakato wa Kusalimiana kwa Mikono kwa Njia tatu za TCP na Mpito za Jimbo
TCP ni itifaki ya usafiri inayoelekezwa kwa uunganisho, ambayo inahitaji uanzishwaji wa muunganisho kabla ya kusambaza data. Mchakato huu wa uanzishaji wa uunganisho unafanywa kwa kushikana mkono kwa njia tatu.
Hebu tuangalie kwa karibu pakiti za TCP ambazo hutumwa katika kila uhusiano.
Hapo awali, mteja na seva IMEFUNGWA. Kwanza, seva inasikiza kikamilifu kwenye bandari na iko katika hali ya SIKILIZA, ambayo ina maana kwamba seva lazima ianzishwe. Kisha, mteja yuko tayari kuanza kufikia ukurasa wa tovuti. Inahitaji kuanzisha muunganisho na seva. Muundo wa pakiti ya kwanza ya unganisho ni kama ifuatavyo.
Mteja anapoanzisha muunganisho, hutengeneza nambari ya mfuatano wa nasibu (client_isn) na kuiweka katika sehemu ya "Nambari ya mfuatano" ya kichwa cha TCP. Wakati huo huo, mteja huweka nafasi ya bendera ya SYN hadi 1 ili kuonyesha kwamba pakiti inayotoka ni pakiti ya SYN. Mteja anaonyesha kuwa anataka kuanzisha muunganisho na seva kwa kutuma pakiti ya kwanza ya SYN kwa seva. Pakiti hii haina data ya safu ya programu (yaani, data iliyotumwa). Katika hatua hii, hali ya mteja imewekwa alama kama SYN-SENT.
Seva inapopokea pakiti ya SYN kutoka kwa mteja, inaanzisha nambari yake ya ufuataji kwa nasibu (server_isn) na kisha kuweka nambari hiyo katika sehemu ya "Nambari ya Ufuatiliaji" ya kichwa cha TCP. Kisha, seva huingiza mteja_isn + 1 katika sehemu ya "Nambari ya Kukiri" na kuweka biti za SYN na ACK hadi 1. Hatimaye, seva hutuma pakiti kwa mteja, ambayo haina data ya safu ya programu (na hakuna data ya seva. kutuma). Kwa wakati huu, seva iko katika hali ya SYN-RCVD.
Mara mteja anapopokea pakiti kutoka kwa seva, inahitaji kufanya uboreshaji ufuatao ili kujibu pakiti ya mwisho ya jibu: Kwanza, mteja anaweka ACK kidogo ya kichwa cha TCP cha pakiti ya jibu kwa 1; Pili, mteja huingiza thamani server_isn + 1 katika uwanja wa "Thibitisha nambari ya jibu"; Hatimaye, mteja hutuma pakiti kwa seva. Pakiti hii inaweza kubeba data kutoka kwa mteja hadi kwa seva. Baada ya kukamilisha shughuli hizi, mteja ataingia katika hali ILIYOSIMAMA.
Mara tu seva inapopokea pakiti ya jibu kutoka kwa mteja, pia hubadilika hadi hali ILIYOIMARISHWA.
Kama unaweza kuona kutoka kwa mchakato ulio hapo juu, wakati wa kupeana mkono kwa njia tatu, kushikana mkono kwa tatu kunaruhusiwa kubeba data, lakini kushikana mikono mbili za kwanza sio. Hili ni swali ambalo mara nyingi huulizwa katika mahojiano. Mara baada ya kupeana mkono kwa njia tatu kukamilika, pande zote mbili huingia katika hali ILIYOSIMAMIWA, ikionyesha kwamba muunganisho umeanzishwa kwa ufanisi, ambapo mteja na seva wanaweza kuanza kutuma data kwa kila mmoja.
Kwa nini kupeana mikono mara tatu? Sio mara mbili, mara nne?
Jibu la kawaida ni, "Kwa sababu kupeana mkono kwa njia tatu kunahakikisha uwezo wa kupokea na kutuma." Jibu hili ni sahihi, lakini ni sababu ya uso tu, haitoi sababu kuu. Ifuatayo, nitachambua sababu za kupeana mikono mara tatu kutoka kwa nyanja tatu ili kuongeza uelewa wetu wa suala hili.
Kupeana mkono kwa njia tatu kunaweza kuzuia uanzishaji wa miunganisho inayorudiwa kihistoria (sababu kuu)
Kupeana mkono kwa njia tatu kunahakikisha kuwa pande zote mbili zimepokea nambari ya mfuatano ya kuaminika ya awali.
Kupeana mkono kwa njia tatu huepuka kupoteza rasilimali.
Sababu ya 1: Epuka Viunga vya Kihistoria vinavyorudiwa
Kwa kifupi, sababu kuu ya kupeana mkono kwa njia tatu ni kuzuia mkanganyiko unaosababishwa na uanzishaji wa muunganisho wa rudufu wa zamani. Katika mazingira changamano ya mtandao, utumaji wa pakiti za data hautumiwi kila mara kwa mwenyeji lengwa kwa mujibu wa muda uliowekwa, na pakiti za data za zamani zinaweza kufika kwa mwenyeji lengwa kwanza kwa sababu ya msongamano wa mtandao na sababu nyinginezo. Ili kuepuka hili, TCP hutumia kupeana mkono kwa njia tatu ili kuanzisha muunganisho.
Wakati mteja anatuma pakiti nyingi za uanzishaji wa muunganisho wa SYN kwa mfululizo, katika hali kama vile msongamano wa mtandao, yafuatayo yanaweza kutokea:
1- Pakiti za zamani za SYN hufika kwenye seva kabla ya pakiti za hivi punde za SYN.
2- Seva itajibu kifurushi cha SYN + ACK kwa mteja baada ya kupokea pakiti kuu ya SYN.
3- Mteja anapopokea pakiti ya SYN + ACK, huamua kwamba muunganisho ni muunganisho wa kihistoria (nambari ya mlolongo imekwisha muda wake au muda umeisha) kulingana na muktadha wake, na kisha kutuma pakiti ya RST kwa seva ili kukomesha muunganisho.
Kwa muunganisho wa kupeana mikono miwili, hakuna njia ya kuamua ikiwa muunganisho wa sasa ni muunganisho wa kihistoria. Kupeana mkono kwa njia tatu huruhusu mteja kubaini ikiwa muunganisho wa sasa ni muunganisho wa kihistoria kulingana na muktadha wakati iko tayari kutuma pakiti ya tatu:
1- Ikiwa ni muunganisho wa kihistoria (nambari ya mlolongo imekwisha au muda umeisha), pakiti iliyotumwa na kupeana mkono kwa tatu ni pakiti ya RST ili kukomesha muunganisho wa kihistoria.
2- Ikiwa sio muunganisho wa kihistoria, pakiti iliyotumwa kwa mara ya tatu ni pakiti ya ACK, na pande mbili zinazowasiliana zimefanikiwa kuanzisha muunganisho.
Kwa hivyo, sababu kuu ambayo TCP hutumia kupeana mkono kwa njia tatu ni kwamba inaanzisha muunganisho ili kuzuia miunganisho ya kihistoria.
Sababu ya 2: Kusawazisha nambari za mfuatano wa pande zote mbili
Pande zote mbili za itifaki ya TCP lazima zidumishe nambari ya mfuatano, ambayo ni jambo muhimu ili kuhakikisha upitishaji unaotegemewa. Nambari za mfuatano zina jukumu muhimu katika miunganisho ya TCP. Hufanya yafuatayo:
Mpokeaji anaweza kuondoa nakala za data na kuhakikisha usahihi wa data.
Mpokeaji anaweza kupokea pakiti kwa mpangilio wa nambari ya mlolongo ili kuhakikisha uadilifu wa data.
● Nambari ya mfuatano inaweza kutambua pakiti ya data ambayo imepokelewa na mhusika mwingine, kuwezesha utumaji data unaotegemewa.
Kwa hivyo, baada ya kuanzisha muunganisho wa TCP, mteja hutuma pakiti za SYN na nambari ya mfuatano wa awali na inahitaji seva kujibu kwa pakiti ya ACK inayoonyesha upokeaji wa mafanikio wa pakiti ya SYN ya mteja. Kisha, seva hutuma pakiti ya SYN yenye nambari ya mfuatano wa awali kwa mteja na inasubiri mteja ajibu, mara moja na kwa wote, ili kuhakikisha kwamba nambari za mfuatano wa awali zimesawazishwa kwa uhakika.
Ingawa kupeana mkono kwa njia nne pia kunawezekana kusawazisha nambari za mfuatano wa mwanzo za pande zote mbili, hatua ya pili na ya tatu inaweza kuunganishwa kuwa hatua moja, na kusababisha kupeana mkono kwa njia tatu. Hata hivyo, kupeana mikono miwili kunaweza tu kuhakikisha kwamba nambari ya awali ya mfuatano wa upande mmoja inapokelewa kwa mafanikio na upande mwingine, lakini hakuna hakikisho kwamba nambari ya mfuatano wa awali wa pande zote mbili inaweza kuthibitishwa. Kwa hiyo, kupeana mkono kwa njia tatu ni chaguo bora zaidi kuchukua ili kuhakikisha uthabiti na uaminifu wa miunganisho ya TCP.
Sababu ya 3: Epuka Kupoteza Rasilimali
Ikiwa kuna "kupeana mikono miwili", wakati ombi la SYN la mteja limezuiwa kwenye mtandao, mteja hawezi kupokea pakiti ya ACK iliyotumwa na seva, kwa hivyo SYN itatupwa. Hata hivyo, kwa kuwa hakuna kupeana mkono kwa tatu, seva haiwezi kubainisha kama mteja alipokea uthibitisho wa ACK ili kuanzisha muunganisho. Kwa hivyo, seva inaweza tu kuanzisha muunganisho kwa bidii baada ya kupokea kila ombi la SYN. Hii inasababisha yafuatayo:
Upotevu wa rasilimali: Ikiwa ombi la SYN la mteja limezuiwa, na kusababisha utumaji wa pakiti nyingi za SYN mara kwa mara, seva itaanzisha miunganisho mingi isiyo sahihi baada ya kupokea ombi. Hii inasababisha upotevu usio wa lazima wa rasilimali za seva.
Uhifadhi wa ujumbe: Kwa sababu ya kukosekana kwa kupeana mkono kwa tatu, seva haina njia ya kujua kama mteja alipokea kwa usahihi ukiri wa ACK ili kuanzisha muunganisho. Kwa hivyo, ikiwa ujumbe utakwama kwenye mtandao, mteja ataendelea kutuma maombi ya SYN tena na tena, na kusababisha seva kuanzisha miunganisho mipya kila wakati. Hii itaongeza msongamano wa mtandao na kuchelewa na kuathiri vibaya utendaji wa jumla wa mtandao.
Kwa hiyo, ili kuhakikisha utulivu na uaminifu wa uhusiano wa mtandao, TCP hutumia mkono wa njia tatu ili kuanzisha uhusiano ili kuepuka tukio la matatizo haya.
Muhtasari
TheWakala wa Pakiti ya MtandaoUanzishaji wa uunganisho wa TCP unafanywa kwa kushikana mkono kwa njia tatu. Wakati wa kupeana mkono kwa njia tatu, mteja kwanza hutuma pakiti iliyo na bendera ya SYN kwa seva, ikionyesha kwamba inataka kuanzisha muunganisho. Baada ya kupokea ombi kutoka kwa mteja, seva hujibu pakiti yenye alama za SYN na ACK kwa mteja, ikionyesha kwamba ombi la uunganisho limekubaliwa, na kutuma nambari yake ya awali ya mlolongo. Hatimaye, mteja hujibu kwa kutumia alama ya ACK kwa seva ili kuonyesha kwamba muunganisho umeanzishwa. Kwa hivyo, pande hizo mbili ziko katika hali ILIVYOSIMULIWA na zinaweza kuanza kutuma data kwa kila mmoja.
Kwa ujumla, mchakato wa kupeana mkono wa njia tatu kwa ajili ya uanzishaji wa muunganisho wa TCP umeundwa ili kuhakikisha uthabiti na uaminifu wa muunganisho, kuepuka mkanganyiko na upotevu wa rasilimali juu ya miunganisho ya kihistoria, na kuhakikisha kwamba pande zote mbili zinaweza kupokea na kutuma data.
Muda wa kutuma: Jan-08-2025