Norové dokázali, že je internet nezničitelný. Před šestnácti lety místo optických kabelů použili holuby

  • Internet je založený na přenosu malých dílků dat – paketů
  • V roce 1990 vznikla aprílová specifikace, která použila holuby
  • Norové to vyzkoušeli v praxi a fungovalo to

Každé malé dítě dnes ví, že se o přenos informací uvnitř internetu starají takzvané pakety – malé dílky dat, které podobně jako dopisní obálky cestují různými cestami z bodu A do bodu B třeba přes půl planety. Když se po cestě některá z obálek ztratí, pošle se nová a počítač je v cíli zase všechny rozlepí a složí dohromady, aby se vám na monitoru mohla konečně zobrazit třeba fotografie dámy pochybných mravů.

Jak se však internet v posledních třiceti letech zrychloval, komercializoval a původní nízkoúrovňovou komunikaci překryly vrstvy dalších protokolů a jejich služeb, z paketů a datagramů se pro drtivou většinu z nás stal jen jakýsi abstraktní pojem, kterému už naštěstí nemusíme vůbec rozumět.

Co kdyby byl internet tištěný?

Autoři internetových standardů mají naštěstí svůj specifický smysl pro humor, a tak se čas od času připomenou širší veřejnosti některým z mnoha aprílových vtípků. Mám na mysli organizaci IETF – Internet Engineering Task Force, která dnes schraňuje a stará se o většinu bazálních norem, na kterých je postavený internet.

Jednou z nich je dokument RFC 791 ze září roku 1981, který i po bezmála 35 letech popisuje, jak má vlastně ten paket – v tomto případě přesněji řečeno datagram – vlastně vypadat, jedná se totiž o naprosto klíčový dokument s všeříkajícím názvem Internet Protocol.

Takový datagram si opravdu můžeme představit třeba jako pohled. Skládá se z popisných a adresních informací a ze samotných dat. Pokud bychom tedy chtěli zobrazit na webu nějakou fotografii, zdrojový server její soubor rozřeže na malé kousky dat, které obalí popisnými informacemi, a ty pak vyšle k cíli. Každý pak může letět různou cestou, aby se pak v cíli opět všechny složily do souboru JPEG, který prohlížeč zobrazí na monitoru.

833514255
Nejjednodušší IP datagram, jak jej definuje specifikace z počátku 80. let Skládá se z hlavičky s popisnými informacemi a ze samotných dat na konci, které obsahují třeba kus fotografie.

Jelikož jsou ajťáci občas docela vtipná individua, už léta letoucí se internetem šíří podobné obrázky jako ten níže, které napovídají, jak by to asi vypadalo, kdybychom podobné IP datagramy posílali klasickou poštou.

863295689
Představte si IP datagram jako úřední papírový formulář. Mohl by vypadat třeba takto. Nejprve byste nahoře vyplnili IP adresy odesílatele a příjemce, zaškrtli další nastavení paketu a teprve vpravo dole napsali pár bajtů kilobajtů dat, které datagram vlastně nese do cíle.

Ačkoliv je takový tištěný formulář datagramu sám o sobě poměrně vtipný, zároveň je perfektní pomůckou pro laiky, jak to vlastně celé funguje, formulář je totiž snáze uchopitelný než jakási sada bitů.

IP datagramy a pakety jsou vlastně také takové formuláře a technicky vzato by celý internet mohl samozřejmě fungovat i tak, že bychom skutečně u každého datagramu ručně vyplnili IP adresu odesílatele a příjemce, další popisné informace a nakonec naťukali na psacím stroji pár desítek kilobajtů ze souboru, který chceme poslat. Pokud bychom chtěli tímto způsobem dopravit snímek z fotoaparátu, který má třeba 2 MB, je zřejmé, že takových formulářů bude celá přepravka, se kterou pak zajedeme na poštu.

Listonoška je spojení na poslední míli

