Co to jest syndrom głupiego okna - wyjaśnienie i zapobieganie

Dane(Data) przesyłane są przez sieć i Internet za pomocą TCP/IP Protocol . Protokół TCP/IP nie jest doskonały, ale jest łatwiejszy do wdrożenia w porównaniu z innymi protokołami teoretycznie wykorzystywanymi do przesyłania danych… takimi jak model ISO OSI . Jak każda rzecz techniczna, TCP/IP również ma pewne wady, a Syndrom Głupich Okien(Silly Window Syndrome) jest tworem jednej z tych wad. Aby zrozumieć, czym jest Syndrom Silly Window(Silly Window Syndrome) lub SWS , musisz najpierw zrozumieć mechanizm komunikacji danych w TCP/IP .

Syndrom głupiego okna

syndrom głupiego okna

Zrozumienie okna i jego rozmiaru

Gdy dwa punkty komunikują się w ramach TCP/IP , wiąże się to z mechanizmem potwierdzającym. Ten mechanizm potwierdzania jest tym, co powoduje Syndrom Głupich Okien,(Silly Window Syndrome) jak wyjaśniono dalej. Punkty mogą odnosić się do dwóch komputerów, klienta i serwera itp.

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.

Kiedy komputer, powiedzmy A, wysyła pakiet danych do innego komputera B, ten ostatni musi potwierdzić i odpowiedzieć, że otrzymał pakiet danych. Wraz z potwierdzeniem musi również wysłać rozmiar bufora ustawionego osobno dla tego wątku komunikacyjnego. Jest to zazwyczaj liczba bajtów wolnych do komunikacji.

Więc kiedy B mówi, że 100B jest dostępne dla następnej wiadomości, 100B jest oknem w Syndromie Silly Window(Silly Window Syndrome) . Oznacza to, że jest to rozmiar bufora. Z własną wadą mechanizm TCP/IP może zmniejszyć rozmiar bufora dla każdej komunikacji/danych pochodzących od A. Oznacza to, że za każdym razem, gdy A wysyła wiadomość, B zakłada, że ​​rozmiar bufora jest zmniejszony i wysyła mniejszą liczbę. W ten sposób rozmiar okna jest nadal zmniejszany iw pewnym momencie komunikacja po prostu zatrzymuje się, gdy B wysyła 0B jako rozmiar okna.

Jak działa syndrom głupiego okna?

Zgodnie z powyższym przykładem A i B, jeśli B wyśle ​​1000B jako rozmiar okna, A podzieli je na dwa 500B i wyśle ​​dwa pakiety 500B. Po odebraniu pierwszego pakietu, B wyśle ​​potwierdzenie mówiące, że 500B jest dostępne dla okna, ponieważ drugi pakiet nie został jeszcze odebrany. A zakłada, że ​​500B to rozmiar okna i w konsekwencji wysyła dwa pakiety po 250B. Podczas gdy w punkcie B używane jest 500B, a 500 zostało właśnie odebrane, wyśle ​​0B, jeśli jest dostępne. W tym momencie A założy, że żadne okno nie jest dostępne, chociaż może się zdarzyć, że bufor jest pusty, ponieważ procesor zużył tam dane. A nadal wyśle ​​mniejszy pakiet, aby sprawdzić, czy jakieś okno jest dostępne. Jeśli zawartość bufora w punkcie B nie została jeszcze usunięta, nadal otrzyma 0 jako odpowiedź/potwierdzenie.

W ten sposób rozmiar okna stale się zmniejsza, ponieważ B wysyła potwierdzenie za każdym razem, gdy odbiera pakiet od A. Ten rozmiar jest zwykle mniejszy niż poprzednie potwierdzenie, ponieważ B odbiera pakiety danych w częściach. Nie byłoby problemu, gdyby A mógł wysłać pakiet wystarczająco duży, aby pokryć rozmiar bufora na B na raz. Ale to wymagałoby dodatkowych mechanizmów, a co za tym idzie Syndromu Głupich Okien(Silly Window Syndrome) . Komunikacja zatrzymuje się po dwu- lub trzykrotnym odebraniu przez A 0.

Jak zapobiegać syndromowi głupiego okna(Silly Window Syndrome) ( SWS )

Istnieje prosty algorytm, który można zaimplementować, aby pozbyć się SWS . Po otrzymaniu początkowego pakietu B wysyła połowę naprawdę dostępnej przestrzeni jako okno. To sprawi, że A wyśle ​​mniejsze pakiety. W konsekwencji, gdy pakiety stają się zbyt mniejsze, B wysyła całkowity rozmiar bufora, aby A mógł ponownie zacząć wysyłać większe bajty danych.

Innymi słowy, jeśli 1000B jest dostępne, B wysyła 500B jako potwierdzenie. W związku z tym A wysyła pakiety 250B x ​​2. W tym celu A otrzymuje 100B jako potwierdzenie. Kiedy odbiera pakiet 50B, B wysyła 1000B – 50B do A. To sprawia, że ​​cała rozmowa znów działa. Może to spowodować niewielkie opóźnienie w przetwarzaniu, ale zapobiegnie wystąpieniu syndromu głupiego okna(Silly Window Syndrome) i zatrzymaniu całej rozmowy.

Podsumowując, SWS opiera się na wielkości bufora dostępnego dla odbiorcy i założonej wielkości wyliczonej przez nadawcę. Aby zapobiec SWS , wprowadzane jest opóźnienie i celowo mniejszy rozmiar okna jest odwzajemniany, aż rozmiar pakietu stanie się zbyt mały. Następnie odbiorca ujawnia aktualnie dostępny rozmiar okna. Cały proces powtarza się aż do zakończenia komunikacji.

Chociaż być może używałem zamiennie słów okno i bufor. Nie mam na myśli żadnej różnicy między nimi. W badaniach SWS buforem jest okno.



About the author

Jestem ekspertem w zakresie tworzenia sprzętu i oprogramowania. Mam doświadczenie w pracy zarówno z produktami Apple (ios), jak i platformami Google Android. Jestem również zdecydowanym zwolennikiem Edge computing, czyli najnowszego trendu w technologii internetowej i mobilnej. Moje umiejętności w tych dziedzinach sprawiają, że idealnie nadaje się do tworzenia aplikacji, które są szybkie, bezpieczne i wydajne.



Related posts