Hypertextový prenosový protokol

Hypertextový prenosový protokol (angl. "hypertext transfer protocol"), skr. HTTP, je protokol na prenos html dokumentov medzi servermi a klientmi služby WWW. Pôsobí ako primárna metóda prepravy informácií na world wide webe. Pôvodný účel bol poskytovať prostriedky na 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 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.
Charakteristika a vývoj.
Protokol všeobecne definuje pravidlá medzi dvoma partnermi. Definuje tvar prenášaných informácií, možnosti a náležitosti, požiadavky a odpovede. Hypertext Transfer Protokol (HTTP) je protokol aplikačnej vrstvy. Používa sa pre distribuované hypermediálne informačné systémy. V rámci služby WWW sa používa od roku 1991. Slúži na výmenu HTML dokumentov medzi klientom a serverom. WWW server sa často nazýva aj HTTP serverom.
Existuje viac verzií protokolu:
Protokol HTTP je postavený na princípe otázka-odpoveď. Táto komunikácia prebieha medzi serverom a klientom. Každá aktivita musí byť vyvolaná klientom, pričom komunikácia so serverom prebieha cez TCP (používa sa port 80, ktorý ale nie je podmienkou).
Úplná otázka-odpoveď musí mať špecifikovanú metódu, URI (absolútna alebo relativná cesta k súboru alebo úplné URL dokumentu). Niekedy nasleduje po hlavičkách aj telo otázky oddelené jedným prázdnym riadkom.
Server podporujúci protokol 1.0 vráti odpoveď a spojenie ihneď uzavrie. Protokol 1.1 vytvára tzv. perzistentné spojenie a preto servery podporujúce verziu 1.1 spojenie hneď neuzavrú, ale chvíľu čakajú na ďalšie príkazy. Klient tak môže pokračovať v otázkach na ostatné prvky HTML stánky a spojenie ukončiť sám.
Odpoveď obsahuje verziu protokolu, kód odpovede a textovú hlášku odpovede. Ďalej obsahuje hlavičky, prázdny riadok (oddeľovač) a väčšinou aj telo odpovede.
Druhy žiadostí HTTP.
Zvyčajne sa nazývajú metódy.
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.
Dolu je príklad konverzácie medzi HTTP klientom a HTTP serverom bežiacom na www.google.com, porte 80.
Klientská požiadavka:
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:
Perzistentnosť spojenia.
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“.