ขณะนี้ฉันกำลังเรียนรู้เกี่ยวกับ TCP โดยเฉพาะด้านหน้าต่างการรับ ฉันได้อ่านจากหลายแหล่งเกี่ยวกับเรื่องนี้ และมีบางอย่างที่ฉันต้องการให้แน่ใจว่าฉันเข้าใจ
จากที่ได้เรียนมา เครื่องรับ โฆษณา "หน้าต่างรับ" ซึ่งก็คือ - และนี่คือจุดที่ฉันสับสน - จำนวนไบต์ที่ผู้ส่งได้รับอนุญาตให้ส่งโดยไม่ได้รับการยอมรับ หรืออีกนัยหนึ่งคือ ข้อมูลในเที่ยวบิน.
ทีนี้ ถ้าลองคิดดู เป้าหมายหลักของเราในการควบคุมโฟลว์คือการทำให้แน่ใจว่าผู้ส่งจะไม่ส่งเกินกว่าที่ผู้รับจะประมวลผลได้ นั่นคือ เราต้องการป้องกันสถานการณ์ที่ผู้ส่งส่งข้อมูลที่ผู้รับ คงต้องทิ้งเพราะไม่มีที่เก็บ !
ด้วยตรรกะนี้ฉันเชื่อว่าหน้าต่างรับควรสอดคล้องกับขนาดของบัฟเฟอร์รับ (ไม่รู้ว่าเหมือนกันหรือไม่ แต่ขนาดหน้าต่างควรเป็นอนุพันธ์ของบัฟเฟอร์รับ แต่อย่างใด) และ
เหตุผลที่เราจำกัดการ ข้อมูลในเที่ยวบิน ส่งโดยผู้ส่งคือ - หากผู้ส่งจะส่งมากกว่าขนาดหน้าต่าง (ซึ่งเป็นอนุพันธ์ของบัฟเฟอร์รับอีกครั้ง) และผู้รับไม่ยอมรับข้อมูลบางส่วน (อัปเดตขนาดหน้าต่าง) ที่นั่น อาจ เป็นสถานการณ์ที่ปลายทางรับข้อมูลไม่ทัน - กล่าวคือ จะได้รับข้อมูลเร็วกว่าที่แอปพลิเคชันใช้ประมวลผลได้ ส่งผลให้เซ็กเมนต์ถูกละทิ้ง (หวังว่าจะชัดเจน)
แต่การอ่าน โพสต์นี้, @DavidShwartz กำลังบอกว่าเป้าหมายของข้อมูลในการบินไม่ใช่เพื่อหลีกเลี่ยงการเติมบัฟเฟอร์มากเกินไป แต่คือการ จัดการกับความล่าช้าที่แนะนำโดยช่องทางการสื่อสาร. ซึ่งฉันก็ไม่ค่อยเข้าใจนัก
ปัญหาคือทุกแหล่งที่พูดถึงเรื่องนี้ไม่ได้อธิบายความเชื่อมโยงระหว่างจุดมุ่งหมายทั่วไปของการควบคุมการไหลกับสิ่งที่มี ข้อมูลในเที่ยวบิน.
ใครช่วยอธิบายรายละเอียดมากกว่านี้ได้ไหม