17. HTTP
Teorie
HTTP (Hypertext Transfer Protocol),
HTTPS (...
Secure)
- nejvíce používané protokoly - jsou umístěny nad síťovými vrstvami
- slouží pro přenos hypertextových dokumentů z webového serveru ve
formátu
- URL (Uniform Resource Locator) - strukturovaná adresa
zdroje dat
-
protokol://server:port/umístění_na_serveru?formulářová_data#kotva
- protokol - http, https, ftp, file, ...
- case insensitive
- pouze znaky ASCII
(jiné znaky přes % a hexadecimální vyjádření znaku)
- např. http://server.firma.cz/adr1/dokument.html#odstavec5
- např. http://server.firma.cz/cgi-bin/formular.exe?pole1=xxx&pole2=yyy
- příklad autentizace: https://mirek:heslo@www.example.com/
- HTTP - nešifruje data, implicitní port 80
- HTTPS - šifruje data, implicitní port 443
- vývoj má na starosti konsorcium
W3C
- statické/dynamické webové stránky
- klientský software - webový prohlížeč
- serverový software -
webový server - Apache,
Microsoft IIS
Ukázka HTTP komunikace klient/server:
- uživatel zadá do adresního řádku webového prohlížeče (klienta)
požadovanou adresu (URL)
- prohlížeč z URI vyřízne jméno serveru, nechá si ho přeložit na IP
adresu pomocí DNS (1 a 2 na obr.) a
naváže spojení prostř. TCP
- po navázání spojení prohlížeč pošle dotaz - 3 na obr.:
-
GET /wiki/Wikipedie HTTP/1.1
Host: cs.wikipedia.org
User-Agent: Opera/9.80 (Windows NT 5.1; U; cs) Presto/2.5.29 Version/10.60
Accept-Charset: UTF-8,*
- Dotaz se skládá z (obr.)
- 1. řádek = metoda (GET, POST, HEAD, ...)
umístění_na_serveru verze_HTTP
- záhlaví - každý řádek má tvar Klíčové_slovo: parametry,
příklady:
- Host (název serveru - povinné)
- User-Agent (info o klientovi)
- Accept-Charset (podporovaná znaková sada)
- dotaz je ukončen
prázdným řádkem CRLF (můžou následovat volitelná data)
- Server odpoví např. (4 na obr.):
-
HTTP/1.0 200 OK
Date: Fri, 15 Oct 2004 08:20:25 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.8
X-Powered-By: PHP/4.3.8
Vary: Accept-Encoding,Cookie
Cache-Control: private, s-maxage=0, max-age=0, must-revalidate
Content-Language: cs
Content-Type: text/html; charset=utf-8
<html>...</html>
- Odpověď se skládá z:
- verze_http výsledkový_kód poznámka
- př.
výsledkových kódů: 200 úspěch, 4xx - chyba klienta
(např. syntakt. chyba v dotazu), 5xx - chyba na serveru
- záhlaví je strukturováno podobně jako u dotazu - např.
- Content-Type pro typ přenášených dat
- Content-Language pro jazyk dokumentu
- následuje prázdný řádek CRLF a vlastní data (HTML dokument), které
prohlížeč zpracuje a zobrazí uživateli
Cvičení - Wireshark - ukázka webové komunikace přes
Internet - obr.
- otevřít lotsofweb.pcapng
- display filter: http
- najít příkaz GET pro stažení souboru 300x250.jpg (Ctrl+F jako
string)
- analyzovat vrstvy
- vrstva 1 - byty/bity - počet
- vrstva 2 - Ethernet frame - zdroj, cíl MAC adresa, typ IP v4
- vrstva 3 - IP packet - zdrojová, cílová IP adresa, protokol TCP
- vrstva 4 - TCP segment - zdrojový, cílový port 80 = příkaz pro
web server
- aplikační vrstva - protokol HTTP - GET ...
- analyzovat odpověď
- File - Export Objects - HTML - vybrat řádek 4471 a Uložit
Telnet
- komunikace s web. serverem - podle TCP/IP str. 363:
- pomocí putty přes ssh navázat komunikaci s 192.168.5.100
- přihlásit se do Linuxu
- v příkazovém řádku Linuxu spustit telnet a provést příkaz
- naváže se spojení s web. serverem - pokračovat v psaní dotazem na
server
- GET / HTTP/1.1
- Host: 192.168.5.100
- ukončit dotaz Enterem (prázdným řádkem)
PacketTracer
- simulace TCP 3-way handshaku, ukončení spojení
- vytvořit LAN - 1 PC, server
- nastavit pevné IP, na serveru ověřit spuštění web. serveru v
Services
- na PC ve web browseru zadat IP adresu serveru a spustit
- opakovat v simulačním režimu a analyzovat data
Další
- hledání web serverů v síti pomocí nmap (viz TCP/IP na konci HTTP)
- konzolový režim v prohlížeči