Algoritma Nagle , dinamakan selepas jurutera John Nagle, direka untuk mengurangkan kesesakan rangkaian yang disebabkan oleh "masalah paket kecil" dengan aplikasi TCP . Pelaksanaan UNIX mula menggunakan algoritma Nagle pada tahun 1980-an, dan ia tetap menjadi ciri piawai TCP hari ini.
Bagaimana Algoritma Nagle berfungsi
Algoritma Nagle memproses data pada sisi penghantaran aplikasi TCP dengan kaedah yang disebut nagling . Ia mengesan mesej bersaiz kecil dan menumpuknya ke dalam paket TCP yang lebih besar sebelum menghantar data ke seluruh wayar, dengan itu mengelakkan penjanaan bilangan kecil paket kecil yang tidak perlu. Spesifikasi teknikal untuk algoritma Nagle telah diterbitkan pada tahun 1984 sebagai RFC 896. Keputusan untuk banyak data yang terkumpul dan berapa lama menunggu di antara penghantaran adalah penting untuk prestasi keseluruhannya.
Nagling boleh menggunakan jalur lebar sambungan rangkaian dengan cekap dengan menambah penangguhan ( latency ). Contoh yang diterangkan dalam RFC 896 menggambarkan manfaat jalur lebar yang berpotensi dan sebab penciptaannya:
- Aplikasi TCP yang memintas ketukan kekunci keyboard dan mahu berkomunikasi setiap watak yang ditaip kepada penerima, boleh menghasilkan satu siri mesej yang masing-masing mengandungi 1 bait data.
- Sebelum mesej-mesej ini dapat dihantar ke seluruh rangkaian, setiap satu mesti dikemas bersama dengan maklumat header TCP seperti yang diperlukan oleh TCP / IP. Setiap header berukuran antara 20 hingga 60 bait.
- Tanpa permohonan, aplikasi contoh ini akan menjana mesej rangkaian yang mengandungi 95% atau lebih maklumat header (sekurang-kurangnya 20 dari 21 bait) dan 5% atau kurang data sebenar dari papan kekunci penghantar. Dengan menggunakan algoritma Nagle, data yang sama boleh dihantar dengan menggunakan lebih banyak mesej dan mempunyai 95% kandungan yang menjadi maklumat keyboard - penjimatan lebar jalur yang sangat besar.
Aplikasi mengawal penggunaan algoritma Nagle dengan pilihan pengaturcapan TCP_NODELAY. Sistem Windows, Linux, dan Java biasanya membolehkan Nagle secara lalai, jadi aplikasi yang ditulis untuk persekitaran tersebut perlu menentukan TCP_NODELAY apabila hendak mematikan algoritma.
Had
Algoritma Nagle hanya boleh digunakan dengan TCP. Protokol lain termasuk UDP tidak menyokongnya.
Aplikasi TCP yang memerlukan sambutan rangkaian cepat, seperti panggilan telefon Internet atau permainan penembak orang pertama, mungkin tidak berfungsi dengan baik apabila Nagle diaktifkan. Kelewatan itu disebabkan sementara algoritma mengambil masa tambahan untuk memasang lebih banyak data kecil bersama-sama boleh mencetuskan ketinggian visual secara visual pada skrin atau dalam aliran audio digital. Aplikasi ini biasanya melumpuhkan Nagle.
Algoritma ini pada asalnya dibangunkan pada masa rangkaian komputer menyokong lebar jalur yang jauh lebih sedikit dari yang mereka lakukan hari ini. Contoh yang diterangkan di atas adalah berdasarkan pengalaman John Nagle di Ford Aerospace pada awal tahun 1980-an, di mana keruntuhan perdagangan di rangkaian jarak jauh yang lambat dan banyak dimakan masuk akal. Terdapat keadaan yang semakin sedikit di mana aplikasi rangkaian boleh mendapat manfaat daripada algoritmanya hari ini.