Vyšlo v týdeníku Computerworld č. 11/95,
Vytištěno z adresy: http://www.earchiv.cz/a95/a511c503.php3

Adresování v TCP/IP sítích

Tento článek vyšel v počítačových novinách Computerworld č. 11/95, v rámci tzv. tématu týdne, jako součást série článků věnovaných problematice Internetu.


Jedním z významných rozhodnutí, učiněných na samém počátku vývoje protokolů TCP/IP, bylo rozhodnutí o překrytí všech konkrétních přenosových technologií jednotnou "pokličkou" na úrovni síťové vrstvy. Jak již víme z hlavního článku ("Filosofie TCP/IP"), realizuje tuto jednotnou "pokličku" protokol IP (Internetwork Protocol), pracující na úrovni tzv. síťové vrstvy.

Důsledkem tohoto rozhodnutí byla i potřeba překrýt všechny rozličné způsoby adresování jednotlivých uzlů i celých sítí, vyplývající z použití příslušných přenosových technologií, a snaha používat na úrovni jednotné "pokličky" (tj. protokolu IP) jednotný způsob adresování, nezávislý na konkrétním druhu sítě - tzv. IP adresy. Volba jednotného způsobu adresování přitom musela korespondovat i s dalšími koncepčními rozhodnutími, které autoři protokolů TCP/IP přijali. Především s tím, že nové protokoly budou určeny pro takové prostředí, které vznikne vzájemným propojením jistého počtu dílčích sítí. Přitom na určité úrovni abstrakce budou tyto dílčí sítě uvažovány jako dále nedělitelné celky (například pro potřeby tzv. směrování), zatímco v jiných situacích se budou rozlišovat i jednotlivé uzly v rámci těchto sítí. To vedlo na nutnost zvolit takové IP adresy, které by měly dvě logické složky - číslo, resp. adresu sítě jako celku, a dále adresu uzlu v rámci dané sítě. Pro praktickou manipulaci s IP adresami bylo samozřejmě velmi žádoucí, aby "fyzicky" byly jednosložkové (tj. byly jedinou lineární posloupností bitů), a jejich rozdělení na dvě logické složky bylo až záležitostí interpretace jejich významu.

Nejjednodušší řešení právě naznačených požadavků by mohlo spočívat v tom, že pro celé adresy by se zvolila jednotná velikost, například 32 bitů, přičemž by bylo stanoveno, že nejvyšších 16 bitů představuje adresu sítě, a nižších 16 bitů představuje adresu uzlu v rámci dané sítě. Rozmysleme si ale dobře, co by to v praxi znamenalo: pokud by si někdo chtěl vybudovat takovou síť, která by měla více jak 2 na 16-tou (tj. 65536 uzlů), měl by jednoduše smůlu, a musel by svou síť rozdělit na více dílčích sítí, se samostatnými adresami. Na druhé straně takové sítě, které by měly jen málo uzlů, by v určitém smyslu plýtvaly přiděleným adresovým prostorem - zdaleka by nevyužívaly všech 16 bitů, rezervovaných pro adresy jednotlivých uzlů. To by vadilo v případě, že by takovýchto malých sítí začalo být hodně - pokud by jich i se všemi ostatními sítěmi mělo být více jak 2 na 16-tou (65536), měly by opět smůlu - tentokrát by se pro ně nedostávalo bitů v té části adres, které vyjadřují adresu sítě.

Tři třídy IP adres

