Vyšlo v týdeníku Computerworld č. 33/92 v roce 1992
Vytištěno z adresy: http://www.earchiv.cz/a92/a233c110.php3

Adresování v TCP/IP sítích - I.

V minulém dílu našeho seriálu jsme si naznačili, že síťový model TCP/IP zavádí na úrovni síťové vrstvy jednotnou abstrakci všech dílčích sítí, které tvoří výslednou soustavu vzájemně propojených sítí - tzv. internet. Podstata této abstrakce spočívá mj. i v použití jednotných 32-bitových adres, a to bez ohledu na skutečné (fyzické) adresy, používané v jednotlivých dílčích sítích. Podívejme se nyní na otázku IP adres poněkud podrobněji.

Obrázek 44.1.
Obr. 44.1.: Představa IP adresy
a/ bez členění na podsítě
b/ se členěním na podsítě (tzv. subnetting)
Jak jsme si již také uvedli minule, 32-bitové adresy, používané na úrovní síťové vrstvy (tzv. IP adresy), mohou být chápány jako jednosložkové (lineární) adresy, vyjadřující právě a pouze adresu jednoho hostitelského počítače. Pro síťovou vrstvu je ale 32-bitová IP adresa vždy dvousložková, tvořená číslem resp. adresou (dílčí) sítě a číslem resp. adresou hostitelského počítače, který se v této síti nachází - viz obr. 44.1. a/. Tato představa pak odpovídá členění výsledné soustavy sítí (internet-u) na jednotlivé dílčí sítě (viz minule, obr. 43.1. a/), kterými mohou být například jednotlivé lokální sítě typu Ethernet, Token Ring apod., až po velké rozlehlé sítě s velkým počtem hostitelských počítačů.

Podstata směrování v TCP/IP sítích

Důvod, proč síťová vrstva pracuje právě s takovouto představou, a nikoli s představou jednolité, dále nestrukturované výsledné sítě, je veskrze praktický: v zájmu minimalizace objemu směrovacích tabulek je směrování v TCP/IP sítích založeno jen na adresách (dílčích) sítí, a nikoli na adresách jednotlivých hostitelských počítačů v rámci těchto sítí.

Právě vyslovené tvrzení si zaslouží poněkud upřesnit: Každý hostitelský počítač, který chce odeslat nějaký IP datagram jinému hostitelskému počítači, dokáže z IP adresy příjemce snadno rozpoznat, zda tento leží ve stejné dílčí síti či nikoli. Pokud ano (nachází-li se například v téže síti typu Ethernet), pošle mu odesilatel svůj datagram přímo. Pokud se ale příjemce nachází v jiné síti, pošle odesilatel svůj datagram nejbližší bráně (resp. IP směrovači, viz minule) ve "své" síti. Na ní je pak rozhodnout, kudy datagram poslat dále. Podstatné přitom je, že při svém rozhodování vychází brána pouze z té části IP adresy konečného příjemce, která vyjadřuje příslušnou cílovou síť. V prvním přiblížení si lze představit, že každá brána má své směrovací tabulky ve formě seznamu dvojic <síť,brána>, a podle cílové sítě příjemce si v nich najde, které bráně má příslušný datagram poslat dále. Zbývající část IP adresy příjemce, která vyjadřuje adresu hostitelského počítače v rámci cílové sítě, pak využije až ta brána (poslední v řetězci), která již leží v příslušné cílové síti, a která pak datagram pošle přímo jeho konečnému adresátovi.

Třídy IP adres

32 bitů, vyhrazených pro IP adresy, je tedy nutné vhodným způsobem rozdělit na dvě části, tak aby tyto mohly vyjadřovat adresu sítě a adresu hostitelského počítače v rámci této sítě. Otázkou ovšem je, jak toto rozdělení provést. Filosofie síťového modelu TCP/IP totiž předpokládá, že jednotlivými dílčími sítěmi mohou být jak "malé" sítě s několika málo uzly (hostitelskými počítači), tak i "velké" sítě s tisíci i desítkami tisíc uzlů. Třicet dva bitů, které jsou k dispozici, pak nelze rozdělit jediným způsobem, který by pamatoval na sítě s velkým počtem uzlů, a současně měl i dostatečně velkou rezervu pro rychle rostoucí počet jednotlivých dílčích sítí.

Řešení, uplatněné u IP adres, pak spočívá v zavedení tří různých způsobů rozdělení 32 bitů na dvě části, resp. v zavedení tří různých formátů IP adres: jednoho pro dílčí sítě s velkým počtem uzlů resp. hostitelských počítačů, jednoho pro "středně velké" sítě, a jednoho pro "malé" sítě, s relativně malým počtem uzlů. Tyto formáty, označované jako třídy A, B a C (class A, B and C), ukazuje obrázek 44.2.

Obrázek 44.2.
Obr. 44.2.: Třídy IP adres
Adresy třídy A mají pro adresu sítě vyhrazeno 7 bitů, a pro adresu hostitelského počítače 24 bitů. Adres této třídy je tedy relativně velmi málo, počítají však s velmi velkým počet uzlových počítačů. Jsou určeny pro velké rozlehlé sítě, jako např. síť ARPAnet (viz 39. díl seriálu), která se stala zárodkem sítě Internet, pro velké veřejné sítě, případně i velké podnikové sítě. Adresy třídy B, které připouští až 65534 uzlů (hostitelských počítačů), jsou určeny pro středně velké sítě, např. pro univerzitní sítě, podnikové sítě apod., a používají se též v souvislosti s tzv. subnetting-em (podsítěmi, viz dále). Adresy třídy C, které počítají jen se 254 uzly, jsou pak určeny pro všechny ostatní sítě.

Symbolický zápis IP adres

