TCP/IP je sada (rodina) protokolů pro komunikaci v počítačových sítích používaná v celosvětové síti Internet. Její název pochází ze dvou nejdůležitějších protokolů: IP (Internet Protocol – „protokol pro propojení sítí“) je protokol síťové vrstvy, který umožňuje komunikaci libovolných dvou uzlů (počítačů) v propojených sítích (internetwork), a TCP (Transmission Control Protocol – „protokol pro řízení přenosu“) je protokol transportní vrstvy, který zajišťuje spolehlivý obousměrný přenos dat mezi aplikacemi na příslušných dvou uzlech.

Komunikační protokol je množina pravidel, která určují syntaxi a význam jednotlivých zpráv při komunikaci. Rodina protokolů TCP/IP zahrnuje stovky protokolů a stále se rozšiřuje. Protokoly TCP/IP se používají nejen v síti Internet, ale i v dalších soukromých i veřejných sítích, které se sítí Internet nejsou propojeny vůbec nebo jenom omezeně.

Technické standardy, které jsou základem sady internetových protokolů a jejích základních protokolů, jsou udržovány organizací Internet Engineering Task Force (IETF). Sada internetových protokolů TCP/IP předchází model OSI, komplexnější referenční rámec pro obecné síťové systémy. Je to na pochopení jednodušší a v praxi se používá více než OSI model, na který se podíváme později.

Historie

První výzkum

Internet protocol vyplynul z výzkumu a vývoje Defense Advanced Research Project Agency (DARPA), který probíhal na konci 60. let. Po zahájení průkopnického ARPANET v roce 1969 DARPA začala pracovat na celé řadě dalších dat přenášejících technologií. V roce 1972 se Robert E. Kahn připojil k DARPA, přesněji na pracoviště zabývající se zpracováním informací, kde pracoval na obou sítích, jak na satelitní, paketové síti, tak na pozemních, radio-paketových sítí a zjistil, že je možné komunikovat přes obě. Na jaře 1973 se Vinton Cerf, vývojář stávajícího protokolu ARPANET Network Control Protocol, připojil ke Kahnovi a začal s ním pracovat na modelech s otevřenou architekturou, s cílem navrhnout novou generaci protokolu pro ARPANET.

V létě roku 1973, Kahn a Cerf vypracovali zásadní reformulaci, v níž byly rozdíly mezi síťovými protokoly skryty za pomocí společného síťového protokolu a odpovědnost za spolehlivost, kterou dříve nesla síť, nyní přešla na hostitele. Cerf ocenil i práci Huberta Zimmermanna a Louise Pouzina, designéry sítě Cyclades, kteří měli velmi podstatný vliv na její konečný design.

Konstrukce sítě obsahovala rozeznávání, které mělo poskytnout jedinou funkci, a to efektivní vysílání a směřování provozu mezi koncovými uzly a dále, že ostatní inteligence by měly být umístěny na kraji sítě, v koncových uzlech. Pomocí jednoduchého designu se stalo možným připojit téměř jakoukoli síť k ARPANET, bez ohledu na místní charakteristiky, čímž se vyřešil Kahnův problém. Jednou populární hláškou je, že TCP/IP, konečný produkt Cerfa a Kahna, překoná dvě plechovky spojené špagátem.

Počítač, který nazveme routerem (směrovačem), je vybaven rozhraním pro každou síť. Předává mezi nimi pakety tam a zpět. Původně byl router nazýván bránou (gateway), ale tento termín byl změněn, aby se předešlo zmatku či záměně s jinými typy bran.

Podrobnosti o historii je možné si přečíst na Wikipedii v angličtině

Specifikace

Od roku 1973 do roku 1974 Cerfova síťová výzkumná skupina na Stanfordu vypracovala detaily myšlenky, což mělo za následek první specifikaci TCP. Významný technický vliv měla předešlá práce v oblasti sítí v Xerox PARC, který produkoval sadu PARC Universal Packet protokolů.

DARPA se poté smluvně spojila s BBN Technologies, Stanfordovou univerzitou a Londýnskou univerzitou kvůli rozvoji operativní verze protokolu na různé hardwarové platformy. Byly vyvinuty čtyři verze: TCP v1, TCP v2, TCP v3 a TCP/IP v4. Poslední z protokolů je užíván dodnes.

V roce 1975 byl mezi Stanfordovou a londýnskou univerzitou proveden komunikační test TCP/IP dvou sítí. V listopadu 1977 byl proveden test TCP/IP tří sítí mezi lokalitami v USA, UK a Norsku. Bylo vyvinuto několik dalších prototypů TCP/IP v několika výzkumných centrech mezi roky 1978 a 1983. Finálový přesun ARPANET na TCP/IP byl oficiálně uskutečněn 1. ledna 1983, kdy byly nové protokoly trvale uvedeny v provoz.

Architektura TCP/IP

Principy

Celé to funguje na několika málo principech. První je princip od jednoho konce ke druhému (end-to-end). Původní myšlenka (která je dodnes zachovávána) spočívá v tom, že "inteligence" jsou na koncích a předpokládá se, že internet, který tyto konce spojuje, si nezachovává žádný stav a soustředí se na rychlost a jednoduchost. Avšach skutečné potřeby firewalů, překladačů síťových adres, webových cache a podobných zařízení si vynutily změny v tomto principu. Je to takové vynalézání "rovnáku"" na "vohejbák", ale musíme se s tím smířit.

Další princip robustnosti říká: Obecně musí být implementace konzervativní ve svém chování při odesílání a liberální ve svém chování při přijímání. To znamená, že musí být opatrná, aby posílala dobře vytvořené datagramy, ale musí přijmout jakýkoli datagram, který dokáže interpretovat. Například nesmí mít námitky proti technickým chybám, kde je význam stále jasný. Druhá část principu je téměř stejně důležitá: software na jiných hostitelích může obsahovat nedostatky, kvůli kterým není rozumné využívat legální, ale nejasné funkce protokolu.

Zapouzdření se používá k poskytnutí abstrakce protokolům a službám. Zapouzdření je obvykle v souladu s rozdělením sady protokolů do vrstev obecné funkčnosti. Obecně platí, že aplikace (nejvyšší úroveň modelu) používá sadu protokolů k odesílání dat po vrstvách. Data jsou dále zapouzdřena na každé úrovni.

Architektura

Vzhledem ke složitosti problémů je síťová komunikace rozdělena do tzv. vrstev (layers), které znázorňují hierarchii činností. Výměna informací mezi vrstvami je přesně definována. Každá vrstva využívá služeb vrstvy nižší a poskytuje své služby vrstvě vyšší.

Komunikace mezi stejnými vrstvami dvou různých systémů je řízena komunikačním protokolem za použití spojení vytvořeného sousední nižší vrstvou. Architektura umožňuje výměnu protokolů jedné vrstvy bez dopadu na ostatní. Příkladem může být možnost komunikace po různých médiích fyzické vrstvy modelu OSI – ethernet (optické vlákno, kroucená dvojlinka, Wi-Fi), sériová linka.

Vrstvy

Architektura TCP/IP je členěna do čtyř vrstev (na rozdíl od referenčního modelu OSI se sedmi vrstvami) — od nejvyšší po nějnižší:

  • aplikační vrstva (application layer), která zajišťuje výměnu dat mezi procesy pro aplikace;

  • transportní vrstva (transport layer) zajišťující komunikaci mezi hostiteli;

  • síťová nebo internetová vrstva (internet layer) zajišťující propojení mezi nezávislými sítěmi;

  • vrstva síťového rozhraní nebo spojová vrstva (network interface or link layer), která obsahuje komunikační metody pro data, která zůstávají v jediném segmentu sítě (spojení).

Vrstvy TCP/IP zajišťující přenos mezi dvěma hostiteli prostřednictvím dvou routerů (směrovačů)

Tcpip vrstvy

Datový tok v jednoduché topologii sítě dvou hostitelů (A a B), které jsou spojeny libovolnou technologií mezi sebou pomocí směrovačů (routerů). Aplikace na každém hostiteli provádí operace čtení a zápisu, jako by byly procesy navzájem přímo propojeny nějakým druhem datového kanálu. Po vytvoření tohoto kanálu je většina detailů komunikace skryta před každým procesem, protože základní principy komunikace jsou implementovány v nižších vrstvách protokolu. Analogicky, na transportní vrstvě se komunikace jeví jako host-to-host, bez znalosti aplikačních datových struktur a propojovacích směrovačů, zatímco na internetové vrstvě se jednotlivé hranice sítě překračují u každého směrovače.

Předchozí obrázek s anglickou terminologií

IP stack connections

Nejnižší vrstva umožňuje přístup k fyzickému přenosovému médiu. Je specifická pro každou síť v závislosti na její implementaci. Příklady sítí: Ethernet, Token ring, FDDI, 100BaseVG, X.25, SMDS.

Síťová vrstva (Internet layer)

Vrstva zajišťuje především síťovou adresaci, směrování a předávání datagramů. Protokoly: IP, ARP, RARP, ICMP, IGMP, IGRP, IPSEC, OSPF, BGP. Je implementována ve všech prvcích sítě – směrovačích i koncových zařízeních.

Protokoly IP verze 4 a IP verze 6, ARP, RARP a ICMP se budeme podrobně zabývat. Směrovacími protokoly OSPF (Open Short Path First), který se používá k dynamickému směrování a BGP (Border Gateway Protocol) bez kterého by Internet vůbec nefungoval se možná budeme zabývat (pokud bude čas a železo).

Transportní vrstva (Transport layer)

Poskytuje transportní služby pro kontrolu celistvosti dat: řízené a sestavované spojení spolehlivým protokolem TCP (transmission control protocol) nebo neřízené spojení nespolehlivým protokolem UDP (user datagram protocol). Transportní vrstva je implementována až v koncových zařízeních (počítačích) a umožňuje přizpůsobit chování sítě potřebám aplikace.

Protokoly TCP a UDP se budeme podrobně zabývat. Čte se to "týsípí" a "jůdýpí".

Aplikační vrstva (Application layer)

Vrstva aplikací. Jedná se o protokoly, které slouží k přenosu konkrétních dat. Příklady: SSH, FTP, HTTP, DHCP, DNS.

Aplikační protokoly používají vždy jednu ze dvou základních služeb transportní vrstvy: TCP nebo UDP, případně obě dvě (např. DNS). Pro rozlišení aplikačních protokolů se používají tzv. porty, což jsou domluvená číselná označení aplikací. Každé síťové spojení aplikace je jednoznačně určeno číslem portu a transportním protokolem (a samozřejmě adresou počítače).

Protokoly DHCP, DNS, SSH a HTTP se budeme podrobně zabývat. Pokud bude čas a prostředky, tak se budeme ještě zabývat protokoly HTTPS (šifrovaný web) a poštovními protokoly SMTP, IMAP a submission.

Zapouzdření (encapsulation)

Zapouzdření dat aplikace postupně v jednotlivých vrstvách popisované v RFC 1122

UDP encapsulation

Zapouzdření dat v sítí TCP/IP podrobněji s českou terminologií

Tcpip zapouzdreni

Základní protokoly síťové a transportní vrstvy — rychlý přehled

IP (Internet protocol)

Internet Protocol je základní protokol síťové vrstvy a celého Internetu. Zajišťuje přenos datagramů na základě IP adresy příjemce obsažené v záhlaví datagramu. Poskytuje vyšším vrstvám síťovou službu bez spojení. Každý datagram je samostatná datová jednotka, která obsahuje všechny potřebné údaje o adresátovi i odesilateli. Datagramy putují sítí nezávisle na sobě a pořadí jejich doručení nemusí odpovídat pořadí ve zprávě. Doručení datagramu není zaručeno, spolehlivost musí zajistit vyšší vrstvy (TCP, aplikace).

Protokol IP zajišťuje fragmentaci datagramů do rámců protokolu nižší vrstvy (např. Ethernet) a znovusestavování datagramů z přijatých rámců.

Přestože standard nové verze IP – IPv6 – byl schválen a vydán v roce 1995, i po roce 2023 převažuje používání protokolu IP verze 4, hlavně kvůli lenosti a neznalosti IT techniků a kvůli komečním zájmům ISP (Internet Servic Provider).

Nová verze 6, která řeší nedostatek adres v IPv4, bezpečnostní problémy a vylepšuje další vlastnosti protokolu IP, je celosvětově používána jen několika desítkami procenty zařízení připojených k internetu, ale jejich počet rychle roste.

IPv4

Internet protokol verze 4

  • 32bitové adresy

  • cca 4 miliardy různých IP adres, dnes nedostačující

  • formát adresy: xxx.xxx.xxx.xxx kde xxx je libovolné číslo od 0 do 255 (8 bitů)

IPv6

