Mezi Tebou a webem probíhá neustálý dialog
Jakmile stiskneš po zadání URL v prohlížeči Enter, prohlížeč odešle požadavek a čeká na odpověď. Dnes se na tento proces podíváme podrobněji. Rozebereme fungování moderního webu od protokolů HTTP/3 a QUIC přes zabezpečení pomocí TLS 1.3 a DoH až po stavové firewally a WireGuard. Nakonec se zaměříme na propojení s šestou lekcí, tedy s databázemi.
Klient žádá, server odpovídá
Počítače na internetu mohou zastávat dvě různé role: klientGGlosářWWikipedie CS (iniciuje žádost) a server (čeká na ni). Prohlížeč je klient, seznam.cz je server. Konverzaci vždy začíná klient.
Prohlížeč, mobilní aplikace, IoTGGlosářWWikipedie CS zařízení, CLIGGlosářWWikipedie CS nástroj (curlGGlosářWWikipedie CS), skript, jiný server. Cokoli, co iniciuje.
Program běžící na stroji (nebo spíš na desítkách strojů v CDNGGlosářWWikipedie CS – CloudflareGGlosářWWikipedie CS, FastlyGGlosářWWikipedia EN). Nikdy se nevypíná, čeká na klienty.
Co přesně prohlížeč posílá
HTTP request je obyčejný text. Metoda + cesta + hlavičky. GET a POST stačí pro 95 % webu; PUT/DELETE použijí programátoři v API.
Host: seznam.cz User-Agent: Mozilla/5.0 (Windows NT 10.0) Chrome/130 Accept: text/html,application/xhtml+xml Accept-Language: cs-CZ,cs;q=0.9 Accept-Encoding: gzip, br Cookie: session=abc123; theme=dark Connection: keep-alive
Nejčastější metody
„Chci si přečíst." Načítá stránku, obrázek, data. Parametry v URLGGlosářWWikipedie CS (?q=pocasi). Nemá tělo. Nemění stav.
„Chci něco poslat / vytvořit." Formuláře, nahrávání. Má tělo (data). Mění stav na serveru.
Co server vrací – a co znamenají čísla
Každá odpověď začíná stavovým kódemGGlosářWWikipedie CS – třímístným číslem v rodině 1xx / 2xx / 3xx / 4xx / 5xx.
HTTP/2 200 content-type: text/html; charset=utf-8 content-length: 14327 date: Sat, 19 Apr 2026 10:15:22 GMT cache-control: max-age=300 set-cookie: session=xyz789; HttpOnly; Secure; SameSite=Lax server: nginx <!DOCTYPE html> <html><head><title>Seznam</title>...
7 kódů, které potkáš denně
| Kód | Význam | Kontext |
|---|---|---|
| 200 OK | Úspěch | stránka se načetla |
| 301 Moved | Trvalé přesměrování | web se přestěhoval (SEO-friendly) |
| 304 Not Modified | Obsah z cache | prohlížeč má aktuální verzi |
| 401 Unauthorized | Nepřihlášen | server neví, kdo jsi – přihlaš se |
| 403 Forbidden | Přihlášen, ale zakázáno | víme kdo jsi, ale sem nesmíš |
| 404 Not Found | Stránka neexistuje | překlep v URL, chybný odkaz |
| 500 Server Error | Chyba serveru | spadla aplikace, bug v kódu |
401 = „kdo jsi?" – server tě nezná. Řešení: přihlásit se.
403 = „já tě znám, ale sem nemůžeš." – účet nemá oprávnění. Řešení: kontaktovat admina.
HTTP existuje ve třech stále používaných verzích
V DevTools → Network sloupec Protocol ukáže http/1.1, h2, nebo h3. Každá verze má jiné vlastnosti a jinou „stack" pod sebou.
- Textový, čitelný očima.
- Jedno TCP spojení = jeden request najednou.
- Mnoho requestů = mnoho TCP spojení.
- Stack: HTTP → TCP → IP.
- Binární (rychlejší ke zpracování).
- Multiplex: víc requestů paralelně v jednom spojení.
- Server push (server může poslat data, o která klient nestihl požádat).
- Stack: HTTP/2 → TLS → TCP → IP.
- Nad QUIC nad UDP (ne TCP).
- Rychlé navázání (0-RTT).
- Connection migration – přechod z wifi na mobilní data bez přerušení spojení.
- Stack: HTTP/3 → QUIC → UDP → IP.
Proč HTTP/3 zneplatňuje OSI model
HTTPS – šifrování přes TLS 1.3
HTTPS = HTTP nad TLSGGlosářWWikipedie CS. TLS 1.3 (2018, dnes standard) zajišťuje tři věci: důvěrnost (nikdo na cestě nevidí obsah), integritu (nikdo obsah nezmění) a autenticitu (mluvíš s tím, s kým chceš).
- Otevřený text – majitel wifi v kavárně vidí vše.
- Lze upravovat za běhu.
- Prohlížeče píšou „Nezabezpečeno".
- Šifrováno – nikdo na cestě data bez dešifrování nepřečte.
- CertifikátGGlosářWWikipedie CS ověří identitu serveru.
- Moderní standard (Chrome/Firefox varují před HTTP).
TLS 1.3 handshake – 1 RTTGGlosářWWikipedia EN
Dřívější TLS 1.2 potřeboval 2 round-trips před první datovou zprávou. TLS 1.3 to zkrátil na jeden. S 0-RTT session resumption dokáže poslat data rovnou v první zprávě (pokud klient už server zná). V generaci TLS 1.2 si klient a server museli vyměnit více zpráv, než si začali důvěřovat.
- Round-trip: Klient pozdraví (ClientHello), server odpoví, pošle certifikát a vybere šifrovací algoritmy.
- Round-trip: Proběhne výměna klíčů a potvrzení, že šifrování funguje (Finished).
- Výsledek: Teprve poté může klient poslat první požadavek (např. GET /index.html). To znamená velké zpoždění, zejména na pomalých mobilních sítích.
1. Klient → Server: ClientHello (nabízené šifry, veřejný klíč) 2. Server → Klient: ServerHello + Certifikát + hotovo 3. Klient → Server: šifrovaný GET /index.html ^^^ první datový request – 1 RTT od začátku
Chain of trust – komu prohlížeč věří
Lidsky řečeno: certifikát je něco jako digitální občanka serveru. Když se prohlížeč připojí na seznam.cz, dostane od něj tuto „občanku" — uvnitř je název domény, veřejný klíč serveru a podpis vystavovatele. Otázka zní: kdo ten podpis vydal a proč by mu měl prohlížeč věřit?
Certifikát serveru podepisuje Intermediate CA (mezičlánková autorita, např. „Let's Encrypt R3"). Tu zase podepisuje Root CA (kořenová autorita). A právě seznam Root CA má prohlížeč nebo operační systém už předem v sobě — tvůrci Windows, macOS, Androidu, Firefoxu nebo Chromu ho pečlivě vybrali (typicky 100–150 organizací po celém světě). Komukoli z tohoto seznamu prohlížeč věří „bez dalšího ptaní".
Jak ověření probíhá (3 kroky):
- Prohlížeč přečte certifikát serveru a pomocí veřejného klíče Intermediate CA ověří jeho podpis.
- Stejný postup pro certifikát Intermediate CA — jeho podpis ověří veřejným klíčem Root CA.
- Root CA musí být v předem nainstalovaném seznamu důvěryhodných kořenů. Pokud ano, řetěz je uzavřen a spojení důvěryhodné.
Proč ten mezičlánek (intermediate)? Kvůli bezpečnosti. Root CA má nejcennější soukromý klíč — drží ho offline v hardwarovém trezoru a používá ho jen několikrát do roka. Denní podepisování milionů serverových certifikátů dělají méně chráněné Intermediate CA. Když se některá intermediate kompromituje, vyřadí se jen ona — kořen i ostatní intermediate fungují dál.
Když řetěz pukne (vypršelý certifikát, neznámá autorita, špatný podpis kterékoli ze tří úrovní), prohlížeč zobrazí varování „Vaše spojení není soukromé" a dovnitř vás nepustí. Reálnou ukázku takového výpadku najdeš hned níže.
Cookies – malé soubory, velké důsledky
HTTP je bezstavový – server si mezi requesty sám nic nepamatuje. CookiesGGlosářWWikipedie CS tuto mezeru zaplňují: server pošle text (session=abc123), prohlížeč ho uloží a u každého dalšího requestu ho pošle zpět.
Atributy cookie (moderní set)
| HttpOnly | JS na stránce ke cookies nemá přístup. Chrání před XSS (Cross-Site Scripting) – bezpečnostní zranitelnost, při které útočník „podstrčí“ škodlivý kód, nejčastěji JavaScript, do webové stránky, kterou si prohlíží jiný uživatel. |
| Secure | Cookie se posílá jen přes HTTPS, nikdy HTTP. |
| SameSite | Strict/Lax/None – jak se chová u cross-site requestů. Chrání před CSRF (Cross-Site Request Forgery) – česky „podvržení požadavku mezi stránkami“, je útok, který zneužívá důvěru webu k vašemu prohlížeči. Útočník vás přiměje provést akci na webu, kde jste již přihlášeni (např. v bance nebo na Facebooku), aniž byste o tom věděli. |
| Domain | Která doména má cookie dostávat (např. .seznam.cz pokrývá všechny subdomény). |
| Path | Která cesta URL ji má dostávat (např. /admin jen pro admin část). |
| Expires / Max-Age | Kdy vyprší. Bez toho = session cookie (smazaná při zavření prohlížeče). |
| Partitioned | Novinka (CHIPS, 2024) – izoluje third-party cookies per-site. Součást řešení pro cookie-less web. |
Útoky, před nimiž atributy chrání
Útočník vloží <script> do stránky (např. přes komentář). Jeho kód pak běží v prohlížeči oběti a může ukrást cookie. HttpOnly mu přístup znemožní.
Útočník na své stránce vytvoří skrytý formulář, který posílá request na tvou banku. Prohlížeč automaticky přiloží tvé cookies → banka si myslí, že potvrzuješ platbu. SameSite Strict/Lax to blokuje.
Firewall, VPN, DoH – tři moderní nástroje
Nepleť si je. Každý řeší jinou část.
Filtr paketů. Moderní firewall je stavový – pamatuje si navázaná TCP spojení a propouští odpovědi automaticky.
- Windows Defender Firewall
- Firewall na routeru chrání LAN
- Aplikační firewall rozumí HTTP (blokuje SQL injection, XSS)
Šifrovaný tunel mezi tvým PC a vzdáleným serverem. Navenek to vypadá, že „sedíš“ přímo u toho serveru.
- WireGuardGGlosářWWikipedie CS – moderní default, rychlý
- OpenVPNGGlosářWWikipedie CS – robustní, pomalejší
- IPSecGGlosářWWikipedie CS – firemní
Šifrované DNS dotazy. Prohlížeč se ptá DNS serveru přes HTTPS (port 443), ne přes klasický UDP 53.
- Firefox, Chrome jej mají defaultně
- ISP nevidí, jaké domény žádáš
- Komplikuje firemní filtrování
Firewall blokuje nežádoucí provoz.
VPN maskuje tvou polohu a šifruje provoz.
DoH šifruje jen DNS dotazy (ne samotná data).
Návaznost na další lekci (6)
Všechno, co bylo probráno v rámci této lekce, platí i pro databáze. Webový server sám je klient databáze. Když ti pošle stránku „nejnovější články", za kulisou odeslal databázi dotaz: SELECT * FROM posts ORDER BY created_at DESC LIMIT 10;
V následující šesté lekci obejdeme prohlížeš a budeme komunikovat přímo s databází v SQLGGlosářWWikipedie CS.
Jaký stavový kód bys vrátil?
5 scénářů ze života webového serveru. U každého vyber nejvhodnější HTTP kód – který reálně odpovídá situaci, ne jen „nějaký 4xx".
- A200 OK (pošli prázdnou stránku)
- B404 Not Found
- C500 Server Error
- D403 Forbidden
- A404 Not Found
- B403 Forbidden
- C401 Unauthorized
- D500 Server Error
- A401 Unauthorized
- B403 Forbidden
- C404 Not Found
- D500 Server Error
- A301 Moved Permanently
- B200 OK (pošli rovnou novou stránku)
- C404 Not Found
- D500 Server Error
- A404 Not Found
- B403 Forbidden
- C500 Internal Server Error
- D301 Moved Permanently
DevTools – podívej se pod kapotu
Postup
- Otevři https://cs.wikipedia.org (stabilní, bez školních filtrů).
- F12 (nebo Ctrl + Shift + I) → záložka Network → Ctrl+R.
- Klikni na první řádek (HTML stránky), záložka Headers.
- Ve sloupci Protocol najdi verzi HTTP (h2, h3 nebo http/1.1).
Souhrnný kvíz – 8 otázek
- AHTTP si pamatuje historii uživatele
- BHTTP je bezstavový – bez cookies si server nepamatuje předchozí request
- CHTTP šifruje komunikaci
- DHTTP běží na portu 443
- ATCP
- BIPX
- CQUIC nad UDP
- DICMP
- A401 = klient, 403 = server
- B401 = nevíme kdo jsi (přihlas se), 403 = víme kdo jsi, ale sem nemůžeš
- C401 je 5 let starší
- DJsou totožné
- AMajitel domény sám
- BPoskytovatel internetu
- CProhlížeč vydá vlastní
- DCertifikační autorita (CA) podepíše certifikát, prohlížeč ověří chain of trust vůči root CA
- ✓HttpOnly
- ✓Secure
- ✓SameSite
- ✓„Cookie lišta"
- ASecure
- BHttpOnly
- CSameSite
- DDomain
- APPTP
- BIPSec
- CWireGuard
- DL2TP
- AŠifruje DNS dotazy tak, že je nikdo na cestě nevidí
- BNahrazuje DNS decentralizovaně přes blockchain
- CBlokuje škodlivé domény
- DZrychluje DNS dotazy oproti UDP