Silly Window Syndrome คืออะไร - คำอธิบายและการป้องกัน

ข้อมูล(Data)ถูกถ่ายโอนผ่านเครือข่ายและอินเทอร์เน็ต(Internet)โดยใช้ โปรโตคอล TCP TCP/IP ProtocolTCP/IPนั้นไม่สมบูรณ์แบบ แต่นำไปใช้ได้ง่ายกว่าเมื่อเปรียบเทียบกับโปรโตคอลอื่นที่มีทฤษฎีสำหรับการสื่อสารข้อมูล... เช่นโมเดลISO OSI เช่นเดียวกับเทคนิคอื่นๆTCP/IPก็มีข้อบกพร่องเช่นกัน และSilly Window Syndromeก็เป็นสาเหตุของข้อบกพร่องดังกล่าว เพื่อให้เข้าใจว่าSilly Window SyndromeหรือSWSคืออะไร ก่อนอื่นคุณต้องเข้าใจกลไกพื้นฐานของการสื่อสารข้อมูลในTCP TCP/IP

Silly Window Syndrome

ซินโดรมหน้าต่างโง่

ทำความเข้าใจกับหน้าต่างและขนาดของหน้าต่าง

เมื่อมีการสื่อสารสองจุดภายใต้TCP/IPจะเกี่ยวข้องกับกลไกการรับทราบ กลไกการยอมรับนี้เป็นสาเหตุของSilly Window Syndromeตามที่อธิบายเพิ่มเติม คะแนนอาจหมายถึงคอมพิวเตอร์สองเครื่อง ไคลเอนต์และเซิร์ฟเวอร์ ฯลฯ

SWS is caused by the receiver advancing the right window edge whenever it has any new buffer space available to receive data and by the sender using any incremental window, no matter how small, to send more data. The result can be a stable pattern of sending tiny data segments, even though both sender and receiver have a large total buffer space for the connection, says MSDN.

เมื่อคอมพิวเตอร์พูดว่า A ส่งแพ็กเก็ตข้อมูลไปยังคอมพิวเตอร์เครื่องอื่น B ​​เครื่องหลังต้องรับทราบและตอบกลับว่าได้รับแพ็กเก็ตข้อมูล นอกจากการตอบรับแล้ว ยังต้องส่งขนาดของบัฟเฟอร์ที่แยกจากกันสำหรับเธรดการสื่อสารนั้นด้วย โดยทั่วไปคือจำนวนไบต์ที่ตั้งค่าให้ว่างสำหรับการสื่อสาร

ดังนั้นเมื่อ B บอกว่า 100B พร้อมใช้งานสำหรับข้อความถัดไป 100B คือหน้าต่างในSilly Window Syndrome (Silly Window Syndrome)นั่นคือมันเป็นขนาดบัฟเฟอร์ ด้วยข้อบกพร่องของตัวเอง กลไก TCP/IPอาจลดขนาดบัฟเฟอร์สำหรับการสื่อสาร/ข้อมูลที่มาจาก A แต่ละรายการ นั่นคือ เมื่อใดก็ตามที่ A ส่งข้อความ B จะถือว่าขนาดบัฟเฟอร์ลดลงและส่งจำนวนที่น้อยกว่า ดังนั้นขนาดหน้าต่างจะลดลงและเมื่อถึงจุดหนึ่ง การสื่อสารจะหยุดเมื่อ B ส่ง 0B เป็นขนาดหน้าต่าง

Silly Window Syndrome ทำงานอย่างไร

ตามตัวอย่างข้างต้นของ A และ B ถ้า B ส่ง 1000B เป็นขนาดหน้าต่าง A จะแบ่งเป็นสอง 500B และส่งสองแพ็คเก็ตที่ 500B เมื่อได้รับแพ็กเก็ตแรก B จะส่งการตอบรับว่า 500B พร้อมใช้งานสำหรับหน้าต่าง เนื่องจากแพ็กเก็ตที่สองยังไม่ได้รับ A ถือว่า 500B เป็นขนาดหน้าต่างและส่งสองแพ็กเก็ต 250B ตามลำดับ ขณะที่อยู่ที่ B ใช้ 500B และเพิ่งได้รับ 500 จะส่ง 0B ตามที่มี ณ จุดนี้ A จะถือว่าไม่มีหน้าต่างแม้ว่าอาจเกิดขึ้นที่บัฟเฟอร์ว่างเปล่าเนื่องจากตัวประมวลผลใช้ข้อมูลที่นั่น A จะยังคงส่งแพ็คเก็ตที่เล็กกว่าเพื่อดูว่ามีหน้าต่างใดบ้าง หากเนื้อหาของบัฟเฟอร์ที่ B ยังไม่ถูกลบ จะยังคงได้รับ 0 เป็นการตอบกลับ/ตอบรับ

