Technologie internetu (2.): Problém internetových adres

13. 8. 2007

Sdílet

Na přelomu 80. a 90. let minulého století se internet začal otevírat mezinárodní akademické komunitě a později i komerčnímu světu a počet připojených organizací i uživatelů utěšeně rostl. K zásadnímu přelomu pak došlo v roce 1993 v souvislosti s lavinovitým šířením tehdejší novinky zvané World Wide Web.

Na přelomu 80. a 90. let minulého století se internet začal otevírat mezinárodní akademické komunitě a později i komerčnímu světu a počet připojených organizací i uživatelů utěšeně rostl. K zásadnímu přelomu pak došlo v roce 1993 v souvislosti s lavinovitým šířením tehdejší novinky zvané World Wide Web.

Internetový boom však odhalil závažný problém: prudce klesala zásoba volných IP adres. K obavám z jejího úplného vyčerpání nebylo zapotřebí velké extrapolační fantazie, střízlivé odhady tenkrát předpovídaly, že k tomu může dojít mezi roky 2005 a 2015, pokud by vše běželo jako dřív.

Z hlediska generála po bitvě bychom se mohli domnívat, že tomuto problému bylo možno předejít, kdyby návrháři protokolu IP předvídavě vyhradili pro adresy více než 32 bitů. To je ale nesmysl: ve skutečnosti byli na svou dobu až nepochopitelně velkorysí. Především, 32 bitů představuje asi čtyři miliardy různých IP adres. Toto číslo i dnes zřejmě převyšuje počet lidí, kteří umějí číst a psát. Ještě důležitější je ale historický kontext tehdejší komunikační technologie, v níž byla přenosová rychlost 9 600 bitů za sekundu považována za opravdový luxus. Přijít v takové situaci s nápadem, že se s každým paketem bude přenášet hlavička o délce 160 bitů (viz rámeček), bylo jistě velmi radikální. Bilance takového přenosu vypadala v některých případech, kupříkladu u interaktivních služeb typu telnet, opravdu tristně: 5 % užitečných dat a 95 % režie! Všechny konkurenční a dnes již prakticky zapomenuté technologie té doby proto kvůli zvýšení efektivity přenosu používaly výrazně kratší hlavičky paketů a méně bitů pro adresy. Kdysi velmi populární Decnet firmy Digital například používal šestnáctibitové adresy – v rámci jedné propojené sítě bylo tedy možné adresovat maximálně 65 tisíc počítačů.

Úsporná opatření

Jedna věc byla jasná: bezprostředním důvodem rychlého vyčerpávání adresového prostoru bylo nehospodárné přidělování adresových bloků připojovaným organizacím. V síti Arpanet, předchůdci internetu, se mezi sebou nejdřív propojovaly jen velké sálové počítače a minipočítače na území Severní Ameriky, a tak se s přidělováním adres nedělaly velké okolky: prvních osm bitů zleva se vzalo jako identifikátor sítě a na něm bylo založeno směrování mezi sítěmi zúčastněných organizací. Zbylých 24 bitů, tedy bratru 16 milionů IP adres, mohl každý účastník použít k adresování uvnitř své sítě. Počet připojených organizací tím byl ovšem omezen na 256, a proto se záhy přistoupilo k úspornější strategii: nově příchozím organizacím se podle jejich velikosti přiděloval adresový blok v jedné z následujících tříd:

● Třída A – 127 bloků s osmibitovým identifikátorem sítě: 1.*.*.* až 127.*.*.*
● Třída B – 16 384 bloků s šestnáctibitovým identifikátorem sítě: 128.0.*.* až 191.255.*.*
● Třída C – přes 2 miliony bloků s 24bitovým identifikátorem sítě: 192.0.0.* až 223.255.255.*

Části vyznačené hvězdičkou měli účastníci, jimž byl takový blok přidělen, k dispozici pro adresování svých počítačů. Třída A pokrývá polovinu adresového prostoru, třída B čtvrtinu a třída C osminu. Zbývající osmina byla ponechána v rezervě – část se z ní později použila pro skupinové adresy (multicast). Identifikátor sítě byl tedy zde už proměnlivý, ale jeho délka byla pro každou konkrétní adresu jednoznačně dána příslušností k některé z uvedených tří tříd.

I tento systém ale měl jednu vadu: Pro mnoho organizací byl jeden blok třídy C (256 adres) příliš malý. Proto jim byly přiděleny bloky třídy B, které byly naopak zase pro většinu z nich – snad s výjimkou mamutích univerzit a korporací – příliš velké, a tudíž z podstatné části nevyužité. Málokterý držitel adresového bloku třídy B využil přidělený adresový prostor z 10 %, běžné je spíš jednoprocentní či nižší využití. Počet bloků třídy B také není příliš velký, a tak bylo už začátkem 90. let jasné, že se tato třída záhy vyčerpá. To už bylo ovšem velmi vážné varování!

Komunita IETF proto začala intenzivně pracovat na operativních opatřeních, jimiž by se dal soudný den internetu oddálit. Během několika málo let se ujala dvě taková řešení:

