Protokol HTTP
Z MiS
Obsah |
Protokol HTTP
- Protokol HTTP popisuje postup klienta a serveru při stahování obsahu webových stránek.
- Klientem je v tomto případě internetový prohlížeč uživatele, serverem je aplikace Apache, nginx, IIS či jiná, která poskytuje klientům obsah webových stránek.
- Protokol je bezestavový. Nevyužívá tedy služeb relační vrstvy. Každý požadavek se řeší zcela nezávisle na předchozích požadavcích.
Chování klienta a serveru
Příprava na stažení webové stránky
- Uživatel zadá adresu do adresního řádku prohlížeče.
- Pro navázání spojení se serverem je třeba získat IP adresu serveru.
- Prohlížeč proto osloví DNS server
- DNS server přeloží textovou adresu na IP adresu (například www.oauh.cz => 212.111.4.142).
Tato komunikace ještě přímo nesouvisí s protokolem HTTP, využíváme zde Protokol DNS.
HTTP: Odeslání příkazu a přijetí odpovědi
- Prohlížeč naváže spojení se servrem pomocí IP adresy (využije služeb protokolu TCP).
- => prohlížeč pošle příkaz GET nazev_stranky.htm
- K požadavku může připojit ještě další informace: hlavičky protokolu HTTP.
- <= server najde soubor a pošle zpět obsah souboru (HTML kód)
- Prohlížeč vykreslí stránku podle popisu v jazyce HTML
Zpracování požadavku: dynamické stránky
- Pokud se jedná o statickou webovou stránku, server pouze vyhledá správný soubor a odešle jeho obsah.
- Pokud jsou ale v obsahu stránky použity skriptovací jazyky PHP, ASP.net, Python či další, musí server nejprve zpracovat veškeré příkazy a teprve výsledný kód se odešle jako odpověď.
- Toto se netýká skriptů zpracovávaných na straně klienta (v prohlížeči) — dnes typicky JavaScript. Tyto skripty se odesílají spolu s kódem stránky a jejich zpracování provádí až prohlížeč na počítači klienta.
HTTP: Odpověď serveru
- Přijetím odpovědi komunikace končí.
- Protože je protokol bezstavový, může server zapomenout veškeré informace. Příští spojení bude zcela nezávislé na tomto.
Obrázky a jiné objekty ve stránkách
- Pokud je v popisu stránky obrázek či jiný vložený objekt, prohlížeč naváže nové spojení a vyžádá si stažení souboru s obrázkem (či jiným objektem).
Protokol HTTP verze 1.1 umožňuje po ukončení komunikace (po přijetí odpovědi) ihned poslat další požadavek bez ukončení spojení. Server tedy spojení neuzavírá ihned po odeslání odpovědi, ale až s nějakým zpožděním.
Příkazy HTTP
Příkaz GET
Další příkazy
- Kromě stahování obsahu webových stránek dnes lze protokol HTTP využít i pro další účely včetně modifikace obsahu webových stránek.
- K těmto účelům slouží další příkazy:
-
POST
-
PUT
-
DELETE
Hlavičky protokolu HTTP
Verze protokolu HTTP
Úkol: Prohlédněte si komunikaci
- Úkol
- Prohlédněte si komunikaci mezi klientem a serverem
- Najděte stránku WebSniffer.cc.
- Zadejte nějakou URL adresu do okénka.
- Web sniffer vám vypíše kompletní komunikaci mezi vaším prohlížečem a serverem.
- Zobrazen máte požadavek s odeslanými hlavičkami i přijatou odpověď včetně hlaviček, které poskytuje server.
Úkol: Odeslání požadavku ručně
Úkol: Vyzkoušejte si ručně, co musí udělat prohlížeč!
- Vyberte si web, ke kterému se zkusíte připojit. (V našem příkladu píšeme
www.oauh.cz
. Vy napište skutečnou URL adresu bez HTTP. - Do poznámkového bloku (či jiného čistě textového editoru) si připravte požadavek:
GET / HTTP 1.1 Host: www.oauh.cz <prázdný řádek>
- Připravený požadavek (včetně prázdného řádku na konci) zkopírujte do schránky.
- Spusťte program PuTTY a vyplňte údaje pro připojení k serveru.
- Server: www.oauh.cz
- Port: 80
- Ihned po navázání spojení klikněte do okénka PuTTY pravým tlačítkem.
- Tím provedete operaci „paste“: odešlete otevřeným spojením celý obsah schránky Windows (ve schránce máte připravený požadavek HTTP GET).
- Zkontrolujte odpověď.
- Odpověď serveru by měla začínat:
200 OK
- Pokud je odpověď jiná, najděte chybový kód a upravte postup.
- Odpověď serveru by měla začínat:
- Obvyklé chyby
- Chybějící hlavička
Host:
- Špatná velikost písmen (dodržte malá a velká písmena podle vzoru).
- Chybějící prázdný řádek na konci (požadavek končí prázdným řádkem — dvěma dvojicemi CR+LF).