Pokud jste sem přišli s domněnkou, že se něco dozvíte o surfování na vodě, pak vás musím bohužel zklamat, ale tomu já opravdu moc nerozumím. Pokusím se vám raději říct něco o surfování na internetu. Konkrétně o obyčejném prohlížení webových stránek. Vše zkusím vysvětlit na jasných příkladech, aby to pochopil každý.

Pro opravdovou názornost si nyní představte, že vy jste prohlížeč. Nemusíte mít k sobě připojenou klávesnici, ale máte před sebou kus papíru, na který budete uživateli vykreslovat, (renderovat) jak vypadá webová stránka, jejíž adresu napíše od adresní řádky.

Začátek komunikace

Přijde za vámi tedy obyčejný uživatel a řekne, že by se chtěl podívat na stránku facebook.com (uvádím pouze jako příklad, protože obsahuje pro pozdější popis všechny požadované části). Vy, jakožto zprostředkovatel komunikace, byste nyní chtěli poslat na danou adresu požadavek na podobu stránky. Avšak pro navázání komunikace neznáte IP adresu domény (v reálném světě by to mohlo být něco jako směrovací číslo, bez kterého obyčejný dopis také nepošlete). Podíváte se tedy do své cache paměti DNS (do svého osobního adresáře), kde máte uloženy IP adresy několika posledních stránek, které vám to dovolily. Pokud zde na zadaný výraz nenajdete vhodnou IP adresu, musíte se zeptat na vyšším místě - v cache paměti operačního systému. Pokud ani tady není žádný takový záznam, jdete dál, přes router a několik dalších autorit, až k hlavnímu serveru (root nameserver), který už vám poradí.

<p> </p>

Takto může vypadat začátek komunikace prohlížeče se serverem. Stačí stisknout enter.

První dotaz

Nyní máte IP adresu a můžete navázat komunikaci. Pošlete tedy na danou adresu dotaz na stránku facebook.com, v ní zahrnete různé další informace, jako jsou například cookies - ty obsahují různé informace, které si udržujete z dřívějších komunikací (pokud se váš uživatel již dříve přihlásil na Facebook a zaškrtl políčko Zůstat přihlášen, máte v cookies uloženo speciální identifikační číslo, podle kterého později server pozná, kdo je váš uživatel).

Přes síť nyní putuje váš dotaz a vůbec vás nemusí zajímat, pokud cestuje až do Ameriky. Zajímá vás pouze odpověď. Ta vás však moc nepotěší, protože se dozvíte, že se máte místo stránky facebook.com zeptat na www.facebook.com. Znova tedy pošlete dotaz, nyní již na správnou stránku.

<p> </p> <p> </p>

Ilustrační obrázky.

První odpověď

Server dostal dotaz. V něm požadujete stránku, která je generována dynamicky. Podle uživatelova čísla v cookies se rozhodne, jaká data vám poslat. Musí se však nejprve podívat do databáze na příspěvky uživatelových přátel, jejich fotky a různé aktivity (a že musí prohledat obrovskou databázi, aby našel všechny tyto lidi). Poté tato data hezky rozepíše do kódu, kterému byste jakožto prohlížeč měli rozumět. Obsahuje různé tagy, které určují, jak se má například zobrazit který kus textu, jaké má mít pozadí, jak má vypadat které tlačítko, co má dělat který odkaz a kam se má umístit který obrázek.

Celý tento zdrojový kód může ještě zakódovat nějakým archivačním algoritmem, aby byl pro přenos přes síť co nejmenší.

Poté připíše, o jakou odpověď se jedná, případně jaký byl použitý archivační algoritmus, zda si máte pro uživatele něco zapsat do cookies apod. A konečně odpověď pošle.

<p> </p>

Ukázka části náhodného zdrojového kódu.

Začínáme kreslit

Vy obdržíte od serveru odpověď, otevřete a rozbalíte daný popis (stejným archivačním algoritmem) a chcete konečně začít kreslit výslednou stránku. Ale co to? V kódu je napsáno, že máte použít určitý soubor, kde se dozvíte, jakou barvu má mít ta část textu, a to tlačítko atd. (soubor s kaskádovými styly). Opakujete tedy postup a poprosíte server o další soubor. Nyní již namočíte štětec do správné barvy, napíšete první nadpis a několik málo slov, podíváte se znova do kódu a ejhle, opět musíte přestat.

Pod nadpisem má být obrázek. Je tady malá šance, že daný obrázek máte již uložený v cache paměti a proto se nejdříve podíváte. Pokud tam je, můžete jej použít, pokud není, musíte opět požádat server. Ale na výsledek žádosti nemusíte čekat, stačí si vynechat dostatek místa (pokud víte kolik) a klidně můžete kreslit dál. Až obrázek přijde, jednoduše jej do prázdného místa nalepíte (možná znáte případ, kdy se vám zobrazí v prohlížeči text, poté jeho část poskočí a do prázdného místa se začne vykreslovat obrázek, tak to je přesně tento případ).

V kódu se mohou vyskytovat ještě tzv. skripty, které nemusí (například odpočítávání času), ale mohou opět něco potřebovat od serveru. V takovém případě odešlete zase požadavek a výsledek do stránky začleníte.

<p> </p>

Ukázka zatím nekompletní stránky, která ještě není zcela stažena. Chybí některé obrázky, odrážky a styly.

Konec?

A je hotovo? Ne. Některé stránky (mezi něž patří například i Facebook) i po dokončení vykreslování dále komunikují se serverem. A vy, jakožto prohlížeč, se o to musíte starat. Konkrétně u Facebooku se může jednat o nové příspěvky na zdi, které se do stránky přidávají bez opětovného načtení kompletní stránky, o upozornění na nové zprávy či odpovědi na vaše příspěvky, o aktuální seznam online přátel apod.

<p> </p>

Ukázka stránky na Facebooku. Velká část odkazů nevyžaduje znovunačtení stránky.

Závěr

Tak co? Jak rychle byste dokázali vykreslit takovou stránku? Rychleji než váš internetový prohlížeč, který máte v počítači? Zřejmě ne.

A věřte mi, že ta komunikace je ještě složitější, než je zde popsána (ignoruji nižší vrstvu komunikace, do níž spadají například pakety atd., o tom se můžete více dozvědět v našich starších článcích o počítačových sítích). Z toho lze také vidět, jak rychle pracují nejen počítače, ale i počítačové sítě. A nyní si představte, jak to musí vypadat, když se chcete podívat na video na Youtube nebo si stáhnout nějaký velký soubor ze Stahuj. Ale o tom zase až příště.