Internetová komunikace by si s tím teoreticky poradila, protože transport dat z bodu A do bodu B se ve skutečnosti skládá z několika vrstev, které popisuje referenční model ISO/OSI. Na nejnižší fyzické vrstvě se nachází technologie, které se starají o samotný fyzikální přenos informace. V případě internetu to tedy může být elektrický vodič, optické vlákno nebo třeba radiový přenos. V případě naší analogie s poštou by to zase mohla být listonoška pro spojení na poslední míli u vašeho operátora a poštovní vagón jako paralela k velkým vnitrostátním páteřním sítím. Velký poštovní uzel, kde se třídí dopisy a balíky ze všech různých míst, je pak určitou paralelou třeba k peeringovému uzlu NIX, který naopak propojuje zdejší operátory a hostery. Letecké spojení nakonec odpovídá mezikontinentálním optickým linkám nataženým na dně světových oceánů.

Jelikož jsou jednotlivé vrstvy ISO/OSI modelu relativně nezávislé – starají se prostě jen o tu svoji konkrétní práci, fyzickou linku realizovanou routery a kabeláží bychom skutečně mohli vyměnit za četu brigádníků, kteří budou vypisovat naše tištěné datagramy. Samotnému internetovému protokolu na síťové vrstvě je to totiž naprosto jedno. Mělo by to snad jen jeden háček – obrovskou latenci.

Představte si, že byste třeba testovali spojení s počítačem pomocí příkazu ping. Aby paket doletěl z vašeho počítače do cíle, který by odeslal zpět odpověď, že spojení proběhlo v pořádku, potřeboval by k tomu několik dlouhých dnů. A pokud byste dopisy s datagramy neposílali doporučeně, docela možná by došlo i k vysoké ztrátě paketů. Doporučený dopis je tedy určitou paralelou zase k protokolu TCP, který kontroluje, jestli všechny pakety korektně dorazily, a ten klasický s minimální garancí je pak zase určitou paralelou k protokolu UDP, který se proto používá třeba u multimediálních streamů, kde by kontrola ztráty paketů jen zdržovala a hlavně by se ve výsledku příliš neprojevila.

Tvárný internet

Podstatné je to, že tento bizarní způsob internetové komunikace je naprosto možný a stačí jen na nižších vrstvách ISO/OSI modelu vyměnit klasické fyzikální prostředky za něco jiného. Díky tomu celý mechanizmus, který je desítky let starý, může fungovat i v 21. století. Je neskutečně tvárný.

Typickým příkladem je třeba Wi-Fi. Když se před 35 lety rodil onen Internet Protocol a tedy systém datagramů adresovaných pomocí klasické IP adresy, o Wi-Fi ještě neměl nikdo ani páru, první specifikace z rodiny 802.11 totiž dorazila až v roce 1997. Přesto spolu obě technologie mohou bez problému fungovat, protože se Wi-Fi stará o nižší vrstvu komunikace.

A stejně tak je internet relativně pružný v otázce přechodu ze starého Internet Protocolu z osmdesátých let na jeho vylepšenou verzi IPv6 z let devadesátých. Přechod je sice často komplikovaný, ale jde to.

Optické vlákno může zastoupit holub

Ohromnou odolnost ISO/PSI modelu síťové komunikace prokázal v praxi jeden ze zmíněných aprílových vtípků organizace IETF, která 1. dubna roku 1990 publikovala další RFC specifikaci s číslem 1149 a názvem A Standard for the Transmission of IP Datagrams on Avian Carriers.

Vtípek, který měl pobavit hlavně síťaře, popisuje přenos informací na fyzické a linkové vrstvě, přičemž nosičem je v tomto případě ptactvo – cvičený holub. Specifikace praví, že jsou data paketů převedená do šestnáctkové soustavy a vytištěná na svitek papíru. Poté holub odletí a v cíli dojde k elektronickému převodu informace (OCR) a dalšímu zpracování.

