Podcast na Co se stane, když napíšeš adresu do prohlížeče

Co se stane, když napíšeš adresu do prohlížeče: Podrobný průvodce

Podcast

Jak fungují webové stránky0:00 / 13:09
0:001:00 zbývá
TomášVětšina lidí si myslí, že když napíšete adresu webu a zmáčknete Enter, váš počítač se prostě... přímo spojí s tou stránkou. Jako přímý telefonát.
LucieAle ve skutečnosti je to spíš jako poslat detektiva přes půl světa, aby našel tajné telefonní číslo. Pak navázat super formální, tříkrokový rozhovor jenom proto, abyste si řekli „ahoj“, a teprve potom se zeptat na to, co vlastně chcete.
Kapitoly

Jak fungují webové stránky

Délka: 13 minut

Kapitoly

Víc než jen kliknutí

Internetový telefonní seznam

Slušné vychování na síti

Objednávka a doručení

Skládání webového puzzle

Trojcestný handshake

Zabezpečení pomocí TLS

HTTP požadavek a odpověď

Nejčastější mýty o webu

Simulace v praxi

Závěrečné shrnutí

Přepis

Tomáš: Většina lidí si myslí, že když napíšete adresu webu a zmáčknete Enter, váš počítač se prostě... přímo spojí s tou stránkou. Jako přímý telefonát.

Lucie: Ale ve skutečnosti je to spíš jako poslat detektiva přes půl světa, aby našel tajné telefonní číslo. Pak navázat super formální, tříkrokový rozhovor jenom proto, abyste si řekli „ahoj“, a teprve potom se zeptat na to, co vlastně chcete.

Tomáš: Tak to zní o dost komplikovaněji. A přesně na tenhle zákulisní tanec dat se dnes podíváme. Posloucháte Studyfi Podcast.

Lucie: Přesně tak. Jmenuju se Lucie a jsem tu, abychom si tenhle proces rozebrali krok za krokem. A nebojte, je to jednodušší, než to zní.

Tomáš: Dobře, takže kde ten náš „detektiv“ začíná? Řekněme, že chci jít na... třeba www.example.com.

Lucie: První věc, kterou tvůj prohlížeč musí udělat, je zjistit, kde ten web fyzicky bydlí. Prohlížeče totiž nerozumí jménům jako example.com, ale potřebují číselnou IP adresu. Něco jako 93.184.216.34.

Tomáš: A k tomu slouží DNS, že? Slyšel jsem to, ale nikdy jsem úplně nepochopil, co to je.

Lucie: Přesně. DNS, neboli Domain Name System, je v podstatě obrovský telefonní seznam celého internetu. Když zadáš adresu, prohlížeč se nejdřív podívá do vlastní paměti, jestli tam tu IP adresu už náhodou nemá z minula.

Tomáš: To dává smysl, aby se neptal pokaždé znovu.

Lucie: Přesně. Pokud ji nenajde, zeptá se takzvaného lokálního DNS serveru, což je obvykle server tvého poskytovatele internetu. A tady začíná ta detektivka. Pokud ani tenhle server adresu nezná, rozběhne se řetězec dotazů.

Tomáš: Jako v nějakém špionážním filmu?

Lucie: Skoro. Zeptá se hlavního, „kořenového“ serveru. Ten mu řekne: „Já nevím přesně, ale na domény .com se zeptej tady.“ Tak se zeptá tam. Ten další server mu řekne: „Aha, na example.com se zeptej támhletoho autoritativního serveru.“

Tomáš: A ten už to konečně ví?

Lucie: Ten už to musí vědět! Odpoví tou správnou IP adresou, prohlížeč si ji uloží a konečně ví, kam má „zavolat“.

Tomáš: Dobře, takže máme číslo. Co teď? Prostě zavolám a začnu křičet, co chci?

Lucie: To by moc dobře nefungovalo. Teď přichází na řadu to slušné vychování, o kterém jsem mluvila. Jmenuje se to TCP handshake. Je to proces ve třech krocích, jak navázat spolehlivé spojení.

Tomáš: Tříkrokový pozdrav?

Lucie: Přesně tak. Tvůj prohlížeč pošle serveru zprávu, takový paket, kde říká: „Ahoj, chci se připojit.“ Říká se tomu SYN. Server odpoví: „Jasně, slyším tě a taky se chci připojit.“ To je SYN-ACK. A nakonec tvůj prohlížeč řekne: „Super, rozumím, jsme spojeni.“ A to je ACK.

Tomáš: SYN, SYN-ACK, ACK. To je jako... „Klepu.“ „Pojďte dál.“ „Děkuji, už jdu.“

