Siri kuu za Viunganisho vya Broker Packet TCP: Iliyotumwa hitaji la kushikana mikono mara tatu

Usanidi wa Uunganisho wa TCP
Tunapovinjari wavuti, tuma barua pepe, au cheza mchezo mkondoni, mara nyingi hatufikirii juu ya unganisho tata la mtandao nyuma yake. Walakini, ni hatua hizi zinazoonekana kuwa ndogo ambazo zinahakikisha mawasiliano thabiti kati yetu na seva. Moja ya hatua muhimu zaidi ni usanidi wa unganisho wa TCP, na msingi wa hii ni kushikana kwa njia tatu.

Nakala hii itajadili kanuni, mchakato na umuhimu wa kushikana kwa njia tatu kwa undani. Hatua kwa hatua, tutaelezea ni kwa nini kushikana kwa njia tatu inahitajika, jinsi inahakikisha utulivu wa unganisho na kuegemea, na jinsi ni muhimu kwa uhamishaji wa data. Kwa ufahamu wa kina wa kushikana kwa njia tatu, tutapata uelewa mzuri wa mifumo ya msingi ya mawasiliano ya mtandao na mtazamo wazi wa kuegemea kwa miunganisho ya TCP.

Mchakato wa mikono mitatu ya TCP na mabadiliko ya serikali
TCP ni itifaki ya usafirishaji inayoelekezwa kwa unganisho, ambayo inahitaji kuanzishwa kwa unganisho kabla ya usambazaji wa data. Mchakato huu wa uanzishaji wa unganisho hufanywa na kushikana kwa njia tatu.

 TCP kushikana kwa njia tatu

Wacha tuangalie kwa karibu pakiti za TCP ambazo hutumwa kwa kila unganisho.

Hapo awali, mteja na seva zote zimefungwa. Kwanza, seva inasikiliza kikamilifu kwenye bandari na iko katika hali ya kusikiliza, ambayo inamaanisha kuwa seva lazima ianzishwe. Ifuatayo, mteja yuko tayari kuanza kupata ukurasa wa wavuti.Inahitaji kuanzisha uhusiano na seva. Fomati ya pakiti ya unganisho la kwanza ni kama ifuatavyo:

 Pakiti ya syn

Wakati mteja anapoanzisha unganisho, hutoa nambari ya mlolongo wa awali (mteja_isn) na kuiweka katika uwanja wa "mlolongo" wa kichwa cha TCP. Wakati huo huo, mteja huweka msimamo wa bendera ya SYN kwa 1 kuashiria kuwa pakiti inayomaliza ni pakiti ya SYN. Mteja anaonyesha kuwa inataka kuanzisha unganisho na seva kwa kutuma pakiti ya kwanza ya SYN kwa seva. Pakiti hii haina data ya safu ya programu (ambayo ni, data iliyotumwa). Katika hatua hii, hali ya mteja imewekwa alama kama syn-senti.

Syn+pakiti ya ACK

Wakati seva inapokea pakiti ya SYN kutoka kwa mteja, inaanzisha nasibu nambari yake ya serial (server_isn) na kisha inaweka nambari hiyo katika uwanja wa "nambari ya serial" ya kichwa cha TCP. Ifuatayo, seva inaingia kwa mteja_isn + 1 katika uwanja wa "Kukiri kwa nambari" na huweka vipande vyote vya SYN na ACK kwa 1. Mwishowe, 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.

Pakiti ya ACK

Mara tu mteja akipokea pakiti kutoka kwa seva, inahitaji kufanya uboreshaji ufuatao kujibu pakiti ya jibu la mwisho: Kwanza, mteja huweka kichwa kidogo cha kichwa cha TCP cha pakiti ya jibu hadi 1; Pili, mteja anaingia kwenye seva ya thamani_isn + 1 kwenye uwanja wa "Thibitisha Nambari ya Jibu"; Mwishowe, mteja hutuma pakiti kwenye seva. Pakiti hii inaweza kubeba data kutoka kwa mteja hadi seva. Baada ya kukamilisha shughuli hizi, mteja ataingia katika hali iliyoanzishwa.

Mara tu seva ikipokea pakiti ya jibu kutoka kwa mteja, pia inabadilika kwa hali iliyoanzishwa.

