Protokol HTTP

Z Kiwiki
Verzia z 23:13, 27. apríl 2010, ktorú vytvoril Juraj (diskusia | príspevky)
Skočit na navigaci Skočit na vyhledávání


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

  1. Uživateľ zadá toto URL do prehliadača(Klient)
  2. Klient si vyhodnotí doménu, cez DNS si zistí aké IP adresy si má žiadať
  3. Cez TCP protokol naviaže spojenie so serverom na zistenej IP adrese. Až teraz začína http komunikácia.
  4. 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:

  1. vrátiť požadovaný dokument (kód 200)
  2. povedať, že požadovaný dokument je niekde inde (kód začína trojkou)
  3. 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