Hypertextový prenosový protokol

z Wikipédie, slobodnej encyklopédie
Prejsť na: navigácia, hľadanie
Balík internetových protokolov
Aplikačná vrstva
HTTP · HTTPS · FTP · SSH · IMAP · SMTP · NNTP · IRC · SNMP · SIP · RTP · NFS a iné
Transportná vrstva
TCP, UDP, SCTP, DCCP a iné
Sieťová vrstva
IPv4, IPv6, ARP a iné
Linková vrstva
Ethernet, Wi-Fi, Token ring, FDDI a iné
Fyzická vrstva
RS-232, EIA-422, RS-449, EIA-485 a iné
z  d  u

Hypertextový prenosový protokol (angl. hypertext transfer protocol), skr. HTTP, je protokol pre prenos html dokumentov medzi servermi a klientmi služby WWW[1]. Pôsobí ako primárna metóda prepravy informácií na world wide webe. Pôvodný účel bol poskytovať prostriedky pre publikáciu a získavanie HTML stránok.

Vývoj HTTP koordinovalo World Wide Web Consortium a pracovné skupiny Internet Engineering Task Force, čím vytvorili sadu dokumentov RFC, predovšetkým RFC 2616[2] definujúci HTTP/1.1, dnes používanú verziu HTTP.

HTTP je protokol definujúci požiadavky a odpovede medzi klientmi a servermi. HTTP klient (označovaný ako user agent), ako webový prehliadač zvyčajne začne požiadavku nadviazaním TCP spojenia na určenom porte vzdialeného stroja (štandardne port 80). HTTP server počúvajúci na danom porte čaká, kým klient pošle reťazec s požiadavkou ako "GET / HTTP/1.1" (ktorý žiada o zaslanie štartovacej stránky webservera) nasledovaný sériou hlavičiek podobných MIME opisujúcich detaily požiadavky a nasledovaných telesom ľubovoľných údajov. Niektoré hlavičky sú nepovinné, zatiaľ čo verzia HTTP/1.1 niektoré vyžaduje (ako názov stroja). Po prijatí požiadavky server pošle reťazec s odpoveďou ako "200 OK" nasledovanou hlavičkami spolu so samotnou správou, ktorej telo tvorí obsah požadovaného súboru, chybové hlásenie alebo iná informácia.

Obsah

Druhy žiadostí HTTP [upraviť]

Zvyčajne sa nazývajú metódy.

  • 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é URI 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.

HTTP sa líši od iných na TCP založených protokolov ako napr. FTP v tom, že spojenia sa zvyčajne ukončia potom, ako sa dokončí vykonávanie požiadavky alebo série požiadaviek. Tento dizajn ho robí ideálnym protokolom pre web, kde stránky často odkazujú na ďalšie stránky na iných serveroch. Príležitostne to spôsobuje problémy webovým návrhárom, keďže chýbajúce perzistentné spojenie si vynucuje alternatívne prístupy udržiavania stavovej informácie o používateľovi. Zvyčajne na to používajú tzv. cookies.

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.

Lokáciu dokumentov na webserveri udáva Uniform Resource Locator (URL). Táto adresa má syntax vyvinutú pre vytváranie odkazov na webstránky.

Príklad [upraviť]

Dolu je príklad konverzácie medzi HTTP klientom a HTTP serverom bežiacom na www.google.com, porte 80.

Klientská požiadavka:

GET / HTTP/1.1
Host: www.google.com
User-Agent: Opera/9.80 (Windows NT 5.1; U; sk) Presto/2.5.29 Version/10.60
Accept-Charset: UTF-8,*

(nasledovaná znakom nového riadku, v tvare znaku carriage return nasledovaného znakom line feed.)

Adresa stroja je určená na rozlíšenie rôznych DNS názvov pre jedinú IP adresu. Kým v HTTP/1.0 bola táto hlavička nepovinná, HTTP/1.1 ju vyžaduje.

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

(nasledovaná prázdnym riadkom a zdrojovým textom HTML tvoriacim webstránku Google.)

Perzistentnosť spojenia [upraviť]

Pri HTTP/1.0 klient pošle požiadavku serveru, server pošle odpoveď späť klientovi a následne sa spojenie ukončí. HTTP/1.1 však podporuje perzistentné spojenia. To umožňuje klientovi poslať požiadavku a dostať odpoveď a následne tým istým spojením posielať ďalšie požiadavky a prijímať ďalšie odpovede. Tým sa znižuje relatívna réžia TCP. Je tiež možné poslať viacero (zvyčajne dve) požiadavky pred obdržaním odpovede. Táto metóda sa nazýva „pipelining“.

Referencie [upraviť]

  1. Česká terminologická databáze knihovnictví a informační vědy (TDKIV) [1]
  2. Hypertext Transfer Protocol -- HTTP/1.1 [2]

Pozri aj [upraviť]

Externé odkazy [upraviť]