Lekce 1.1

Jak funguje internet: TCP/IP, adresy a protokoly

Co se s daty děje na cestě sítí, jak se čtou IP adresy, co drží pohromadě lokální síť a čím se od sebe liší protokoly, které používáme každý den.

Protokoly aplikací

TCP a UDP dovezou data na správné dveře, ale co je uvnitř, je jim jedno. Smysl tomu dává až aplikační protokol – dohoda o tom, jak se strany ptají a jak si odpovídají. Většinu z nich poznáte podle zkratky a podle čísla portu, na kterém tradičně poslouchají:

Protokol Port Přes K čemu
HTTP 80 TCP načítání webových stránek
HTTPS 443 TCP totéž šifrovaně
SMTP 25, 587 TCP odesílání e-mailu
IMAP 143, 993 TCP čtení e-mailu s ponecháním na serveru
POP3 110, 995 TCP stažení e-mailu do jednoho zařízení
FTP 21 TCP přenos souborů na server a ze serveru
DNS 53 UDP překlad jmen na IP adresy

Čísla portů jsou zvyk, ne zákon. Server může poslouchat, kde chce, ale když se drží zvyklosti, nemusí to nikdo nikam vypisovat – prohlížeč sám ví, že https:// znamená port 443. Dvojice čísel u pošty odlišují starší nešifrovanou variantu od novější šifrované; u SMTP je navíc port 25 vyhrazený hlavně pro přenos mezi servery, klient dnes odesílá přes 587.

Pošta

Odeslání a čtení pošty dělají různé protokoly a stojí za to je nezaměňovat.

SMTP (Simple Mail Transfer Protocol) umí jedinou věc: odeslat zprávu. Poštovní klient jím předá hotový e-mail svému serveru a servery si jím zprávy posílají i mezi sebou, dokud nedorazí na server příjemce. Číst schránku SMTP neumí, takže e-mailový účet potřebuje vždycky ještě druhý protokol.

IMAP (Internet Message Access Protocol) nechává zprávy ležet na serveru a klientovi je jen ukazuje. Složky, přečteno, nepřečteno i koš jsou vedené na serveru, takže mobil, notebook i webové rozhraní vidí pořád totéž.

POP3 (Post Office Protocol) je starší přístup: zprávy ze serveru stáhne a obvykle je tam rovnou smaže. Schránka pak žije v jednom zařízení a nikde jinde. Rozdíl je vidět, když čtete poštu na mobilu i na notebooku – co si přes POP3 přečtete na mobilu, na notebooku už nenajdete.

V praxi dnes skoro vždycky vyhrává IMAP. POP3 se hodí ve dvou situacích: když má schránka malý limit a je potřeba ji průběžně vyprazdňovat, nebo když chce mít někdo poštu z principu jen u sebe.

Přenos souborů

FTP (File Transfer Protocol) je jeden z nejstarších protokolů internetu. Přihlásíte se jménem a heslem a pak se složkou na serveru pracujete skoro jako s vlastním diskem – vypisujete, stahujete, nahráváte, mažete. Zvláštností je, že si otevírá dvě spojení: jedním se posílají příkazy a druhým teče obsah souborů.

Má ale vadu, kvůli které se samotné FTP dnes už nepoužívá. Jméno i heslo posílá čitelně, takže si je kdokoli na trase přečte. Náhradou jsou FTPS, což je FTP zabalené do šifrované vrstvy, a hlavně SFTP, které je součástí SSH – protokolu pro vzdálenou práci na cizím počítači. Na server se dnes běžně kopíruje právě přes SFTP.

HTTP

HTTP (HyperText Transfer Protocol) je protokol, kterým prohlížeč mluví s webovým serverem. Je textový, takže se dá přečíst i bez nástrojů, a je postavený na střídání dotazu a odpovědi: prohlížeč si řekne o jeden soubor, server ho pošle. Stránka s deseti obrázky proto znamená jedenáct dotazů.

Dotaz začíná řádkem s metodou, cestou a verzí protokolu. Pod ním jsou hlavičky a po prázdném řádku smí následovat tělo:

GET /kurzy/uvod.html HTTP/1.1
Host: skola.cz
User-Agent: Mozilla/5.0
Accept: text/html
Accept-Language: cs

Metoda říká, co se má stát: GET znamená „pošli mi to“, POST „tady máš data“, PUT „ulož to takhle“ a DELETE „smaž to“. Hlavičky jsou dvojice jméno a hodnota a nesou všechno ostatní – jméno serveru, jazyk, typ prohlížeče nebo přihlašovací token. Tělo má jen dotaz, který něco odesílá; GET bývá bez těla.

Odpověď je postavená stejně, jen místo metody nese stavový kód:

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 3241

<!doctype html>
<html lang="cs">

Stavový kód je trojčíslí a jeho první číslice říká, jak to dopadlo: 2xx v pořádku, 3xx přesměrování jinam, 4xx chyba na straně dotazu a 5xx chyba na straně serveru. Nejčastěji potkáte 200 OK, 301 Moved Permanently, 404 Not Found a 500 Internal Server Error.

Za zmínku stojí, že HTTP je bezstavové. Každý dotaz stojí sám o sobě a server si z minula nic nepamatuje. Že jsme přihlášení, je proto potřeba dokládat znovu v každém dotazu – typicky hlavičkou s cookie nebo tokenem.

HTTPS

Všechno, co jsme si teď ukázali, cestuje po síti čitelně. Kdokoli na trase – provozovatel Wi-Fi v kavárně, poskytovatel připojení – si může přečíst adresu stránky, její obsah i heslo z formuláře. A co je horší, může je cestou změnit.

HTTPS je tentýž protokol, jen zabalený do šifrované vrstvy TLS. Dotaz i odpověď vypadají úplně stejně, jen je nikdo cestou nepřečte. Kromě šifrování přidává TLS ještě jednu věc: server se prokazuje certifikátem, takže prohlížeč pozná, že mluví opravdu se skola.cz, a ne s někým, kdo se za ni vydává.

Poznáte to v adresním řádku, kde adresa začíná https://. U stránky, která běží jen na http://, dnes prohlížeče u formulářů rovnou hlásí, že spojení není zabezpečené. O TLS a certifikátech si budeme povídat podrobně později.

Bonus

Stránka s deseti obrázky znamená jedenáct samostatných dotazů a levné to není. Zkuste si dohledat, co s tím dělá novější HTTP/2 a proč se dřív malé obrázky slepovaly do jednoho velkého souboru.