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

Protokol IP

V předcházejících dílech našeho seriálu jsme se zabývali adresami a způsobem adresování na různých úrovních - tedy fyzickými adresami, IP adresami i symbolickými jmény, a dále otázkou směrování. Nyní se již budeme věnovat konkrétním mechanismům přenosů v TCP/IP sítích.

Vraťme se však ještě jednou ke 42. dílu, ve kterém jsme si naznačili celkovou filosofii síťového modelu TCP/IP, a srovnávali ji s filosofií referenčního modelu ISO/OSI. Zde jsme si uvedli, že síťový model TCP/IP vychází z předpokladu, že zajištění spolehlivosti při přenosu dat je spíše otázkou koncových účastníků, a nikoli otázkou komunikační podsítě. Řečeno jinými slovy: síťový model TCP/IP zařazuje mechanismy pro zajištění spolehlivosti přenosů až do vrstvy transportní, a nikoli do vrstvy síťové (resp. tzv. IP vrstvy). Od této vrstvy očekává pouze jednoduchou přenosovou službu nespojovaného (connectionless) charakteru, která by sice neměla samovolně ztrácet přenášené pakety, ale na druhé straně zase není povinna podnikat žádné nápravné akce v případě, že se některý paket skutečně

Obrázek 53.1.
Obr. 53.1.: Služby, poskytované na jednotlivých úrovních síťového modelu TCP/IP
ztratí, nebo když jej tato vrstva není z objektivních důvodů schopna doručit - například kvůli přeplněným vyrovnávacím pamětem, kvůli výpadku spojení atd. Takovouto nespolehlivou nespojovanou službu však musí síťová vrstva poskytovat jednotným způsobem v rámci celé soustavy vzájemně propojených sítí (tj. v rámci celého internetu, s malým "i"), bez ohledu na to, zda jsou data ve skutečnosti přenášena po lokální síti typu Ethernet, po dvoubodovém spoji, veřejnou datovou sítí či jiným způsobem.

Nad touto nespolehlivou nespojovanou přenosovou službou na úrovni síťové vrstvy pak TCP/IP model buduje spolehlivou transportní službu, a nad ní pak různé druhy aplikačních služeb - viz obrázek 53.1.

IP, neboli Internet Protocol

Věnujme se nyní způsobu, jakým je v TCP/IP modelu implementována výše zmíněná nespolehlivá a nespojovaná přenosová služba na úrovni síťové vrstvy. Definuje ji protokol, který se plným jménem nazývá Internet Protocol, ale nejčastěji je označován zkratkou IP.

Obrázek 53.2.
Obr. 53.2.: Představa IP datagramů a datových rámců
IP protokol definuje základní jednotku dat, která je soustavou TCP/IP sítí přenášena na úrovni síťové vrstvy, tzv. Internet datagram, zkráceně IP datagram, a jeho přesný vnitřní formát. Definuje také způsob, jakým mají být jednotlivé IP datagramy směrovány, a toto směrování pak příslušný IP software také zajišťuje. Kromě toho IP protokol také podrobněji definuje i další aspekty poskytované nespolehlivé a nespojované přenosové služby - například podmínky, za jakých mohou být přenášené pakety zahazovány, kdy mají být generována chybová hlášení a jaká tato hlášení mají být.

IP datagram a jeho formát

Podobně jako každý jiný druh paketu či rámce, má i IP datagram dvě základní části: řídící část, tvořenou hlavičkou datagramu, a datovou část. Jak naznačuje obrázek 53.2., při vlastním přenosu se tento datagram vkládá (jako data) do datové části rámce, se kterým pracuje bezprostředně nižší

