Názor k článku Poslední volný bit IP hlavičky: jak signalizovat zahlcenou linku od Filip Jirsák - To byste pak nemohl zahazovat žádný packet s...

  • Článek je starý, nové názory již nelze přidávat.
  • 26. 2. 2020 13:43

    Filip Jirsák
    Stříbrný podporovatel

    To byste pak nemohl zahazovat žádný packet s nevalidními hlavičkami.
    Ale mohl. Stačí například když je ve specifikaci napsáno, že to je možné kontrolovat a pakety s nevalidními daty je možné zahodit.

    Must právě definuje, že druhá strana se na to může spolehnout
    Právě že ne. Must prostě znamená must, nic jiného.

    Rozhodně snahu detekovat nevalidní packety bych nepovažoval za chybnou.
    O tom se tady ale nebavíme. Tady je záměrně v nějaké verzi specifikace vynechané rezervované místo v paketu pro pozdější využití. A aby bylo možné později ho využít, mají odesílající povinnost tam v této verzi specifikace nastavovat nuly. Příjemce ty vyhrazené bity musí ignorovat. To je princip rezervovaných bitů – příjemce se teď o ně vůbec nezajímá, tím pádem v nich nemůže být nic, co by vyhodnotil jako nevalidní. No a pak se v pozdější verzi specifikace může dát těm rezervovaným bitům význam. Díky tomu, že tam do teď všichni museli nastavovat nulu, je jasné, že nenulovou hodnotu musela nastavit jen implementace, která zná ten nový standard. A díky tomu, že příjemci ta data ignorovali, je jasné, že příjemce, který nezná novou verzi standardu, bude údaje ignorovat, ať budou jakékoli. Teprve příjemce, který novou verzi standardu implementuje, se těmi bity bude zabývat.

    Díky tomu je zajištěno, že se dá postupně přejít na novou verzi standardu – protože proti sobě budou fungovat libovolné dvě kombinace staré × nové. Což je na internetu zásadní, protože tam opravdu není možné říct, že v jeden okamžik všichni najednou začnou používat nový standard.

    Rozdíl je tedy ve vyhodnocení: muset / moci / nesmět.
    Nikoli, rozdíl je ve známém pravidle „buď striktní v tom, co generuješ/odesíláš, ale buď benevolentní v tom, co čteš/přijímáš“.

    Pokud flag nesmí nebo musí být nastaven => pak můžu, ale nemusím vyhodnocovat při zpracování
    Tím byste ovšem úplně zabil koncepci rezervovaných částí struktur. Právě proto existují tyhle případy, kdy jedna strana něco musí udělat, ale druhá se na to nesmí spoléhat. V jedné verzi standardu je to zdánlivě nelogické, ale jakmile začnete uvažovat o tom, že se ten standard v budoucnosti může opravit, objevíte to kouzlo.