Jednoduchým řešením by bylo dostatečně "nafouknout" celkový počet bitů, vyhrazených pro adresy jako takové, z námi uvažovaných 32 bitů například na 48, 64 apod. Autoři protokolů TCP/IP, zřejmě vedeni snahou zbytečně neplýtvat a zůstat u celkového počtu 32 bitů na jednu IP adresu, se rozhodli pro jiné řešení - rozhodli se přizpůsobit mechanismus adresování předpokladu, že budou existovat jak hodně velké sítě (kterých ale zřejmě nebude mnoho), tak i sítě středně velké, a stejně tak sítě velmi malé (kterých zase může existovat více). Proto se rozhodli použít pružnou "hranici" mezi oběma logickými složkami adres. Zvolili takové řešení, které připouští tři různé formáty adres - lišící se v tom, kolik ze zmíněných 32 bitů vyhrazují pro adresu sítě jako takové, a kolik pro adresu uzlu v rámci dané sítě:

  • adresy, označované jako adresy třídy A (Class A) jsou určeny pro velmi velké sítě: předpokládají, že pro adresu uzlu v rámci dané sítě je využitou 24 nejnižších bitů celé 32-bitové adresy, což znamená, že příslušné sítě mohou mít až 2 na 48 uzlů. Pro adresu sítě jako takové je pak vyhrazeno zbývajících 8 bitů, z nichž ale jeden bit je využit pro indikaci skutečnosti, že se jedná právě o tuto adresu třídy A. Takže pro adresu sítě jako celku zbývá pouze 7 bitů, neboli sítí s adresou třídy A může být jen 2 na 7, tj. 128. Z technických důvodů, které již přesahují rámec tohoto textu, však ještě méně, neboť některé z těchto adres jsou využity pro speciální účely. Podobně je tomu i u té části adresy, která představuje adresu uzlu v rámci sítě (zde mají speciální význam především dvě "krajní" hodnoty adres).
  • adresy, označované jako adresy třídy B (Class B) jsou určeny pro středně velké sítě. 32 bitů, které mají k dispozici, rozdělují na dvě stejně velké části: pro adresu uzlu v rámci sítě je vyhrazeno 16 bitů, což připouští až 2 na 16 uzlů (65536, ve skutečnosti ale jen 65534 uzlů). Pro adresu sítě je pak vyhrazeno 14 bitů (neboť dva jsou využity pro identifikaci skutečnosti, že jde o adresu třídy B), tedy sítí s adresou třídy B může být až 2 na 14, neboli 16 384.
  • adresy, označované jako adresy třídy C (Class C) jsou určeny pro malé sítě, které nemají více než 254 (256 - 2) uzlů - pro adresu uzlu totiž používají jen 8 z celkových 32 bitů, zatímco pro adresu sítě používají 21 bitů. Takovýchto sítí tedy může být velké množství - 2 na 21.

Kromě těchto tří základních tříd IP adres existují ještě dvě další třídy - D a E. Třída D (začínající čtveřicí bitů 1110) je určena pro tzv. skupinové vysílání (multicasting), a třída E (začínající pěticí bitů 11110) je vyhrazena pro budoucí využití.

Pro snažší "čitelnost" IP adres pro člověka byla zavedena následující konvence jejich zápisu: obsah každého ze čtyř bytů IP adresy je vyjádřen jako jedno dekadické číslo, a od ostatních bytů oddělen tečkou. Takže například zápis 193.84.252.191 je příkladem zápisu IP adresy třídy C, zatímco například 147.32.1.3 je příkladem zápisu IP adresy třídy B. Zdatnější čtenář si jistě sám dokáže odvodit, podle čeho se z takovéhoto zápisu pozná adresa třídy A, B a C.

Adresový prostor praská ve švech

Formát IP adres, který autoři protokolů TCP/IP přijali, je možné považovat za šikovný kompromis mezi požadavkem na co možná nejmenší adresy, a předpokladem o existenci různě velkých sítí. Ve své době byl tento kompromis zřejmě velmi rozumný. Co ovšem autoři nedocenili, a ve své době mohli jen těžko docenit, byl obrovský budoucí úspěch jimi navrhované síťové architektury. Jak dnes ve svých vzpomínkách uvádí, počítali spíše s desítkami, maximálně stovkami sítí v rámci Internetu, a nikoli s tím, jakých obrovských rozměrů dosáhne Internet zhruba za dvacet let od doby, kdy se museli rozhodnout. Přitom každý, kdo se k Internetu připojí, nebo jen plánuje někdy v budoucnu připojit, potřebuje pro svou síť celosvětově jednoznačnou IP adresu, kterou nemá žádná jiná síť. Uvědomme si ale dobře, co to přesně znamená: pro každou jednotlivou síť je nutné přidělit celou skupinu adres, shodující se v té své části, která představuje číslo sítě. Takže když si například někdo vybuduje síť se čtyřmi uzly, nechá si pro ni přidělit adresu třídy C. Ve skutečnosti dostane přiděleno 256 různých IP adres, které mají stejné číslo sítě (např. 193.84.252.0 až 193.84.252.255), a které jsou neformálně označovány jako jedna síťová adresa třídy C.

