กลับไปหน้าบทความ

อ่าน 1 นาที

ไม่มีชื่อบทความ

การยืนยันการรับข้อมูลล่าช้า (TCP delayed acknowledgment) เป็นเทคนิคที่ใช้โดยการใช้งาน โปรโตคอลควบคุมการส่งข้อมูล (Transmission Control Protocol) บางระบบ เพื่อปรับปรุง...

การตอบรับแบบหน่วงเวลาของ TCP

การยืนยันการรับข้อมูลล่าช้า (TCP delayed acknowledgment)เป็นเทคนิคที่ใช้โดยการใช้งานโปรโตคอลควบคุมการส่งข้อมูล (Transmission Control Protocol) บางระบบ เพื่อปรับปรุงประสิทธิภาพของเครือข่ายโดยหลักการแล้ว การตอบสนอง ACK หลายครั้ง อาจถูกรวมเข้าเป็นการตอบสนองเดียว ซึ่งช่วยลดภาระของโปรโตคอล อย่างไรก็ตาม ในบางสถานการณ์ เทคนิคนี้อาจลดประสิทธิภาพของแอปพลิเคชันได้

วิธีการและข้อดี

ตามที่อธิบายไว้ในRFC 1122โฮสต์อาจหน่วงเวลาการส่งการตอบกลับ ACK ได้นานถึง 500 มิลลิวินาที นอกจากนี้ สำหรับสตรีมของเซ็กเมนต์ขาเข้าขนาดเต็ม ควรส่งการตอบกลับ ACK สำหรับทุกๆ เซ็กเมนต์ที่สอง RFC 1122 อ้างอิงถึงRFC 813ของปี 1982 เป็นคำอธิบายดั้งเดิมของ ACK ที่หน่วงเวลา[ 1 ]  

ACK ที่ล่าช้าสามารถให้โอกาสแอปพลิเคชันในการอัปเดตหน้าต่างรับ TCPและอาจส่งการตอบกลับทันทีพร้อมกับ ACK สำหรับโปรโตคอลบางอย่าง เช่นTelnet ACK ที่ล่าช้าสามารถลดจำนวนการตอบกลับที่ส่งโดยเซิร์ฟเวอร์ได้ถึง 3 เท่า โดยการรวม ACK การอัปเดตหน้าต่าง และข้อมูลการตอบกลับเข้าไว้ในส่วนเดียว[ 1 ]

ปัญหา

เวลารอเพิ่มเติมที่เกิดจาก ACK ที่ล่าช้าอาจทำให้เกิดความล่าช้าเพิ่มเติมเมื่อโต้ตอบกับแอปพลิเคชันและการกำหนดค่าบางอย่าง หากฝ่ายส่งใช้อัลกอริทึมของ Nagle ข้อมูลจะถูกจัดคิวโดยผู้ส่งจนกว่าจะได้รับ ACK หากผู้ส่งไม่ได้ส่งข้อมูลมากพอที่จะเติม ขนาดส่วนสูงสุด (ตัวอย่างเช่น หากทำการเขียนขนาดเล็กสองครั้งตามด้วยการอ่านแบบบล็อก) การถ่ายโอนจะหยุดชั่วคราวจนกว่าจะหมดเวลาหน่วง ACK Linux 2.4.4+ รองรับTCP_QUICKACKตัวเลือกซ็อกเก็ตที่ปิดใช้งาน ACK ที่ล่าช้า[ 2 ]

ตัวอย่างเช่น ลองพิจารณาสถานการณ์ที่บ็อบกำลังส่งข้อมูลไปยังแครอล เลเยอร์ซ็อกเก็ตของบ็อบมีข้อมูลเหลืออยู่ไม่ถึงหนึ่งแพ็กเก็ตที่สมบูรณ์ ตามอัลกอริทึมของเนเกิล ข้อมูลจะไม่ถูกส่งจนกว่าเขาจะได้รับการยืนยัน (ACK) สำหรับข้อมูลที่ส่งไปแล้ว ในขณะเดียวกัน เลเยอร์แอปพลิเคชัน ของแครอล จะไม่ส่งการตอบกลับจนกว่าจะได้รับข้อมูลทั้งหมด หากแครอลใช้การยืนยันแบบหน่วงเวลา (delayed ACKs) เลเยอร์ซ็อกเก็ตของเธอจะไม่ส่งการยืนยันจนกว่าจะถึงเวลาหมดเวลา (timeout)

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

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ไม่มีชื่อบทความ

การยืนยันการรับข้อมูลล่าช้า (TCP delayed acknowledgment) เป็นเทคนิคที่ใช้โดยการใช้งาน โปรโตคอลควบคุมการส่งข้อมูล (Transmission Control Protocol) บางระบบ เพื่อปรับปรุง...

วิธีการและข้อดี

ตามที่อธิบายไว้ใน RFC 1122โฮสต์อาจหน่วงเวลาการส่งการตอบกลับ ACK ได้นานถึง 500 มิลลิวินาที นอกจากนี้ สำหรับสตรีมของเซ็กเมนต์ขาเข้าขนาดเต็ม ควรส่งการตอบกลับ ACK สำหรับทุกๆ เซ็กเมนต์ที่สอง RFC 1122 อ้างอิงถึง RFC 813ของปี 1982 เป็นคำอธิบายดั้งเดิมของ ACK...

ปัญหา

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