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, textové zprávy (požadavek a odpověď) jsou vyměňovány mezi klientem a serverem obdobně jako u transakcí SMTP HTTP transakce (např. klient požaduje zaslání kopie souboru, který následně interpretuje – server požadavek akceptuje, kopii ve své odpovědi odesílá)
Protokol HTTP (Hypertext Transfer Protocol) Formát a obsah textových zpráv je specifikován v RFC dokumentech Vývoj HTTP – současná verze HTTP/1.1 (RFC 2616) – princip zpětné kompatibility Přínosy nové verze pro snížení zátěže sítě: Vytváří trvalá spojení pro více požadavků klienta Podporuje komprimaci a dekomprimaci dat Možnost nastavení virtuálních serverů Podpora intervalového přenosu ……..
Protokol HTTP (Hypertext Transfer Protocol) Schéma komunikace Hypertextový odkaz Hypertextový odkaz WEB server WEB server WEB server 80 80 80 TCP spojení http odpověď WEB klient http požadavek
Protokol HTTP (Hypertext Transfer Protocol) HTTP transakci iniciuje klient, předává požadavek serveru K-------------------------S přímá transakce K--------A--------B--------C----------S tunel proxy K---------A--------B………C……….S
Protokol HTTP (Hypertext Transfer Protocol) Formáty zpráv protokolu HTTP: Dotaz (request): <metoda> <URI> <verze protokolu HTTP>….příkazový řádek <headers> volný řádek <message-body> Odpověď (response): < verze protokolu HTTP > <stavový kód > <vysvětlující text> ……… stavový řádek
Protokol HTTP (Hypertext Transfer Protocol) Metoda – požadavek (1) GET – žádá zaslání celé entity specifikované v URI HEAD – žádá zaslání záhlaví entity specifikované v URI POST –žádá o přijetí obsahu 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 ……..
Protokol HTTP (Hypertext Transfer Protocol) Metoda – požadavek (2) PUT – žádá o vložení obsahu zprávy pod specifikované URI 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 – žádost o trasování komunikačního řetězce CONNECT – (zatím se neimplementuje) – umožňuje přepnutí proxy serveru na „tunel“ do zabezpečeného transakčního kanálu
Protokol HTTP (Hypertext Transfer Protocol) URI – (Uniform Resource Identifier) - identifikátor přístupu k internetovému zdroji (obecný) – formát <schema>://<user>:<password>@<host-name>:<port>/<URL-path>/….. 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: http: // < host > [: < port>][< abs_path> [? < query>] ]
Protokol HTTP (Hypertext Transfer Protocol) Verze protokolu – HTTP/1.1 nebo HTTP/1.0 http: // < host > [: < port>][< abs_path> - hierarchická složka (cesta k objektu) < query> - nehierarchická složka Sekvence < key>= < value>& < key>= < value>& < key>= < value>& < key>= < value>…. CGI (Common Gateway Interface) – standard pro definice rozhraní mezi Web serverem a externími aplikačními programy
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 CONTENT_TYPE MIME typ dat zasílaných metodou POST CONTENT_LENGTH délka dat zasílaných metodou POST
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
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ě)
Protokol HTTP (Hypertext Transfer Protocol) Stavový kód – tříciferný identifikátor typu odpovědi 100 – 199 – odpověď má charakter informace 200 – 299 - 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
Příklady HTTP odpovědí Pozitivní odpovědi 200 – data odeslána 202 - akceptováno 201 – vytvořeno 204 – není obsah Informace 304 - nemodifikováno Chyba klienta 400 – Bad Request 401 – Unauthorized 403 – Forbidden 404 – Not found Chyba serveru 500 – Internal server error 501 - Not implemented 502 - Bad gateway 503 – Service unavailable
Protokol HTTP (Hypertext Transfer Protocol) Záhlaví („hlavičky“) – definuje RFC 2616 Obecné hlavičky Hlavičky požadavků Hlavičky odpovědí Hlavičky obsahů zpráv
Protokol HTTP (Hypertext Transfer Protocol) Obecné hlavičky (general) - informace obecného charakteru o zprávě. Příklady: Date: Mon, 07 Apr 1996 06: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: www.w3.org
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 <uživatel>:<heslo> Autentifikace uživatele From : user@e-mail.address E-mail uživatele If-Modified-Since: Mon, 07 Apr 1996 06:42:10 GMT Datum poslední modifikace objektu Referer http://www.w3.org/hypertext/DataSources/Overview.htm Informuje server, který URL je původcem odkazu na URL dotazu
Protokol HTTP (Hypertext Transfer Protocol) Hlavičky odpovědí (response) Location: http://nekde.jinde.cz/novy.html 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 401 - výzva k prokázání totožnosti
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: http://www.pef.mendelu.cz 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-8859-2 Specifikuje typ zasílaného objektu Expires: Mon, 07 Apr 2003 06:42:10 GMT Datum vypršení platnosti informace (pro ukládání do cache) Last-Modified: Mon, 07 Apr 1996 06:42:10 GMT Datum poslední modifikace objektu
Protokol HTTP (Hypertext Transfer Protocol) Princip hypertexového dokumentu – odkazy na další entity prostřednictvím URL Základní typ entity Web – HTML (Hypertext Markup Language) dokument Jazyk HTML – podmnožina specifikace SGML (Standard Generalized Markup Language) verze HTML 4.0 – poslední verze, dále jako součást XHTML (Extensible Markup Language) Vývoj Web systému - konsorcium W3C
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 Lynx ………………..