Vyšlo v Softwarových novinách č. 8/97, v srpnu 1997
Vytištěno z adresy: http://www.earchiv.cz/a708s600/a708s682.php3

TCP/IP je "best effort"

Pokud jde o otázku zajištění spolehlivosti přenosu, zde autoři TCP/IP zastávali názor, že přenosové části sítě by měly především přenášet data, a to co možná nejlépe, a neměly by se naopak zdržovat jinými věcmi - mezi které autoři řadili zejména zajištění spolehlivosti, neboli napravování případných chyb, pokud k nim při přenosech došlo. Důležitým momentem zde bylo přesvědčení, že ony "věci navíc" (například celkovou spolehlivost) dokáží lépe a s menší režii zajistit jiné subjekty než přenosová část sítě, konkrétně jednotlivé koncové počítače, se svou vlastní výpočetní kapacitou. Zajímavým momentem, který s tímto aspektem úzce souvisí, je předpoklad autorů o tom, že přenosové vrstvy i vyšší vrstvy budou spíše "v moci" stejného subjektu, a tudíž rozdělení konkrétních úkolů a funkcí do jednotlivých vrstev může být oproštěno od jakýchkoli "komerčních" zájmů (zatímco ve světě ISO/OSI se spíše předpokládalo, že přenosovou část bude provozovat někdo jiný, nejspíše na principu veřejné datové sítě, a tudíž bude mít zájem zabudovat do ní co možná nejvíce různých služeb a funkcí).

Celý přenosový subsystém TCP/IP je naopak koncipován jako jednoduchý, a navíc zaměřený takovým způsobem, který je možné charakterizovat přívlastkem "best effort" (ve smyslu: "maximální snaha"): přenosové mechanismy se samozřejmě snaží přenášet data bez chyb a vyvarovávat se aktivit, které by mohly k chybám vést. Jakmile ale již jednou k nějaké chybě dojde, nepovažují za svou povinnost postarat se o nápravu, a mohou si dovolit poškozená data zahodit (samozřejmě ne samovolně, ale teprve když zjistí, že k nějaké chybě skutečně došlo). Díky tomu pak mohou fungovat efektivněji, protože nemusí nést režii nezbytně spojenou s případným zajišťováním spolehlivosti. Protokol IP (Internet Protocol), který je hlavním přenosovým protokolem TCP/IP (a funguje na úrovni síťové vrstvy) je protokolem, který funguje na právě popsaném nespolehlivém principu (a kromě toho funguje nespojovaným způsobem, kvůli větší robustnosti).

Zajištění spolehlivosti je ve světě TCP/IP považováno za záležitost vyšších vrstev, konkrétně vrstvy transportní a aplikační. Důležité ale je, že spolehlivost není nikomu vnucována: v transportní vrstvě jsou implementovány dva vzájemně alternativní protokoly, TCP (Transmission Control Protocol), a UDP (User Datagram Protocol). První z nich mění nespojovaný charakter přenosů protokolu IP (na bezprostředně nižší vrstvě) na spojovaný, a sám také zajišťuje spolehlivost. Aplikace, které spolehlivost vyžadují a postačuje jim taková, jakou je TCP schopen nabídnout, pak využívají tento transportní protokol a nemusí se o zajištění spolehlivosti samy dále starat. Naproti tomu protokol UDP zachovává nespolehlivý a nespojovaný charakter fungování protokolu IP ( je vlastně jen velmi jednoduchou nadstavbou nad protokolem IP). Díky tomu, že nenese režii spojenou se zajištěním spolehlivosti, dokáže být protokol UDP rychlejší než protokol TCP, a v průměru také nabízí větší pravidelnost v doručování jednotlivých částí dat - protože zde nedochází k "časovým výpadkům" kvůli potřebě přenést znovu nějaké data, která se při přenosu poškodila. Protokol UDP si proto v praxi vybírají takové aplikace, které buď vůbec nepožadují spolehlivost, nebo dávají přednost pravidelnějšímu doručování jednotlivých částí dat (což jsou typicky multimediální aplikace). Kromě toho mohou dávat protokolu UDP přednost i takové aplikace, které mají naopak velmi vysoké požadavky na spolehlivost přenosů (například aplikace v bankovnictví). Takovéto aplikace si totiž potřebnou spolehlivost zajišťují samy (neboť jim nepostačuje ta, kterou nabízí TCP), a tak je pro ně výhodnější co možná nejrychlejší a nejjednodušší transportní protokol.