Vlákno názorů k článku O nedostatku IPv4 adres víme třicet let, NAT měl být dočasným řešením od Michal Kubeček - Je také možné připravit neblokující multitasking a poté...

  • Článek je starý, nové názory již nelze přidávat.
  • 2. 7. 2024 8:08

    Michal Kubeček

    Je také možné připravit neblokující multitasking a poté funkci select vybírat správný socket a obsluhovat IPv4 i IPv6 klientů.

    Rozhraní select() je navržené tak strašně, že je mi záhadou, proč by mu někdo dal přednost před poll() (pro masovější použití pak spíš epoll()).

    Díky tomu mohou IPv6 sockety za určitých okolností obsluhovat i IPv4 spojení.

    Defaultnímu chování se říká "za určitých okolností"? :-) (Ano, vím, že existují obskurní operační systémy, kde je default IPV6_V6ONLY=1.)

  • 2. 7. 2024 18:40

    m1x

    Kdo to někdy programoval, smysl pochopí, je jedno jestli se odkážete na select(), poll(), nebo epoll(), z hlediska pochopení smyslu textu to je totéž. Kdo to nezná, lepší je napsat select(), to je sice dost nešťastně navržená funkce, ale je to základní, všude implementovaná, klasická znalost, ze které vycházejí ty současné poll() funkce. Já, až to budu potřebovat (což asi nebudu), stejně napíšu man select a přečtu si, co se používá v tomto století.

    Podle mě je někdy moudřejší obsloužit zvlášť IPv6 a zvlášť IPv4, on je v tom dost bor… nepořádek i tak. Chyb je víc, než funkčnosti. Ale možná je to jen můj dojem.

  • 3. 7. 2024 10:30

    Ondřej Caletka
    Zlatý podporovatel

    Pokud berete všechny Windows a BSD za obskurní operační systémy, tak ano. Ale pro většinu výrobců portabilního softwaru je to příliš velká skupina operačních systémů, kterou nelze snadno ignorovat - můj oblíbený příklad je modul http.server v Pythonu 3.8.

    Navíc i software napsaný pro Linux podle nejlepší současné praxe nastavuje IPV6_V6ONLY=1, takže použití fráze za určitých okolností je zde na místě i pro výchozí chování, pokud je běžnou praxí výchozí chování měnit.

  • 4. 7. 2024 9:34

    Michal Kubeček

    Pokud berete všechny Windows a BSD za obskurní operační systémy, tak ano.

    To byl samozřejmě vtip - ale v tomhle ohledu to chování opravdu obskurní je.

    i software napsaný pro Linux podle nejlepší současné praxe nastavuje IPV6_V6ONLY=1

    To už mi tvrdila spousta lidí, ale nikdo z nich nikdy nebyl schopen říct žádný rozumný a přesvědčivý důvod, proč by to tak opravdu mělo být lepší, většinou se omezili na obvyklé "prostě se to tak dělá". Nanejvýš přiznali, že se jim jen nelíbí mapované adresy, případně těch socketů stejně otevírali víc, protože se poslouchalo na více různých adresách nebo kombinacích adresa/port.

    4. 7. 2024, 09:35 editováno autorem komentáře

  • 4. 7. 2024 16:52

    Ondřej Caletka
    Zlatý podporovatel

    Já myslím, že ten hlavní důvod, proč to nedělat, je riziko, že někde po cestě dojde k záměně IPv4 za IPv6 nebo naopak. Například když po síti přijde IPv6 paket se zdrojovou adresou z IPv4-mapovaného rozsahu a IPv6 soket s IPV6_V6ONLY=0 na něj odpoví, velice pravděpodobně přitom vygeneruje IPv4 paket.

    Myslel jsem si, že takové věci jsou dávno vyřešené a podobné zmatení nehrozí, ale po vytvoření testovacích stránek s IPv4-mapovanými adresy v AAAA záznamech se nestačím divit, kolikrát vidím, že nějaký software ochotně vezme IPv4-mapovanou IPv6 adresu z DNS a spojí se s ní: