Hypertext Transfer Protocol
Z Wikipédie
Aplikačná vrstva | HTTP, HTTPS, FTP, SSH, SMTP, NNTP, IRC, SNMP, SIP, RTP, ... |
Transportná vrstva | TCP, UDP, SCTP, DCCP, ... |
Sieťová vrstva | IPv4, IPv6, ARP, ... |
Linková vrstva | Ethernet, Wi-Fi, Token ring, FDDI, ... |
Fyzická vrstva | RS-232, EIA-422, RS-449, EIA-485, ... |
HTTP (skratka Hypertext transfer protocol) je primárna metóda prepravy informácií na world wide webe. Pôvodný účel bol poskytovať prostriedky pre publikáciu a obdržiavanie 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.
Obsah |
[úprava] Druhy žiadostí HTTP
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.
[úprava] 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:
GET / HTTP/1.1 Host: www.google.com
(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.)
[úprava] 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“.
[úprava] Pozri aj
- Uniform Resource Locator
- HTTP proxy
[úprava] Externé odkazy
- Špecifikácia HTTP/1.1 (Jún 1999) RFC2616
- Errata špecifikácie HTTP/1.1
- Originálny návrh protokolu HTTP z roku 1992 od Tima Berners-Lee
- Zoznam stavových kódov HTTP
- HTTP sekvenčný diagram