Lucie: To je naprosto dokonalá analogie! A pokud je stránka zabezpečená, tedy začíná na https, proběhne ještě jeden, o něco složitější „pozdrav“, takzvaný TLS handshake. Ten zajistí, že veškerá komunikace mezi tebou a serverem bude šifrovaná a nikdo ji nemůže odposlouchávat.

Tomáš: Takže jsme se slušně pozdravili a máme bezpečné spojení. Teď si konečně můžeme říct o tu stránku?

Lucie: Konečně! Prohlížeč teď pošle takzvaný HTTP požadavek. Je to v podstatě textová zpráva, která říká něco jako: „Hej servere, prosím tě, pošli mi obsah hlavní stránky.“

Tomáš: A server odpoví?

Lucie: Přesně. Server zpracuje požadavek a pošle zpátky HTTP odpověď. Ta obsahuje jednak stavový kód – slavné 200 OK znamená, že je vše v pořádku, zatímco 404 Not Found znamená, že stránka neexistuje...

Tomáš: Tu znám až moc dobře.

Lucie: Kdo by neznal. A hlavně ta odpověď obsahuje samotný obsah stránky, tedy HTML kód. A tady začíná ta poslední, magická část.

Tomáš: Magická? Myslel jsem, že už jsme skoro u konce.

Lucie: Jsme, ale tohle je ta část, kterou vidíš. Prohlížeč dostane hromadu HTML kódu a začne ho parsovat – číst a analyzovat. Z něj si postaví strukturu stránky, takový strom objektů zvaný DOM.

Tomáš: Jako kostru?

Lucie: Přesně jako kostru. Během toho narazí na odkazy na další věci, jako jsou CSS soubory pro styly, obrázky nebo JavaScript pro interaktivitu. A pro každý z nich spustí tenhle celý proces znova – DNS dotaz, TCP spojení, HTTP požadavek...

Tomáš: Páni, takže se to děje mnohokrát pro jednu jedinou stránku?

Lucie: Přesně tak, často desítkykrát. Pak vezme CSS kód, který mu říká, jak má co vypadat – jaké barvy, velikosti, fonty – a vytvoří si z něj další strom, CSSOM. Tyhle dva stromy pak spojí dohromady.

Tomáš: Takže má kostru i plán, jak ji nabarvit a obléknout.

Lucie: Perfektní! A pak už jenom spočítá, kam přesně na obrazovce každý prvek patří – tomu se říká layout. A nakonec to všechno vykreslí pixel po pixelu na tvůj monitor. A to všechno se stane za zlomek sekundy.

Tomáš: Neuvěřitelné. Takže příště, až se mi bude nějaká stránka načítat o vteřinu déle, budu mít víc pochopení pro všechny ty detektivy a slušné pozdravy, co se dějí na pozadí.

Lucie: Přesně tak. Není to jen čekání, je to spousta tvrdé práce!

Tomáš: Takže teď už víme, kde se server nachází. Co se děje dál? Prostě si od něj rovnou vyžádáme stránku?

Lucie: Kéž by to bylo tak jednoduché. Než si vůbec můžeme něco vyžádat, musíme navázat spolehlivé spojení. Je to trochu jako zvednout telefon a počkat, až ten druhý řekne „haló“.

Tomáš: A jak se takové digitální „haló“ řekne?

Lucie: Říká se tomu TCP handshake. Konkrétně „trojcestný handshake“. Představ si to... Prohlížeč pošle serveru zprávu „Chci se připojit!“, to je SYN.

Tomáš: Jako synchronizovat?

Lucie: Přesně tak. Server odpoví: „Jasně, slyším tě a taky se chci připojit!“, to je SYN-ACK. No a nakonec prohlížeč potvrdí: „Super, potvrzuji příjem!“, to je ACK. A teprve teď je spojení navázáno.

Tomáš: SYN, SYN-ACK, ACK. Zní to jako nějaké tajné kódové slovo.

Lucie: Je to takové digitální podání ruky. Zajišťuje, že obě strany jsou připravené a nikdo nemluví do prázdna. Komunikace pak probíhá přes specifický port — pro nezabezpečený web je to port 80.

Tomáš: Počkat, a co když je to adresa s https? To „s“ na konci znamená bezpečí, že?

Lucie: Přesně! A tady přichází další, ještě důležitější handshake. Hned po tom prvním podání ruky následuje TLS handshake. TLS je zkratka pro Transport Layer Security.

Tomáš: Takže další kolo představování?

Lucie: Ano, ale tentokrát mnohem důkladnější. Představ si, že vcházíš do banky. Nejdřív se musíš ujistit, že je to opravdová banka a ne jen kulisa, že?

