Komunikace klient-server

Web

Web je všeobecně skupina souvisejících webový stránek hostovaných na HTTP serveru v sítí Internet nebo intranet pod nějakou doménou (example.com). Výchozím bodem je nejčastěji domovská stránka (homepage).

WWW

World Wide Web (zkráceně též web). V doslovném překladu světově rozsáhlá pavučina nebo celosvětová síť. Systém na prohlížení, ukládání a odkazování dokumentů nacházejících se v Internetu (ten tvoří počítače a kabely). Služba WWW je postavena na třech základních technologiích:

Zkratka Popis
HTML Hypertext Markup Language - značkovací jazyk ke standardnímu popisu obsahu a struktury webových stránek.
HTTP Hypertext Transfer Protocol - protokol (= domluvený způsob) používaný při komunikaci mezi prohlížeči a webovými servery. Pomocí něho se k serveru přenáší URL stránky, kterou uživatel (přes svůj prohlížeč) požaduje, a naopak server pomocí protokolu HTTP odesílá uživateli zpět stránku zapsanou v HTML.
URL Uniform Resource Locator - speciální druh adres používaných na webu. Každá webová stránka na světě (soubor na severu) má svoji jednoznačnou adresu právě v podobě URL.

HTTP a HTTPS

HTTP

HTTP používá obvykle port TCP/80. Společně s elektronickou poštou je HTTP nejvíce používaným protokolem, který se zasloužil o obrovský rozmach internetu v posledních letech. V současné době je používán i pro přenos dalších informací. Pomocí rozšíření MIME umí přenášet jakýkoli soubor (podobně jako e-mail).

Poznámka: Současné webové prohlížeče protokol http v adresním řádku nezobrazují. Jako první s tímto nápadem přišla společnost… (hádej která).

HTTPS

Samotný protokol HTTP neumožňuje šifrování ani zabezpečení integrity dat. Pro zabezpečení HTTP se často používá TLS spojení nad TCP. Toto použití je označováno jako HTTPS. HTTPS používá port TCP/443.

HTTP cookies

Pokud uživatel bude mít po chvíli další dotaz na stejný server (např. proto, že uživatel v dokumentu kliknul na hypertextový odkaz), bude to pro server další, nezávislý dotaz a odpověď. Z hlediska serveru nelze poznat, jestli tento druhý dotaz jakkoli souvisí s předchozím. Kvůli této vlastnosti se protokolu HTTP říká bezestavový protokol – protokol neumí uchovávat stav komunikace, dotazy spolu nemají souvislost.

Tato vlastnost je nepříjemná pro implementaci složitějších procesů přes HTTP (např. internetový obchod potřebuje uchovávat informaci o identitě zákazníka, o obsahu jeho nákupního košíku apod.). K tomuto účelu byl protokol HTTP rozšířen o tzv. HTTP cookie, které umožňují serveru uchovávat si informace o stavu spojení na počítači uživatele.

URL

Statické stránky

https://www.example.com/file/soubor.html

Jak to probíhá:

  1. Uživatel zadá URL https://www.example.com/file/soubor.html
  2. Klient sestaví dle protokolu HTTP požadavek a odešle ho serveru.
  3. Server vyhledá zdroj (soubor.html ve složce file) a pošle ho klientovi.
  4. Klient zpracuje odpověď serveru a výsledek zobrazí uživateli.

Dynamické stránky

O této problematice až ve 3. ročníku.

U dynamických stránek, které dnes výrazně převažují, může URL obsahovat navíc proměnné a jejich hodnoty:

https://www.example.com/file/search.php?id=jahody&lang=cs

Jak to probíhá:

  1. Uživatel zadá URL https://www.example.com/file/search.php?id=452&lang=cs
  2. Klient sestaví dle protokolu HTTP požadavek a odešle ho serveru (s ním odešle i proměnné a jejich hodnoty: id=452 a cs=lang).
  3. Server spustí skript search.php, který má uložený ve složce file.
  4. Skript také zpracuje hodnoty proměnných 452 a lang.
  5. Zpracovaný výstup v podobě čistého HTML pošle klientovi.
  6. Klient zpracuje odpověď serveru a výsledek zobrazí uživateli.

Online ukázka: https://repl.it/@machac/datum

Verze HTTP

HTTP/1.0

První popisy protokolu HTTP/1.0 byly publikovány již v roce 1992. Definitivní standard byl vydán v roce 1996. Protokol zavádí stavový řádek v odpovědi, HTTP hlavičky v požadavku i odpovědi a pro rozlišení typu dokumentů používá MIME.

