Základní složky systému globálního informačního systému WWW Jednoznačná globální identifikace WWW zdrojů (URL, URI, URN) Standardní jazyk pro vytváření a publikaci WWW dokumentů – HTML (HyperText Markup Language) Komunikační protokol HTTP (HyperText Transfer Protocol) 1 Systém WWW
Identifikace WWW zdrojů URI – Uniform Resource Identifier – URL (Uniform Resource Locator) – lokalizace a vyhledání zdroje – URN (Uniform Resource Name) – identifikace zdroje 2
Protokol HTTP (Hypertext Transfer Protocol) HTTP je základem systému „World Wide Web“ (WWW) - Web … HTTP – jednoduchý protokol aplikační vrstvy, transport TCP, well-known port 80 Princip klient -- server Zprávy požadavek a odpověď jsou vyměňovány mezi klientem a serverem obdobně jako u transakcí SMTP HTTP odpovědi – původně textové dokumenty ve formátu HTML – nyní podpora MIME (odpovědi mohou obsahovat soubory i netextových formátů) 3
Protokol HTTP HTTP transakce Klient požaduje zaslání kopie souboru. Server požadavek akceptuje, kopii ve své odpovědi odesílá a klient přijatou kopii následně interpretuje. 4
Protokol HTTP (Hypertext Transfer Protocol) Formát a obsah HTTP zpráv je specifikován v RFC dokumentech Vývoj HTTP (současná verze HTTP/1.1 - RFC 2616) – Princip zpětné kompatibility – Vývoj Přínosy nové verze : – Vytváří trvalá spojení pro více požadavků klienta – Podporuje komprimaci a dekomprimaci dat – Možnost nastavení virtuálních serverů – Podpora bezpečných transakcí – …….. 5
Protokol HTTP (Hypertext Transfer Protocol) 6
HTTP transakci iniciuje klient, předává požadavek serveru 7
Protokol HTTP (Hypertext Transfer Protocol) 8
9 Ukázky HTTP dialogů HTTP request HTTP response
10 HTTP request HTTP response HTTP response body HTTP response headers
11 GET / HTTP/1.1 Host: User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:25.0) Gecko/ Firefox/25.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: cs,en-us;q=0.7,en;q=0.3 Accept-Encoding: gzip, deflate Cookie: personalizace=lastdatum=17%2E3%2E2013&setver=full; __utma= ; bbnaut=4e407415a3a075d3; __atuvc=1%7C12; __gfp_64b=iJDAsLPVoteWp97NP63z8Bbox7OVK3eZLkMT2J0o7yT.j7; speed=237; ibbid=BBID Connection: keep-alive HTTP/ OK Cache-Control: private,max-age=0 Content-Type: text/html; charset=windows-1250 Content-Encoding: gzip Expires: Wed, 01 Jan :00:00 GMT Vary: Accept-Encoding Server: Microsoft-IIS/7.5 X-AspNet-Version: X-Powered-By: iDNES iweb50 Date: Sat, 23 Nov :44:58 GMT Connection: close Content-Length: &e.Q:..m.l?.....|v..t Vm.^...>j.w N r..+n.....^O..m....]y......l.K.1...;L...n....b ;.p.Z6....RW..nYm.W...l......D.t;...../.....jQ]fi.. HTTP request HTTP response HTTP response body HTTP response headers
12
Protokol HTTP (Hypertext Transfer Protocol) Popis zpráv HTTP Verze protokolu – HTTP/1.1 nebo HTTP/1.0 Request: Metoda – požadavek (1) – GET – žádá zaslání celé entity specifikované v URI – HEAD – žádá zaslání záhlaví entity specifikované v URI – POST – odesílá obsah zprávy do entity specifikované v URI Odeslání poštovní zprávy do sdílené schránky Odeslání dat zapsaných do formuláře Připojení dat do databáze …….. 13
Protokol HTTP (Hypertext Transfer Protocol) Metoda – požadavek (2 ) – PUT – vkládá obsah zprávy do entity specifikované v URI (tj. nahrává nová data do serveru) – DELETE – žádá o výmaz entity specifikované v URI – Požadavky na správu transakce OPTION – Žádost o informaci o podmínkách transakce TRACE – Odešle kopii obdrženého požadavku zpět odesílateli, takže klient může zjistit, co na požadavku mění nebo přidávají servery, kterými požadavek prochází. CONNECT – Spojí se s uvedeným objektem přes určený port. Používá se při průchodu skrze proxy pro ustanovení kanálu PATCH – Provede změny ve zdroji (rozdílový dokument) 14
URI – (Uniform Resource Identifier) - identifikátor přístupu k internetovému zdroji (obecný) Formát URI schema - síťový protokol aplikační vrstvy (služba) např.: http, ftp, telnet, mailto, nntp, news, file URL (Uniform Resource Locator) – typ URI – formát pro protokol HTTP: Protokol HTTP (Hypertext Transfer Protocol) 15 :// : / /….. http: // [: ][ [? ] ]
Složky URL Hierarchická složka - cesta k objektu ( protokol pro přístup k objektu – doménové jméno hostitelského systému – port – cesta k objektu na hostitelském systému ) Nehierarchická složka (volitelné položky) – query – uvedené hodnoty jsou předány ke zpracování webovým aplikacím (CGI programům) – fragment - odkaz na identifikátor (návěští), kterým je označena určitá část webového objektu Protokol HTTP (Hypertext Transfer Protocol) 16 hierarchickánehierarchická query string = & = & = & = ….
Protokol HTTP (Hypertext Transfer Protocol) CGI (Common Gateway Interface) Standard pro definice rozhraní mezi Web serverem a externími aplikačními programy CGI programy umožňují dynamickou interakci uživatele s WWW serverem (tvorba dynamických HTML stránek) Různé typy programů, které lze provozovat v daném systému (kde je spuštěný HTTP server): bash, C, Perl, Java, PHP, …. 17
Protokol HTTP (Hypertext Transfer Protocol) Proměnné, které jsou předávány http serveru a mohou být zpracovámy v CGI programech – REQUEST_METHOD určuje způsob předávání informací (GET nebo POST) – QUERY_STRING obsahuje data přenášená metodou GET (query_string) – CONTENT_TYPE MIME typ dat zasílaných metodou POST – CONTENT_LENGTH délka dat zasílaných metodou POST 18
Protokol HTTP (Hypertext Transfer Protocol) – REMOTE_ADDR IP-adresa počítače, z nějž přišel požadavek – REMOTE_HOST doménová adresa počítače, z nějž přišel požadavek – AUTH_TYPE způsob použité autorizace uživatele REMOTE_USER v případě, že byl uživatel autorizován, obsahuje tato proměnná jeho jméno 19
Protokol HTTP (Hypertext Transfer Protocol) URI schema https – https není samostatný protokol, ale HTTP interakce šifrovaná přes spojení SSL (Secure Sockets Layer) nebo TLS (Transport Layer Security) – Pokud není specifikováno v URL, používá https port 443 – Interakce klient – server vyžaduje autentizaci serveru (povinně) a autentizaci klienta (volitelně) 20
Protokol HTTP (Hypertext Transfer Protocol) Response: Stavový kód – tříciferný identifikátor typu odpovědi 100 – 199 – odpověď má charakter informace 200 – požadavek je úspěšně splněn 300 – 399 – informace o přemístění požadované entity 400 – 499 – chyba na straně klienta 500 – 599 –chyba na straně serveru 21
Příklady HTTP odpovědí Pozitivní odpovědi 200 – data odeslána202 - akceptováno 201 – vytvořeno204 – není obsah Informace nemodifikováno Chyba klienta 400 – Bad Request401 – Unauthorized 403 – Forbidden404 – Not found Chyba serveru 500 – Internal server error Not implemented 502- Bad gateway503 – Service unavailable 22 Protokol HTTP (Hypertext Transfer Protocol)
Záhlaví („hlavičky“) – definuje RFC 2616definuje RFC 2616 – Obecné hlavičky – Hlavičky požadavků – Hlavičky odpovědí – Hlavičky obsahů zpráv 23
Protokol HTTP (Hypertext Transfer Protocol) Obecné hlavičky (general) - informace obecného charakteru o zprávě. Příklady: Date: Mon, 07 Apr :42:10 GMT (formát podle RFC822) Datum vytvoření zprávy Pragma: no-cache Umožní zahrnout specifické direktivy Host: "Host" ":" host [ ":" port ] GET /pub/WWW/ HTTP/1.1 Host: 24
Protokol HTTP (Hypertext Transfer Protocol) Hlavičky požadavků (request) Accept : text/plain, text/html, text/x-dvi, image/jpeg Podporované typy informačních objektů Authorization: Basic : Autentifikace uživatele From : uživatele If-Modified-Since: Mon, 07 Apr :42:10 GMT Datum poslední modifikace objektu Referer Informuje server, který URL je původcem odkazu na URL dotazu 25
Protokol HTTP (Hypertext Transfer Protocol) Hlavičky odpovědí (response) Location: V souvislosti s kódy skupiny 3xx udává nové URL přemístěného objektu Server: Apache/1.2.5 mod_czech/2.4.0 PHP/3.0rev-dev Informace o programové podpoře serveru WWW-Authenticate: Basic realm="super-tajne" V souvislosti s kódem výzva k prokázání totožnosti 26
Protokol HTTP (Hypertext Transfer Protocol) Hlavičky těla zpráv (entity) Allow: GET, HEAD, PUT Informuje, jaké metody jsou uplatněny v rámci příslušného URL Content-Base: Základní URL pro relativní specifikaci Content-Encoding: gzip Indikace použitého dodatečného typu kódování Content-Type: text/html : charset=ISO Specifikuje typ zasílaného objektu Expires: Mon, 07 Apr :42:10 GMT Datum vypršení platnosti informace (pro ukládání do cache) Last-Modified: Mon, 07 Apr :42:10 GMT Datum poslední modifikace objektu 27
Protokol HTTP (Hypertext Transfer Protocol) Kontext WWW – Web technologie Hypertexový dokument– odkazy na další zdroje prostřednictvím URL Základní typ zdroje systému WWW – HTML (Hypertext Markup Language) dokument Jazyk HTML – podmnožina specifikace SGML (Standard Generalized Markup Language) Verze HTML 4.0 – poslední verze HTML, dále jako součást specifikace XHTML (Extensible Markup Language) Vývoj Web systému - konsorcium W3C 28
Protokol HTTP (Hypertext Transfer Protocol) Implementace HTTP serveru – WWW server – Apache – IIS (Internet Information Server fy. Microsoft) – ………………………………………. Implementace HTTP klienta – WWW prohlížeč (WWW browser) – Explorer – Netscape browser – Opera – Firefox – Lynx – ………….. 29