V minulých dílech seriálu o sítích jsme se zejména bavili o jejich
architekturách (protokolových, vrstvových) a jejich typech (lokálních,
metropolitních a rozlehlých). Zabývali jsme se tak vlastně stavebními bloky
jakékoli sítě a pravidly její výstavby. Dnes se podíváme na konkrétní řešení
protokolové struktury, která teprve umožňuje skutečnou síťovou komunikaci,
neboť obsahuje všechny protokolové vrstvy potřebné pro koncového uživatele a
jeho komunikaci s ostatními, pro něho důležitými uzly sítě (další uživatelé,
servery poskytující požadované služby, periferní zařízení). Vzhledem k významu
architektury TCP/IP pro současný Internet se ve stručnosti podíváme právě na
ni, a ostatní používané (a zajímavé) protokolové architektury pro tuto chvíli
ponecháme stranou (Novell IPX/SPX, Banyan Vines, AppleTalk, DECnet, OSI apod.).
V jednom článku samozřejmě není možné pokrýt celou problematiku TCP/IP, kterou
se dnes zabývá přes 2 800 dokumentů RFC internetové komunity.
Internet a TCP/IP
Síť Internet, umožňující propojení heterogenních sítí za použití souboru
protokolů Transmission Control Protocol/Internet Protocol (TCP/
/IP), není třeba představovat. Vzhledem k růstu popularity Internetu není divu,
že i architektura TCP/IP se stala jednou z nejvyužívanějších v oblasti síťové
komunikace. Termín intersíť (internet) se používá pro označení několika sítí
propojených prostřednictvím některého mechanismu pro propojování síťových
segmentů, nejčastěji směrovači, zatímco Internet (s velkým počátečním písmenem)
chápeme jako označení největší celosvětové intersítě.
TCP/IP jako soubor protokolů pro propojování heterogenních sítí od různých
dodavatelů byl vyvinut v 70. letech na základě objednávky Government\s
(Defense) Advanced Research Projects Agency (DARPA, původně ARPA) USA pod
záštitou Ministerstva obrany USA (Department of Defense, DoD). Cílem bylo
propojit různorodé počítače mnoha vojenských a výzkumných pracovišť a universit
do rozsáhlé sítě. Prakticky do počátku 90. let byl Internet doménou výzkumných
a akademických pracovišť, ale postupně o jeho přednosti začaly projevovat zájem
i soukromé organizace. Došlo k otevření jeho využívání subjekty nejrůznějšího
charakteru (vládní, nevládní organizace, výrobní společnosti, poskytovatelé
služeb, dealeři i soukromé osoby). Správa a rozvoj Internetu včetně nových
specifikací protokolů zůstává ve veřejné doméně.
Všechny informace o síti Internet (konvencích a síťových protokolech) jsou od
roku 1969 publikovány v tzv. Request for Comments (RFC), vydávaných Radou pro
architekturu Internetu (Internet Architecture Board, IAB) a veřejně dostupných
dnes prostřednictvím WWW, elektronické pošty nebo z FTP serveru. Specifikace
skupiny IETF (Internet Engineering Task Force) jsou považovány za de facto
normy, tj. žádnému z orgánů spravujících vývoj Internetu a jeho technických
specifikací nebyl přiznán statut mezinárodní normalizační organizace (na rozdíl
od ISO, IEC, ITU, IEEE apod.). Nejdůležitější z RFC jsou uvedeny na obrázku
Hlavní protokoly síťové architektury TCP/IP (čísla RFC odpovídají hlavním
normalizovaným protokolům). Aktuální přehled existujících RFC a jejich status
je k dispozici např. na adrese
http://info.internet.isi.edu:80/in-notes/rfc/rfc-index.txt.
Vrstvová architektura TCP/IP
Protokolová architektura TCP/IP samozřejmě nezahrnuje pouze dva protokoly,
které má ve zkratkách ve svém názvu. Na rozdíl od sedmivrstvového referenčního
modelu OSI však protokolovou architekturu TCP/IP tvoří jen čtyři vrstvy (viz
obrázek Porovnání architektury TCP/IP s referenčním modelem OSI pro srovnání
architektury TCP/IP a referenčního modelu OSI), od nejnižší po nejvyšší:
- vrstva rozhraní sítě (network interface),
- vrstva mezisíťová (internet layer),
- transportní vrstva (transport layer),
- aplikační vrstva (application layer).
Přestože architektura TCP/IP nemůže odpovídat rozvrstvení podle referenčního
modelu OSI, neboť vznikla před jeho oficiálním přijetím (v roce 1969), z
hlediska komunikačních funkcí a hranic mezi nimi modelu vcelku odpovídá.
Nejnižší vrstva, vrstva rozhraní sítě, svými funkcemi odpovídá dvěma nejnižším
vrstvám podle OSI, fyzické a spojové. Druhá nejnižší vrstva, vrstva mezisíťová,
přesně odpovídá funkcemi, službami i rozhraními vrstvě síťové podle
referenčního modelu OSI. Podobně je tomu u následující vrstvy, transportní,
která plní transportní funkce definované v referenčním modelu OSI. Nejvyšší
vrstva architektury TCP/IP, aplikační, v sobě zahrnuje funkce tří nejvyšších
vrstev podle OSI, prezentační, relační a aplikační.
Vrstva rozhraní sítě
Nejnižší vrstva architektury TCP/IP umožňuje přístup k fyzickému přenosovému
médiu. Je přímo zodpovědná za přístup k síti, a je proto specifická pro každou
síť podle její implementace. V současnosti se může využívat všech známých typů
přenosových prostředí, lokálních sítí (Ethernet, Token Ring, FDDI) i rozlehlých
sítí (X.25, ATM, apod.) pro podporu TCP/IP. Využití každého typu fyzické
"podsítě" (v tomto smyslu fyzického podkladu pro protokoly TCP/IP) je
definováno v příslušných RFC.
Vrstva mezisíťová
Mezisíťová vrstva (internet layer) odpovídá svými funkcemi a službami vrstvě
síťové referenčního modelu OSI. Její funkce zahrnují především síťovou
(logickou) adresaci, směrování a předávání datagramů přes komunikační podsíť.
Další funkcí této vrstvy je provádět segmentaci a znovusestavování datagramů do
a z rámců specifikovaných protokolem nižší vrstvy.
Protokoly, pracující v této vrstvě, poskytují následující služby
prostřednictvím zmíněných protokolů:
- segmentace, sestavování a předávání datagramů protokol IP verze 4 a 6,
- mapování adres protokoly ARP, RARP,
- předávání zpráv pro řízení protokol ICMP,
- směrování protokoly RIP, OSPF, EGP, BGP,
- správa skupin stanic protokol IGMP.
Protokol IP
Protokol intersítě (Internet Protocol, IP) je zodpovědný za vysílání datagramů
(TCP/IP používá místo pojmu paket pro síťovou datovou jednotku pojem datagram)
na základě síťových adres obsažených v jejich záhlavích a poskytuje síťovou
službu bez spojení. Každý datagram je samostatná datová jednotka, která musí
obsahovat všechny informace o adresátovi i odesilateli, číslo jeho pořadí ve
zprávě (pokud povolená velikost datové jednotky nižší vrstvy je menší než
celková délka datagramu, musí být rozdělen do několika fragmentů), neboť
datagramy se posílají nezávisle na sobě a pořadí jejich doručení nemusí
odpovídat jejich pořadí ve zprávě. Protokol IP nezaručuje doručení datagramu,
proto je tato síťová služba označena jako nespolehlivá, ale s nejlepší vůlí
datagram doručit (best effort). Architektura TCP/IP nepoužívá žádný spolehlivý
protokol na síťové vrstvě, proto se spoléhá na protokoly vyšších vrstev, že v
případě ztráty datagramů zajistí jejich opětovný přenos. Protokol IP prošel
několika verzemi své specifikace a momentálně se za "normu" považuje verze 4
protokolu (RFC 791). Již několik posledních let se připravuje nová, vylepšená
verze protokolu (next generation), která je označena jako verze 6. Nicméně není
zatím plně schválená, a proto nadále se používá známého protokolu verze 4
(IPv4).
Adresace IP
Síťové adresy IP verze 4 jsou 32bitové (v délce čtyř oktetů) a typicky jsou
zapisovány jako čtveřice přirozených desítkových čísel (každé vyjadřující
hodnotu oktetu) oddělených tečkou (např. binární IP adresa 10000000 00001010
00000010 00011110 se v dekadické notaci píše 128.10.2.30). Adresa má dvě části:
- adresu sítě první část adresy, přidělená správcem IP adres (regionálně/
kontinentálně American Registry for Internet Numbers, ARIN, Réseau IP
Européenne, RIPE a Asia Pacific Network Information Center, APNIC, resp.
poskytovatelé přístupu k Internetu),
- adresu uzlu v síti poslední část adresy, přidělena správcem sítě.
Adresy mohou být individuální, skupinové nebo všeobecné. Každé rozhraní v
(globální) síti musí mít jedinečnou IP adresu (pro soukromé sítě, nepřipojující
se k Internetu, přímo tato podmínka neplatí). Ve výjimečných případech nemusí
mít přidělenu adresu žádnou (možnost výhradně pro sériové porty směrovače) nebo
může mít přidělenu více jak jedinou IP adresu (primární a sekundární adresy).
Třídy adres
Adresy mohou být tvořeny podle jednoho z následujících pěti formátů (tříd):
- třída A používá první oktet adresy pro identifikaci sítě a zbývající tři
oktety pro identifikaci rozhraní. Poskytuje největší rozsah adres stanic v
rámci jedné sítě, ale je omezena na 126 platných adres sítě. Adresa 127.0.0.0
je rezervovaná pro adresu lokální smyčky (loopback), tj. softwarová
zpětnovazební adresa (obvykle 127.0.0.1) pro lokální meziprocesovou komunikaci
v rámci jednoho počítače (bez vysílání do sítě, proto by se v síti neměla nikdy
objevit). Získání adresy třídy A je dnes prakticky nemožné;
- třída B používá první dva oktety adresy pro identifikaci sítě a zbývající dva
oktety pro identifikaci rozhraní. Adresy třídy B jsou již téměř rozděleny mezi
abonenty Internetu, podniky a poskytovatele přístupu k Internetu;
- třída C používá první tři oktety adresy pro identifikaci sítě a zbývající
oktet pro identifikaci rozhraní. Adresy třídy C poskytují minimální prostor pro
adresování stanic v síti (jen 254 možných adres), ale jsou dnes prakticky
jedinými dostupnými adresami pro přímé připojení k Internetu;
- třída D zatímco třídy A-C adres sloužily k adresaci jednotlivých uzlů a sítí,
třída D se věnuje adresaci skupin (RFC 1112); skupinová adresace se používá pro
řadu moderních aplikací, např. videokonference;
- třída E třída nejmenšího rozsahu adres slouží jen pro experimentální účely.
Všechny platné adresy v rámci jedné sítě (třídy A-C) neoznačují stanice,
protože v adresním prostoru IP adres jsou některé adresy vyhrazeny pro
speciální účely. Jsou to adresy určené např. pro všeobecné vysílání, ladění
komunikačních programů apod. Tyto "adresy" jsou rezervovány pro svůj určený
význam (přitom binární 0 znamená "tento počítač /tato síť", 1 znamená
"všechny"):
- 0.0.0.0 "tento" počítač na "této" síti (počítač ještě nezná svoji adresu, ale
musí komunikovat např. při zavádění systému přes síť ze serveru, tato adresa
tedy může sloužit jako zdrojová, nikoli však jako cílová);
- adresu sítě v části identifikace stanice jsou dvojkově 0 (např. adresa
10.0.0.0 neoznačuje žádnou stanici, ale síť třídy A);
- adresu počítače v části identifikace sítě jsou dvojkově 0, tj. počítač nezná
adresu sítě, ale zná svoji adresu v této síti (např. 0.0.0.5);
- všeobecnou adresu lokální (broadcast) všechny bity adresy jsou nastaveny na
dvojkovou 1 (adresa 255.255.255.255), tato adresa se výhodně využívá k adresaci
stanic nebo serverů při neznalosti ani jejich příslušnosti k síti. Jedná se o
lokální adresu; protože za běžného režimu pakety na tuto cílovou všeobecnou
adresu nejsou propuštěny směrovačem dále a zůstávají v lokální síti (nebo
podsíti), tato adresa může být pouze cílová;
- všeobecnou adresu v síti (směrovanou, directed) v části identifikace stanice
jsou dvojkově 1 (např. adresa 10.255.255.255 je všeobecnou adresou pro síť
10.0.0.0, tj. všechny stanice připojené k této síti jsou touto adresou
specifikovány), tato adresa může být pouze cílová. Všeobecné adresy a práci s
nimi specifikují RFC 919 a 922.
Pro adresy soukromých sítí jsou podle RFC 1918 vyčleněna následující síťová
čísla:
- třída A 10.0.0.0,
- třída B 172.16.0.0 až 172.31.0.0,
- třída C 192.168.0.0 až 192.168.255.0.
Původně tato síťová čísla byla určena pro sítě, které se neměly připojovat k
Internetu, ale z důvodu nedostatku adres se dnes používají pro podnikové sítě,
které používají vlastní mechanismus adresace skrytý za systémem "ochranné zdi"
(firewallem).
Podsíťové adresy
Vzhledem k neefektivnímu rozdělení adres, především nedostatku adres stanic pro
adresy třídy C a naopak nevyčerpatelnému přebytku adres uzlů v třídě A, se
přistoupilo k mechanismu tzv. podsíťování (subnetting). Část adresy původně
určená stanici v rámci sítě se rozdělí na dvě části: adresu podsítě (v rámci
pevně dané adresy sítě) a adresu stanice. Dodržuje se pravidlo, že pro
podsíťové adresy se využívá souvislého toku bitů zleva od (nedotknutelné)
adresy sítě (RFC 950 a 1812). Jakmile se používá podsíťování, je třeba přesně
rozlišovat mezi adresou sítě, adresou její podsítě a adresou stanice v rámci
dané podsítě. Zatímco v případě adresace bez použití podsíťování bylo při
pohledu na první oktet adresy zřejmé, jaká je její struktura (třída, adresa
sítě i stanice), pak s podsíťováním to již není tak jednoduché. Proto nestačí
pouhá IP adresa, ale musí být doplněna ještě tzv. podsíťovou maskou (subnet
mask). Maska má stejný formát jako adresa, 32 bitů v podobě čtyř desítkově
vyjádřených oktetů. Na pozicích bitů označujících v dané IP adrese rozhraní
adresu sítě a adresu podsítě je hodnota bitů masky 1, na pozicích bitů
sloužících pro adresu stanice má maska hodnotu 0. Implicitní masky (bez
jakéhokoli podsíťování, mají následující hodnoty:
- třída A implicitní maska 255.0.0.0,
- třída B implicitní maska 255.255.0.0,
- třída C implicitní maska 255.255.255.0.
Při podsíťování nelze ale používat zcela libovolný počet bitů pro adresaci
podsítí: musí existovat možnost adresovat alespoň nějaké stanice v podsíti
(proto se nepoužívá ani poslední bit, ani předposlední bit části adresy stanice
pro podsíťování), a naopak musí být jednoznačné, zda se jedná o adresu sítě či
její podsítě (nepoužívá se první, tedy jediný bit pro podsíťování, bez ohledu
na třídu adres). Jinými slovy, např. pro konkrétní adresu třídy B (např.
150.67.0.0), která má k dispozici dva oktety v části adresy stanice, lze použít
minimálně 2, maximálně však 14 bitů pro adresaci podsítí. Adresa podsítě by
neměla mít všechny bity nulové (kolize s adresou sítě), ani všechny bity
jedničkové (kolize s adresou všeobecnou), aby se vyloučila nejednoznačnost. Z
důvodů nedostatku adres je však možné se setkat s tzv. nulovou podsítí (subnet
zero), která používá tuto nedoporučenou variantu adresace. Je však třeba si
uvědomit, že ne všechna zařízení v intersíti (především směrovače) musí být
nutně nakonfigurována tak, aby této adrese (adresám IP stanic připojeným k této
podsíti) správně rozuměla.
Podle výše uvedených pravidel pro jednotlivé třídy adres lze sítě dělit jen do
určitého počtu podsítí:
-třída A pro adresy podsítí lze použít bity 10-30 adresy (prvních 8 bitů je
rezervovaných pro adresu sítě), proto masky mohou vypadat v rozsahu
(255.192.0.0 255.255.255.252) a celkem lze adresovat maximálně 221 -2 podsítí v
rámci jediné sítě;
- třída B pro adresy podsítí lze použít bity 18-30 adresy (prvních 16 bitů je
rezervovaných pro adresu sítě), proto masky mohou vypadat v rozsahu (255.255.
192.0 255.255.255.252) a celkem lze adresovat maximálně 213 -2 podsítí v rámci
jediné sítě;
- třída C pro adresy podsítí lze použít bity 26-30 adresy (prvních 8 bitů je
rezervovaných pro adresu sítě), proto masky mohou vypadat v rozsahu (255.
255.255.192-255.255.255.252) a celkem lze adresovat maximálně 25-2 podsítí v
rámci jediné sítě.
Kombinací konkrétní IP adresy stanice a příslušné podsíťové masky lze zjistit,
v jaké podsíti (případně síti, pokud se jedná o implicitní masku) stanice leží.
Používá se logický součin obou dvojkově vyjádřených čísel (logický součin dává
výsledek 1, pouze pokud oba operandy jsou 1). Tabulka Využití bitů pro
podsíťování v adrese třídy B uvádí počet podsítí adresy třídy B při využití
různého počtu bitů adresy.
Dokončení problematiky TCP/IP naleznete v příštím čísle PC WORLDu.
Autorkou seriálu o sítích je Ing. Rita Pužmanová, CSc., specialista na
propojování komunikačních sítí (rita@ieee.org)
Seznam použitých zkratek
APNIC Asia Pacific Network Information Center
ARIN American Registry for Internet Numbers
ARP Address Resolution Protocol
ARPA Advanced Research Projects Agency
BGP Border Gateway Protocol
BOOTP Bootstrap Protocol
DARPA Defense Advanced Research Projects Agency
DHCP Dynamic Host Configuration Protocol
DNS Domain Name System
DoD Department of Defense
DVMRP Distance Vector Multicast Routing Protocol
EGP Exterior Gateway Protocol
E-IGRP Enhanced Interior Gateway Routing Protocol
FTP File Transfer Protocol
HSRP Hot Standby Router Protocol
HTTP Hypertext Transfer Protocol
IAB Internet Architecture Board
ICMP Internet Control Message Protocol
IETF Internet Engineering Task Force
IGMP Internet Group Management Protocol
IGRP Interior Gateway Routing Protocol
IP Internet Protocol
MAC Medium Access Control
MOSPF Multicast Open Shortest Path First
NFS Network File System
OSPF Open Shortest Path First
PAR Positive Acknowledgement with Retransmission
PIM Protocol Independent Multicast
Ping Packet Internet Groper
RARP Reverse Address Resolution Protocol
RFC Request for Comments
RIP Routing Information Protocol
RIPE Réseau IP Européenne
RPC Remote Procedure Call
RSVP Resource ReSerVation Protocol
RTP Real-time Transport Protocol
SMTP Simple Mail Transfer Protocol
SNMP Simple Network Management Protocol
TCP Transmission Control Protocol
TFTP Trivial File Transfer Protocol
UDP User Datagram Protocol
VRRP Virtual Router Redundancy Protocol
Příklad: IP adresa 151.88.19.103 (třída B adresy) s podsíťovou maskou
255.255.255.224 znamená, že se používá k adresaci podsítí nejen celý třetí
oktet adresy (8 bitů), ale ještě první tři bity posledního oktetu (je k
dispozici celkem 11 bitů pro adresaci podsítí), a proto je stanice připojena k
podsíti 151.88.19.96, která patří do sítě 151.88.0.0. Všeobecná adresa pro síť
je 151.88.255.255 a všeobecná adresa pro naši podsíť je 151.88.19.127 (pouze
bity v části adresy stanice v rámci podsítě 5 bitů jsou nastaveny na 1).
Následující operace (logický součin) ukazuje, jak z kombinace IP adresy a
příslušné podsíťové masky lze zjistit číslo (adresu) podsítě:
IP adresa 151.88.19.103 = 10010111.0111000.00010011.01100111
podsíťová maska 255.255.255.224 = 11111111.11111111.11111111.11100000
adresa podsítě 151.88.19.96 = 10010111.0111000.00010011.01100000