Internet protokol verze 6

  • 128bitové adresy (nemáme nedostatek adres)

  • podpora bezpečnosti

  • podpora pro mobilní zařízení

  • funkce pro zajištění úrovně služeb (QoS – Quality of Service)

  • fragmentace paketů – rozdělování je nepřípustná

  • není zpětně kompatibilní s IPv4

  • snadnější automatická konfigurace (NDP – Neighbor discovery protocol)

ARP a RARP (Address Resolution Protocol a Reverse Address Resolution Protocol)

Address Resolution Protocol slouží k zjištění fyzické adresy MAC z IP adresy, aby bylo možné odeslat IP datagram na uzel (koncový počítač nebo router) v lokální síti v rámci s individuální fyzickou adresou příjemce. Protokol v případě potřeby vyšle datagram s hledanou IP adresou adresovaný všem stanicím v síti. Uzel s hledanou IP adresou reaguje odpovědí s vyplněnou vlastní MAC adresou. Tazatel si dvojici adres určitou dobu pamatuje v ARP cache. Pokud hledaný uzel není ve stejném segmentu sítě, může odpovědět svou adresou příslušný směrovač.

Obrácený protokol RARP (Reverse Address Resolution Protocol) se používal ke zjištění vlastní IP adresy. Na RARP dotaz odpoví RARP server, který má ručně vytvořenou převodní tabulku mezi fyzickými a IP adresami. Protokol RARP neumožňuje předat ani dva další potřebné parametry – masku sítě a adresu implicitního směrovače – a je překonaný novějšími protokoly BOOTP a DHCP.

ICMP (Internet Control Message Protocol)

Internet Control Message Protocol slouží k přenosu řídících hlášení, které se týkají chybových stavů a zvláštních okolností při přenosu. Používá se např. v programu ping pro testování dostupnosti počítače, nebo programem traceroute pro sledování cesty paketů k jinému uzlu.

TCP (Transmission Control Protokol)

Transmission Control Protocol vytváří virtuální okruh mezi koncovými aplikacemi, tedy spolehlivý přenos dat. Vlastnosti protokolu:

  • Spolehlivá transportní služba, doručí adresátovi všechna data bez ztráty a ve správném pořadí.

  • Služba se spojením, má fáze navázání spojení, přenos dat a ukončení spojení.

  • Transparentní přenos libovolných dat.

  • Plně duplexní spojení, současný obousměrný přenos dat.

  • Rozlišování aplikací pomocí portů.

UDP (User Datagram Protocol)

User Datagram Protocol poskytuje nespolehlivou transportní službu pro takové aplikace, které nepotřebují spolehlivost, jakou má protokol TCP. Nemá fázi navazování a ukončení spojení a už první segment UDP obsahuje aplikační data. UDP je používán aplikacemi jako je DHCP, TFTP, SNMP, DNS a BOOTP.

Protokol používá podobně jako TCP čísla portů pro identifikaci aplikačních protokolů.

SCTP (Stream Control Transmission Protocol)

Spolehlivý protokol pro přenos datagramů ve více proudech. Je využívaný zejména v telekomunikacích. Doplňuje některé vlastnosti, které TCP postrádá:

  • Multihoming – komunikující uzel může mít několik IP adres.

  • Členění datového toku na datagramy.

  • Používání více proudů dat – omezuje blokování komunikace způsobené chybějícím blokem dat, ke kterému může dojít v TCP.

  • Výběr a sledování cesty – Pokud má primární adresa problémy s dostupností lze používat alternativní.

  • Ověřovací a potvrzovací mechanismy – SCTP komplikuje některé útoky směřující k nedostupnosti služeb (DoS). Zajišťuje ověření opakujících se a chybějících balíků.

Stejně jako TCP a UDP rozlišuje aplikační protokoly pomocí portů.

