Vzdušné zámky, nebo postupná přístavba?
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.
Ve světě počítačových sítí se můžeme setkat se dvěma základními koncepcemi, resp. síťovými architekturami - s tzv. referenčním modelem ISO/OSI, a s koncepcí protokolů TCP/IP. Internet vychází z druhé z nich, a zřejmě i díky tomu dosáhl svého dnešního rozmachu.
Rozhodne-li s někdo vymyslet úplně od základů, jakým způsobem mají počítačové sítě fungovat, má několik možností jak se svého úkolu zhostit - jednou z nich je možnost řídit se jen a jen svými představami, svými cíli a záměry, a nebrat ohledy na záměry, představy a přání někoho jiného. Například určitá firma může vytvořit takovou koncepci počítačové sítě, která bere do úvahy specifické vlastnosti jejích produktů, vychází jim maximálně vstříc a efektivně využívá jejich schopností, avšak existenci jiných než vlastních produktů nebere příliš v potaz - nedělá si žádné násilí s tím, aby vyšla vstříc produktům jiných firem, resp. aby vyhověla a přizpůsobila se odlišným představám, Tvůrce takovéto koncepce přitom většinou ani nepřipouští to, aby mu do jeho představ jakýmkoli způsobem mluvil či zasahoval někdo jiný. Jeho přístup se pak obvykle označuje přívlastkem proprietární (proprietary).
Proprietární přístup k řešení počítačových sítí býval typický pro větší a velké počítačové firmy. Právě tímto způsobem například vznikla koncepce počítačových sítí firmy IBM, známá pod názvem SNA (Systems Network Architecture), či koncepce sítě DNA (Digital Network Architecture) firmy DEC. Důvodem uplatnění proprietárního přístupu přitom byla snaha těchto velkých firem stát se pro svého zákazníkem doslova vším - dodavatelem veškerého hardwaru, softwaru, i všech služeb - a maximálně si jej k sobě připoutat. Bylo ovšem jen otázkou času, kdy i velké počítačové firmy dospějí k poznání, že takovýto přístup nemá šanci. Že uživatelé se nechtějí vázat na jediného dodavatele, dostat se do jeho područí, a nechat si diktovat ceny i další podmínky. Naopak, uživatelé začali stále více požadovat možnost volby mezi různými výrobci a dodavateli, což ve svém důsledku vedlo i k technickému požadavku na koexistenci různých počítačů a výpočetních systémů, a na možnost jejich vzájemné spolupráce. No a tomuto požadavku proprietární sítě nedokázaly požadovaným způsobem vyhovět. Proto i v oblasti počítačových sítí došlo záhy k odklonu od proprietárních koncepcí, a k nástupu koncepcí otevřených - otevřených v tom smyslu, že od začátku a zcela programově počítají s možností koexistence a spolupráce různých produktů, pocházejících od různých výrobců, a pokud možno i produktů, které samy vychází z poněkud jiných filosofických a koncepčních základů (mají např. různé operační systémy apod.).
Vytvoření ne-proprietární koncepce ovšem nebylo dost dobře možné očekávat od některého konkrétního výrobce. Kandidáty byly spíše takové subjekty, které v jistém smyslu stály nad všemi výrobci, a nebyly svázány pupeční šňůrou s žádným z nich - šlo například o nejrůznější normalizační instituce, tvořící různé standardy, a dále o subjekty z akademické a vědeckovýzkumné oblasti. V našem konkrétním případě se našly dva takové subjekty: mezinárodní organizace ISO (International Standards Organization, správně: International Organization for Standardization), sdružující národní standardizační a normalizační instituce, a dále lidé kolem rodící se počítačové sítě Internet. Zajímavé přitom bylo, že oba subjekty použily zcela odlišný přístup k řešení úkolu, který si předsevzali - s trochou nadsázky bychom přístup prvního subjektu mohli charakterizovat jako "stavění vzdušných zámků", a přístup druhého jako "postupnou přístavbu".
Referenční model ISO/OSI - na třetí pokus
Základní představou, na které založila své řešení organizace ISO, je představa o tom, že stačí sezvat dostatečný počet odborníků, posadit je za společný stůl, a poskytnout jim dostatek času. Oni pak již vymyslí takové řešení, které bude zcela jistě nejrozumnější, nejoptimálnější, a ještě v mnoha a mnoha směrech nej .... Dalším podstatným momentem pak byla představa, že řešení je nejprve třeba vymyslet a "hodit na papír", a teprve pak má smysl začít uvažovat o jeho implementaci.
Původním zadáním, které shromážděná skupina odborníků od organizace ISO dostala, bylo vymyslet celkovou koncepci otevřených systémů, se vším všudy. Zadavatelé tomu dokonce vymysleli i název: Open Systems Architecture (doslova: architektura otevřených systémů). Již poměrně brzy se ale ukázalo, že takovéto zadání má příliš široký záběr, a že je nutné jej poněkud zúžit. Proto došlo k první změně zadání - novým úkolem bylo soustředit se pouze na otázky vzájemného propojení, a nezabývat se již konkrétním fungováním uzlů sítě jako samostatných prvků. Tomu odpovídala i změna pracovního názvu: z "architektury otevřených systémů" (Open Systems Architecture) se náhle stala "architektura propojování otevřených systémů" (Open Systems Interconnection Architecture). Ani to však nestačilo.
Lidé, kteří se v rámci příslušných pracovních skupin organizace ISO podíleli na řešení zadaného úkolu, pojali celou záležitost tak, že na všechno musí "dát svůj palec". Tedy že všechno musí buď vymyslet a standardizovat sami, nebo alespoň posvětit a formálně převzít to, co kdy vymyslel někdo jiný. Důsledkem tohoto přístupu pak byla skutečnost, že se velmi brzy začali zahlcovat prací na mnoha různých protokolech. Záhy proto dochází k další změně v celkovém zadání: nyní bylo úkolem vymyslet pouze základní rámec řešení s tím, že konkrétní protokoly by se dopracovávaly samostatně (a hlavně dodatečně). Tedy vlastně vymyslet jakousi šablonu bez konkrétní náplně, která by specifikovala celkový přístup k řešení daného problému (tj. propojení otevřených systémů), a pak, postupně, do tohoto rámce zasazovat konkrétní dílčí řešení. V důsledku toho se pak změnil i oficiální název celého projektu: z architektury propojování otevřených systémů (Open Systems Interconnection Architecture) se stal tzv. referenční model vzájemného propojování otevřených systémů (referenční model ISO/OSI, kde OSI je zkratkou od: Open Systems Interconnection).
Vrstvový model
Zastavme se na chvilku u jednoho charakteristického rysu referenčního modelu ISO/OSI, který je společný i pro všechny ostatní "otevřené" koncepce. Jde o myšlenku rozdělit jeden velký a obtížně řešitelný problém na několik menších a snáze zvládnutelných problémů, které by bylo možné řešit samostatně.
V konkrétním případě počítačových sítí a vzájemného propojování jde o myšlenku rozdělit síťové funkce do hierarchicky uspořádaných vrstev, a zařídit věci tak, aby každou vrstvu bylo možné řešit samostatně. Praktická realizace takovéhoto vrstvového modelu pak vyžaduje vymezení jednotlivých vrstev, vymezení jejich úkolů a povinností, a stanovení přesného rozhraní mezi jednotlivými vrstvami (což umožní nevázat řešení jedné vrstvy na konkrétní řešení jiné vrstvy).
Referenční model ISO/OSI je z tohoto pohledu pouze specifikací toho, kolik má být jednotlivých vrstev (konkrétně 7), jaké úkoly mají tyto vrstvy plnit, a jak má vypadat rozhraní mezi nimi. Referenční model pak již nespecifikuje, jakým konkrétním způsobem má která vrstva plnit své úkoly - to říkají až konkrétní protokoly , které jsou vždy příslušné určité vrstvě, a definují přesný způsob jejího fungování.
Stavění vzdušných zámků od zeleného stolu
Konkrétní protokoly pro jednotlivé vrstvy nejsou formální součástí referenčního modelu ISO/OSI (a právě proto je třeba jej chápat jen jako společný rámec, do kterého jsou zasazována konkrétní řešení). Tyto protokoly vznikaly postupně jako samostatné normy a doporučení, i když v širším slova smyslu jsou alespoň logickou součástí ISO/OSI (a jsou také označovány jako "protokoly ISO/OSI"). Proces jejich vzniku ovšem zdaleka není dovršen a uzavřen.
Vlastnosti protokolů ISO/OSI a možnosti jejich praktického nasazení jsou do značné míry ovlivněny způsobem jejich vzniku a celkovým přístupem jejich tvůrců. Ti se většinou schází "u zeleného stolu", kde shromažďují požadavky na to, co by takový protokol měl všechno umět, diskutují o těchto požadavcích i o způsobu jejich realizace, formulují vše do přesného zadání - a tak postupně vzniká specifikace nového standardu. Často ale jde o postupné "přihazování", při kterém se uplatní i takové požadavky, které jsou dosti specifické, ale které jsou přijaty s poukazem na to, že by se "mohly někdy někomu hodit". Výsledkem pak může být i takový protokol, který nelze dost dobře implementovat v jeho plné šíři, a tak se následně hledají jeho rozumně implementovatelné podmnožiny. To pak sebou přináší potenciální nebezpečí v tom, že když budou proti sobě stát dvě různé implementace téhož protokolu, nebudou si rozumět, protože každá z nich implementuje jinou podmnožinu daného protokolu.
Problém referenčního modelu ISO/OSI i jednotlivých navazujících protokolů je tedy především v jejich maximalistickém přístupu, který je mnohdy dosti odtržen od tvrdé reality a problémů praktické implementace. Tedy v tom, že jde spíše o "stavění vzdušných zámků", než o budování prakticky koncipovaných, účelových a především funkčních staveb.
Mezi odbornou veřejností se vedou intenzivní spory o tom, zda a kdy se protokoly ISO/OSI významnější měrou prosadí do praktického života. Situace na trhu nenasvědčuje tomu, že by se tak mělo stát v dohledné době - zkuste se schválně podívat kolem sebe, zda někde uvidíte nějaké síťové produkty na bázi ISO/OSI v běžném "přespultovém" provedení. Snad ještě produkty pro elektronickou poštu na bázi X.400, které pochází ze světa ISO/OSI - ale i ty budete nejspíše dlouho hledat mezi záplavou lacinějších, spolehlivějších a praxí ověřených produktů, založených na konkurenční koncepci protokolů TCP/IP.
Protokoly TCP/IP - postupná přístavba
Jak jsme si již uvedli v tématu týdne v CW 4/95, protokoly TCP/IP vytvořila skupina lidí kolem Vintona G. Cerfa zhruba v letech 1973 až 1979, za finanční podpory grantové agentury ARPA (později DARPA). Internet přešel na používání těchto protokolů formálně k 1.1.1983.
Stejně jako tvůrci referenčního modelu ISO/OSI, rozhodli se i tvůrci protokolů TCP/IP pro vrstvový model, neboli pro řešení rozdělené do hierarchicky uspořádaných vrstev. Ve svých úvahách však dospěli k jinému počtu vrstev (konkrétně ke 4 vrstvám), a v souvislosti s tím jim pak vyšla i poněkud jiná náplň práce jednotlivých vrstev.
I v dalších ohledem pak byl celkový přístup tvůrců protokolů TCP/IP dosti odlišný od přístupu tvůrců referenčního modelu ISO/OSI. Snad nejmarkantnější rozdíl byl v tom, že se snažili postupovat směrem od jednoduššího ke složitějšímu, začít spíše s menším rozsahem funkcí té které vrstvy či protokolu, a pak tyto funkce postupně obohacovat a rozšiřovat. Šlo tedy o pravý opak ke "stavění vzdušných zámků", které pak bylo nutné ořezávat tak, aby z nich šlo postavit alespoň něco - zde se budovalo postupně, a stavělo se na již existujících a praxí ověřených základech. To souvisí i s dalším aspektem, který se výrazně uplatnil a stále uplatňuje při vzniku protokolů TCP/IP - tyto jsou formálně specifikovány a "puštěny do světa" až teprve poté, co je jejich životaschopnost a možnost realizace prakticky ověřena (nejméně na dvou nezávislých implementacích).
Další podstatný rozdíl oproti referenčnímu modelu ISO/OSI je v přístupu k tomu, jak mají být využity, resp. začleněny technologie a protokoly, vznikající mimo rámec ISO/OSI, resp. mimo rámec protokolů TCP/IP. Toto se týká především konkrétních přenosových technologií lokálních sítí, a dnes i sítí rozlehlých - například technologií Ethernet, Token Ring, ATM apod.
Síťový model, ze kterého vychází protokoly TCP/IP, se k této otázce staví následovně: zařazuje všechny přenosové technologie (zajišťující vlastní přenos) do samostatné vrstvy, které říká vrstva síťového rozhraní (Network Interface Layer). Přitom ale neusiluje o to, aby tuto vrstvu sám naplnil - říká pouze, že v ní mají být použity takové technologie, mechanismy a protokoly, jaké jsou k dispozici. Stará se pouze o to, jak mají být použité protokoly navázány na bezprostředně vyšší vrstvu, kterou již sám definuje (a obsazuje především protokolem IP). Začlenění nových přenosových technologií je proto koncepčně velmi jednoduché, a obnáší vlastně jen stanovení a standardizování konkrétního způsobu, jakým mají být tyto protokoly využity protokoly bezprostředně vyšší vrstvy (tj. jak mají využity pro přenos síťových paketů protokolu IP atd.).
Naproti tomu referenční model ISO/OSI považuje za svou povinnost začlenit všechny nově vznikající technologie do sebe, a alespoň je formálně převzít. Jestliže je například nová přenosová technologie vyvinuta a standardizována jiným subjektem, než je organizace ISO, pak je příslušný standard alespoň formálně vydán i jako standard ISO. Například standardy Ethernetu, pocházející od sdružení IEEE (a jeho pracovní skupiny 802.3, známé jako standardy IEEE 802.3), byly převzaty jako standardy ISO s číslem 8802.3.
Zajímavý rozdíl je i povaze standardů a doporučení, které definují protokoly ISO/OSI a protokoly TCP/IP. V případě referenčního modelu ISOI/OSI jde o standardy de jure, které vydává organizace pověřená vydáváním standardů (s mezinárodní působností). Dodržování těchto standardů (na národní úrovni) je pak většinou formálně vymáháno - jejich přejímáním do formálně závazných národních norem, v rámci vládních profilů GOSIP či jiným způsobem. Vzhledem k malé dostupnosti implementací protokolů ISO/OSI je ale praktické naplňování těchto formálních požadavků dosti obtížné.
Naproti tomu protokoly TCP/IP jsou spíše příkladem standardů de facto. Jsou důsledně dodržovány proto, že za nimi stojí autorita jejich tvůrců, dlouholeté zkušenosti s provozem, obrovská základna instalací, a především pak praktické ověření jejich životaschopnosti. Formální statut standardů TCP/IP a proces jejich vzniku je popisován v samostatném článku.
Komu patří budoucnost?
Podobně jako v případě referenčního modelu ISO/OSI, není ani proces vývoje protokolů TCP/IP zdaleka uzavřenou záležitostí. Celkový počet protokolů, které se zařazují do tzv. rodiny protokolů TCP/IP (TCP/IP protocol suite), dnes dosahuje zhruba stovky, přičemž stále vznikají zcela nové protokoly a zdokonalené verze již existujících protokolů. Na rozdíl od protokolů ISO/OSI však tyto nové přírůstky mají převážně charakter vylepšení a zdokonalení, a reagují na aktuální požadavky ze strany uživatelů a jejich aplikací, a na praktické zkušenosti z provozování stávajících verzí protokolů TCP/IP. V případě referenčního modelu ISO/OSI jde v některých případech stále ještě o budování základních protokolů, které jsou nezbytně nutné pro celkovou funkceschopnost sítě.
I přes nadále probíhající vývoj - a možná i právě díky němu - je možné považovat protokoly TCP/IP za dostatečně vyzrálé, praxí ověřené a náležitě "zažité" řešení, zatímco v případě protokolů ISO/OSI by obdobné tvrzení asi nebylo na místě. A zde je také možná skryt klíč k řešení velkého dilematu: bude budoucnost ve znamení TCP/IP, nebo ve znamení ISO/OSI? Samotný Internet je jistě pádným důkazem toho, že protokoly TCP/IP fungují, a to docela úspěšně. Je tedy vůbec nutné přecházet na něco jiného?
Představa, že Internet by upustil od používání protokolů TCP/IP a přešel na protokoly ISO/OSI, je asi velmi málo pravděpodobná. A to i přesto, že před časem se právě Internet dobrovolně stal základnou, na které se testovaly některé vlastnosti protokolů ISO/OSI (proto, že nikde jinde je nebylo možné vyzkoušet v dostatečně velkém měřítku). Až protokoly ISO/OSI dostatečně vyspějí a prokáží svou životaschopnost, je docela dobře možné, že budou úspěšně koexistovat vedle protokolů TCP/IP. Nebo je možné, že oba dosud značně odlišné světy časem splynou. Kdoví. Předvídat budoucnost je ošemetné.