Kama unaweza kuona kutoka kwa mchakato hapo juu, wakati wa kufanya mikono ya njia tatu, kushikana kwa tatu kunaruhusiwa kubeba data, lakini mikono miwili ya kwanza sio. Hili ni swali ambalo mara nyingi huulizwa katika mahojiano. Mara tu mikono ya njia tatu ikiwa imekamilika, pande zote mbili zinaingia katika hali iliyoanzishwa, ikionyesha kuwa unganisho umeanzishwa kwa mafanikio, wakati ambao mteja na seva inaweza kuanza kutuma data kwa kila mmoja.

Kwa nini mikono mitatu? Sio mara mbili, mara nne?
Jibu la kawaida ni, "kwa sababu mikono ya njia tatu inahakikisha uwezo wa kupokea na kutuma." Jibu hili ni sawa, lakini ni sababu ya uso tu, haitoi mbele sababu kuu. Katika zifuatazo, nitachambua sababu za kushikana mikono mara tatu kutoka kwa mambo matatu ili kukuza uelewa wetu wa suala hili.

Handshake ya njia tatu inaweza kuzuia kwa ufanisi uanzishaji wa miunganisho inayorudiwa kihistoria (sababu kuu)
Handshake ya njia tatu inahakikishia kwamba pande zote mbili zimepokea nambari ya kwanza ya mlolongo wa kwanza.
Handshake ya njia tatu huepuka kupoteza rasilimali.

Sababu ya 1: Epuka kuungana kwa kihistoria
Kwa kifupi, sababu kuu ya kushikana kwa njia tatu ni kuzuia machafuko yanayosababishwa na uanzishaji wa zamani wa unganisho. Katika mazingira magumu ya mtandao, maambukizi ya pakiti za data hayapewi kila wakati kwa mwenyeji wa marudio kulingana na wakati uliowekwa, na pakiti za zamani za data zinaweza kufika kwenye mwenyeji wa marudio kwanza kwa sababu ya msongamano wa mtandao na sababu zingine. Ili kuzuia hili, TCP hutumia kushikana kwa njia tatu ili kuanzisha unganisho.

Handshake ya njia tatu huepuka miunganisho ya kihistoria ya kihistoria

Wakati mteja anapotuma pakiti nyingi za uanzishaji wa unganisho kwa mfululizo, katika hali kama vile msongamano wa mtandao, zifuatazo zinaweza kutokea:

1- Pakiti za zamani za SYN zinafika kwenye seva kabla ya pakiti za hivi karibuni za Syn.
2- Seva itajibu pakiti ya SYN + ACK kwa mteja baada ya kupokea pakiti ya zamani ya SYN.
3- Wakati mteja anapokea pakiti ya SYN + ACK, huamua kuwa unganisho ni unganisho la kihistoria (nambari ya mlolongo imemalizika au kumalizika) kulingana na muktadha wake, na kisha hutuma pakiti ya kwanza kwa seva ili kumaliza unganisho.

Na unganisho la mikono miwili, hakuna njia ya kuamua ikiwa unganisho la sasa ni unganisho la kihistoria. Mkono wa njia tatu huruhusu mteja kuamua ikiwa unganisho la sasa ni unganisho la kihistoria kulingana na muktadha wakati iko tayari kutuma pakiti ya tatu:

1- Ikiwa ni unganisho la kihistoria (nambari ya mlolongo iliyomalizika au kumalizika), pakiti iliyotumwa na mkono wa tatu ni pakiti ya kwanza ya kumaliza unganisho la kihistoria.
2- Ikiwa sio unganisho la kihistoria, pakiti iliyotumwa kwa mara ya tatu ni pakiti ya ACK, na vyama viwili vinavyowasiliana vinafanikiwa kuanzisha unganisho.

Kwa hivyo, sababu kuu ya kwamba TCP hutumia mikono ya njia tatu ni kwamba huanzisha unganisho ili kuzuia miunganisho ya kihistoria.

Sababu ya 2: Kusawazisha nambari za mlolongo wa kwanza wa pande zote
Pande zote mbili za itifaki ya TCP lazima zitunze nambari ya mlolongo, ambayo ni jambo muhimu kuhakikisha maambukizi ya kuaminika. Nambari za mlolongo huchukua jukumu muhimu katika unganisho la TCP. Wanafanya yafuatayo:

Mpokeaji anaweza kuondoa data mbili na kuhakikisha usahihi wa data.

Mpokeaji anaweza kupokea pakiti kwa mpangilio wa nambari ya mlolongo ili kuhakikisha uadilifu wa data.

● Nambari ya mlolongo inaweza kutambua pakiti ya data ambayo imepokelewa na mtu mwingine, kuwezesha usambazaji wa data wa kuaminika.