32-bitové IP adresy je samozřejmě možné vyjadřovat jako celá dvojková čísla. Pro člověka to ale není příliš srozumitelné, a tak se pro symbolický zápis IP adres zavedla vhodná konvence, označovaná jako tečkovaná desítková notace (dotted decimal notation). Spočívá v tom, že 32 bitů IP adresy se rozdělí na čtyři části po osmi bitech (oktety), a každá z těchto částí se pak vyjádří jako celé desítkové číslo bez znaménka (s použitím tečky jako oddělovače jednotlivých částí). Například nepříliš mnemonický tvar 10000000 00000001 00000010 00000011 tak dostává přehlednější podobu: 128.1.2.3. Význam desítkové notace ilustruje též tabulka 44.3.

první oktet adresy síťová část adresy část adresy, představující relativní adresu uzlu v rámci sítě maximální počet hostitelských počítačů
třída A 1-126 p q.r.s16777214
třída B 128-191 p.q r.s 65534
třída C 192-223 p.q.r s 254
Tabulka 44.3.: Desítková tečkovaná notace a IP adresy (je-li p.q.r.s obecný tvar IP adresy)

Jak volit IP adresy?

V principu je možné volit IP adresy dle vlastního uvážení. Je ovšem nutné dbát na dodržení jedné zásadní podmínky, a tou je jednoznačnost. Nesmí se totiž stát, aby se v jakémkoli konglomerátu vzájemně propojených sítí adresy dvou různých sítí shodovaly (přesněji ty části IP adres, které vyjadřují adresu sítě) - jinak totiž bude mít mechanismus směrování velké problémy.

U každé počítačové sítě či soustavy sítí, budované pomocí protokolů TCP/IP, je však prakticky jen otázkou času, kdy je jejich provozovatelé budou chtít připojit do dnes již celosvětové sítě Internet (viz např. CW 7/92). Také zde samozřejmě platí zásada jednoznačnosti adres, takže všechny nově připojované sítě musí mít dosud nepoužité adresy. V Internetu proto existuje centrální autorita (konkrétně: DDN Network Information Center, SRI International, 333 Rawenswood Avenue, Menlo Park, California 94025), která se stará o hospodaření s IP adresami, a přiděluje je všem potenciálním zájemcům (přesněji: přiděluje tu část IP adres, která představuje adresu sítě, zatímco zbývající část IP adres si volí žadatel. Ve skutečnosti tak přiděluje vlastně celé skupiny IP adres se shodnou první částí). Skutečné připojení k síti Internet přitom vůbec není podmínkou pro přidělení adresy, takže je naopak dobré si přidělení adresy vyžádat co nejdříve, pokud možno ještě před zprovozněním jakékoli sítě na bázi TCP/IP (a tím se vyhnout pozdější změně IP adres, která je samozřejmě možná, ale obvykle značně pracná).

V našich zeměpisných šířkách však není nutné se pro přidělení IP adresy obracet až do USA. DDN NIC, která adresy spravuje, totiž delegovala svou pravomoc v přidělování IP adres pro oblast ČSFR výpočetnímu centru pražské VŠCHT (Technická 5, 166 28 Praha 6).

Subnetting

Jak jsme si již naznačili výše, při směrování v TCP/IP sítích se vychází pouze z té části IP adresy, která představuje adresu (dílčí) sítě. Výhodou jsou neskonale menší směrovací tabulky, než jaké by musely být v případě směrování podle celých IP adres.

Obrázek 44.4.
Obr. 44.4.: Představa členění na podsítě (tzv.subnetting)
Přesto se ale v síti Internet záhy ukázalo, že i tak vychází směrovací tabulky větší, než by bylo vhodné. Proto se zpětně do TCP/IP prosadil mechanismus, označovaný v angličtině jako subnetting, který se snaží další nárůst směrovacích tabulek omezit.

Myšlenku tohoto mechanismu si můžeme ukázat na příkladu organizace, připojené k síti Internet, která provozuje více dílčích sítí, a pro každou z nich má přidělenu samostatnou adresu (nejspíše třídy C). Každá z těchto dílčích sítí je pak ovšem "samostatně viditelná" i z vně příslušné organizace, a jako se samostatnou je s ní také nakládáno - ve směrovacích tabulkách každá zabírá samostatnou položku. Kdyby se ovšem příslušná organizace sama postarala o potřebné směrování mezi svými sítěmi, a navenek vystupovala jako jediný celek, mohla by mít přidělenu jen jednu síťovou adresu (například třídy B místo více síťových adres třídy C), a ve směrovacích tabulkách by tak zabírala jen jednu položku. Všechny dílčí sítě, patřící příslušné organizaci, by tak navenek vystupovaly jako síť jediná, s jedinou společnou adresou (přesněji: s IP adresami, které se shodují v části, vyjadřující adresu sítě). Skutečné vnitřní členění této navenek jednotné sítě by pak bylo plně v kompetenci příslušné organizace. Ta by také musela změnit přesný způsob, jakým sama interpretuje IP adresy svých hostitelských počítačů, a to podle obrázku 44.1. b/ - tu část, která z vnějšího pohledu představuje číslo resp. adresu hostitelského počítače, by pro sebe musela rozdělit na dvě části - číslo resp. adresu své dílčí sítě (podsítě, neboli subnet, odsud subnetting), a na číslo resp. adresu hostitelského počítače v rámci této podsítě. V nejjednodušším případě adresy třídy B tak, že třetí oktet bude považovat za číslo podsítě, a čtvrtý za číslo uzlu (hostitelského počítače) - viz obrázek 44.4. V obecném případě pak podle tzv. masky podsítě (subnet mask), viz obrázek 44.1. a/, která obě části IP adresy nově definuje.