BI-AWD Administrace Webového a Databázového serveru Úvod do problematiky HTTP serveru Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti 1
Obsah Základní pojmy a nástroje X/HTML URL/URI/IRI Protokol HTTP HTTP komunikace Nástroje a testování komnikace 2
Základní pojmy X/HTML HTML HyperText Markup Language Deklarace DTD je povinná pro 4.01+, direktiva <!DOCTYPE Kořenový element element html reprezentuje celý dokument Hlavička dokumentu obsahuje metadata, která se vztahují k celému dokumentu. Definují např. název dokumentu, jazyk, kódování, klíčová slova, popis, použitý styl zobrazení Tělo dokumentu obsahuje vlastní text dokumentu <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>html 4.01 Transitional</title> </head> <body> <a href="http://www.example.com"> <img src="link.gif" alt="link na www.example.com">... 3
XHTML je XML verze jazyka HTML Základní pojmy X/HTML Měl by to být validní XML dokument Měl by se dobře zobrazit ve webovém prohlížeči <?xml version="1.0" encoding="iso-8859-2"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" > Některé webové prohlížeče mají problém se zobrazením, pokud není uvedena deklarace <!DOCTYPE jako první. Bez deklarace <?xml encoding=?> se předpokládá UTF-8/16 kódování. 4
Základní pojmy URL, URI, IRI URL = Uniform Resource Locator řetězec znaků s definovanou strukturou specifikující umístění zdrojů na Internetu je podmnožinou URI URI = Uniform Resource Identifier pojmenovává zdroje na Internetu syntaxe je specifická podle zvoleného schématu IRI = Internationalized Resource Identifier zobecněním URI umožnuje využívat Unicode místo ASCII (resp. Latin1) 5
Synataxe URL I Zjednodušená struktura generic-url ::= scheme:scheme-specific scheme ::= http ftp... scheme-specific ::= common-inet... common-inet ::= //user:password@host:port/url-path Příklady http://www.example.com http://www.example.com:8080/cesta/nazev http://www.example.com/cesta/nazev?parametr1=hodnota1¶metr2=hodnota2 ftp://anonymous:user%40example.com@ftp.example.com:21....../cesta/nazev;type=<typecode> mailto:user@example.com 6
Synataxe URL II Pro schéma HTTP může URL obsahovat #fragment není součástí URL podle RFC parser by měl být schopen jej rozpoznat V URL lze bezpečně (bez zakódování) používat pouze alfanumerické znaky ([0-9a-zA-Z]) speciální znaky $-_.+!*'() ostatní musí být kódovány pomocí %xx (kód je podle ISO 8859-1) Nebezpečné (unsafe) znaky: <> #%{}[] \^~` mohou být považovány za speciální při přenosu mohou být změněny, proto by měly být kódovány 7
Vyhrazené (reserved) znaky: ;/?:@=& speciální význam v URL pro jiné použití musí být kódovány Ukázka kódování znaků Znak Kód Znak Kód Synataxe URL III & %2B / %2F : %3A ; %3B = %3D? %3F @ %40 8
Protokol HTTP Základní vlastnosti HyperText Transfer Protocol Textový protokol (raw data) Bezestavový protokol Fungování způsobem: požadavek odpověď Protokol aplikační vrstvy (ISO OSI) Nad TCP/IP protokoly (obvykle port 80) Verze 1.0 RFC1945 http://tools.ietf.org/html/rfc1945 1.1 RFC2616, RFC2068 http://tools.ietf.org/html/rfc2616 HTTPS šifrovaná verze protokolu (HTTP + SSL/TLS) 9
Vlastnosti z HTTP/1.0 zůstávají Rozšíření oproti HTTP/1.0 Protokol HTTP/1.1 Hlavička Host: u každého požadavku (možnost používat virtální servery virtual hosts) Možnost poslat odpověď ve více částech (chunked encoding) Podpora trvalého (persistent) spojení se serverem (případně hlavička Connection: close při ukončení spojení) Správné zpracování odpovědi 100 Continue (obvykle se ignoruje) Vylepšená podpora Cache-Control 10
Protokol HTTP pojmy I Zpráva (message) Základní jednotka HTTP komunikace skládající se ze strukturované sekvence bytů (oktetů) a přenášená spojením. Požadavek (request) HTTP zpráva od klienta serveru Odpověď (response) HTTP zpráva od serveru klientovi Zdroj (resource) Datový o objekt nebo služba na síti, která může být identifikována pomocí URI. Zdroje mohou být k dispozici ve více reprezentacích (jazykové varianty, datové formáty atd.) 11
Protokol HTTP pojmy II Klient (client) Program, který navazuje spojení za účelem odeslání požadavku. Uživatelský agent (user agent) Klient, který inicioval požadavek. Typicky jimi jsou prohlíže, editory, roboti atd. Server Aplikace, která přijímá spojení a obsluhuje přes něj přijaté požadavky a odesílá zpět odpovědi. Program může být schopen chovat se jako klient i server, proto je označení vždy vztaženo ke konkrétnímu spojení. Origin server Server, na kterém se zdroj nachází nebo bude vytvořen. 12
Způsob činnosti klient/server Proxy Server Klient Name Server Web Server 13
Zjednodušená struktura požadavku HTTP syntaxe Request ::= RequestLine CRLF [Header CRLF]* CRLF [body] RequestLine ::= Method RequestUri HTTPVersion CRLF ::= CR LF Header ::= Host... Method ::= GET HEAD... Server vždy musí podporovat metody GET a HEAD, ostatní jsou volitelné. Zjednodušená struktura odpovědi Response ::= Status-Line (header CRLF)* CRLF [ message-body ] Status-Line ::= HTTP-Version Status-Code ReasonPhrase CRLF 14
TCP/IP I :: LAB Zjištění IP adresy/doménového jména ping www.google.com PING www.l.google.com (74.125.39.104) 56(84) bytes of data. 64 bytes from fx-in-f104.1e100.net (74.125.39.104): icmp_req=1 ttl=51 time=12.6 ms 64 bytes from fx-in-f104.1e100.net (74.125.39.104): icmp_req=2 ttl=51 time=11.9 ms nslookup www.google.com Server: 10.95.33.3 Address: 10.95.33.3#53 Non-authoritative answer: www.google.com canonical name = www.l.google.com. Name: www.l.google.com Address: 74.125.39.105 Name: www.l.google.com Address: 74.125.39.106 Name: www.l.google.com Address: 74.125.39.147 15
Zjištění IP adresy/doménového jména dig www.google.com TCP/IP II :: LAB ; <<>> DiG 9.7.3 <<>> www.google.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36672 ;; flags: qr rd ra; QUERY: 1, ANSWER: 7, AUTHORITY: 4, ADDITIONAL: 4 ;; QUESTION SECTION: ;www.google.com. IN A ;; ANSWER SECTION: www.google.com. 514818 IN CNAME www.l.google.com. www.l.google.com. 97 IN A 74.125.39.99 www.l.google.com. 97 IN A 74.125.39.103 www.l.google.com. 97 IN A 74.125.39.104 www.l.google.com. 97 IN A 74.125.39.105 www.l.google.com. 97 IN A 74.125.39.106 www.l.google.com. 97 IN A 74.125.39.147 16
HTTP syntaxe I :: LAB Odeslání požadavku telnet www.google.com 80 Trying 74.125.39.105... Connected to www.l.google.com. Escape character is '^]'. GET / HTTP/1.0 17
HTTP syntaxe II :: LAB Přijmutí odpovědi HTTP/1.0 302 Found Location: http://www.google.cz/ Cache-Control: private Content-Type: text/html; charset=utf-8 Set-Cookie: PREF=ID=760e4ea5bdf6b578:FF=0:TM=1319543555: LM=1319543555:S=HB4wXQXr-3Tuob0_; expires=thu, 24-Oct-2013 11:52:35 GMT; path=/; domain=.google.com Date: Tue, 25 Oct 2011 11:52:35 GMT Server: gws Content-Length: 218 X-XSS-Protection: 1; mode=block X-Frame-Options: SAMEORIGIN <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>302 Moved</TITLE></HEAD><BODY> <H1>302 Moved</H1> The document has moved <A HREF="http://www.google.cz/">here</A>. </BODY></HTML> Connection closed by foreign host. 18
Určují výsledek požadavku číselně (pro automatické zpracování) textově (pro snažší porozumění člověkem) První číslice kódu určuje třídu: HTTP stavové kódy I 1xx - Informational (informace) požadavek přijat, zpracování pokračuje 2xx - Success (úspěch) požadavek přijat a plně zpracován 3xx - Redirection (přesměrování) další akce musí být provedeny pro dokončení požadavku 4xx - Client Error (chyba klienta) požadavek nemůže být zpracován (špatná syntaxe, ) 5xx - Server Error (chyba serveru) serveru se nepodařilo zpracovat validní požadavek 19
HTTP stavové kódy II Nejčastější kódy 100 Continue - zpracování pokračuje 200 OK 300 Multiple Choices - výběr z možností (např. při dojednávání obsahu) 301 Moved Permanently - trvale přesunuto 400 Bad Request - neplatný požadavek 401 Unauthorized - neautorizovaný přístup 403 Forbidden - přístup zakázán 404 Not Found - zdroj nenalezen 500 Internal Server Error - vnitřní chyba serveru Pokud klient některému kódu nerozumí, považuje jej za kód x00 20