โปรโตคอลที่เรียกว่า TCP Flow Control ถูกสร้างขึ้นเพื่อควบคุมการไหลของข้อมูลระหว่างผู้ใช้และเซิร์ฟเวอร์
ทำให้แน่ใจว่ามีแบนด์วิดท์จำนวนหนึ่งสำหรับการส่งและรับข้อมูลเพื่อให้การประมวลผลสามารถดำเนินการได้โดยไม่พบปัญหาร้ายแรงใดๆ
โปรโตคอล TCP ใช้วิธีที่เรียกว่าโปรโตคอลหน้าต่างบานเลื่อนเพื่อทำสิ่งนี้ให้สำเร็จ
เราจะเจาะลึกถึงการควบคุมโฟลว์ TCP ในส่วนนี้ รวมถึงวิธีการทำงานของมัน และที่สำคัญที่สุดคือ โปรโตคอลหน้าต่างบานเลื่อน
TCP Flow Control คืออะไร?
โปรโตคอล TCP ช่วยให้มั่นใจได้ว่าสามารถสร้างช่องทางการสื่อสารที่เชื่อถือได้ผ่านเครือข่ายที่คาดเดาไม่ได้
แพ็กเก็ตข้อมูลอาจสูญหาย มาถึงตามลำดับ สำรองข้อมูลในเครือข่าย หรือโอเวอร์โหลดบนโหนดที่รับ เนื่องจากมีการส่งจากโหนดหนึ่งไปยังอีกโหนดหนึ่ง
อย่างไรก็ตาม ในขณะที่พัฒนาแอปพลิเคชัน โดยทั่วไปแล้วเราไม่ต้องจัดการกับความซับซ้อนนี้ แต่เราเพียงแค่ส่งข้อมูลบางส่วนไปยังซ็อกเก็ต และ TCP รับรองว่าแพ็กเก็ตจะถูกส่งไปยังโหนดผู้รับได้สำเร็จ.
Flow Control เป็นคุณสมบัติเพิ่มเติมที่สำคัญที่ TCP นำเสนอ
ด้วยการใช้การควบคุมโฟลว์ TCP จะทำให้แน่ใจว่าผู้ส่งไม่ได้ส่งแพ็กเก็ตของผู้รับมากเกินไปในครั้งเดียว
Transfer Control Protocol – Flow Control ทำงานอย่างไร
ซึ่งมักเกิดขึ้นเมื่อเราต้องการสื่อสารข้อมูลผ่านเครือข่าย
แอปพลิเคชันผู้ส่งส่งข้อมูลไปยังซ็อกเก็ต ชั้นการขนส่ง (ในกรณีนี้คือ TCP) บรรจุข้อมูลนี้ในเซ็กเมนต์ และเลเยอร์เครือข่าย (เช่น IP) จะส่งแพ็กเก็ตนี้ไปยังโหนดรับโดยเส้นทางบางเส้นทาง
เลเยอร์เครือข่ายจะส่งข้อมูลนี้ไปยัง TCP เมื่อสิ้นสุดการสนทนา และ TCP จะทำให้พร้อมใช้งานสำหรับแอปพลิเคชันที่รับเป็นข้อมูลซ้ำกันที่ให้มา
TCP จะไม่ส่งแพ็กเก็ตที่ไม่เป็นระเบียบ และจะรอการส่งข้อมูลใหม่ในกรณีที่ตรวจพบช่องว่างของสตรีมไบต์
นี่คือสิ่งที่เราจะเห็นถ้าเราซูมเข้า
ทั้งบัฟเฟอร์ส่งและรับบน TCP ใช้เพื่อเก็บข้อมูลที่ต้องส่งและรับตามลำดับ
ข้อมูลจากบัฟเฟอร์รับจะถูกอ่านโดยแอปพลิเคชันเมื่อมีการจัดเตรียม
ตรวจสอบให้แน่ใจว่าเราไม่ได้ส่งแพ็กเก็ตเพิ่มเติมในขณะที่บัฟเฟอร์การรับของผู้รับเต็มแล้วเป็นเป้าหมายหลักของการควบคุมโฟลว์ เนื่องจากการทำเช่นนั้นจะบังคับให้ผู้รับทิ้งแพ็กเก็ตเพิ่มเติมที่ไม่สามารถจัดการได้
ผู้รับจะประกาศหน้าต่างการรับหรือพื้นที่ว่างในบัฟเฟอร์การรับ เพื่อจำกัดปริมาณข้อมูลที่ TCP สามารถถ่ายโอนได้
โปรโตคอลหน้าต่างบานเลื่อน
โปรโตคอลหน้าต่างบานเลื่อนใน TCP เป็นหนึ่งในวิธีการควบคุมการไหลที่ใช้กันอย่างแพร่หลายมากที่สุด เป็นโพรซีเดอร์ขนาดตัวแปรแบบไบต์
ในแนวทางนี้ ผู้รับจะส่งหน้าต่างผู้รับให้ผู้ส่งทันทีที่ผู้ส่งและผู้รับเชื่อมต่อกัน
ขนาดของบัฟเฟอร์ปัจจุบันของผู้รับเรียกว่าหน้าต่างตัวรับ
จำนวนข้อมูลที่สามารถส่งต่อไปโดยไม่ต้องรับทราบจะถูกคำนวณโดย TCP ตามหน้าต่างตัวรับที่มีอยู่
อย่างไรก็ตาม TCP จะหยุดการถ่ายโอนข้อมูลหากขนาดหน้าต่างตัวรับเป็น 0 และรอให้เพิ่มขนาด
ขนาดของหน้าต่างตัวรับเป็นส่วนประกอบของเฟรม TCP
ขนาดสูงสุดของหน้าต่างคือ 65,535 ไบต์ เนื่องจากมีขนาดหน้าต่าง 16 บิต
ขนาดของหน้าต่างจะถูกเลือกโดยผู้รับ ในแต่ละข้อความตอบรับ ผู้รับจะส่งขนาดของหน้าต่างตัวรับที่มีอยู่ในปัจจุบัน
กระบวนการของโปรโตคอลหน้าต่างบานเลื่อน
เมื่อใช้เทคนิคโปรโตคอลหน้าต่างบานเลื่อน บัฟเฟอร์สองตัวจะถูกสร้างขึ้นเมื่อผู้ส่งและผู้รับกำลังเชื่อมต่อ
บัฟเฟอร์ทั้งสองนี้ถูกแบ่งออกเป็นสองกลุ่ม: หน้าต่างการส่งซึ่งเป็นของผู้ส่ง และหน้าต่างการรับซึ่งเป็นของผู้รับ
หน้าต่างการรับจะคืนพื้นที่บัฟเฟอร์การรับที่เหลือเมื่อผู้ส่งส่งข้อมูลไปยังผู้รับ
ด้วยเหตุนี้ ผู้ส่งจึงจำกัดปริมาณข้อมูลที่สามารถใส่ลงในบัฟเฟอร์การรับได้
หน้าต่างการส่งในตัวอย่างด้านบนจะส่งข้อมูลไปยังหน้าต่างการรับ
หลังจากได้รับข้อมูล หน้าต่างรับจะส่งการตอบรับ จากนั้นหน้าต่างส่งจะส่งกรอบข้อมูลใหม่
คราวนี้แม้ว่าหน้าต่างการรับจะส่งข้อความเพิ่มเติมโดยระบุว่าหน่วยความจำที่มีอยู่ถูกเติมนอกเหนือจากการตอบรับที่ได้รับ
หน้าต่างการส่งจะหยุดการรับส่งข้อมูลชั่วคราวจนกว่าจะได้รับการยืนยันจากหน้าต่างรับว่ามีการเว้นพื้นที่ว่างแล้ว ซึ่งจะทำให้สามารถส่งข้อมูลต่อได้
สรุป
โดยสรุป ชั้นการเชื่อมต่อข้อมูลและชั้นการขนส่งมีหน้าที่ในการจัดการข้อกังวลด้านการควบคุมการไหล
วัตถุประสงค์พื้นฐานของกลไกการควบคุมการไหลคือการหยุดเครื่องรับไม่ให้มีภาระมากเกินไปกับข้อมูลจากผู้ส่งที่ส่งเร็วกว่า
แม้ว่าข้อมูลที่กำลังถ่ายโอนโดยผู้ส่งจะปราศจากข้อผิดพลาดและถูกส่งในอัตราที่เร็วกว่าด้วยเครื่องที่ทรงพลัง แต่ก็เป็นไปได้ที่เครื่องรับปลายทางที่ช้ากว่าจะไม่สามารถจัดการกับอัตราข้อมูลที่เร็วขึ้นได้และจะสูญเสียข้อมูลบางส่วน
เขียนความเห็น