1. Beztřídní adresování a směrování neboli CIDR (Classless Interdomain Routing), popsané v RFC 1518 a 1519.
2. Překlad síťových adres neboli NAT (Network Address Translation), popsaný v RFC 1631.

Jak název napovídá, CIDR odstranil adresové třídy – nově připojovaným organizacím bylo možné přidělovat adresové bloky na míru. Nevýhodou ale bylo, že z adresy teď nešlo přímo určit, jaká její část představuje identifikátor sítě. Tuto informaci bylo proto nutno dodat ve formě délky směrovacího prefixu, který určuje právě počet adresových bitů tvořících identifikátor sítě. V beztřídním internetu se tedy směruje na základě prefixů, které se skládají z IP adresy a z délky prefixu. Prefixy se obvykle zapisují pomocí lomítka, tedy například 155.221.0.0/16 představuje prefix se šestnáctibitovým identifikátorem sítě. Směrovače té doby však neuměly s prefixy pracovat, a proto nezbývalo, než je postupně vyměnit – nebo alespoň jejich software či firmware.

NAT zvolil jiný přístup. V RFC 1918 byly definovány speciální adresové bloky pro privátní internety: 10.0.0.0-10.255.255.255 (prefix 10.0.0.0/8), 172.16.0.0-172.31.255.255 (prefix 172.16.0.0/12) a 192.168.0.0-192.168.255.255 (prefix 192.168.0.0/16). Adresy z těchto rozsahů může každá organizace uvnitř své sítě používat podle libosti. Stejné adresy tak mohou být opakovaně užity ve velkém počtu privátních internetů. Jak se ale v takové případě zajistí komunikace napříč veřejným internetem? Tak, že každý privátní internet vystaví do toho veřejného jednu nebo více bran NAT – speciálních směrovačů, které zprostředkují komunikaci mezi privátním a veřejným internetem. Pro nejběžnější typ spojení mezi privátním klientem a veřejným serverem to funguje docela dobře: klient s privátní adresou zdánlivě komunikuje přímo s veřejným serverem. V cestě ovšem stojí brána NAT, která v každém paketu od klienta nahradí jeho zdrojovou adresu svou veřejnou adresou a pošle jej dále. Z pohledu serveru to vypadá tak, jako by klientské požadavky pocházely přímo od brány a odesílá proto své odpovědi s cílovou adresou brány. Na bráně pak je, aby si pamatovala, kterému z klientů tato odpověď patří, zapsala do paketu jeho cílovou adresu a odpověď mu poslala.

Mnohé organizace si NAT oblíbily i z jiných důvodů: umožňuje jim skrýt svou vnitřní síťovou infrastrukturu před vnějším světem, který je plný nebezpečí. Brána NAT, doplněná o filtraci paketů a jiné funkce, se pak stává i bezpečnostním prvkem – firewallem. V některém z příštích pokračování seriálu se ještě budeme firewally zabývat podrobněji.

Přechod na CIDR byly sice pracný, avšak CIDR jako takový neznamenal pro internet žádnou převratnou změnu ve způsobu komunikace a směrování paketů. U NAT je tomu naopak: Zavést si ho může o své vůli každá připojená organizace, avšak jeho značné rozšíření zásadním způsobem změnilo povahu internetu a velmi jej zkomplikovalo. Původní idea internetu, tedy transparentní komunikace mezi koncovými počítači jednoznačně identifikovanými IP adresou, zmizela v nenávratnu, a je otázkou, jestli se ještě někdy vrátí. Prakticky všechny služby jsou proto nyní odkázány na model klient-server, byť se v některých případech uplatňuje jen v dílčí podobě či fázi.

IP datagramy a adresy

Internet přenáší data ve formě paketů odborně nazývaných IP datagramy. Každý z nich je opatřen hlavičkou o délce 20 bajtů neboli oktetů (osmic bitů). V hlavičce jsou kromě dalších informací zapsány dvě adresy: odesílatele a příjemce.

IP adresy mají pevnou strukturu – tvoří je 4 oktety, tj. 32 bitů. Podle zažité konvence se zapisují v desítkové soustavě a po oktetech, které jsou odděleny tečkami, tedy například 192.168.25.254. Celkový počet IP adres je 232 = 4 294 967 296.

IP adresy se používají ke dvěma účelům: jednak k identifikaci koncového zařízení a za druhé ke směrování datagramů mezi sítěmi. Ke druhému účelu se ale používá jen určitý počet bitů z levého konce adresy, které se nazývají identifikátor sítě (NetID).

Přidělování IP adres probíhá ve třech úrovních: Celosvětovým správcem adresového prostoru je instituce IANA (Internet Assigned Numbers Authority), která přiděluje velké bloky adres pěti regionálním internetovým registrům (RIR): RIPE NCC (Evropa, Střední východ), ARIN (Amerika), APNIC (asijsko-pacifická oblast), AfriNIC (Afrika) a LACNIC (Latinská Amerika). Každý RIR svůj blok dále rozděluje poměrně velkému počtu lokálních internetových registrů (LIR), a ty přidělují bloky organizacím, které je o to požádají a splňují určitá kritéria.

V příštím pokračování seriálu se budeme věnovat definitivnímu řešení nedostatku adres – protokolu IP verze 6.