การควบคุมการไหลของข้อมูลด้วยวิธีการเลื่อนหน้าต่าง (Sliding-Window Flow Control)
วิธีการควบคุมการไหลของข้อมูลแบบเลื่อนหน้าต่างนี้ ฝั่งส่งสามารถส่งเฟรมข้อมูลหลายๆ เฟรมก่อนที่จะได้รับการตอบรับ กล่าวคือ ฝั่งรับจะมีการตอบรับกลับไปเพียงบางเฟรมเท่านั้น
ดังนั้นการตอบรับ ACK ในหนึ่งครั้ง จะหมายถึงการได้รับเฟรมมาแล้วหลายเฟรมนั่นเอง ซึ่งเป็นวิธีที่มีประสิทธิภาพสูงกว่าแบบแรก
พิจารณาตัวอย่างจากรูปที่ 3 สมมติว่ากำหนดให้เลขแสดงลำดับมีขนาด 3 บิต จึงทำให้ขนาดของหน้าต่างสามารถบรรจุเฟรมได้สูงสุด 7 เฟรมด้วยกัน ในช่างเริ่มต้นนี้ ทั้งสถานี A และ B
ได้ถูกกำหนดให้ส่งผ่านเฟรมทั้ง 7 โดยเริ่มจากเฟรม 0 (F0) หลังจากที่สถานี A ส่งเฟรม F0,F1 และ F2 ไปโดยไม่ได้รับการตอบรับ Acknowledge สถานี A สามรถส่งเฟรมทั้งสี่ได้ด้วยการเริ่มต้นที่เฟรม F3
แต่ในขณะนั้นสถานี B ได้มีการตอบรับรหัส RR (Receive Ready) หมายเลข 3 กลับมา ซึ่งหมายความว่า ฉันได้รับเฟรมทั้งหมดที่ส่งมาแล้วถึง F2 และฉันพร้อมที่จะเฟรมตั้งแต่ F3 ถัดไปอีกเจ็ดเฟรม ครั้นเมื่อสถานี A
ได้รับ Acknowledge นี้แล้ว สถานี A ก็จะเลื่อนหน้าต่าง โดยเริ่มต้นที่เฟรมหมายเลข 3 ถัดไปจนครบเจ็ดเฟรม (F3, F4, F5, F6, F7, F0, F1) จากนั้นก็จะเคลียร์บัฟเฟอร์ทิ้ง เนื่องจากไม่จำเป็นต้องเก็บเฟรม F0, F1
และเฟรม F2 อีกต่อไป และสถานี A ได้ส่งเฟรม F3, F4, F5 และ F6 ไปอย่างรวดเร็ว ซึ่งเป็นช่วงเวลาที่สถานี B ได้รับเฟรม F3 และมีการตอบรับ RR4 กลับมาเพื่อบอกว่า ฉันพร้อมที่จะรับเฟรมหมายเลย 4
และถัดไปอีกเจ็ดเฟรม (F4,F5,F6,F7,F0,F1,F2) ซึ่งช่วงเวลาที่มีการตอบรับ RR4 กลับมานั้น สถานี A ได้มีการส่งเฟรม F4, F5 และ F6 ไปก่อนแล้ว ดังนั้นสถานี A ก็เพียงเปิดหน้าต่างเพื่อส่ง 4
เฟรมถัดไปโดยเริ่มต้นจากเฟรม F7
|