Muhandis Jon Nagl nomi bilan atalgan Nagle algoritmi TCP ilovalari bilan bogʻliq kichik paketli muammolar tufayli tarmoq tiqilib qolishini kamaytirish uchun ishlab chiqilgan. UNIX ilovalari 1980-yillarda Nagle algoritmidan foydalana boshlagan va u bugungi kunda TCP ning standart xususiyati boʻlib qolmoqda.
Nagle algoritmi qanday ishlaydi
Nagle algoritmi TCP ilovalarining joʻnatish tomonidagi maʼlumotlarni nagling deb nomlangan usul bilan qayta ishlaydi. U kichik o'lchamdagi xabarlarni aniqlaydi va ma'lumotlarni sim orqali yuborishdan oldin ularni kattaroq TCP paketlariga to'playdi. Bu jarayon keraksiz ko'p sonli kichik paketlarni yaratishni oldini oladi.
Nagle algoritmining texnik spetsifikatsiyasi 1984-yilda RFC 896 sifatida nashr etilgan. Qancha maʼlumot toʻplanishi va joʻnatishlar oʻrtasida qancha kutish kerakligi haqidagi qarorlar uning umumiy ishlashi uchun juda muhim.
Naglingning foydalari
Nagling kechikishlar yoki kechikishlar qoʻshish hisobiga tarmoq ulanishining tarmoqli kengligidan samarali foydalanishi mumkin. RFC 896 da tasvirlangan misolda potentsial tarmoqli kengligi afzalliklari va uning yaratilish sababi ko'rsatilgan:
- Agar klaviatura bosishlarini ushlab turuvchi TCP ilovasi yozilayotgan har bir belgini qabul qiluvchiga xabar qilmoqchi boʻlsa, u har biri 1 bayt maʼlumotni oʻz ichiga olgan bir qator xabarlarni yaratishi mumkin.
- Bu xabarlar tarmoq boʻylab joʻnatilishidan oldin har bir xabar TCP/IP talab qilganidek, TCP sarlavhasi maʼlumotlari bilan paketlangan boʻlishi kerak. Har bir sarlavhaning hajmi 20 va 60 bayt orasida.
- Bekor qilmasdan, ushbu misol ilovasi joʻnatuvchining klaviaturasidan 95 foiz yoki undan ortiq sarlavha maʼlumotlaridan (21 baytdan kamida 20 tasi) va 5 foiz yoki undan kam haqiqiy maʼlumotlardan iborat tarmoq xabarlarini yaratadi. Nagle algoritmi yordamida bir xil maʼlumotlar kamroq xabarlar yordamida yetkazilishi mumkin, bu esa oʻtkazish qobiliyatini katta tejashga olib keladi.
Ilovalar TCP_NODELA soket dasturlash opsiyasi bilan Nagle algoritmidan foydalanishini nazorat qiladi. Windows, Linux va Java tizimlari odatda sukut bo'yicha Nagle-ni yoqadi. Shuning uchun, ushbu muhitlar uchun yozilgan ilovalar algoritmni o'chirish uchun TCP_NODELAY ni ko'rsatishi kerak.
Cheklashlar
Nagle yoqilgan boʻlsa, video qoʻngʻiroqlar va onlayn oʻyinlar kabi tezkor tarmoq javobini talab qiluvchi ilovalar yaxshi ishlamasligi mumkin. Algoritm kichikroq ma'lumotlar bo'laklarini yig'ish uchun qo'shimcha vaqt talab qilganda yuzaga kelgan kechikishlar ekranda yoki raqamli audio oqimida sezilarli kechikishlarni keltirib chiqarishi mumkin. Bunday ilovalar odatda Nagle-ni o'chirib qo'yadi.
Bu algoritm dastlab kompyuter tarmoqlari bugungi kunga qaraganda kamroq oʻtkazish qobiliyatini qoʻllab-quvvatlagan paytda ishlab chiqilgan. Yuqorida tavsiflangan misol 1980-yillarning boshlarida Jon Naglning Ford Aerospace kompaniyasidagi tajribasiga asoslangan bo'lib, bu erda Fordning sekin, og'ir yuklangan, uzoq masofali tarmog'i bo'yicha o'zaro kelishuvlar yaxshi ma'noga ega edi. Bugungi kunda uning algoritmidan tarmoq ilovalari foydalanishi mumkin boʻlgan holatlar tobora kamayib bormoqda.
Nagle algoritmidan faqat TCP bilan foydalanish mumkin. UDP kabi boshqa protokollar uni qoʻllab-quvvatlamaydi.