Page 231 - Computer Network
P. 231
222 บทที่ 28. การป้องกันความคับคั่ง
เลื่อนขึ้นมาจนเป็นส่วนที่ 2 และ 1 ตามลำดับ เมื่อได้รับ ACK จากนั้นส่วนที่ 1 จะถูกกำจัดออกจากระบบไป
นอกจากการใช้ ACK เพื่อควบคุมการส่งข้อมูลแล้ว ขนาดของ Window size ใน TCP ไม่จำเป็นต้องเท่ากัน
ตลอดการเชื่อมต่อ โดยที่หากภาครับพบว่าตนไม่สามารถที่จะประมวลผลข้อมูลได้ทัน ภาครับสามารถที่จะลดขนาด
ของ Window ลง หรือแม้กระทั่งการลดขนาดลงจนกระทั่งเป็น 0 และรอให้มีการแจ้งจากภาครับเพื่อเปลี่ยนแปลง
ขนาดของ window อีกครั้ง
จากที่กล่าวไปแล้ว ในหัวข้อที่ ?? ถึง ?? เราอาจกล่าวได้ว่าค่า d คือค่าของ Round Trip Time (RTT) ของ
การส่งแพกเกต (การประมาณค่า RTT จะได้กล่าวโดยละเอียดต่อไปใน หัวข้อที่ 28.2) เราจะพบว่า หากต้องการ
ส่งโดยมีประสิทธิภาพสูงสุด เราควรให้ค่าของ Window size เท่ากับ แบนด์วิดท์คูณด้วยค่าของ RTT เรียกว่า
bandwidthdelay product การทำเช่นนี้เสมือนเราส่งข้อมูลอย่างต่อเนื่อง ทำให้เกิดการใช้งานของเน็ตเวิร์คสูงสุด
ดังนั้นหากสมมติอีเทอร์เน็ตความเร็ว 100 Mbps มีค่าของ RTT เป็น 5 มิลลิวินาที เราควรใช้ขนาดของ Window
size เป็น 64 kbytes (100 Mbps x 5 ms = 512 kbits หรือ 64 kbytes)
ใน Window XP เราสามารถแก้ไขขนาดของ Window size ที่ค่าของ TCPWindowSize ในระบบ Unix
book)
ทั่วไปสามารถแก้ไขที่ไฟล์ชื่อ etc/sysctl.conf อย่างไรก็ตามการเปลี่ยนแปลงค่าเหล่านี้ ท่านต้องแน่ใจว่าขนาด
ของบัฟเฟอร์มีเพียงพอไม่ทำให้ระบบล่ม
จากที่ผ่านมาจะเห็นว่าการใช้ window-based ในการควบคุมการส่งข้อมูลดูเหมือนจะเป็นวิธีที่ง่าย แต่อย่างไร
ก็ตามยังมีการขัดแย้งบางประการที่ยังต้องแก้ไข เช่นหากเราต้องการให้ทรูพุตของ TCP ให้มีค่าสูงสุด เราอาจ
(partial
ต้องการใช้ขนาดของ window size ที่สูง แต่การใช้ค่าของ window size ที่สูงไปจะทำให้มีความน่าจะเป็นของ
การสูญหายของเซกเมนต์สูงขึ้นด้วย เนื่องจากข้อจำกัดของเน็ตเวิร์คและความสามารถของภาครับ ดังนั้นการหาค่า
ของ window size ที่ดีที่สุด เพื่อให้ได้ค่าของทรูพุตที่ดี อีกทั้งไม่เกินข้อจำกัดของเน็ตเวิร์คและภาครับจึงเป็นอีกหนึ่ง
ปัญหาของ TCP[45]
only
28.1.1 TCP Window Size [45]
เพื่อป้องกันการที่จะทำให้ข้อมูลที่ส่งเกินกว่าภาครับจะสามารถทำงานได้ ใน RFC 793 ซึ่งถือเป็นข้อกำหนดแรกของ
KKU
การทำงานของ TCP ได้ออกแบบให้ TCP จะต้องไม่ส่งข้อมูลเกินกว่าบัฟเฟอร์ของภาครับที่มีอยู่ โดยการทำงานอยู่
บนพื้นฐานของ Receiver's Window (rwnd) รูปที่ 28.2 แสดงตัวอย่างการทำงานดังกล่าว
รูปที่ 28.2: การทำงานของ Receiver's Window (rwnd) [45]
จากรูปเมื่อเริ่มต้นการทำงาน ภาครับแจ้งไปยังภาคส่งเพื่อแสดงถึงจำนวนข้อมูลที่สามารถรับได้ สมมติว่าเริ่ม
ต้นภาครับให้ค่า rwnd เท่ากับ 8 จากนั้นภาคส่งจะเริ่มส่งจำนวนของข้อมูลที่ต้องการ โดยจะต้องไม่มากกว่าจำนวน

