Usafiri wa Kuaminika wa TCP
Sote tunaifahamu itifaki ya TCP kama itifaki ya usafiri inayoaminika, lakini inahakikishaje uaminifu wa usafiri?
Ili kufikia uwasilishaji wa kuaminika, mambo mengi yanahitaji kuzingatiwa, kama vile ufisadi wa data, upotevu, unakili, na vipande vilivyo nje ya mpangilio. Ikiwa matatizo haya hayawezi kutatuliwa, uwasilishaji wa kuaminika hauwezi kupatikana.
Kwa hivyo, TCP hutumia mifumo kama vile nambari ya mfuatano, jibu la kukiri, udhibiti wa kutuma tena, usimamizi wa muunganisho, na udhibiti wa dirisha ili kufikia uwasilishaji unaoaminika.
Katika karatasi hii, tutazingatia dirisha linaloteleza, udhibiti wa mtiririko na udhibiti wa msongamano wa TCP. Utaratibu wa utumaji upya umejadiliwa kando katika sehemu inayofuata.
Udhibiti wa Mtiririko wa Mtandao
Udhibiti wa Mtiririko wa Mtandao au unaojulikana kama Udhibiti wa Trafiki wa Mtandao kwa kweli ni dhihirisho la uhusiano mdogo kati ya wazalishaji na watumiaji. Huenda umekutana na hali hii mara nyingi kazini au katika mahojiano. Ikiwa uwezo wa mzalishaji wa kuzalisha unazidi sana uwezo wa mtumiaji wa kutumia, itasababisha foleni kukua kwa muda usiojulikana. Katika hali mbaya zaidi, unaweza kujua kwamba wakati ujumbe wa RabbitMQ unaporundikana sana, unaweza kusababisha uharibifu wa utendaji wa seva nzima ya MQ. Vivyo hivyo kwa TCP; ikiwa haitadhibitiwa, ujumbe mwingi sana utawekwa kwenye mtandao, na watumiaji watakuwa wamezidi uwezo wao, huku wazalishaji wataendelea kutuma ujumbe unaorudiwa, ambao utaathiri sana utendaji wa mtandao.
Ili kushughulikia jambo hili, TCP hutoa utaratibu kwa mtumaji kudhibiti kiasi cha data kinachotumwa kulingana na uwezo halisi wa upokeaji wa mpokeaji, ambao hujulikana kama udhibiti wa mtiririko. Mpokeaji hudumisha dirisha la kupokea, huku mtumaji akidumisha dirisha la kutuma. Ikumbukwe kwamba Windows hizi ni za muunganisho mmoja tu wa TCP na sio miunganisho yote inayoshiriki dirisha moja.
TCP hutoa udhibiti wa mtiririko kwa kutumia kigezo cha dirisha la kupokea. Dirisha la kupokea humpa mtumaji ishara ya nafasi ya akiba ambayo bado inapatikana. Mtumaji hudhibiti kiasi cha data kinachotumwa kulingana na uwezo halisi wa kukubali wa mpokeaji.
Mpangishi mpokeaji humjulisha mtumaji kuhusu ukubwa wa data anayoweza kupokea, na mtumaji hutuma hadi kikomo hiki. Kikomo hiki ni ukubwa wa dirisha, unakumbuka kichwa cha habari cha TCP? Kuna sehemu ya dirisha la kupokea, ambayo hutumika kuonyesha idadi ya baiti ambazo mpokeaji anaweza au yuko tayari kupokea.
Seva mwenyeji itatuma pakiti ya uchunguzi wa dirisha mara kwa mara, ambayo hutumika kugundua kama seva mwenyeji bado anaweza kukubali data. Wakati bafa ya mpokeaji iko katika hatari ya kufurika, ukubwa wa dirisha huwekwa kwa thamani ndogo ili kumwagiza mtumaji kudhibiti kiasi cha data inayotumwa.
Hapa kuna mchoro wa Udhibiti wa Mtiririko wa Mtandao:
Udhibiti wa Msongamano wa Mtandao
Kabla ya kuanzisha udhibiti wa msongamano, tunahitaji kuelewa kwamba pamoja na dirisha la kupokea na dirisha la kutuma, pia kuna dirisha la msongamano, ambalo hutumika zaidi kutatua tatizo la ni kwa kiwango gani mtumaji anaanza kutuma data kwenye dirisha la kupokea. Kwa hivyo, dirisha la msongamano pia linatunzwa na mtumaji wa TCP. Tunahitaji algoriti ili kuamua ni kiasi gani cha data kinachofaa kutuma, kwa kuwa kutuma data kidogo sana au nyingi sana si bora, kwa hivyo dhana ya dirisha la msongamano.
Katika udhibiti wa mtiririko wa mtandao uliopita, tulichoepuka ni mtumaji kujaza akiba ya mpokeaji na data, lakini hatukujua kinachoendelea kwenye mtandao. Kwa kawaida, mitandao ya kompyuta iko katika mazingira ya pamoja. Kwa hivyo, kunaweza kuwa na msongamano wa mtandao kutokana na mawasiliano kati ya wenyeji wengine.
Mtandao unapokuwa na msongamano, ikiwa idadi kubwa ya pakiti zitaendelea kutumwa, inaweza kusababisha matatizo kama vile kuchelewa na kupotea kwa pakiti. Katika hatua hii, TCP itatuma data tena, lakini utumaji upya utaongeza mzigo kwenye mtandao, na kusababisha ucheleweshaji mkubwa na upotevu zaidi wa pakiti. Hii inaweza kuingia katika mzunguko mbaya na kuendelea kuwa mkubwa.
Kwa hivyo, TCP haiwezi kupuuza kinachoendelea kwenye mtandao. Mtandao unapojaa, TCP hujitolea kwa kupunguza kiasi cha data kinachotuma.
Kwa hivyo, udhibiti wa msongamano unapendekezwa, ambao unalenga kuepuka kujaza mtandao mzima na data kutoka kwa mtumaji. Ili kudhibiti kiasi cha data ambacho mtumaji anapaswa kutuma, TCP inafafanua dhana inayoitwa dirisha la msongamano. Algoritimu ya udhibiti wa msongamano itarekebisha ukubwa wa dirisha la msongamano kulingana na kiwango cha msongamano wa mtandao, ili kudhibiti kiasi cha data kinachotumwa na mtumaji.
Dirisha la msongamano ni nini? Hii ina uhusiano gani na dirisha la kutuma?
Dirisha la Msongamano ni kigezo cha hali kinachodumishwa na mtumaji kinachoamua kiasi cha data ambacho mtumaji anaweza kutuma. Dirisha la msongamano hubadilika kulingana na kiwango cha msongamano wa mtandao.
Dirisha la Kutuma ni ukubwa wa dirisha uliokubaliwa kati ya mtumaji na mpokeaji unaoonyesha kiasi cha data ambacho mpokeaji anaweza kupokea. Dirisha la msongamano na dirisha la kutuma vinahusiana; dirisha la kutuma kwa kawaida huwa sawa na kiwango cha chini cha msongamano na Windows inayopokea, yaani, swnd = min(cwnd, rwnd).
Dirisha la msongamano hubadilika kama ifuatavyo:
Ikiwa hakuna msongamano katika mtandao, yaani, hakuna muda wa kuisha kwa utumaji unaotokea, dirisha la msongamano huongezeka.
Ikiwa kuna msongamano kwenye mtandao, dirisha la msongamano hupungua.
Mtumaji huamua kama mtandao umesongamana kwa kuchunguza kama pakiti ya uthibitisho ya ACK imepokelewa ndani ya muda uliowekwa. Ikiwa mtumaji hatapokea pakiti ya uthibitisho ya ACK ndani ya muda uliowekwa, inachukuliwa kuwa mtandao umesongamana.
Mbali na dirisha la msongamano, ni wakati wa kujadili algoriti ya kudhibiti msongamano wa TCP. Algoriti ya kudhibiti msongamano wa TCP ina sehemu kuu tatu:
Kuanza Polepole:Mwanzoni, dirisha la msongamano wa cwnd ni dogo kiasi, na mtumaji huongeza dirisha la msongamano kwa kasi ili kuzoea haraka uwezo wa mtandao.
Kuepuka Msongamano:Baada ya dirisha la msongamano kuzidi kizingiti fulani, mtumaji huongeza dirisha la msongamano kwa njia ya mstari ili kupunguza kasi ya ukuaji wa dirisha la msongamano na kuepuka kuzidisha mtandao.
Uponaji wa Haraka:Ikiwa msongamano utatokea, mtumaji hukata dirisha la msongamano na kuingia katika hali ya urejeshaji wa haraka ili kubaini eneo la urejeshaji wa mtandao kupitia acks zilizopokelewa, na kisha anaendelea kuongeza dirisha la msongamano.
Kuanza Polepole
Wakati muunganisho wa TCP unapoanzishwa, cwnd ya dirisha la msongamano huwekwa mwanzoni kwa thamani ya chini kabisa ya MSS (ukubwa wa juu wa sehemu). Kwa njia hii, kiwango cha awali cha kutuma ni kuhusu baiti za MSS/RTT/sekunde. Kipimo data halisi kinachopatikana kwa kawaida huwa kikubwa zaidi kuliko MSS/RTT, kwa hivyo TCP inataka kupata kiwango bora cha kutuma, ambacho kinaweza kupatikana kwa njia ya kuanza polepole.
Katika mchakato wa kuanza polepole, thamani ya cwnd ya dirisha la msongamano itaanzishwa kuwa MSS 1, na kila wakati sehemu ya pakiti inayopitishwa inapotambuliwa, thamani ya cwnd itaongezwa kwa MSS moja, yaani, thamani ya cwnd itakuwa MSS 2. Baada ya hapo, thamani ya cwnd huongezeka maradufu kwa kila uwasilishaji uliofanikiwa wa sehemu ya pakiti, na kadhalika. Mchakato maalum wa ukuaji unaonyeshwa kwenye mchoro ufuatao.
Hata hivyo, kiwango cha kutuma hakiwezi kukua kila wakati; ukuaji lazima uishe wakati fulani. Kwa hivyo, ongezeko la kiwango cha kutuma huisha lini? Kuanza polepole kwa kawaida humaliza ongezeko la kiwango cha kutuma kwa njia moja kati ya kadhaa:
Njia ya kwanza ni kesi ya upotevu wa pakiti wakati wa mchakato wa kutuma wa kuanza polepole. Wakati upotevu wa pakiti unapotokea, TCP huweka dirisha la msongamano la mtumaji cwnd kuwa 1 na kuanzisha upya mchakato wa kuanza polepole. Katika hatua hii, dhana ya kizingiti cha kuanza polepole ssthresh huletwa, ambacho thamani yake ya awali ni nusu ya thamani ya cwnd ambayo hutoa upotevu wa pakiti. Hiyo ni, wakati msongamano unapogunduliwa, thamani ya ssthresh ni nusu ya thamani ya dirisha.
Njia ya pili ni kuhusianisha moja kwa moja na thamani ya kizingiti cha kuanza polepole cha ssthresh. Kwa kuwa thamani ya ssthresh ni nusu ya thamani ya dirisha wakati msongamano unagunduliwa, upotevu wa pakiti unaweza kutokea kwa kila kuongezeka mara mbili wakati cwnd ni kubwa kuliko ssthresh. Kwa hivyo, ni bora kuweka cwnd kuwa ssthresh, ambayo itasababisha TCP kubadili hadi hali ya kudhibiti msongamano na kumaliza kuanza polepole.
Njia ya mwisho ambayo kuanza polepole kunaweza kuisha ni ikiwa acks tatu zisizohitajika zitagunduliwa, TCP hufanya uhamishaji wa haraka na kuingia katika hali ya urejeshaji. (Ikiwa haijulikani ni kwa nini kuna pakiti tatu za ACK, itaelezewa kando katika utaratibu wa uhamishaji.)
Kuepuka Msongamano
Wakati TCP inapoingia katika hali ya udhibiti wa msongamano, cwnd imewekwa kuwa nusu ya kizingiti cha msongamano ssthresh. Hii ina maana kwamba thamani ya cwnd haiwezi kuongezeka mara mbili kila wakati sehemu ya pakiti inapopokelewa. Badala yake, mbinu ya kihafidhina kiasi hutumika ambapo thamani ya cwnd huongezwa kwa MSS moja tu (urefu wa juu wa sehemu ya pakiti) baada ya kila uwasilishaji kukamilika. Kwa mfano, hata kama sehemu 10 za pakiti zinatambuliwa, thamani ya cwnd itaongezeka kwa MSS moja tu. Huu ni mfumo wa ukuaji wa mstari na pia una kikomo cha juu cha ukuaji. Wakati upotevu wa pakiti unapotokea, thamani ya cwnd hubadilishwa kuwa MSS, na thamani ya ssthresh imewekwa kuwa nusu ya cwnd. Au pia itasimamisha ukuaji wa MSS wakati majibu 3 ya ACK yasiyohitajika yanapokelewa. Ikiwa acks tatu zisizohitajika bado zinapokelewa baada ya kupunguza thamani ya cwnd kwa nusu, thamani ya ssthresh hurekodiwa kama nusu ya thamani ya cwnd na hali ya urejeshaji wa haraka inaingizwa.
Uponaji wa Haraka
Katika hali ya Urejeshaji wa Haraka, thamani ya dirisha la msongamano cwnd huongezwa kwa MSS moja kwa kila ACK iliyopokelewa isiyohitajika, yaani, ACK ambayo haifiki kwa mfuatano. Hii ni kutumia sehemu za pakiti ambazo zimesambazwa kwa mafanikio kwenye mtandao ili kuboresha ufanisi wa upitishaji iwezekanavyo.
Wakati ACK ya sehemu ya pakiti iliyopotea inapofika, TCP hupunguza thamani ya cwnd na kisha huingia katika hali ya kuepuka msongamano. Hii ni kudhibiti ukubwa wa dirisha la msongamano na kuepuka kuongeza msongamano wa mtandao zaidi.
Ikiwa muda wa kuisha utatokea baada ya hali ya udhibiti wa msongamano, hali ya mtandao inakuwa mbaya zaidi na TCP huhama kutoka hali ya kuepuka msongamano hadi hali ya kuanza polepole. Katika hali hii, thamani ya dirisha la msongamano cwnd imewekwa kuwa 1 MSS, urefu wa juu wa sehemu ya pakiti, na thamani ya kizingiti cha kuanza polepole ssthresh imewekwa kuwa nusu ya cwnd. Madhumuni ya hii ni kuongeza tena polepole ukubwa wa dirisha la msongamano baada ya mtandao kupona ili kusawazisha kiwango cha upitishaji na kiwango cha msongamano wa mtandao.
Muhtasari
Kama itifaki ya usafiri inayoaminika, TCP hutekeleza usafiri unaoaminika kwa nambari ya mfuatano, utambuzi, udhibiti wa utumaji upya, usimamizi wa muunganisho na udhibiti wa dirisha. Miongoni mwao, utaratibu wa kudhibiti mtiririko hudhibiti kiasi cha data kinachotumwa na mtumaji kulingana na uwezo halisi wa kupokea wa mpokeaji, jambo ambalo huepuka matatizo ya msongamano wa mtandao na uharibifu wa utendaji. Utaratibu wa kudhibiti msongamano huepuka kutokea kwa msongamano wa mtandao kwa kurekebisha kiasi cha data kinachotumwa na mtumaji. Dhana za dirisha la msongamano na dirisha la kutuma zinahusiana, na kiasi cha data kwa mtumaji hudhibitiwa kwa kurekebisha ukubwa wa dirisha la msongamano kiotomatiki. Kuanza polepole, kuepuka msongamano na urejeshaji wa haraka ni sehemu tatu kuu za algoriti ya udhibiti wa msongamano wa TCP, ambayo hurekebisha ukubwa wa dirisha la msongamano kupitia mikakati tofauti ili kuendana na uwezo na kiwango cha msongamano wa mtandao.
Katika sehemu inayofuata, tutachunguza kwa undani utaratibu wa utumaji data upya wa TCP. Utaratibu wa utumaji data upya ni sehemu muhimu ya TCP ili kufikia utumaji data unaotegemewa. Unahakikisha utumaji data unaotegemewa kwa kusambaza data iliyopotea, iliyoharibika au iliyochelewa. Kanuni na mkakati wa utekelezaji wa utaratibu wa utumaji data upya utaanzishwa na kuchanganuliwa kwa undani katika sehemu inayofuata. Endelea kufuatilia!
Muda wa chapisho: Februari-24-2025