ดังนั้น ขนาดหน้าต่างจะลดลงเรื่อย ๆ เนื่องจาก B ส่งการตอบรับทุกครั้งที่ได้รับแพ็กเก็ตจาก A ขนาดนี้มักจะเล็กกว่าการตอบรับครั้งก่อน เนื่องจาก B กำลังรับแพ็กเก็ตข้อมูลเป็นส่วนๆ จะไม่มีปัญหาหาก A สามารถส่งแพ็กเก็ตที่ใหญ่พอที่จะครอบคลุมขนาดบัฟเฟอร์บน B ในแต่ละครั้ง แต่มันจะต้องมีกลไกเพิ่มเติมและด้วยเหตุนี้Silly Window Syndrome (Silly Window Syndrome)การสื่อสารหยุดลงหลังจาก A ได้รับ 0 สองหรือสามครั้ง

วิธีป้องกันSilly Window Syndrome ( SWS )

มีอัลกอริธึมง่ายๆ ที่จะนำไปใช้เพื่อกำจัดSWS เมื่อได้รับแพ็กเก็ตเริ่มต้น B จะส่งพื้นที่ว่างที่มีอยู่จริงครึ่งหนึ่งเป็นหน้าต่าง นั่นจะทำให้ A ส่งแพ็กเก็ตขนาดเล็กลง ดังนั้น เมื่อแพ็กเก็ตมีขนาดเล็กเกินไป B จะส่งขนาดบัฟเฟอร์ทั้งหมดเพื่อให้ A สามารถเริ่มส่งไบต์ข้อมูลที่ใหญ่กว่าได้อีกครั้ง

กล่าวอีกนัยหนึ่ง ถ้า 1,000B พร้อมใช้งาน B จะส่ง 500B เพื่อเป็นการรับทราบ ดังนั้น A ส่ง 250B x ​​2 แพ็คเก็ต สำหรับสิ่งนี้ A ได้รับ 100B เป็นการรับทราบ เมื่อได้รับแพ็กเก็ต 50B, B จะส่ง 1,000B – 50B ไปยัง A ซึ่งจะทำให้การสนทนาทั้งหมดกลับมาทำงานอีกครั้ง ซึ่งอาจทำให้การประมวลผลล่าช้าเล็กน้อย แต่จะป้องกันไม่ให้Silly Window Syndromeเกิดขึ้นและหยุดการสนทนาทั้งหมด

โดยสรุปแล้วSWSจะขึ้นอยู่กับขนาดบัฟเฟอร์ที่ผู้รับมีและขนาดสมมติที่คำนวณโดยผู้ส่ง เพื่อป้องกันSWSจะมีการแนะนำการหน่วงเวลาและขนาดหน้าต่างที่เล็กลงโดยเจตนาจะได้รับการตอบสนองจนกว่าขนาดแพ็กเก็ตจะเล็กเกินไป จากนั้นผู้รับจะเปิดเผยขนาดหน้าต่างที่มีอยู่จริง กระบวนการทั้งหมดจะดำเนินต่อไปเรื่อยๆ จนกว่าการสื่อสารจะเสร็จสิ้น

แม้ว่าฉันอาจใช้คำว่า window และ buffer แทนกันได้ ฉันไม่ได้หมายถึงความแตกต่างระหว่างพวกเขา ใน การศึกษา SWSบัฟเฟอร์คือหน้าต่าง



About the author

ฉันเป็นมืออาชีพด้านการรีวิวซอฟต์แวร์ที่มีประสบการณ์มากกว่า 10 ปี ฉันได้เขียนและตรวจสอบซอฟต์แวร์ประเภทต่างๆ มากมาย รวมถึงแต่ไม่จำกัดเพียง Microsoft Office (Office 2007, 2010, 2013), แอป Android และเครือข่ายไร้สาย ทักษะของฉันอยู่ที่การจัดเตรียมการทบทวนโปรแกรม/แอปพลิเคชันโดยละเอียดและมีวัตถุประสงค์เพื่อให้ผู้อื่นใช้เป็นเอกสารอ้างอิงหรือสำหรับงานของตนเอง ฉันยังเป็นผู้เชี่ยวชาญเกี่ยวกับผลิตภัณฑ์ MS office และมีคำแนะนำเกี่ยวกับวิธีการใช้งานอย่างมีประสิทธิภาพและประสิทธิผล



Related posts