Tomáš: Jasně, nechci dát své peníze nějakému podvodníkovi.

Lucie: Přesně. Prohlížeč si vyžádá od serveru jeho digitální certifikát. Ověří si, že je platný a vydaný důvěryhodnou autoritou. To je první krok – ověření totožnosti serveru.

Tomáš: A co dál?

Lucie: Pak si domluví tajný kód. Prohlížeč a server si bezpečně vymění informace a z nich si oba vygenerují unikátní šifrovací klíče. Od té chvíle je veškerá komunikace mezi nimi zašifrovaná. Nikdo třetí ji nemůže číst.

Tomáš: Super, takže jsme připojení a v bezpečí. Teď už si konečně můžeme říct o tu webovou stránku?

Lucie: Konečně! Teď prohlížeč pošle takzvaný HTTP požadavek. Nejčastěji je to požadavek typu GET, což jednoduše znamená: „Dej mi obsah této stránky.“

Tomáš: Co všechno v takovém požadavku je?

Lucie: Kromě samotné adresy obsahuje i takzvané hlavičky. Třeba User-Agent, který říká, jaký prohlížeč používáš, nebo Accept-Language, který serveru napoví, že preferuješ češtinu.

Tomáš: User-Agent? To zní jako tajný agent.

Lucie: Trochu ano. Server se pak podívá na požadavek, zpracuje ho – najde třeba soubor index.html – a pošle zpátky HTTP odpověď.

Tomáš: A v té odpovědi je už ta stránka?

Lucie: Přesně. Odpověď obsahuje stavový kód, třeba 200 OK, což znamená „vše v pořádku, tady to máš“. Pak zase nějaké hlavičky a v těle odpovědi je samotný HTML kód stránky.

Tomáš: A co když stránku nenajde? To je to slavné 404?

Lucie: To je přesně ono! 404 Not Found. Takže shrnuto: navážeme spojení, zabezpečíme ho a pak si formálně objednáme data. Je to vlastně docela zdvořilý proces.

Tomáš: Chápu. Máme tedy hromadu kódu. Ale jak z toho ten prohlížeč udělá hezkou, klikací stránku? O tom si povíme hned vzápětí.

Tomáš: Tak a jsme u posledního tématu pro dnešek — webové technologie. Po všem, co jsme dnes probrali, mi to přijde jako taková třešnička na dortu.

Lucie: Přesně tak. A je to oblast plná mýtů, které je zábavné bořit.

Tomáš: Opravdu? Tak sem s nimi! Jaké jsou největší omyly?

Lucie: Třeba že DNS, ten překlad jména stránky na IP adresu, je okamžitý. Není. Může to klidně přidat desítky i stovky milisekund k načtení stránky.

Tomáš: Aha, takže to není jen o rychlosti mého internetu...

Lucie: Přesně. Nebo že HTTP a HTTPS je to samé. Vůbec ne! HTTPS šifruje komunikaci. Bez něj posíláte data jako pohlednici, kterou si může kdokoliv přečíst.

Tomáš: To je skvělé přirovnání. Už nikdy nebudu ignorovat ten zámeček v adrese.

Lucie: A poslední velký mýtus — že prohlížeč jen pasivně „zobrazí“ HTML. Kdepak. Je to složitý software, který musí vše parsovat, počítat a dynamicky vykreslovat.

Tomáš: A to je přesně to, co si studenti mohou vyzkoušet v interaktivní simulaci, že?

Lucie: Ano! Tam krásně uvidí, jak tyhle mýty padají. Simulace ukáže časovou osu — kolik času zabere DNS, kolik navázání spojení, kolik stahování dat.

Tomáš: Takže to zpoždění uvidím na vlastní oči. To je skvělé.

Lucie: Přesně tak. Uvidíte animované pakety, jak putují sítí, a jak se stránka skládá kousek po kousku, ne všechno najednou. Je to opravdu intuitivní.

Tomáš: Takže, abychom to shrnuli. Od programovacích jazyků přes databáze až po web... dnešní díl byl hlavně o odhalování toho, co se skrývá pod povrchem.

Lucie: Přesně tak. A klíčové je, že nic z toho není magie. Všechno má svou logiku a dá se to pochopit, když víte, kam se dívat. A je skvělé být zvědavý!

Tomáš: Lucie, moc děkuju, že jsi nám to dnes tak skvěle přiblížila. Bylo to fascinující.

Lucie: Já děkuju za pozvání. Bylo mi potěšením.

Tomáš: Vám, milí posluchači, děkujeme za pozornost. Uslyšíme se zase příště u dalšího dílu Studyfi Podcastu. Na slyšenou!

Lucie: Na slyšenou.