Protokol HTTP: Rozdiel medzi revíziami
Riadok 33: | Riadok 33: | ||
===Príklad HTTP komunikácie=== | ===Príklad HTTP komunikácie=== | ||
− | Uživateľ si chce pozrieť napr. túto stránku: http:// | + | Uživateľ si chce pozrieť napr. túto stránku: http://kiwiki.fmtnuni.sk |
#Uživateľ zadá toto URL do prehliadača(Klient) | #Uživateľ zadá toto URL do prehliadača(Klient) | ||
#Klient si vyhodnotí doménu, cez DNS si zistí aké IP adresy si má žiadať | #Klient si vyhodnotí doménu, cez DNS si zistí aké IP adresy si má žiadať | ||
Riadok 39: | Riadok 39: | ||
#Prehliadač potom pošle na server HTTP volanie: | #Prehliadač potom pošle na server HTTP volanie: | ||
#*Get http-protokol.html HTTP/1.1 | #*Get http-protokol.html HTTP/1.1 | ||
− | #*Host: | + | #*Host: kiwiki.fmtnuni.sk |
#*Prázdny riadok | #*Prázdny riadok | ||
Riadok 47: | Riadok 47: | ||
*GET Zďaleka najbežnejší typ žiadosti. Žiada o zdroj uvedením jeho URL | *GET Zďaleka najbežnejší typ žiadosti. Žiada o zdroj uvedením jeho URL | ||
− | |||
*POST Podobne ako GET, okrem toho, že je pridané telo správy zvyčajne obsahujúce dvojice kľúč-hodnota z HTML formulára. | *POST Podobne ako GET, okrem toho, že je pridané telo správy zvyčajne obsahujúce dvojice kľúč-hodnota z HTML formulára. | ||
− | |||
*PUT Používa sa na Upload súborov na špecifikované URL na webserveri. | *PUT Používa sa na Upload súborov na špecifikované URL na webserveri. | ||
− | |||
*DELETE Zriedka implementované. Zmazanie zdroja. | *DELETE Zriedka implementované. Zmazanie zdroja. | ||
− | |||
*HEAD Podobné GET, okrem toho, že sa nepožaduje telo správy, iba hlavičky. Používa sa na získavanie metainformácií o dokumente. | *HEAD Podobné GET, okrem toho, že sa nepožaduje telo správy, iba hlavičky. Používa sa na získavanie metainformácií o dokumente. | ||
− | |||
*TRACE Odošle kópiu obdržanej požiadavky späť odosielateľovi, takže klient môže zistiť, čo na požiadavke menia alebo pridávajú | *TRACE Odošle kópiu obdržanej požiadavky späť odosielateľovi, takže klient môže zistiť, čo na požiadavke menia alebo pridávajú | ||
servery, ktorými táto prechádza. | servery, ktorými táto prechádza. | ||
− | |||
*OPTIONS Vracia HTTP metódy, ktoré daný webserver podporuje. Je možné použiť na otestovanie funkcionality servera. | *OPTIONS Vracia HTTP metódy, ktoré daný webserver podporuje. Je možné použiť na otestovanie funkcionality servera. | ||
− | |||
*CONNECT Zriedka implementované, na použitie s proxy serverom, ktorý sa môže zmeniť na SSL tunel. | *CONNECT Zriedka implementované, na použitie s proxy serverom, ktorý sa môže zmeniť na SSL tunel. | ||
Riadok 95: | Riadok 88: | ||
'''Klientska požiadavka:''' | '''Klientska požiadavka:''' | ||
− | + | GET / HTTP/1.1 | |
− | + | Host: www.google.com | |
− | + | Prazdny riadok | |
'''Odpoveď servera:''' | '''Odpoveď servera:''' | ||
− | + | HTTP/1.1 200 OK Content-Length: 3059 | |
− | + | Server: GWS/2.0 | |
− | + | Date: Sat, 11 Jan 2003 02:44:04 GMT | |
− | + | Content-Type: text/html | |
− | + | Cache-control: private | |
− | + | Set-Cookie: PREF=ID=73d4aef52e57bae9:TM=1042253044:LM=1042253044:S=SMCc_HRPCQiqyX9j; | |
− | + | expires=Sun, 17- Jan-2038 19:14:07 GMT; path=/; domain=.google.com | |
+ | Connection: keep-alive | ||
===Kde môžeme HTTP vidieť=== | ===Kde môžeme HTTP vidieť=== |
Verzia zo dňa a času 23:13, 27. apríl 2010
Obsah
HTTP
Hypertext transfer protocol. Je to primárna metóda prepravovania informácií na world wide webe.
Ako funguje HTTP
Môžeme si to predstaviť ako rozhovor medzi klientom a serverom. Klient niečo chce a server mu to dá.
Klient – najčastejšie je to internetový prehliadač(ale môže to byť aj iný program)
HTTP Server – program bežiaci v serverovne na nejakom PC.( Najpoužívanejším http serverom je program Apache).
HTTP protokol je jazyk ktorým komunikujú 2 programy.
Klient chce nejakú stránku – pripojí sa na server a požiada ho o URL stránky.
Verzie HTTP protokolov
HTTP 0.9 - prvá verzia používaná od roku 1990, dnes sa už nepoužívadotaz: iba metóda GET, bez dodatočných (meta) informácií.
- odpoveď: požadovaný dokument, takisto bez dodatočných informácií
- po prenesení odpovede sa spojenie ukončí
HTTP 1.0 - definovaný v RCF 1945 z roku 1996 - mnoho rozšírení od predchádzajúcej verzie; spätne kompatibilný.
- Dotaz: pridané metódy POST a HEAD voliteľné ďalšie hlavičky v upravenom formáte MIME (napr. k dotazu: Date, Authorization, From, If-Modified-Since, Referer, User-Agent; k telu dotazu: Content-Encoding, Content-Length) taktiež bolo pridané voliteľné telo dotazu (entity body).
- odpoveď: pridaná hlavička informácia o stave (status) odpovedi.
Voliteľné ďalšie hlavičky v upravenom formáte MIME [5] (napr. k odpovedi: Date, Location, WWW-Authenticate; k telu odpovedi: Content-Encoding, Content-Length). Voliteľné telo odpovedi (entity body).
HTTP 1.1 - definovaný v RFC 2616 z roku 1999, dnes najčastejšie používaný. Dopĺňa možnosti HTTP/1.0 (hierarchické proxy, kešovanie, trvalé spojenia, virtuálne servery), spätne kompatibilný.
- dotaz: pridané metódy OPTIONS, PUT, DELETE, TRACE, CONNECT (ktoré sú zriedka používané).
Takmer dvojnásobný počet hlavičiek oproti HTTP/1.0
Príklad HTTP komunikácie
Uživateľ si chce pozrieť napr. túto stránku: http://kiwiki.fmtnuni.sk
- Uživateľ zadá toto URL do prehliadača(Klient)
- Klient si vyhodnotí doménu, cez DNS si zistí aké IP adresy si má žiadať
- Cez TCP protokol naviaže spojenie so serverom na zistenej IP adrese. Až teraz začína http komunikácia.
- Prehliadač potom pošle na server HTTP volanie:
- Get http-protokol.html HTTP/1.1
- Host: kiwiki.fmtnuni.sk
- Prázdny riadok
GET je najčastejšia http metóda, kt. znamená „Daj mi toto“.... V tomto prípade chce dostať súbor, kt. sa na serveri vyskytuje v umiestnení http-protokol.html. A Chce to dostať v potokole vo verzii 1.1.
Druhy žiadostí HTTP
- GET Zďaleka najbežnejší typ žiadosti. Žiada o zdroj uvedením jeho URL
- POST Podobne ako GET, okrem toho, že je pridané telo správy zvyčajne obsahujúce dvojice kľúč-hodnota z HTML formulára.
- PUT Používa sa na Upload súborov na špecifikované URL na webserveri.
- DELETE Zriedka implementované. Zmazanie zdroja.
- HEAD Podobné GET, okrem toho, že sa nepožaduje telo správy, iba hlavičky. Používa sa na získavanie metainformácií o dokumente.
- TRACE Odošle kópiu obdržanej požiadavky späť odosielateľovi, takže klient môže zistiť, čo na požiadavke menia alebo pridávajú
servery, ktorými táto prechádza.
- OPTIONS Vracia HTTP metódy, ktoré daný webserver podporuje. Je možné použiť na otestovanie funkcionality servera.
- CONNECT Zriedka implementované, na použitie s proxy serverom, ktorý sa môže zmeniť na SSL tunel.
Typy odpovedí serveru
Keď server dostane GET požiadavku, môže odpovedať v zásade tromi spôsobmi:
- vrátiť požadovaný dokument (kód 200)
- povedať, že požadovaný dokument je niekde inde (kód začína trojkou)
- oznámiť problém (kód začína štvorkou nebo päťkou)
Každý presný typ odpovede je pre jednoduchosť číslovaný trojmiestnym kódom.
- Je to inde -- 301 moved permanently, 302 moved temporarily
Stavové kódy začínajúce trojkou znamenajú, že dokument je inde, alebo že nastala nejaká podobná chyba. Na presmerovanie sa používajú dva kódy, 301 a 302. Kód 301 znamená trvalé presunutie (moved permanently), kód 302 znamená dočasné presunutie (moved temporarily nebo taktiež found)
- Nezmenené -- 304 not modified
Pri validácii kešovaných stránok posiela prehliadač požiadavku s http hlavičkou if-modified-since, ktorá znamená, že dokument chcem, "pokým sa zmenil" od určitej doby. Server takúto otázku vyhodnotí, a pokým sa dokument nezmenil, povie kódom 304, že sa nezmenil, a skončí. Ak sa dokument zmenil, posiela normálna odpoveď 200 OK a pripojí zmenený dokument.
- Nenájdené -- 404 not found
Stavové kódy začínajúce štvorkou znamenajú, že požiadavka nie je v poriadku.Najpopulárnejšia a možno najčastejšia chyba je situácia, keď klient žiada o niečo, čo na serveri nie je. Potom server odpovie stavovým kódom 404 nenájdené.
- Nemáte oprávnenie -- 403 forbidden
S touto odpoveďou sa môžete stretnúť, keď sa snažíte dostať niekam, kam nemáte prístup. Asi najčastejšie sa objavuje u požiadavke na výpis adresáre, ktorý nemá dovolené sa vypisovať.
- Chyba serveru -- 500 internal server error
Požiadavky začínajúce päťkou signalizujú problém na serveri. Asi najčastejší odpoveď je 500 Internal server error, teda "vnútorná chyba serveru" .
Príklad hlavičky
Klientska požiadavka:
GET / HTTP/1.1 Host: www.google.com Prazdny riadok
Odpoveď servera:
HTTP/1.1 200 OK Content-Length: 3059 Server: GWS/2.0 Date: Sat, 11 Jan 2003 02:44:04 GMT Content-Type: text/html Cache-control: private Set-Cookie: PREF=ID=73d4aef52e57bae9:TM=1042253044:LM=1042253044:S=SMCc_HRPCQiqyX9j; expires=Sun, 17- Jan-2038 19:14:07 GMT; path=/; domain=.google.com Connection: keep-alive
Kde môžeme HTTP vidieť
Ak by sme chceli http hlavičky sledovať máme 3 možnosti:
- Pomocou online snifferu
- Rozšírením prehliadača
- Vlastným programom
Online sniffer
Online sniffer je stránka na adrese napríklad http://web-sniffer.net. Na stránke zadáte URL stránky ktorú si chcete pozrieť. Následne sa vám hlavičky na stránke vypíšu. Rozšírenie prehliadača: Môžeme napríklad použiť rozšírenie pre firefox LIVEHTTPHEADERS.
HTTPS
je zabezpečená verzia HTTP. Na ochranu dát používa SSL/TLS. Štandardný port služby je TCP port 443. HTTPS je vhodné aj v prípadoch, kedy je autentifikovaný len jeden koniec spojenia -- server. To je typický prípad pri HTTP transakciách cez Internet.
Transport Layer Security (TLS)
a jeho predchodca Secure Sockets Layer (SSL) sú protokoly, ktoré slúžia na šifrovanie dát. Protokoly slúžia na bezpečnú komunikáciu cez internet, hlavne na prehliadanie webu, odosielanie e-mailov, výmenu správ (tzv. instant messaging), alebo iné prenosy dát. Medzi TLS a SSL sú drobné rozdiely, ale v podstate protokol ostal ten istý. TLS poskytuje koncobodovú autentifikáciu a súkromie v komunikácií cez internet používaním kryptografie. Typický len server je autorizovaný (to znamená že jeho identita je zaručená) zatiaľ čo klient ostáva neautorizovaný. To znamená, že koncový užívateľ, či už jednotlivec alebo aplikácia, si môže byť istý s kým komunikuje.
Certifikáty
Najslabším miestom HTTPS protokolu je závislosť vysokej bezpečnosti na digitálne podpísaných certifikátoch . Bez podpísaného certifikátu je tento protokol zraniteľný útokom „Man in the middle“. V praxi sú však často používané nepodpísané certifikáty, čím sa stráca bezpečnosť, ktorú HTTPS ponúka.
Použitá literatúra
http://www.jakpsatweb.cz/server/http-protokol.html
http://www.sk.wikipedia.org/wiki/HTTPS
http://www.fi.muni.cz/~kas/p090/referaty/2005-jaro/st/xbabinc-www,http_servery.html