Kwa hivyo, baada ya kuanzisha unganisho la TCP, mteja hutuma pakiti za SYN na nambari ya mlolongo wa awali na inahitaji seva kujibu na pakiti ya ACK inayoonyesha mapokezi ya mafanikio ya pakiti ya mteja. Halafu, seva hutuma pakiti ya SYN na nambari ya mlolongo wa awali kwa mteja na inasubiri mteja ajibu, mara moja, ili kuhakikisha kuwa nambari za mlolongo wa awali zinasawazishwa.

Sawazisha nambari za awali za pande zote

Ingawa kushikana kwa njia nne kunawezekana pia kusawazisha nambari za mlolongo wa pande zote, hatua za pili na za tatu zinaweza kuunganishwa katika hatua moja, na kusababisha kushikana kwa njia tatu. Walakini, mikono hiyo miwili inaweza tu kuhakikisha kuwa idadi ya mlolongo wa kwanza wa chama kimoja imepokelewa kwa mafanikio na mtu mwingine, lakini hakuna dhamana ya kwamba idadi ya mlolongo wa pande zote zinaweza kudhibitishwa. Kwa hivyo, kushikana kwa njia tatu ni chaguo bora kuchukua ili kuhakikisha utulivu na kuegemea kwa miunganisho ya TCP.

Sababu 3: Epuka kupoteza rasilimali
Ikiwa kuna tu "mikono miwili", wakati ombi la mteja SYN limezuiliwa kwenye mtandao, mteja hawezi kupokea pakiti ya ACK iliyotumwa na seva, kwa hivyo SYN itachukia. Walakini, kwa kuwa hakuna mkono wa tatu, seva haiwezi kuamua ikiwa mteja alipokea kukiri kwa ACK ili kuanzisha unganisho. Kwa hivyo, seva inaweza tu kuanzisha unganisho baada ya kupokea kila ombi la SYN. Hii inasababisha yafuatayo:

Upotezaji wa rasilimali: Ikiwa ombi la mteja la mteja limezuiliwa, na kusababisha maambukizi ya mara kwa mara ya pakiti nyingi za SYN, seva itaanzisha miunganisho mingi isiyo sawa baada ya kupokea ombi. Hii inasababisha taka isiyo ya lazima ya rasilimali za seva.

Utunzaji wa ujumbe: Kwa sababu ya ukosefu wa mikono ya tatu, seva haina njia ya kujua ikiwa mteja alipokea kwa usahihi kukiri kwa ACK ili kuanzisha unganisho. Kama matokeo, ikiwa ujumbe utakwama kwenye mtandao, mteja ataendelea kutuma maombi ya SYN tena na tena, na kusababisha seva kuanzisha kila wakati miunganisho mpya. Hii itaongeza msongamano wa mtandao na kuchelewesha na kuathiri vibaya utendaji wa mtandao.

Epuka kupoteza rasilimali

Kwa hivyo, ili kuhakikisha utulivu na kuegemea kwa unganisho la mtandao, TCP hutumia kushikana kwa njia tatu ili kuanzisha unganisho ili kuzuia kutokea kwa shida hizi.

Muhtasari
Dalali wa pakiti ya mtandaoUanzishwaji wa unganisho wa TCP hufanywa kwa kushikana kwa njia tatu. Wakati wa kushikana kwa njia tatu, mteja kwanza hutuma pakiti na bendera ya SYN kwa seva, ikionyesha kuwa inataka kuanzisha unganisho. Baada ya kupokea ombi kutoka kwa mteja, seva inajibu pakiti iliyo na bendera ya SYN na ACK kwa mteja, ikionyesha kuwa ombi la unganisho linakubaliwa, na hutuma nambari yake ya mlolongo wa kwanza. Mwishowe, mteja anajibu na bendera ya ACK kwa seva kuashiria kuwa unganisho umeanzishwa kwa mafanikio. Kwa hivyo, pande hizo mbili ziko katika hali iliyoanzishwa na zinaweza kuanza kutuma data kwa kila mmoja.

Kwa ujumla, mchakato wa mikono mitatu ya uanzishwaji wa unganisho la TCP imeundwa ili kuhakikisha utulivu wa unganisho na kuegemea, epuka machafuko na upotezaji wa rasilimali juu ya unganisho la kihistoria, na hakikisha kuwa pande zote mbili zina uwezo wa kupokea na kutuma data.


Wakati wa chapisho: Jan-08-2025