อัลกอริทึม Nagle สำหรับ TCP Network Communication

อัลกอริทึมของ Nagle ได้ รับการตั้งชื่อตามวิศวกร John Nagle ได้รับการออกแบบมาเพื่อลดความแออัดของเครือข่ายที่เกิดจาก "ปัญหา packet เล็ก ๆ " กับการ ใช้งาน TCP การใช้งานของ UNIX เริ่มใช้อัลกอริทึมของ Nagle ในทศวรรษที่ 1980 และยังคงเป็นคุณลักษณะมาตรฐานของ TCP ในปัจจุบัน

ขั้นตอนวิธีการ Nagle ทำงานอย่างไร

อัลกอริธึมของ Nagle ประมวลผลข้อมูลเกี่ยวกับด้านการส่งข้อมูลของแอพพลิเคชัน TCP ด้วยวิธีการที่เรียกว่า nagling จะตรวจจับข้อความขนาดเล็กและสะสมไว้ในแพ็คเก็ต TCP ขนาดใหญ่ก่อนที่จะส่งข้อมูลไปทั่วทั้งสายเพื่อหลีกเลี่ยงการสร้างแพ็คเกตขนาดใหญ่จำนวนมากโดยไม่จำเป็น ข้อกำหนดทางเทคนิคสำหรับอัลกอริทึมของ Nagle ได้รับการเผยแพร่ในปี 1984 ในชื่อ RFC 896 การตัดสินใจสำหรับข้อมูลจำนวนมากที่จะสะสมและระยะเวลาในการรอระหว่างการส่งมีความสำคัญต่อประสิทธิภาพโดยรวม

Nagling สามารถใช้ แบนด์วิธ ของการเชื่อมต่อเครือข่ายได้อย่างมีประสิทธิภาพมากขึ้นโดยมีค่าใช้จ่ายในการเพิ่มความล่าช้า ( latency ) ตัวอย่างที่อธิบายไว้ใน RFC 896 แสดงให้เห็นถึงประโยชน์ของแบนด์วิธที่มีศักยภาพและเหตุผลในการสร้าง:

แอ็พพลิเคชันควบคุมการใช้อัลกอริทึม Nagle ด้วยตัวเลือกการเขียนโปรแกรม ซ็อกเก็ต TCP_NODELAY ระบบปฏิบัติการ Windows, Linux และ Java ทั้งหมดจะเปิดใช้งาน Nagle ตามค่าเริ่มต้นดังนั้นโปรแกรมที่เขียนขึ้นสำหรับสภาพแวดล้อมเหล่านั้นต้องระบุ TCP_NODELAY เมื่อต้องการปิดอัลกอริธึม

ข้อ จำกัด

อัลกอริทึมของ Nagle ใช้งานได้เฉพาะกับ TCP เท่านั้น โปรโตคอลอื่น ๆ รวมทั้ง UDP ไม่รองรับ

แอ็พพลิเคชัน TCP ที่ต้องการการตอบสนองเครือข่ายที่รวดเร็วเช่น โทรศัพท์ผ่านอินเทอร์เน็ต หรือเกมยิงคนแรกอาจไม่ทำงานได้ดีเมื่อเปิดใช้งาน Nagle ความล่าช้าที่เกิดขึ้นในขณะที่อัลกอริทึมต้องใช้เวลาเพิ่มขึ้นในการประกอบชิ้นส่วนข้อมูลที่มีขนาดเล็กเข้าด้วยกันจึงทำให้สามารถมองเห็นได้ชัดเจนบนหน้าจอหรือในสตรีมเสียงแบบดิจิตอล แอ็พพลิเคชันเหล่านี้มักจะปิดใช้งาน Nagle

อัลกอริทึมนี้ได้รับการพัฒนาขึ้นในช่วงเวลาที่เครือข่ายคอมพิวเตอร์สนับสนุนแบนด์วิธที่น้อยกว่าที่ทำในปัจจุบัน ตัวอย่างที่ได้กล่าวมาข้างต้นเป็นไปตามประสบการณ์ของ John Nagle ที่ Ford Aerospace ในช่วงต้นทศวรรษ 1980 ซึ่งการถกเถียงกันอย่างกระทันหันบนเครือข่ายระยะทางที่ใช้งานได้ยาวนานและหนักหน่วงของพวกเขาทำให้เกิดความรู้สึกที่ดี มีสถานการณ์น้อยลงที่แอพพลิเคชันเครือข่ายจะได้รับประโยชน์จากอัลกอริธึมของเขาในปัจจุบัน