HTTP

A Wikipédiából, a szabad lexikonból.

TCP/IP protokollhierarchia
Protokollok
Alkalmazási FTP, HTTP, IMAP, IRC, POP3, SIP, SMTP, SNMP, SSH, Telnet, Bittorrent, ...
Szállítási SCTP, TCP, RTP, UDP, IL, RUDP, ...
Hálózati IPv4, IPv6, ...
Adatkapcsolati Ethernet, Wi-Fi, Token ring, FDDI, PPP, ...
Fizikai RS-232, 100Base-TX, 1000Base-TX, 10Base2, 10Base-T, ...

A HTTP ( HyperText Transfer Protocol) az elsődleges mód információ átvitelére a World Wide Web hálózatán. Az eredeti szándék a HTML lapok publikálása és fogadása volt.

A HTTP fejlesztését a World Wide Web Consortium és az Internet Engineering Task Force munkacsoportjai hangolták össze. Együttműködésük eredeménye az RFC (Request For Comment) dokumentumok sora, melyek közül az RFC 2616 a ma leggyakrabban használatos HTTP/1.1 változatot definiálja.

A HTTP kérés/válasz jellegű protokoll ügyfél (kliens) és kiszolgáló (szerver) között. Egy HTTP-ügyfél, mint például egy webböngésző, a távoli hoszt egy megadott (alapértelmezetten 80-as) portjára való TCP/IP csatlakozással kezdeményezi a lekérdezést. A portot figyelő HTTP-kiszolgáló az ügyféltől egy kérés-sztringet vár (pl. GET / HTTP/1.1, ami az alapértelmezett dokumentumot kéri el), amelyet esetleg követ egy emailszerű MIME üzenet, amely számos tájékoztató fejléc-elemet tartalmazhat, amelyek leírják a kérés különböző jellemzőt, és mindezt követheti tetszőleges adat-rész. A kérést (és az esetleges kiegészítő üzenetet) megkapva, a kiszolgáló egy válasz-sztringet küld vissza, mint pl. 200 OK, amelyet a saját üzenetblokkja követhet, úgymint az igényelt állomány, egy hibaüzenet vagy más információ.

[szerkesztés] HTTP kérés

  • GET - A leggyakrabban használt, statikus erőforráskérés az URL definiálásával.
  • POST - Hasonló a GET-hez, kivéve az üzenet testet. Jellemzően kulcs-érték párokat tartalmaz egy HTML formelküldése után, amit a kérésben küldenek el.
  • PUT - Fájlok feltöltésére szolgál egy megadott URL-re a szerveren.
  • DELETE - Ritkán implementált.
  • HEAD - Azonos a GET-tel, kivéve, hogy a lap tartalmát nem adja vissza, csak a fej részt. Hasznos meta-információk lekérdezésére.
  • TRACE - Visszküldi a fogadott kérést, így a kérő láthatja, hogy milyen köztes szerverek nyúlnak hozzá a kéréshez.
  • OPTIONS - Visszaadja a szerver által támogatott módokat. Ezzel lehet ellenőrizni egy webszerver képességeit.
  • CONNECT - Ritkán implementált. Proxy-val használható, ami átváltja a folyamot SSL csatornává.

A HTTP a többi TCP alapú protokolltól abban tér el, hogy egy-egy kérés (vagy azok összefüggő sorozatának) megválaszolása után a kapcsolat felbomlik. Ez a felépítés ideálissá teszi a HTTP-t a World Wide Web számára, ahol a hivatkozások rendszerint más kiszolgálókra mutatnak. Ugyanakkor ez a működés problémát jelent a webfejlesztőknek, akik perzisztens kapcsolat híján a felhasználói állapotkezelés más módozatait kénytelenek kidolgozni. Ezen módszerek közül sok az ún. „sütit” (cookie) használja erre a célra.

A HTTP-nek létezik egy biztonságos változata, a HTTPS, amely bármilyen titkosítást képes kezelni, amit a kapcsolat mindkét oldala megért.

A HTTP-beli helyeket az ún. egységes erőforrásmutatók (Uniform Resource Locator - URL) segítségével adjuk meg. E címek szintakszisa a HTML-hivatkozások számára készült.

[szerkesztés] Példa

Egy HTTP szerver és egy HTTP kliens közötti kommunikáció olvasható alul, a szerver a www.google.com címen, a 80-as porton fut.

Kliens kérés:

GET / HTTP/1.1
Host: www.google.com

(új sor követi, kocsi vissza (CR,#10) és soremelés (LF,#13) formában) A "Host" különbséget tesz az egy IP címen osztozó, de különböző DNS nevek között. A HTTP/1.0-ban opcionális, a HTTP/1.1-ben kötelező.

Szerver válasz:

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

(üres sor követi, majd HTML szöveg következik a Google honlapjával)