Transportasyon ng pagiging maaasahan ng TCP
Lahat tayo ay pamilyar sa TCP protocol bilang isang maaasahang protocol ng transportasyon, ngunit paano nito masisiguro ang pagiging maaasahan ng transportasyon?
Upang makamit ang maaasahang paghahatid, maraming mga kadahilanan ang kailangang isaalang-alang, tulad ng katiwalian ng data, pagkawala, pagdoble, at mga out-of-order shards. Kung hindi malulutas ang mga problemang ito, hindi makamit ang maaasahang paghahatid.
Samakatuwid, ang TCP ay gumagamit ng mga mekanismo tulad ng numero ng pagkakasunud -sunod, pagtugon sa pagkilala, resend control, pamamahala ng koneksyon, at kontrol sa window upang makamit ang maaasahang paghahatid.
Sa papel na ito, tututuon namin ang sliding window, control control at congestion control ng TCP. Ang mekanismo ng pag -retransmission ay saklaw nang hiwalay sa susunod na seksyon.
Kontrol ng daloy ng network
Ang kontrol sa daloy ng network o alam bilang kontrol sa trapiko ng network ay talagang isang pagpapakita ng banayad na ugnayan sa pagitan ng mga prodyuser at mga mamimili. Marahil ay nakatagpo ka ng sitwasyong ito sa trabaho o sa mga panayam. Kung ang kapasidad ng tagagawa upang makabuo ng lubos na lumampas sa kapasidad ng mamimili upang ubusin, magiging sanhi ito ng pila na walang hanggan. Sa isang mas malubhang kaso, maaari mong malaman na kapag ang mga mensahe ng RabbitMQ ay tumaas nang labis, maaari itong maging sanhi ng pagkasira ng pagganap ng buong server ng MQ. Ang parehong ay totoo para sa TCP; Kung maiiwan ang hindi napapansin, napakaraming mga mensahe ang ilalagay sa network, at ang mga mamimili ay lalampas sa kanilang kapasidad, habang ang mga prodyuser ay magpapatuloy na magpadala ng mga dobleng mensahe, na lubos na makakaapekto sa pagganap ng network.
Upang matugunan ang kababalaghan na ito, ang TCP ay nagbibigay ng isang mekanismo para sa nagpadala upang makontrol ang dami ng data na ipinadala batay sa aktwal na kapasidad ng pagtanggap ng tatanggap, na kilala bilang control control. Ang tatanggap ay nagpapanatili ng isang natanggap na window, habang ang nagpadala ay nagpapanatili ng isang window ng pagpapadala. Dapat pansinin na ang mga bintana na ito ay para lamang sa isang solong koneksyon sa TCP at hindi lahat ng mga koneksyon ay nagbabahagi ng isang window.
Nagbibigay ang TCP ng control control sa pamamagitan ng paggamit ng isang variable para sa isang natanggap na window. Ang window ng natanggap ay nagbibigay sa nagpadala ng isang indikasyon kung magkano ang magagamit na puwang ng cache. Kinokontrol ng nagpadala ang dami ng data na ipinadala ayon sa aktwal na kapasidad ng pagtanggap ng tatanggap.
Inaalam ng host ng tatanggap ang nagpadala ng laki ng data na maaari nitong matanggap, at ang nagpadala ay nagpapadala hanggang sa limitasyong ito. Ang limitasyong ito ay ang laki ng window, tandaan ang header ng TCP? Mayroong isang natanggap na patlang ng window, na ginagamit upang ipahiwatig ang bilang ng mga byte na ang tatanggap ay maaaring makatanggap.
Ang host ng nagpadala ay pana -panahong magpapadala ng isang window probe packet, na ginagamit upang makita kung ang tatanggap ng host ay tumatanggap pa rin ng data. Kapag ang buffer ng tatanggap ay nasa panganib ng pag -apaw, ang laki ng window ay nakatakda sa isang mas maliit na halaga upang turuan ang nagpadala upang makontrol ang dami ng data na ipinadala.
Narito ang isang diagram ng control flow ng network:
Kontrol ng kasikipan ng network
Bago ipakilala ang kontrol ng kasikipan, kailangan nating maunawaan na bilang karagdagan sa natanggap na window at ang window ng Send, mayroon ding isang window ng kasikipan, na pangunahing ginagamit upang malutas ang problema sa kung anong rate ang nagsisimula ng pagpapadala ng data sa natanggap na window. Samakatuwid, ang window ng kasikipan ay pinapanatili din ng nagpadala ng TCP. Kailangan namin ng isang algorithm upang magpasya kung gaano karaming data ang naaangkop na ipadala, dahil ang pagpapadala ng kaunti o masyadong maraming data ay hindi perpekto, samakatuwid ang konsepto ng isang window ng kasikipan.
Sa nakaraang control ng daloy ng network, ang iniiwasan namin ay pinupuno ng nagpadala ang cache ng tatanggap na may data, ngunit hindi namin alam kung ano ang nangyayari sa network. Karaniwan, ang mga network ng computer ay nasa isang nakabahaging kapaligiran. Bilang isang resulta, maaaring mayroong kasikipan ng network dahil sa komunikasyon sa pagitan ng iba pang mga host.
Kapag ang network ay na -congested, kung ang isang malaking bilang ng mga packet ay patuloy na ipinadala, maaaring magdulot ito ng mga problema tulad ng pagkaantala at pagkawala ng mga packet. Sa puntong ito, i -retransmit ng TCP ang data, ngunit ang pag -retransmission ay tataas ang pasanin sa network, na nagreresulta sa mas malaking pagkaantala at higit pang mga pagkalugi sa packet. Maaari itong makapasok sa isang mabisyo na siklo at patuloy na lumaki.
Kaya, hindi maaaring balewalain ng TCP ang nangyayari sa network. Kapag ang network ay na -congested, sinakripisyo ng TCP ang sarili sa pamamagitan ng pagbabawas ng dami ng data na ipinapadala nito.
Samakatuwid, iminungkahi ang control ng kasikipan, na naglalayong maiwasan ang pagpuno ng buong network ng data mula sa nagpadala. Upang ayusin ang dami ng data na dapat ipadala ng nagpadala, tinukoy ng TCP ang isang konsepto na tinatawag na window ng kasikipan. Ang algorithm ng control ng kasikipan ay aayusin ang laki ng window ng kasikipan ayon sa kasikipan ng network, upang makontrol ang dami ng data na ipinadala ng nagpadala.
Ano ang isang window ng kasikipan? Ano ang kaugnayan nito sa window ng Send?
Ang window ng kasikipan ay isang variable ng estado na pinapanatili ng nagpadala na tumutukoy sa dami ng data na maipadala ng nagpadala. Ang window ng kasikipan ay nagbabago nang pabago -bago ayon sa antas ng kasikipan ng network.
Ang window ng pagpapadala ay isang napagkasunduan sa laki ng window sa pagitan ng nagpadala at tatanggap na nagpapahiwatig ng dami ng data na maaaring matanggap ng tatanggap. Ang window ng kasikipan at ang window ng pagpapadala ay nauugnay; Ang window ng pagpapadala ay karaniwang katumbas ng minimum ng kasikipan at pagtanggap ng mga bintana, iyon ay, swnd = min (cwnd, rwnd).
Ang window window cwnd ay nagbabago tulad ng sumusunod:
Kung walang kasikipan sa network, ibig sabihin, walang pag -retransmission timeout na nangyayari, tumataas ang window ng kasikipan.
Kung may kasikipan sa network, bumababa ang window ng kasikipan.
Tinutukoy ng nagpadala kung ang network ay na -congested sa pamamagitan ng pag -obserba kung ang ACK pagkilala packet ay natanggap sa loob ng tinukoy na oras. Kung ang nagpadala ay hindi tumatanggap ng packet ng ACK pagkilala sa loob ng tinukoy na oras, isinasaalang -alang na ang network ay congested.
Bilang karagdagan sa window ng kasikipan, oras na upang talakayin ang algorithm ng control ng TCP. Ang TCP Congestion Control Algorithm ay binubuo ng tatlong pangunahing bahagi:
Mabagal na pagsisimula:Sa una, ang window ng kasikipan ng CWND ay medyo maliit, at pinatataas ng nagpadala ang window ng kasikipan nang mabilis upang mabilis na umangkop sa kapasidad ng network.
Pag -iwas sa kasikipan:Matapos ang window ng kasikipan ay lumampas sa isang tiyak na threshold, pinatataas ng nagpadala ang window ng kasikipan sa isang guhit na paraan upang mapabagal ang rate ng paglago ng window ng kasikipan at maiwasan ang labis na pag -load ng network.
Mabilis na Pagbawi:Kung naganap ang kasikipan, hinihiling ng nagpadala ang window ng kasikipan at pumapasok sa mabilis na estado ng pagbawi upang matukoy ang lokasyon ng pagbawi ng network sa pamamagitan ng natanggap na mga duplicate acks, at pagkatapos ay patuloy na madagdagan ang window ng kasikipan.
Mabagal na pagsisimula
Kapag naitatag ang isang koneksyon sa TCP, ang window window ng CWND ay una nang nakatakda sa isang minimum na halaga ng MSS (maximum na laki ng segment). Sa ganitong paraan, ang paunang rate ng pagpapadala ay tungkol sa MSS/RTT byte/segundo. Ang aktwal na magagamit na bandwidth ay karaniwang mas malaki kaysa sa MSS/RTT, kaya nais ng TCP na makahanap ng pinakamainam na rate ng pagpapadala, na maaaring makamit sa pamamagitan ng mabagal na pagsisimula.
Sa proseso ng mabagal na pagsisimula, ang halaga ng window ng kasikipan CWND ay masisimulan sa 1 MSS, at sa bawat oras na ang ipinadala na segment ng packet ay kinikilala, ang halaga ng CWND ay tataas ng isang MSS, iyon ay, ang halaga ng CWND ay magiging 2 mss. Pagkatapos nito, ang halaga ng CWND ay doble para sa bawat matagumpay na paghahatid ng isang segment ng packet, at iba pa. Ang tiyak na proseso ng paglago ay ipinapakita sa sumusunod na figure.
Gayunpaman, ang rate ng pagpapadala ay hindi palaging lumago; Ang paglago ay kailangang magtapos minsan. Kaya, kailan magtatapos ang pagtaas ng rate ng pagpapadala? Ang mabagal na pagsisimula ay karaniwang nagtatapos sa pagtaas ng rate ng pagpapadala sa isa sa maraming mga paraan:
Ang unang paraan ay ang kaso ng pagkawala ng packet sa panahon ng proseso ng pagpapadala ng mabagal na pagsisimula. Kapag naganap ang isang pagkawala ng packet, itinatakda ng TCP ang window ng Congestion ng Sender na CWND hanggang 1 at i-restart ang proseso ng mabagal na pagsisimula. Sa puntong ito, ang isang konsepto ng mabagal na pagsisimula ng threshold SSThresh ay ipinakilala, na ang paunang halaga ay kalahati ng halaga ng CWND na bumubuo ng pagkawala ng packet. Iyon ay, kapag napansin ang kasikipan, ang halaga ng ssthresh ay kalahati ng halaga ng window.
Ang pangalawang paraan ay upang direktang maiugnay ang halaga ng mabagal na pagsisimula ng threshold ssthresh. Dahil ang halaga ng ssthresh ay kalahati ng halaga ng window kapag napansin ang kasikipan, ang pagkawala ng packet ay maaaring mangyari sa bawat pagdodoble kapag ang CWND ay mas malaki kaysa sa SSThresh. Samakatuwid, pinakamahusay na itakda ang CWND sa SSTHRESH, na magiging sanhi ng TCP na lumipat sa mode ng control ng kasikipan at tapusin ang mabagal na pagsisimula.
Ang huling paraan na ang mabagal na pagsisimula ay maaaring magtapos ay kung ang tatlong kalabisan na mga ACK ay napansin, ang TCP ay nagsasagawa ng isang mabilis na pag -retransmission at pumapasok sa estado ng pagbawi. (Kung hindi malinaw kung bakit may tatlong mga packet ng ACK, ipapaliwanag ito nang hiwalay sa mekanismo ng pag -retra.)
Pag -iwas sa kasikipan
Kapag ang TCP ay pumapasok sa estado ng control ng kasikipan, ang CWND ay nakatakda sa kalahati ng kasikipan na threshold SSTHRESH. Nangangahulugan ito na ang halaga ng CWND ay hindi maaaring madoble sa tuwing natatanggap ang isang segment ng packet. Sa halip, ang isang medyo konserbatibong diskarte ay pinagtibay kung saan ang halaga ng CWND ay nadagdagan ng isang MSS lamang (maximum na haba ng segment ng packet) pagkatapos makumpleto ang bawat paghahatid. Halimbawa, kahit na ang 10 mga segment ng packet ay kinikilala, ang halaga ng CWND ay tataas lamang ng isang MSS. Ito ay isang linear na modelo ng paglago at mayroon din itong isang itaas na gapos sa paglago. Kapag naganap ang pagkawala ng packet, ang halaga ng CWND ay binago sa isang MSS, at ang halaga ng SSThresh ay nakatakda sa kalahati ng CWND. O hihinto din nito ang paglaki ng MSS kapag natanggap ang 3 kalabisan na mga tugon ng ACK. Kung ang tatlong kalabisan na mga acks ay natanggap pa rin matapos ang paghinto ng halaga ng CWND, ang halaga ng SSTHRESH ay naitala bilang kalahati ng halaga ng CWND at ang mabilis na estado ng pagbawi ay ipinasok.
Mabilis na paggaling
Sa mabilis na estado ng pagbawi, ang halaga ng window ng kasikipan na CWND ay nadagdagan ng isang MSS para sa bawat natanggap na kalabisan ng ACK, iyon ay, Ack na hindi dumating sa pagkakasunud -sunod. Ito ay upang magamit ang mga segment ng packet na matagumpay na nailipat sa network upang mapabuti ang kahusayan ng paghahatid hangga't maaari.
Kapag dumating ang isang ACK ng nawala na segment ng packet, binabawasan ng TCP ang halaga ng CWND at pagkatapos ay pumapasok sa estado ng pag -iwas sa kasikipan. Ito ay upang makontrol ang laki ng window ng kasikipan at maiwasan ang karagdagang pagtaas ng kasikipan ng network.
Kung ang isang oras ay nangyayari pagkatapos ng estado ng control ng kasikipan, ang kondisyon ng network ay nagiging mas seryoso at ang TCP ay lumilipat mula sa estado ng pag-iwas sa kasikipan hanggang sa mabagal na pagsisimula ng estado. Sa kasong ito, ang halaga ng window ng kasikipan na CWND ay nakatakda sa 1 MSS, ang pinakamataas na haba ng segment ng packet, at ang halaga ng mabagal na pagsisimula ng threshold SSTHRESH ay nakatakda sa kalahati ng CWND. Ang layunin nito ay upang muling madagdagan ang laki ng window ng kasikipan pagkatapos mabawi ng network upang balansehin ang rate ng paghahatid at ang antas ng kasikipan ng network.
Buod
Bilang isang maaasahang protocol ng transportasyon, ang TCP ay nagpapatupad ng maaasahang transportasyon sa pamamagitan ng numero ng pagkakasunud -sunod, pagkilala, kontrol ng retransmission, pamamahala ng koneksyon at kontrol sa window. Kabilang sa mga ito, kinokontrol ng mekanismo ng daloy ng daloy ang dami ng data na ipinadala ng nagpadala ayon sa aktwal na pagtanggap ng kapasidad ng tatanggap, na iniiwasan ang mga problema ng kasikipan ng network at pagkasira ng pagganap. Ang mekanismo ng control ng kasikipan ay maiiwasan ang paglitaw ng kasikipan ng network sa pamamagitan ng pag -aayos ng dami ng data na ipinadala ng nagpadala. Ang mga konsepto ng window ng kasikipan at pagpapadala ng window ay nauugnay sa bawat isa, at ang halaga ng data sa nagpadala ay kinokontrol sa pamamagitan ng pabago -bagong pag -aayos ng laki ng window ng kasikipan. Mabagal na pagsisimula, ang pag -iwas sa kasikipan at mabilis na pagbawi ay ang tatlong pangunahing bahagi ng algorithm ng control ng TCP congestion, na inaayos ang laki ng window ng kasikipan sa pamamagitan ng iba't ibang mga diskarte upang umangkop sa kapasidad at kasikipan ng degree ng network.
Sa susunod na seksyon, susuriin natin nang detalyado ang mekanismo ng pag -retransmission ng TCP. Ang mekanismo ng retransmission ay isang mahalagang bahagi ng TCP upang makamit ang maaasahang paghahatid. Tinitiyak nito ang maaasahang paghahatid ng data sa pamamagitan ng pag -retransmitting na nawala, nasira o naantala ang data. Ang prinsipyo ng pagpapatupad at diskarte ng mekanismo ng pag -retransmission ay ipakilala at masuri nang detalyado sa susunod na seksyon. Manatiling nakatutok!
Oras ng Mag-post: Peb-24-2025