Princip konec-konec

Princip konec-konec (anglicky end-to-end principle) je jeden z ústředních principů použitých při návrhu protokolu TCP, hojně užívaného na Internetu. Tento princip je opakem principu hop-to-hop (používaném například v X.25). Princip je založen na tom, že pokud je to možné, měly by být operace komunikačního protokolu definovány tak, aby byly prováděny buď v koncových bodech komunikačního systému, nebo co nejblíže zařízení, které je ovládáno.

Návrh tohoto principu byl poprvé popsán roku 1981 v publikaci „End-to-end arguments in system design“ od Jeroma H. Saltzera, Davida P. Reeda a Davida D. Clarka. Tvrdili, že spolehlivé systémy mají tendenci vyžadovat ke své správné funkci tento princip, a to navíc k ostatnímu zpracování uvnitř systému. Zdůraznili, že většina funkcí implementovaných na nejnižší úrovni komunikačního systému zvýší náklady všech klientů na vyšších stupních systému, i když tito klienti tyto funkce nepotřebují, a stávají se nadbytečnými, jestliže klienti musí znovu implementovat tyto funkce podle principu end-to-end.

To vedlo k modelu „hloupé minimální sítě“ s chytrými terminály, který byl úplně odlišný od předchozího modelu chytré sítě s hloupými terminály.

Na příkladu protokolu TCP/IP lze ukázat, že IP je hloupý, bezstavový protokol, který jednoduše přemisťuje datagramy sítí, a TCP je chytrý transportní protokol, poskytující detekci chyb, znovupřenesení, řízení zácpy a řízení toku podle principu end-to-end. Síť samotná (routery) musí pouze podporovat jednoduchou, lehkou IP; na konečných bodech (počítačích) běží TCP, je-li to třeba.

Druhým kanonickým příkladem je přenos dat. Každý spolehlivý protokol obstarávající přenos dat a program pro přenos dat by měl obsahovat kontrolní součet, který je zkontrolován až poté, co vše bylo úspěšně zapsáno na disk.

Kontrolní součet je nezbytný, aby diskové a softwarové chyby nepoškodily data.

Klíčovým zařízením je v tomto případě souborový systém. Princip end-to-end dovoluje programu, který má přístup k souborovému systému, řídit rychlost přenosu dat, a umožňuje v případě potřeby znovupřenesení dat s minimálním zpožděním – díky blízkosti souborového systému a řízení přenosu.

Princip end-to-end stanoví, že v nižších vrstvách systému mají být funkce protokolu implementovány pouze tehdy, pokud to zlepšuje výkon. Přeposílání na úrovni TCP zvyšující spolehlivost je tedy obhajitelné, ale snahy o zvýšení spolehlivosti TCP by měly přestat, pokud již nepřinášejí další zlepšení výkonu.

Princip end-to-end se ukázal být vhodným pro aplikace, které vyžadují vysoký stupeň věrnosti přenesených dat a současně tolerují zpoždění. Méně vhodným je pro real-time aplikace, jako například telefonování, kde minimalizace zpoždění (a minimalizace kolísání zpoždění) je důležitější než věrnost přenesených dat.

Princip end-to-end není také vhodný pro velké multicastové a broadcastové sítě, zvláště pro ty s velkou ztrátovostí, protože zatížení, které způsobuje znovupřenesení dat, je tak velké, že mnohé aplikace jej nedokáží unést.

Reference

V tomto článku byl použit překlad textu z článku End-to-end principle na anglické Wikipedii.