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: csMetoda ří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.
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.