Kas yra "Silly Window" sindromas - paaiškinimas ir prevencija

Turinys:

Kas yra "Silly Window" sindromas - paaiškinimas ir prevencija
Kas yra "Silly Window" sindromas - paaiškinimas ir prevencija

Video: Kas yra "Silly Window" sindromas - paaiškinimas ir prevencija

Video: Kas yra
Video: MacOS on iPad 🔥 - YouTube 2024, Balandis
Anonim

Duomenys perduodami per tinklą ir internetą naudojant TCP / IP protokolas. TCP / IP nėra tobulas, bet jį lengviau įgyvendinti, palyginti su kitais duomenų perdavimo teoriniais protokolais … pvz., ISO OSI modeliu. Kaip ir bet kuris techninis dalykas, TCP / IP taip pat yra ir trūkumų Silly langų sindromas yra vieno iš šių trūkumų sukūrimas. Norint suprasti, koks yra "Silly Window" sindromas ar SWS, pirmiausia turėsite suprasti pagrindinį duomenų perdavimo mechanizmą TCP / IP.

Silly langų sindromas

Image
Image

Lango ir jo dydžio supratimas

Kai TCP / IP bendrauja du taškai, tai reiškia patvirtinimo mechanizmą. Šis pripažinimo mechanizmas yra tai, kas sukelia Silentinio lango sindromą, kaip paaiškinta toliau. Taškai gali būti susiję su dviem kompiuteriais, klientais ir serveriais ir pan.

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.

Kai kompiuteris, sakydamas A, siunčia duomenų paketą į kitą kompiuterį B, pastarasis turi patvirtinti ir atsakyti, kad gavo duomenų paketą. Kartu su patvirtinimu, jis taip pat turi siųsti buferio dydį, nustatytą šiai komunikacijos krypčiai. Paprastai baitų skaičius yra laisvas bendravimui.

Taigi, kai B teigia, kad 100B yra prieinamas kitam pranešimui, 100B yra "Silly Window" sindromo langas. Tai yra buferio dydis. Turėdamas savo trūkumų, TCP / IP mechanizmas gali sumažinti buferio dydį kiekvienam ryšiui / duomenims, gaunamiems iš A. Tai reiškia, kad, kai A siunčia pranešimą, B supranta, kad buferio dydis yra sumažintas ir siunčia mažesnį skaičių. Taigi lango dydis mažėja ir tam tikru momentu, komunikacija tiesiog sustoja, kai B siunčia 0B kaip lango dydį.

Kaip veikia kvailo lango sindromas

Pagal pirmiau pateiktą A ir B pavyzdį, jei B siunčia 1000B kaip lango dydį, A padalins jį į dvi 500B ir atsiųs du 500B paketus. Gavęs pirmąjį paketą, B atsiųs patvirtinimą, kad langelyje yra 500B, nes antrąjį paketą dar reikia gauti. A prielaida, kad 500B yra lango dydis, todėl siunčiami du 250B paketai. Nors B yra naudojamas 500B, o 500 yra tik gauta, jis atsiųs 0B, jei bus. Šiuo metu "A" manys, kad nėra jokio lango, nors gali būti, kad buferis yra tuščias, nes procesorius išnaudojo ten esančius duomenis. A vis dar siųs mažesnį paketą ir pamatys, ar yra galimas bet koks langas. Jei buferio turinys B dar nėra pašalintas, jis vis tiek gaus 0 kaip atsakymą / patvirtinimą.

Taigi lango dydis mažėja, nes B siunčia patvirtinimą kiekvieną kartą, kai gauna paketą iš A. Šis dydis paprastai yra mažesnis nei ankstesnis patvirtinimas, kai B priima duomenų paketus dalimis. Būtų problema, jei A galėtų išsiųsti paketą, pakankamai didžią, kad būtų galima padengti buferio dydį B vienu metu. Tačiau tai reikalauja papildomų mechanizmų, taigi ir "Silly Window" sindromo. Ryšys baigiasi, kai A gauna 0 du ar tris kartus.

Kaip užkirsti kelią gilaus lango sindromui (SWS)

SWS atsikratyti yra paprastas algoritmas. Gavęs pradinį paketą, B siunčia pusę iš tikrųjų laisvos vietos kaip langą. Tai padės siųsti mažesnius paketus. Todėl, kai paketai tampa per mažesni, tada B siunčia bendrą buferio dydį, kad A galėtų vėl siųsti didesnius duomenų baitus.

Kitaip tariant, jei 1000B yra prieinamas, B siunčia 500B kaip patvirtinimą. A siunčia 250B x 2 paketus. Dėl to A gauna 100B kaip patvirtinimą. Kai gauna 50B paketą, B siunčia 1000B-50B į A. Tai daro visą pokalbį dar kartą. Tai gali paskatinti truputį vėluoti apdorojimą, bet neleis, kad "Silly Window" sindromas atsirastų ir sustabdytų visą pokalbį.

Apibendrinant, SWS yra pagrįstas gavėjo turimomis buferio dydžiais ir numatytu dydžiu, kurį apskaičiavo siuntėjas. Siekiant užkirsti kelią SWS, įvedamas delsimas ir sąmoningas mažesnis lango dydis yra abipusis, kol paketo dydis tampa per mažas. Tada gavėjas atskleidžia faktiškai pasiekiamą lango dydį. Visas procesas nuolat kartoja, kol komunikacija bus baigta.

Nors galbūt galėjo vartoti žodžius langą ir buferį vienodai. Aš nenoriu jokio skirtumo tarp jų. SWS tyrimuose buferis yra langas.

Jei jums reikia daugiau informacijos, čia yra išsamus paaiškinimas apie tcpipguide.com.

Rekomenduojamas: