Vyšlo v týdeníku CHIPweek č. 33/96, 13. srpna 1996
Vytištěno z adresy: http://www.earchiv.cz/a96/a633k150.php3

Protokoly TCP/IP (II.)

V minulém dílu jsme se seznámili s nejdůležitějšími protokoly TCP/IP, které spadají do nižších vrstev (síťové a transportní), a naznačili jsme si jejich celkovou filosofii. Dnes se již dostaneme k prvnímu orientačnímu pohledu na nejdůležitější protokoly TCP/IP, patřící do aplikační vrstvy.

Nabídka aplikačních protokolů v rámci TCP/IP je opravdu bohatá, a neustále se rozšiřuje. Vedle dnes již „klasických" aplikací, jako je vzdálené přihlašování, přenos souborů či elektronická pošta, se totiž začínají prosazovat i služby zcela nové, a pro jejich fungování jsou samozřejmě nezbytné i zcela nové protokoly. Začněme ale od počátku, aplikačními protokoly které byly součástí TCP/IP od úplného začátku (a někdy mají dokonce ještě starší kořeny než samotná rodina protokolů TCP/IP).

Vzdálené přihlašování - Telnet

Potřeba vzdáleného přihlašování (anglicky: remote login) je v rámci TCP/IP řešena protokolem Telnet. Ten se v souladu s celkovou filosofií TCP/IP snaží spíše o jednoduchost, univerzálnost a minimální vazbu na okolní systémové prostředí, tak aby umožnil vzájemnou spolupráci (formou vzdáleného přihlašování) i dosti odlišným platformám. Prostřednictvím Telnetu se například můžete přihlásit k Unixovskému počítači, přičemž váš počítač, vystupující v roli vzdáleného terminálu, může být velmi jednoduchým PC s MS DOSem, výkonnějším PC s MS Windows, nebo znovu Unixovským počítačem či něčím ještě úplně jiným. Stejně tak dobře se ale můžete přihlásit (prostřednictvím Telnetu) třeba k sálovému počítači, k počítači VAX apod. Důležité je to, aby systémové prostředí vzdáleného počítače podporovalo terminálové relace a vzdálené přihlašování prostřednictvím Telnetu (aby zde byl implementován tzv. Telnet démon) - což třeba Unix běžně činí, ale například MS Windows (včetně Windows NT) nikoli.

Podstatným rysem protokolu Telnet je jeho rozšiřitelnost - na schopnosti obou komunikujících stran se zcela záměrně snaží klást co možná nejmenší nároky, tak aby šanci měl i velmi „hloupý" (tj. jednoduchý) klient. Pokud ale proti sobě stojí dva uzly s dokonalejšími schopnostmi, mohou se vzájemně dohodnout na jejich používání. Příkladem může být vztah k přenosu jednotlivých znaků v rámci sedmi či osmi bitů - Telnet standardně počítá s tím, že jednotlivé znaky jsou přenášeny jako sedmibitové (což mj. činí značné problémy české diakritice). Pokud ale obě komunikující strany dokáží pracovat s osmibitovými znaky, mohou se dohodnout na změně, a předávat si osmibitové znaky.

Přenos souborů - FTP a TFTP

Pro přenos souborů je v rodině protokolů TCP/IP určen protokol FTP (File Transfer Protocol). Jeho koncepce je poměrně starého data (dokonce starší než samotné TCP/IP), a pamatuje ještě na některé skutečnosti, které jsou dnes již dosti „pasé" - například na rozdílné velikosti bytů na obou stranách přenosu. Přesto se ale protokol FTP s úspěchem používá dodnes, pro přenos celých souborů mezi dvěma uzlovými počítači sítě, například pro „stahování" souborů z nejrůznějších anonymních FTP archivů (které byly podle protokolu FTP dokonce pojmenovány).

Jednou z důležitých vlastností protokolu FTP je jeho povědomí o uživatelích, adresářích a přístupových právech: uživatel, který chce prostřednictvím protokolu FTP odněkud někam přenášet nějaké soubory, se musí vzdálené straně nejprve identifikovat (přihlásit se, pod určitým uživatelským jménem), a svou identitu prokázat (zadáním správného hesla). Vzdálená strana pak má podle čeho posuzovat oprávněnost požadavků na přístup ke konkrétním souborům. Při přenosu souborů prostřednictvím protokolu FTP je tedy možné realizovat nejrůznější přístupové strategie.

Obdobné vlastnosti naopak postrádá další protokol, který je v rodině protokolů TCP/IP určen také přenos souborů. Jde o protokol TFTP, neboli Trivial File Transfer Protocol. Jak již jeho název napovídá, jde o zjednodušenou obdobu protokolu FTP, ochuzenou právě o pojmy uživatele, přístupových práv, a dokonce i o pojem aktuálního adresáře. Chcete-li odněkud někam přenést soubor prostřednictvím protokolu TFTP, musíte vždy explicitně zadat úplnou přístupovou cestu k požadovanému souboru (a nelze například použít přístupovou cestu relativní, vztaženou k aktuálnímu adresáři). Oprávněnost vašeho požadavku navíc není podle čeho posuzovat (jelikož TFTP nezná pojem uživatele), a je proto ponecháno na konkrétní implementaci, jak se k němu druhá strana zachová. Většinou vám vyhoví kladně pouze v případě, kdy požadovaný soubor je běžně přístupný pro všechny uživatele. V praxi je protokol TFTP používán zejména bezdiskovými stanicemi k tomu, aby si z příslušného serveru „natáhly" svůj operační systém (ve formě tzv. bootovacího image).

El. pošta

Základní koncepce elektronické pošty je v rámci rodiny protokolů TCP/IP definována jednak protokolem SMTP (Simple Mail Transfer Protocol), a jednak standardem RFC821. Tento standard definuje formát zpráv, přenášených elektronickou poštou, do čehož spadá mj. i způsob adresování a formát adres (proto se v této souvislosti hovoří i o adresování á la RFC821). Protokol SMTP se pak týká konkrétního způsobu přenosu jednotlivých zpráv mezi poštovními servery.

Důležitou vlastností elektronické pošty, definované standardem RFC821 a protokolem SMTP (a označované obvykle jako tzv. SMTP pošta) , je orientace na přenos čistě textových zpráv tvořených sedmibitovými znaky (tzv. čistými ASCII znaky). Ačkoli přenosové cesty obvykle dokáží přenášet osmibitové znaky a mnohé implementace SMTP pošty s nimi dokáží pracovat, obecně to zaručeno není. Pak stačí jediné „sedmibitové úzké hrdlo" v celém přenosovém řetězci, aby z obsahu původně osmibitové zprávy zbylo jen hodně málo jejího původního obsahu.

Lidé ale potřebují přenášet prostřednictvím elektronické pošty v prostředí TCP/IP (tj. prostřednictvím tzv. SMTP pošty) i takové věci, které nemají charakter čistě textových zpráv, tvořených pouze sedmibitovými znaky. Například binární (datové) soubor, programy, ale také formátované texty, texty s národních abecedách apod. Jelikož ale přenosový mechanismus el. pošty garantuje korektní přenos pouze pro sedmibitové znaky, musí být vše ostatní pro potřeby přenosu zakódováno právě do této podoby (tj. do podoby posloupnosti sedmibitových znaků).

Pokud se všechny komunikující strany správně dohodnou, je v zásadě jedno, jaké konkrétní kódování použijí. V praxi se pak nejvíce ujalo tzv. uuencodování, pocházející ještě z doby existence protokolů UUCP (Unix-to-Unix Copy Protocol). To se sice stalo jistým nepsaným standardem, který dokáže vyhovět potřebám přenosu jednotlivých netextových příloh k textovým zprávám, ale stále ještě nejde o systematický přístup, který by věc řešil zásadním způsobem, formou všeobecně uznávaného a akceptovaného standardu. To dělá až novější standard MIME (Multipurpose Internet Mail Extensions), který lze chápat jako rozšíření původní koncepce elektronické pošty. Jak už název tohoto standardu napovídá, počítá s existencí nejrůznějších formátů včetně multimediálních, a činí z elektronické pošty dosti univerzální přenosový kanál.

Standard MIME v zásadě definuje tři věci:

  • použitelné způsoby kódování přenášených dat
  • způsob vyjádření typu dat, které jsou přenášeny
  • způsob „vložení" netextových dat do původní, čistě textové zprávy (formátované dle RFC82).

Jak uvidíme později, některé mechanismy a konvence standardu MIME se používají i jinde, než jen v elektronické poště - například když WWW server posílá svému klientovi (browseru) nějaká data, musí k nim připojit také informaci o typu těchto dat. A právě k tomu používá konvence standardu MIME (tzv. MIME type).

Standard MIME je jedním z novějších přírůstků ve světě TCP/IP, a je motivován především soudobým rozvojem Internetu a potřebami jeho uživatelů. Stejným důvodům vděčí za svůj vznik i další protokoly, které ještě také souvisí s elektronickou poštou. Jde například o celou skupinu protokolů, které dovolují vzdáleným uživatelům (nejčastěji s připojením komutovanými linkami veřejné telefonní sítě) stahovat si jejich elektronickou poštu z poštovních serverů, na které jim jejich pošta dochází. V současné době je k tomuto účelu nejvíce používán protokol POP (Post Office Protocol) verze 3. Původní protokol SMTP není k tomuto účelu použitelný proto, že předpokládá trvalou existenci spojení, a pak také proto, že nedovoluje ověřit identitu uživatele, který by si jeho prostřednictvím stahoval svou poštu.