Byl to hezký aprílový vtípek pro nerdy… Než se však RFC 1149 stalo opravdovou výzvou. Na jaře roku 2001 jej úspěšně otestovali fanoušci počítačových sítí z norského Bergenu, kteří pomocí letky holubů v praxi spustili příkaz ping na vzdálenost pěti kilometrů.

Typický ping skrze standardní internet

C:\ping zive.cz

Pinging zive.cz [5.198.129.128] with 32 bytes of data:
Reply from 5.198.129.128: bytes=32 time=7ms TTL=55
Reply from 5.198.129.128: bytes=32 time=8ms TTL=55
Reply from 5.198.129.128: bytes=32 time=12ms TTL=55
Reply from 5.198.129.128: bytes=32 time=7ms TTL=55

Ping statistics for 5.198.129.128:
 Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
 Minimum = 7ms, Maximum = 12ms, Average = 8ms

Doba odezvy dosahuje několika milisekund, což je typické pro svižné domácí internetové připojení a relativně blízký cíl.

Takhle vypadal ping skrze holubí internet

vegard@gyversalen:~$ ping -c 9 -i 900 10.0.3.1
PING 10.0.3.1 (10.0.3.1): 56 data bytes
64 bytes from 10.0.3.1: icmp_seq=0 ttl=255 time=6165731.1 ms
64 bytes from 10.0.3.1: icmp_seq=4 ttl=255 time=3211900.8 ms
64 bytes from 10.0.3.1: icmp_seq=2 ttl=255 time=5124922.8 ms
64 bytes from 10.0.3.1: icmp_seq=1 ttl=255 time=6388671.9 ms

--- 10.0.3.1 ping statistics ---
9 packets transmitted, 4 packets received, 55% packet loss
round-trip min/avg/max = 3211900.8/5222806.6/6388671.9 ms
vegard@gyversalen:~$ exit

Script done on Sat Apr 28 14:14:28 2001

Doba odezvy díky holubům vzrostla řádově na miliony milisekund a ztráta paketů je vysoká, bylo totiž hezké počasí, a někteří holubi se proto raději doletěli dvořit potenciálním partnerkám a s odpovědí se nikdy nevrátili.

Experiment se tehdy povedl, příkaz ping proběhl úspěšně, ačkoliv přirozeně s ohromnou latencí bezmála dvou hodin (až 6 389 731 ms). Při těchto rychlostech byste tedy fotografii stahovali dlouhé dny. Pokud by však takový holub namísto svitku papíru nesl třeba SD kartu, síťová komunikace by sice nadále dosahovala ohromné latence, ovšem celková přenosová rychlost při vícero holubech by mohla s dostatečnou kapacitou SD dosáhnout mnoha Gb/s. Sice byste na každou odpověď serveru čekali hodinu a déle, ale když už by dorazila, stáhli byste třeba film během okamžiku.

A opět, to vše by mohlo fungovat, aniž by si toho „všimla“ některá z vyšších vrstev OSI/ISO modelu včetně těch nejvyšších, kam již patří protokoly jednotlivých služeb jako třeba HTTP, FTP aj.

Pokud byste tedy v prohlížeči zadali adresu fotky s naší slečnou z úvodu a obě strany se předem domluvily na tom, že budou na odpověď čekat neomezený čas, nakonec by se skutečně začaly objevovat na monitoru první řádky pixelů, jen co by holub přilétl zpět s SD kartou zaplněnou jedním obřím IP datagramem.

Relativní odolnost současného internetu jako takového tedy nespočívá pouze v paketové technice, kdy je balík dat rozdělený na maličké kousky, které mohou do cíle cestovat různými směry, ale také díky univerzálnímu modelu vrstev, kde může jednu techniku nízkoúrovňového přenosu nahradit jiná, aniž by se zhroutila celá komunikace. I proto dodnes používáme internet, jehož základy jsou vlastně neskutečně staré a dodnes fungují.

Diskuze (10) Další článek: Týden Živě: Ty jeden plešatej ******! Hate speech budí vášně

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , ,