Dữ liệu được truyền qua mạng và Internet bằng cách sử dụng Giao thức TCP / IP. TCP / IP không hoàn hảo nhưng dễ triển khai hơn so với các giao thức khác được đưa ra lý thuyết để truyền dữ liệu… chẳng hạn như mô hình ISO OSI. Như với bất kỳ điều kỹ thuật nào, TCP / IP cũng có một số lỗi và Silly Window Syndrome là một sự sáng tạo của một trong những sai sót đó. Để hiểu Silly Window Syndrome hoặc SWS là gì, trước tiên bạn sẽ cần hiểu cơ chế truyền thông dữ liệu cơ bản trong TCP / IP.
Silly Window Syndrome
Hiểu cửa sổ và kích thước của nó
Khi hai điểm giao tiếp dưới TCP / IP, nó liên quan đến một cơ chế thừa nhận. Cơ chế thừa nhận này là nguyên nhân gây ra hội chứng Silly Window như được giải thích thêm. Điểm có thể là hai máy tính, máy khách và máy chủ, v.v.
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.
Khi một máy tính, nói A, gửi một gói dữ liệu đến một máy tính B khác, sau đó phải xác nhận và trả lời rằng nó đã nhận được gói dữ liệu. Cùng với sự thừa nhận, nó cũng phải gửi kích thước của bộ đệm ngoài cho chuỗi giao tiếp đó. Đây thường là số byte được đặt miễn phí để liên lạc.
Vì vậy, khi B nói 100B có sẵn cho tin nhắn tiếp theo, 100B là cửa sổ trong Silly Window Syndrome. Đó là, nó là kích thước bộ đệm. Với lỗ hổng riêng của nó, cơ chế TCP / IP có thể giảm kích thước bộ đệm cho mỗi giao tiếp / dữ liệu đến từ A. Đó là, bất cứ khi nào A gửi một thông điệp, B giả định kích thước bộ đệm được giảm và gửi một số nhỏ hơn. Do đó kích thước cửa sổ tiếp tục giảm và tại một điểm, giao tiếp chỉ dừng lại khi B gửi 0B làm kích thước cửa sổ.
Làm thế nào không Silly Window Syndrome làm việc
Theo ví dụ trên của A và B, nếu B gửi 1000B làm kích thước cửa sổ, A sẽ chia nó thành hai 500B và gửi hai gói 500B. Khi nhận được gói đầu tiên, B sẽ gửi một xác nhận cho biết 500B có sẵn cho cửa sổ khi gói thứ hai vẫn chưa được nhận. Giả sử 500B là kích thước cửa sổ và gửi hai gói 250B do đó. Trong khi tại B, 500B được sử dụng và 500 chỉ được nhận, nó sẽ gửi 0B khi có sẵn. Tại thời điểm này, A sẽ giả sử không có cửa sổ nào có sẵn mặc dù nó có thể xảy ra rằng bộ đệm trống khi bộ xử lý sử dụng hết dữ liệu ở đó. A vẫn sẽ gửi một gói nhỏ hơn để xem có cửa sổ nào không. Nếu nội dung của bộ đệm tại B chưa được loại bỏ, nó sẽ vẫn nhận được 0 là phản hồi / xác nhận.
Do đó, kích thước cửa sổ tiếp tục giảm khi B gửi xác nhận mỗi khi nhận được gói tin từ A. Kích thước này thường nhỏ hơn xác nhận trước đó vì B đang nhận gói dữ liệu trong các phần. Sẽ không có vấn đề gì nếu A có thể gửi một gói đủ lớn để bao trùm kích thước bộ đệm trên B tại một thời điểm. Nhưng điều đó sẽ đòi hỏi các cơ chế bổ sung và do đó Hội chứng Cửa sổ Silly. Các thông tin liên lạc dừng lại sau khi A nhận được 0 hai hoặc ba lần.
Cách ngăn ngừa hội chứng Silly Window (SWS)
Có một thuật toán đơn giản được thực hiện để loại bỏ SWS. Khi nhận được gói tin ban đầu, B gửi một nửa không gian thực sự có sẵn dưới dạng cửa sổ. Điều đó sẽ làm cho A gửi các gói nhỏ hơn. Do đó, khi các gói trở nên quá nhỏ, thì B gửi tổng kích thước bộ đệm để A có thể bắt đầu gửi các byte dữ liệu lớn hơn một lần nữa.
Nói cách khác, nếu 1000B có sẵn, B gửi 500B làm xác nhận. Theo đó, A gửi 250B x 2 gói. Đối với điều này, A nhận 100B là xác nhận. Khi nhận được gói 50B, B gửi 1000B - 50B đến A. Điều đó làm cho toàn bộ cuộc hội thoại hoạt động trở lại. Điều này có thể gây ra một chút chậm trễ trong việc xử lý nhưng sẽ ngăn chặn Hội chứng Silly Window xuất hiện và dừng toàn bộ cuộc trò chuyện.
Tóm lại, SWS dựa trên kích thước bộ đệm có sẵn trên người nhận và kích thước giả định được tính bởi người gửi. Để ngăn chặn SWS, một sự chậm trễ được giới thiệu và cố ý kích thước cửa sổ nhỏ hơn được đáp lại cho đến khi kích thước gói tin trở nên quá nhỏ. Sau đó, người nhận tiết lộ kích thước cửa sổ thực sự có sẵn. Toàn bộ quá trình tiếp tục lặp lại cho đến khi giao tiếp hoàn tất.
Mặc dù tôi có thể đã sử dụng cửa sổ từ và đệm thay thế cho nhau. Tôi không có nghĩa là bất kỳ sự khác biệt nào giữa chúng. Trong các nghiên cứu SWS, bộ đệm là cửa sổ.
Nếu bạn cần thêm thông tin, có một lời giải thích chi tiết có sẵn ở đây trên tcpipguide.com.