HTTP/1.1

HTTP/1.1 bylo nasazeno v roce 1999. Tato verze umožňuje mimo jiné provozovat více WWW serverů na jedné adrese, přenos více souborů po sobě v jednom spojení a udržování TCP spojení (tzv. keep-alive connection). Beze změny se používá i po 20 letech.

HTTP/2

HTTP/2 je verze protokolu přijatá 14. května 2015. Podíl serverů, které jsou schopny komunikovat touto verzí HTTP v září roku 2018 překročil 30 %, podíl na provozu stoupá a je zatím v řádu jednotek procent. Po dlouhých 16 letech aktualizovala organizace IETF jeden z nejdůležitějších protokolů současnosti.

Podobně dlouho na aktualizaci čekal i jazyk HTML.

HTTP/2 vychází z protokolu SPDY od Googlu a jeho nasazení by měli poznat i surfaři na zvýšeném výkonu. HTTP/2 například lépe pracuje s HTTP požadavky. Každý HTTP GET, při kterém webová stránka posílá požadavek třeba na obrázek, je totiž náročný a jejich počet za jednotku času je omezený. Pokud tedy webová stránka obsahuje mnoho externích objektů, její načítání je pomalejší. HTTP/2 tento problém řeší podporou multiplexování, kdy se v podstatě více požadavků na server zapouzdří do jednoho proudu a režie je tedy mnohem menší. O menší zátěž se postará také komprese HTTP hlaviček a skutečnost, že se jedná o binární protokol.

Další novinkou HTTP/2 je cache pushing, kdy webový server může klientovi poslat data ještě dříve, než o ně požádá. Tím se opět zmenší počet nutných HTTP dotazů. Když tedy do prohlížeče zadáte webovou adresu a vytvoříte tedy HTTP dotaz třeba na stránku www.pepicek.cz/index.html, server odpoví kódem stránky index.html a zároveň může začít posílat třeba externí CSS soubory, javascripty aj. a to dříve, než prohlížeč vůbec dekóduje index.html a zjistí, o jaké externí soubory si má dále požádat.

HTTP/2 by měl také usnadnit používání TLS šifrování (HTTPS), které by mělo být méně náročné na systémové prostředky a tedy opět výkonnější a dostupnější.

HTTP/3

HTTP/3 je nově vyvíjená verze protokolu, označovaná také „HTTP over QUIC“, která byla publikována jako Internet draft dne 24. října 2018.

Jenže zatímco IETF v roce 2015 oznámila standardizaci HTTP/2, inženýři z Googlu už dva roky zvesela testovali svůj vlastní QUIC. Jestli měla druhá generace webového protokolu přenést internetové servery do 21. století, pak jde QUIC ještě mnohem dál a boří a reformuje i jeho samotné základy. QUIC brzy v komunitě našel zalíbení, experti jej začali rozvíjet po vlastní ose a před pár dny je napadlo: „Hele, co kdybychom mu začali namísto QUIC říkat prostě HTTP/3?“

UDP místo TCP

HTTP/3 bude postaveno na UDP místo TCP. TCP se používá všude tam, kde je třeba zajistit, aby nechyběl byť jen jeden jediný bit informace. Platí to jak o webové stránce, tak třeba pro stahované soubory.

Pak tu jsou však i přenosy, kde by už ztráta nějakého toho bitu nevadila, a tak by se hodil nějaký jiný a méně náročný protokol, který integritu dat nebude kontrolovat tak obezřetně, protože to prostě zdržuje. Typickým příkladem jsou multimediální streamy, u kterých se nic nestane, když se náhodou po cestě nějaký ten pixel obrazu ztratí – přehrávač u nás v počítači s tím počítá a my si všimneme v obrazu přinejhorším nějakého artefaktu, který beztak s příchodem dalšího keyframu za pár okamžiků zmizí. A přesně tak funguje (tak trochu) protipól TCP jménem UDP.

A jelikož je QUIC opravdu zcela nová koncepce, kterou nemá smysl zpětně vsadit do HTTP/2, nyní se komunita rozhodla, že QUIC bude HTTP/3 a tedy časem i standard napříč prohlížeči. Hned to však nebude. Protokol je stále ve vývoji a nakonec záleží především na webmasterech, kdy aktualizují svoje servery. A jestli vůbec budou chtít, když stávající stav vlastně funguje. I když tedy mnohem více zatěžuje internet, počítače – prostě všechny prvky sítě.

V každém případě, World Wide Web bude jednou svižnější, to je už jisté.