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.
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.
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.s | 16777214 |
třída B | 128-191 | p.q | r.s | 65534 |
třída C | 192-223 | p.q.r | s | 254 |
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.
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.