Adresový prostor, neboli množina všech možných IP adres, je apriorně omezený. Požadavky na přidělení IP adres přitom neustále rostou, takže je jen otázkou času, kdy budou všechny dosud volné IP adresy vyčerpány. Přesný odhad okamžiku, kdy k tomu dojde, je ale velmi obtížný - pesimistické odhady hovoří o roku 1996, optimistické o roku 2001. Příčinou tak velkého rozptylu odhadů je mj. i skutečnost, že celý adresový prostor nemůže být dělen s libovolnou jemností (viz výše uváděný příklad se sítí o 4 uzlech, pro kterou bylo potřeba vyčlenit 256 různých IP adres, resp. jednu síťovou adresu třídy C). Dalším důvodem je skutečnost, že některé již přidělené adresy nejsou skutečně využívány (neboť si o ně včas zažádali provozovatelé sítí, které ještě nejsou k Internetu připojeny). Kromě toho se stále více začínají používat některé zajímavé techniky, umožňující efektivněji využívat existují adresový prostor (např. tzv. subnetting, nebo techniky, související s použitím tzv. firewalls).

Současný stav je takový, že získat síťovou adresu třídy C (nebo skupinu takovýchto adres) není problémem. Tím naopak je získání síťové adresy třídy B, které jsou nejvíce vyčerpány. Provozovatel sítě, který by chtěl získat adresu třídy B, musí svůj požadavek velmi pečlivě zdůvodnit - především v tom smyslu, proč nemůže svou síť vhodně uzpůsobit tak, aby vystačil se skupinou adres třídy C. V praxi nemá smysl se pokoušet o získání adresy třídy B pro síť, která má pouze stovky počítačů.

Na obzoru je IPnG

Přestože se konkrétní odhady vyčerpanosti adresového prostoru IP adres významně liší, všichni se shodují v tom, že v dlouhodobém výhledu není dnešní situace udržitelná. Je tedy třeba podniknout rázné kroky, a to co možná nejrychleji. Tím, kdo by je měl podniknout je orgán, který se stará o koncepční rozvoj Internetu a protokolů TCP/IP jako takových - neboli Internet Architecture Board (IAB), jako součást společnosti Internet Society (podrobněji viz téma týdne v CW 4/95). IAB již před časem pověřil svůj odborný orgán IETF (Internet Engineering Task Force) nalezením konkrétního řešení. IETF postupoval tak, jak odpovídá celkové filosofii vzniku a schvalování nových protokolů v rámci TCP/IP - nejprve vyzval širší odbornou veřejnost k předkládání návrhů, a pak zorganizoval diskusi k jednotlivým návrhům a jejich vyhodnocení. Stal se platformou, na které nakonec došlo k všeobecnému konsensu, který posléze dostal formu předběžného návrhu standardu. Ten nyní musí projít obvyklou procedurou, na jejímž konci bude nový standard.

Pracovní název nového protokolu, který by byl alternativou ke stávajícímu protokolu IP a používal nový způsob adresování, je IPnG (od: IP New Generation). Toto označení však zřejmě bude nahrazeno označením IPv6, přičemž současný protokol IP je označován jako IPv4. Časový plán předpokládá, že první beta verze komerčních produktů s novým protokolem by se měly objevit kolem července letošního roku, a do konce roku by mělo být dokončeno jejich ověřování a měly by být běžně k dostání na trhu.

Nový protokol IP (IPnG, resp. IPv6) používá pro každou adresu 16 bytů (místo 4 bytů, resp. 32 bitů, které používá dosavadní verze protokolu IP). Nejde však o žádné zdokonalení či nadstavbu nad stávajícím protokolem IP - jde spíše o úplně nový protokol, který bude muset ještě dosti dlouhou dobu koexistovat vedle stávajícího protokolu IP. Bude jistě zajímavé sledovat, jaké praktické důsledky to přinese. Zatím je velmi těžké je odhadovat.