Obrázek 53.3.
Obr. 53.3.: Formát hlavičky IP datagramu
vrstva - vrstva síťového rozhraní. V hlavičce jsou pak různé řídící informace, potřebné pro doručení datagramu resp. rámce - v případě hlavičky rámce jde mj. o fyzickou adresu skutečného odesilatele a bezprostředního příjemce, zatímco v hlavičce IP datagramu jde o IP adresy koncového příjemce a původního odesilatele. Jelikož v datovém rámci mohou být v principu přenášeny i jiné druhy paketů, musí zde být vyjádřeno také to, o jaký konkrétní druh paketu se v daném případě jedná (například v sítích typu Ethernet se druh paketu udává pomocí dvoubytové položky v hlavičce rámce, a IP datagramy zde mají vyhrazen kód 0800H). Podobně je tomu i na úrovni paketu, resp. IP datagramu - také v jeho hlavičce musí být vyjádřeno, jaký je význam obsahu datové části. V případě IP datagramu jde o jednobytovou položku, udávájící číslo protokolu na úrovni transportní vrstvy, kterému obsah IP datagramu patří (položka PROTOCOL, viz obr. 53.3.).

Maximální délka IP datagramu

Konkrétní formát hlavičky IP datagramu ukazuje obrázek 53.3. Za zmínku stojí například velikost položky TOTAL LENGTH, která udává celkovou délku IP datagramu (tj. jeho hlavičky i datové části), měřenou v oktetech (tj. v osmibitových bytech). Jelikož tato položka má rozsah 16 bitů, omezuje tím maximální možnou velikost IP datagramu na 65 535 oktetů.

Doba života

Další zajímavou položkou je jednobytová položka TIME TO LIVE. Ta udává, jak dlouho (měřeno v sekundách) se daný IP datagram může nacházet v soustavě vzájemně propojených sítí. Tato položka je jakousi pojistkou proti nekonzistentnostem ve směrovacích tabulkách, díky kterým by mohlo dojít k situaci, že by IP datagram byl směrován v kruhu, a obíhal v něm nekonečně dlouho. Tomu zabraňuje právě tato položka, jejíž obsah je každá mezilehlá brána povinna snižovat podle toho, jak dlouho se v ní příslušný datagram "zdrží". Jakmile dojde k vynulování položky TIME TO LIVE (doslova: doba života), je podle pravidel IP protokolu brána oprávněna daný IP datagram zahodit.

Fragmentace datagramů

Skutečnost, že IP protokol musí být schopen přenášet své datagramy prostřednictvím různých druhů přenosových cest, má některé významné důsledky. Například velikost datových rámců, přenášených na úrovni vrstvy síťového rozhraní TCP/IP modelu, je závislá na konkrétní přenosové technologii, pomocí které je daná dílčí síť realizována. V případě lokálních sítí typu Ethernet je to 1500 oktetů, zatímco například sítě Token Bus připouští rámce až do velikosti 8191 oktetů, a veřejné datové sítě na bázi doporučení X.25 pracují s rámci až do velikosti 4096 oktetů. Některé moderní přenosové technologie však pracují s mnohem menšími rámci - například jen 128 oktetů či ještě méně. Protokol IP se ale dost dobře nemůže přizpůsobit nejmenšímu možnému formátu rámce, aby do něj mohl vždy vložit svůj IP datagram celý. Proto musí počítat s možností fragmentace (viz též 41. díl našeho seriálu), při které pro potřeby přenosu dochází k rozdělení původního datagramu na několik dílčích fragmentů - tak velkých, aby se již vešly celé do těch rámců, které je příslušná síť schopna skutečně přenést - viz obr. 53.4. Jak jsme si již také naznačili ve 41. dílu, jde přitom o tzv. netransparentní fragmentaci, při které jednotlivé fragmenty skládá do původního celku až jejich koncový příjemce. Ten pak k tomu využívá položky IDENTIFICATION, FLAGS a FRAGMENT OFFSET jednotlivých fragmentů.

Nepovinné části IP datagramů

Obrázek 53.4.
Obr. 53.4.: Představa fragmentace
Položka IP Options, která v hlavičce IP datagramu následuje IP adresu konečného adresáta, je položkou nepovinnou. Je určena především pro potřeby testování a ladění. Pomocí této položky, která má proměnnou délku, je například možné zaznamenávat cestu, kterou je příslušný datagram postupně přenášen - což je neocenitelné zvláště pro potřeby správy sítí. Kromě IP adres bran, kterými datagram postupně prochází, je možné v této položce zaznamenávat i čas, kdy datagram jednotlivými bránami prochází. Dalším mechanismem, velmi užitečným pro správu vzájemně propojených sítí, je pak možnost explicitně předepsat v této položce trasu, kterou má být IP datagram doručen.