Ang Nagle algorithm , na pinangalanang pagkatapos ng engineer na si John Nagle, ay idinisenyo upang bawasan ang kasikipan ng network na dulot ng "mga maliliit na packet problem" sa mga aplikasyon ng TCP . Nagsimula ang pagpapatupad ng UNIX gamit ang algorithm ng Nagle noong dekada 1980, at nananatili itong karaniwang tampok ng TCP ngayon.
Paano gumagana ang Nagle Algorithm
Ang algorithm ng Nagle ay nagpoproseso ng data sa pagpapadala ng bahagi ng mga aplikasyon ng TCP sa pamamagitan ng isang pamamaraan na tinatawag na nagling . Nakikita nito ang mga maliliit na mensahe at naipon ang mga ito sa mas malaking mga packet ng TCP bago magpadala ng data sa kabuuan ng kawad, at sa gayon pag-iwas sa henerasyon ng mga hindi kailangang malaking bilang ng mga maliliit na packet. Ang teknikal na detalye para sa algorithm ng Nagle ay na-publish noong 1984 bilang RFC 896. Ang mga desisyon para sa maraming data na maipon at kung gaano katagal maghintay sa pagitan ng pagpapadala ay kritikal sa pangkalahatang pagganap nito.
Maaaring mas mahusay na magagamit ang Nagling ang bandwidth ng isang koneksyon sa network sa gastos ng pagdaragdag ng mga pagkaantala ( latency ). Ang isang halimbawa na inilarawan sa RFC 896 ay naglalarawan ng mga potensyal na bandwidth na benepisyo at ang dahilan para sa paglikha nito:
- Ang TCP application na pumipigil sa mga keystroke ng keyboard at gustong makipag-usap sa bawat character na nai-type sa isang receiver, ay maaaring bumuo ng isang serye ng mga mensahe na naglalaman ng 1 byte ng data.
- Bago maipadala ang mga mensaheng ito sa buong network, ang bawat isa ay dapat na nakabalot kasama ang impormasyon ng header ng TCP ayon sa iniaatas ng TCP / IP. Ang bawat header ay may sukat sa pagitan ng 20 at 60 na byte.
- Kung walang nagling, ang application na ito ng halimbawa ay bubuo ng mga mensahe sa network na binubuo ng 95% o higit pang impormasyon ng header (hindi bababa sa 20 sa 21 bytes) at 5% o mas mababa aktwal na data mula sa keyboard ng nagpadala. Gamit ang algorithm ng Nagle, ang parehong data ay maaaring ihahatid gamit ang maraming mas kaunting mga mensahe at may 95% ng nilalaman na pagiging impormasyon ng keyboard - isang napakalaking savings ng bandwidth.
Kinokontrol ng mga application ang kanilang paggamit ng algorithm ng Nagle gamit ang opsyon sa TCP_NODELAY programming module. Ang lahat ng mga sistema ng Windows, Linux, at Java ay karaniwang nagagamit ang Nagle sa pamamagitan ng default, kaya ang mga application na isinulat para sa mga environment na kailangan upang tukuyin ang TCP_NODELAY kapag gustong lumipat ang algorithm.
Mga Limitasyon
Ang algorithm ng Nagle ay magagamit lamang sa TCP. Ang iba pang mga protocol kabilang ang UDP ay hindi sinusuportahan ito.
Ang mga aplikasyon ng TCP na nangangailangan ng mabilis na pagtugon sa network, tulad ng pagtawag sa telepono sa internet o mga laro ng tagabaril ng unang tao, ay maaaring hindi gumana nang maayos kapag nagagamit ang Nagle. Ang mga pagkaantala na sanhi habang ang algorithm ay tumatagal ng dagdag na oras upang magtipon ng mas maliliit na chunks ng data magkasama ay maaaring mag-trigger ng kapansin-pansin lag visual na sa isang screen o sa isang digital audio stream. Ang mga application na ito ay karaniwang hindi paganahin ang Nagle.
Ang algorithm na ito ay orihinal na binuo sa isang pagkakataon kapag sinusuportahan ng mga network ng computer ang mas kaunting bandwidth kaysa sa ginagawa nila ngayon. Ang halimbawa na inilarawan sa itaas ay batay sa mga karanasan ni John Nagle sa Ford Aerospace noong unang bahagi ng dekada ng 1980, kung saan ang pagling ng tradeoffs sa kanilang mabagal, mabigat na na-load na long distance network ay may mabuting kahulugan. May mga mas kaunting mga sitwasyon kung saan ang mga application ng network ay maaaring makinabang mula sa kanyang algorithm ngayon.