Įvairūs

Kas yra kvailo lango sindromas - paaiškinimas ir prevencija

Kas yra kvailo lango sindromas - paaiškinimas ir prevencija

Duomenys perduodami tinklu ir internetu naudojant TCP / IP protokolas. TCP / IP nėra tobulas, tačiau jį lengviau įgyvendinti, palyginti su kitais duomenų perdavimo teorijos principais ... pavyzdžiui, ISO OSI modeliu. Kaip ir kiekvienam techniniam dalykui, TCP / IP taip pat turi keletą trūkumų ir Kvailo lango sindromas yra vieno iš tų trūkumų kūrinys. Norėdami suprasti, kas yra „Silly Window“ sindromas arba SWS, pirmiausia turėsite suprasti pagrindinį duomenų perdavimo TCP / IP mechanizmą.

Kvailo lango sindromas

Suprasti langą ir jo dydį

Kai du taškai bendrauja pagal TCP / IP, tai apima patvirtinimo mechanizmą. Šis pripažinimo mechanizmas sukelia „Silly Window“ sindromą, kaip paaiškinta toliau. Taškai gali būti susiję su dviem kompiuteriais, klientu, serveriu ir kt.

SWS sukelia tai, kad imtuvas iškelia dešinį lango kraštą, kai tik yra laisvos vietos buferiui, kad galėtų priimti duomenis, ir siuntėjas, naudodamas bet kurį papildomą langą, kad ir koks mažas jis būtų, siunčia daugiau duomenų. Rezultatas gali būti stabilus mažų duomenų segmentų siuntimo būdas, nors tiek siuntėjas, tiek imtuvas turi didelę bendrą buferinę erdvę ryšiui, sako MSDN.

Kai kompiuteris, tarkim, A, siunčia duomenų paketą į kitą kompiuterį B, šis turi patvirtinti ir atsakyti, kad gavo duomenų paketą. Kartu su patvirtinimu jis taip pat turi išsiųsti tam ryšiui skirtą buferio dydį. Paprastai tai yra laisvų bendravimui baitų skaičius.

Taigi, kai B sako, kad kitam pranešimui yra 100B, 100B yra „Silly Window“ sindromo langas. Tai yra, 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 yra, kai A siunčia pranešimą, B daro prielaidą, kad buferio dydis yra sumažintas, ir siunčia mažesnį numerį. Taigi lango dydis vis mažėja ir tam tikru momentu ryšys tiesiog nutrūksta, kai B siunčia 0B kaip lango dydį.

Kaip veikia kvailų langų sindromas

Pagal pirmiau pateiktą A ir B pavyzdį, jei B siunčia 1000B kaip lango dydį, A padalins jį į du 500B ir išsiųs du 500B paketus. Gavęs pirmąjį paketą, B atsiųs patvirtinimą, sakydamas, kad langui yra 500B, nes antrasis paketas dar negautas. Daroma prielaida, kad lango dydis yra 500B, todėl atsiųskite du 250B paketus. B taške 500B yra naudojamas ir 500 yra ką tik gautas, jis atsiųs 0B, kaip yra. Šiuo metu A manys, kad lango nėra, nors gali nutikti, kad buferis yra tuščias, nes procesorius panaudojo ten esančius duomenis. A vis tiek atsiųs mažesnį paketą, kad pamatytų, ar nėra lango. Jei B buferio turinys dar nėra pašalintas, jis vis tiek gaus 0 kaip atsakymą / patvirtinimą.

Taigi lango dydis vis mažėja, nes B siunčia patvirtinimą kiekvieną kartą, kai gauna paketą iš A. Šis dydis paprastai yra mažesnis nei ankstesnis patvirtinimas, nes B gauna duomenų paketus dalimis. Nebūtų jokių problemų, jei A galėtų vienu metu atsiųsti pakankamai didelį paketą, kad padengtų B buferio dydį. Tačiau tam reikės papildomų mechanizmų, taigi ir „Silly Window“ sindromo. Ryšys nutrūksta, kai A du ar tris kartus gauna 0.

Kaip išvengti „Silly Window“ sindromo (SWS)

Norint atsikratyti SWS, reikia įdiegti paprastą algoritmą. Gavęs pradinį paketą, B išsiunčia pusę tikrai laisvos vietos kaip langą. Tai privers A siųsti mažesnius paketus. Taigi, kai paketai tampa per maži, tada B siunčia visą buferio dydį, kad A vėl galėtų siųsti didesnius duomenų baitus.

Kitaip tariant, jei yra 1000B, B siunčia 500B kaip patvirtinimą. Atitinkamai A siunčia 250B x ​​2 paketus. Už tai A gauna 100B kaip patvirtinimą. Gavęs 50B paketą, B siunčia 1000B - 50B A. Dėl to visas pokalbis vėl tampa operatyvus. Tai gali sukelti šiek tiek vėlavimą apdoroti, bet neleis atsirasti „Silly Window“ sindromui ir sustabdyti visą pokalbį.

Apibendrinant galima pasakyti, kad SWS remiasi gavėjo turimu buferio dydžiu ir siuntėjo apskaičiuotu numatomu dydžiu. Siekiant užkirsti kelią SWS, nustatomas delsimas ir apgalvotas mažesnis lango dydis, kol paketo dydis tampa per mažas. Tada gavėjas atskleidžia faktiškai galimą lango dydį. Visas procesas kartojasi tol, kol komunikacija bus baigta.

Nors žodžius langas ir buferis galėjau naudoti pakaitomis. Aš neturiu omenyje jokio skirtumo tarp jų. Atliekant SWS tyrimus, buferis yra langas.

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

Kaip rodyti OSD perdangą viso ekrano „Linux“ programose ir žaidimuose
Žaisdami viso ekrano žaidimus arba naudodamiesi programomis be išsiblaškymo viso ekrano režimu, galite nutraukti nuo susijusios sistemos informacijos,...
5 geriausios žaidimų fiksavimo kortos
Visi mes matėme ir pamėgome srautinius žaidimus „YouTube“. „PewDiePie“, „Jakesepticye“ ir „Markiplier“ yra tik vieni iš geriausių žaidėjų, kurie uždir...
Kaip sukurti žaidimą „Linux“
Prieš dešimtmetį nedaugelis „Linux“ vartotojų numatė, kad jų mėgstama operacinė sistema vieną dieną bus populiari komercinių vaizdo žaidimų žaidimų pl...