Aplikační protokoly (služby) — rychlý přehled

  • DNS (Domain Name System) – systém doménových jmen

  • DHCP (Dynamic Host Configuration Protocol)– dynamické přidělování síťových informací jako například: výchozí brána, maska sítě, IP adresa

  • FTP (File Transfer Protocol) – přenos souborů po síti (zastaralý a nebezpečný protokol, nepoužívat!, daleko lepší je SSH)

  • TFTP – jednoduchý protokol pro přenos souborů

  • HTTP (Hypertext TRansfer Protocol) – přenos hypertextových dokumentů (WWW) se šifrovanou verzí HTTPS a novějšími verzemi HTTP/2 a HTTP/3

  • WebDAV – rozšíření HTTP o práci se soubory

  • IMAP (Internet Message Access Protocol) umožňuje manipulovat s jednotlivými e-mail zprávami na poštovním serveru.

  • IRC (Internet Relay Chat) – jednoduchý chat po internetu.

  • NNTP (Network News Transfer Protocol) umožňuje číst a umísťovat do sítě zprávy typu news.

  • NFS (Network File System) – síťový systém souborů, který umožňuje transparentní sdílení vzdálených souborů jakoby byly lokální.

  • NTLM Autentizační protokol Windows

  • NTP – synchronizace času (šíření přesného času)

  • POP3 (Post Office Protocol) – protokol pro získání pošty z poštovního serveru.

  • SMB (Server Message Block) – sdílení souborů a tiskáren v sítích Windows

  • SMTP – zasílání elektronické pošty

  • SNMP Simple Network Management Protokol je určen pro správu síťových uzlů.

  • Telnet – protokol virtuálního terminálu.

  • TLS a SSL – zabezpečená komunikace na úrovni soketů.

  • SSH – šifrované přihlašování na jiné počítače, nahrazuje starší nešifrovaný telnet, rsh, rlogin, rexec, …; lze používat i pro přenos souborů – SFTP, Secure Copy, a další služby jako rsync, git, …

  • X11 – zobrazování oken grafických programů v Unixových systémech

  • XMPP – rozšiřitelný protokol pro zasílání zpráv a sledování přítomnosti (protokol Jabber)

Toto je jenom velice stručný přehled. Na aplikační vrstvě jsou stovky (nebo i tisíce) aplikačních protokolů. Pokud chcete nějakou síťovou aplikaci používat, je dobré si její protokol aspoň částečně osvojit.
Na aplikační vrstvě si můžete klidně vymyslet svůj vlastní protokol přenosu vašich dat. Bude ale fungovat jenom v rámci vašeho programu, dokud se vám nepovede ho nějakým způsobem standardizovat a protlačit na veřejnost.

Vývoj vrstev a jak to je v literatuře

Rodina internetových protokolů se vyvíjela prostřednictvím výzkumu a vývoje financovaného po určitou dobu. V tomto procesu se změnila specifika protokolových komponent a jejich vrstvení. Kromě toho souběžný výzkum a komerční zájmy průmyslových asociací soupeřily s designovými prvky. Zejména úsilí v Mezinárodní organizaci pro normalizaci vedlo k podobnému cíli, ale obecně s širším rozsahem vytváření sítí. Snahy o konsolidaci dvou hlavních škol vrstvení, které byly povrchně podobné, ale v detailech se ostře rozcházely, vedlo nezávislé autory učebnic k formulaci zkrácených výukových nástrojů.

Tabulka 1. Tabulka ukazující různé síťové modely. Počet vrstev varíruje od 3 do 7
Arpanet Reference Model (RFC 871) Internet Standard (RFC 1122) Internet model (Cisco akademie) TCP/IP pětivrstvý referenční model (Kozierok,Comer) TCP/IP pětivrstvý referenční model (Tanenbaum) Rodina protokolů TCP/IP neboli Pětivrstvý internetový model (Forouzan,Kurose) TCP/IP model (Stallings) OSI model (ISO/IEC 7498-1:1994)

3 vrstvy

4 vrstvy

4 vrstvy

4+1 vrstva

5 vrstev

5 vrstev

5 vrstev

7 vrstev

aplikační/procesní

aplikační

aplikační

aplikační

aplikační

aplikační

aplikační

aplikační

presentační

relační

host-to-host

transportní

transportní

transportní

transportní

transportní

host-to-host nebo transportní

transportní

internetová

mezisíťová

internetová

internetová

síťová

internetová

síťová

síťové rozhraní

linková

síťové rozhraní

linková (síťové rozhraní)

linková

linková

přístup k síti

linková

(hardware)

fyzická

fyzická

fyzická

fyzická

My budeme převážně používat čtyřvrstvý TCP/IP model z důvodu jeho jednoduchosti. Hardwarové záležitosti necháme předmětu Hardware. Podíváme se i na sedmivrstvý ISO/OSI model, který se v praxi moc nepoužívá, ale je dobré o něm vědět. Jak je vidět z výše uvedené tabulky, tak aplikační vrstvu rozděluje na tři další podvrstvy (aplikační, presentační a relační) a dole přidává vrstvu fyzickou (hardware). Jinak je to "skoro to samé".

Odkazy a literatura