Počítačové sítě/LAB: Hypertext Transfer Protocol
Požadavky
[editovat | editovat zdroj]- 1x WWW server
- 1x PC
- Instalovaný program Wireshark
- Instalovaný program Telnet
Zadání
[editovat | editovat zdroj]Připojit se programem telnet na webový server a přes HTTP příkazy stáhnout webovou stránku. Toto zachytávat ve Wiresharku a identifikovat packet s daty.
Schéma
[editovat | editovat zdroj]Úkoly
[editovat | editovat zdroj]- Připojit se webovým prohlížečem na webový server
- Připojit se programem telnet na webový server
- HTTP příkazem přenést soubor
- Porovnat originální přenesená data s originálními
- Celou komunikaci odchytnout programem Wireshark a identifikovat přenášená data v packetu
Řešení
[editovat | editovat zdroj]Spuštění WWW serveru
[editovat | editovat zdroj]Vytvořit dočasný adresář pro webové stránky.
student@www-server:~$ mkdir /tmp/www-dir student@www-server:~$ cd /tmp/www-dir
Vytvořit .html soubor v tomto adresáři.
student@www-server:~$ touch index.html
Zapsat do něj testovací zprávu nebo soubor upravit tak, aby obsahoval jednoduchou webovou stránku.
student@www-server:~$ echo "TEST" > index.html
Pro účely LABu lze spustit jednoduchý WWW server, který je součástí Pythonu.
student@www-server:/tmp/www-dir$ python -mSimpleHTTPServer Serving HTTP on 0.0.0.0 port 8000 ...
Ve výchozím nastavení je www server spuštěný na portu 8000. Pro spuštění na dobře známém portu pro WWW služby (port 80) je třeba mít práva uživatele root a specifikovat port.
root@www-server:/tmp/www-dir$ python -mSimpleHTTPServer 80 Serving HTTP on 0.0.0.0 port 80 ...
Přenos dat přes HTTP
[editovat | editovat zdroj]- Po zadání IP adresy WWW serveru do webového prohlížeče se zobrazí jednoduchá webová stránka, spojení na WWW server je tedy funkční.
- Zapnout Wireshark
- Pomocí programu telnet vytvořit socket na IP adresu WWW serveru a dobře známý port webových služeb.
student@client:~$ telnet 192.168.100.242 80 Trying 192.168.100.242... Connected to 192.168.100.242. Escape character is '^]'.
Je třeba použít IP adresu WWW serveru, která se může od výše uvedené IP adresy lišit.
- Použít HTTP příkaz GET[1].
GET / HTTP/1.0<enter> <enter>
- Od WWW serveru přijde odpověď.
HTTP/1.0 200 OK Server: SimpleHTTP/0.6 Python/2.7.9 Date: Fri, 13 May 2016 10:30:44 GMT Content-type: text/html Content-Length: 115 Last-Modified: Fri, 13 May 2016 10:22:06 GMT TEST Connection closed by foreign host.
- Odpověď obsahuje hlavičku a data odpovídající obsahu souboru (stejný obsah, který je vidět při zadání IP adresy WWW serveru do webového prohlížeče).
- Vypnout Wireshark.
- V odchytaných datech filtrovat podle IP adresy (ip.addr==192.168.100.242), portu (tcp.port==80) nebo protokolu (http).
- Najít packet, ve kterém byla přenesena data.
Závěr
[editovat | editovat zdroj]HTTP je protokol, který slouží pro přenos webových stránek. V nejjednodušší podobě jsou webové stránky textové soubory formátu HTML - Hypertext Markup Language[2]. Webový prohlížeč je program, který vytvoří socket na webový server a přes HTTP přenáší jenotlivé HTML subory.
V současné době je implementace webových serverů složitější - jsou implementovány VirtualHosts, rewrite rules, HTTPS. Většina serverů dostupných v internetu tak místo HTTP/1.0 200 OK vrací HTTP/1.0 301 Moved Permanently.