HTTP
| Aplikazio geruza | DNS, FTP, HTTP, HTTPS, IMAP, IRC, NFS, NNTP, NTP, POP3, SMB/CIFS, SMTP, SNMP, SSH, Telnet, SIP, gehiago |
| Aurkezpen geruza | ASN.1, MIME, SSL/TLS, XML, gehiago |
| Saio geruza | NetBIOS, gehiago |
| Garraio geruza | SCTP, SPX, TCP, UDP, gehiago |
| Sare geruza | AppleTalk, IP, IPX, NetBEUI, X.25, gehiago |
| Lotura geruza | ATM, Ethernet, Frame Relay, HDLC, PPP, Token Ring, Wi-Fi, STP, gehiago |
| Geruza fisikoa | Kable ardazkide, Zuntz optiko, Pare kordatu, Mikrouhin-sarea, Irrati bidezko sarea, RS-232, gehiago |
| *OSI ereduaren arabera | |
HTTP edo HyperText Transfer Protocol (Hipertestuaren transferentziarako protokoloa) World Wide Webean datuak elkartrukatzeko erabiltzen den protokoloa da. Hasierako helburua HTML orrialdeak argitaratu eta jasotzeko bidea ahalbidetzea zen.
HTTP Tim Berners-Lee hasi zen garatzen 1989an, CERNen, eta dokumentu sinple batean laburbildu zuen, zeinetan bezero baten eta zerbitzari baten portaera deskribatzen zuen, 0,9 izeneko lehen HTTP bertsioa erabiliz [1]. Bertsio hori geroago garatu zen, azkenean 1.0 publiko bihurtuz.[2]
Urte batzuk geroago HTTP (RFC) Request For Comments egiten hasi zen, Internet Engineering Task Force-k (IETF) eta World Wide Web Consortium-ak (W3C) koordinatutako ahaleginean, ondoren lana IETFra eramanez.
HTTP/1 osorik amaitu eta dokumentatu zen (1.0 bertsio gisa) 1996an.[3]1997an eboluzionatu egin zuen (1.1 bertsio gisa), eta gero haren zehaztapenak 1999, 2014 eta 2022an eguneratu ziren.[4]
HTTPS izeneko aldaera segurua webguneen %85ek baino gehiagok erabiltzen dute.[5] HTTP/2, 2015. urtean argitaratua, HTTPren semantikaren adierazpen eraginkorragoa eskaintzen du igorpenean. 2023ko apirilera arte, webguneen %39k erabiltzen dute,[6] eta ia web nabigatzaile guztiek (erabiltzaileen %97k baino gehiagok) babesten dute.[7] Garraio Geruzako Segurtasunari (TLS) buruzko web-zerbitzari nagusiek ere onartzen dute, Aplikazioa Geruza-protokoloaren negoziazio-luzapen bat erabiliz (ALPN)[8], non TLS 1.2 edo handiagoa behar den.[9]
HTTP/3, HTTP/2ren ondorengoa, 2022an argitaratu zen.[10] Gaur egun, webguneen %26 baino gehiagotan erabiltzen da,[11] eta bateragarria da web nabigatzaile gehienekin, hau da, bateragarria da (partzialki behintzat) web nabigatzaileen %94rekin.[12] HTTP/3k TCPren ordez QUIC erabiltzen du azpiko garraio-protokolorako. HTTP/2k bezala, ez ditu zaharkituta uzten protokoloaren aurreko bertsio nagusiak. HTTP/3rako euskarria Cloudflare-ri eta Google Chromeri gehitu zitzaien lehenik,[13][14] eta Firefoxen ere gaituta dago.[15] HTTP/3k latentzia baxuagoa du mundu errealeko webguneetarako, zerbitzarian gaituta badago, HTTP/2rekin baino azkarrago kargatzen du, baita HTTP/1.1 baino azkarrago ere, kasu batzuetan HTTP/1.1 baino 3 aldiz azkarragoa (eskuarki soilik gaitzen dena).[16]
Historia
[aldatu | aldatu iturburu kodea]Hipertestu terminoa Ted Nelsonek sortu zuen 1965ean Xanadu Proiektuan, eta, aldi berean, Vannevar Bushek 1930eko hamarkadan informazioa kudeatzeko eta berreskuratzeko "memex" sistemari buruz emandako ikuspegian inspiratu zen, "As We May Think" 1945eko saiakeran deskribatutako mikrofilmetan oinarrituta. Tim Berners-Leeri eta CERNeko bere taldeari HTTP originala asmatzea egozten zaie, HTMLrekin eta web-zerbitzari baterako eta web nabigatzaile izeneko erabiltzaile-interfaze bezero baterako lotutako teknologiarekin batera. Berners-Leek HTTP diseinatu zuen bere beste ideia hartzen laguntzeko: "WorldWideWeb" proiektua, lehen aldiz 1989an proposatua, orain World Wide Web gisa ezagutzen dena.
Lehen web-zerbitzaria 1990ean jarri zen martxan.[17][18] Erabilitako protokoloak metodo bakarra zuen, GET izenekoa, zerbitzari bati orri bat eskatuko ziona.[19] Zerbitzariaren erantzuna beti HTML orrialde bat zen.[20]
HTTP mugarrien bertsioen laburpena
[aldatu | aldatu iturburu kodea]HTTPk protokoloaren bertsio ugari izan ditu, eta horietako asko aurrekoekin bateragarriak dira. RFC 2145ak HTTP bertsio zenbakien erabilera deskribatzen du. Bezeroak eskaeraren hasieran zerbitzariari esaten dio zer bertsio erabiltzen duen, eta zerbitzariak bertsio bera edo aurrekoa erabiltzen du bere erantzunean.

| Bertsioa | Sartutako urtea | Uneko egoera |
|---|---|---|
| HTTP/0.9 | 1991 | Zaharkitua |
| HTTP/1.0 | 1996 | Zaharkitua |
| HTTP/1.1 | 1997 | Estandar |
| HTTP/2 | 2015 | Estandar |
| HTTP/3 | 2018 | Estandar |
- HTTP/0.9 (1991ean argitaratua)
- 1991n, HTTPren lehen bertsio ofizial dokumentatua dokumentu sinple gisa idatzi zen, 700 hitz baino gutxiagokoa, eta bertsio horri HTTP/0.9 izena eman zitzaion, GET metodoa bakarrik onartzen zuena, eta horrek bakarrik zerbitzariaren HTML dokumentuak berreskuratzeko aukera ematen zien bezeroei, baina ez zuen onartzen beste fitxategi-formaturik, ezta informazioa kargatzeko ere. Bertsioak ez zuenez POST onartzen, bezeroak ezin zion informazioa bidali zerbitzariari. [20]
- HTTP/1.0 zirriborroa
- 1992az geroztik, dokumentu berri bat idatzi zen oinarrizko protokoloaren hurrengo bertsio osorako bilakaera zehazteko. Bai 0,9 bertsioko eskaera sinplearen metodoa, bai GET eskaera osoa, bezeroaren HTTP bertsioa barne, onartzen zituen. Hau izan zen HTTP/1.0 azken lanaren zirriborro ez-ofizial guztien lehena.[21]
- W3C HTTP lantaldea
- HTTP protokoloaren ezaugarri berriak behar zirela eta RFC ofizial gisa erabat dokumentatu behar zirela erabaki ondoren, 1995. urtearen hasieran HTTP Working Group (HTTP WG, Dave Raggett buru zela) eratu zen, protokoloa estandarizatu eta zabaltzeko, eragiketa zabalagoekin, negoziazio zabalagoarekin, meta-informazio aberatsagoarekin, metodo eta goiburu gehigarrien eremuak gehitzean eraginkorragoa bihurtu zen segurtasun-protokoloarekin lotuta.[22][23]
- HTTP WGk protokoloaren bertsio berriak berrikusi eta argitaratzeko asmoa zuen, hala nola HTTP/1.0 eta HTTP/1.1, 1995ean, baina, berrikuspen ugarien ondorioz, denbora-lerro horrek urtebete baino askoz gehiago iraun zuen.[24]
- HTTP WGk, halaber, HTTPren bertsio bat zehaztea pentsatu zuen, etorkizun urrunean HTTP-NG (HTTP Next Generation) izenekoa, eta bertsio horrek, besteak beste, aurreko bertsioetako gainerako arazo guztiak konponduko zituen, hala nola, errendimendua, latentzia baxuko erantzunak..., baina lan hau urte batzuk geroago hasi zen eta ez zen inoiz amaitu.
- HTTP/1.0 (1996an argitaratua)
- 1996ko maiatzean, RFC 1945 argitaratu zen, aurreko 4 urteetan HTTP/1.0 aurrestandar zirriborro gisa erabili zenaren HTTP/1.0 azken berrikuspen gisa, web-nabigatzaile eta web-zerbitzari askok erabiltzen zutena.
- 1996. urtearen hasieran, garatzaileak HTTP/1.0 protokoloaren luzapen ez-ofizialak (hau da, "keep-alive" konexioak, etab.) sartzen hasi ziren beren produktuetan, HTTP/1.1 espezifikazioen zirriborroak erabiliz.
- GET, HEAD eta POST eskaera-metodoak ahalbidetzen ditu.
- HTTP/1.1 (1997an argitaratua)
- 1996ko hasieratik, web-nabigatzaile eta web-zerbitzarien garatzaile nagusiak ere HTTP/1.1 zehaztapen aurreestandarren zirriborroetan zehaztutako ezaugarri berriak ezartzen hasi ziren. Azken erabiltzaileek azkar hartu zituzten nabigatzaile eta zerbitzarien bertsio berriak. 1996ko martxoan, web-ostatuko enpresa batek jakinarazi zuen Interneten erabilitako nabigatzaileen %40ak baino gehiagok HTTP/1.1 "Host" goiburu berria erabiltzen zutela ostatu birtuala gaitzeko. Web-ostatuko enpresa horrek berak jakinarazi zuen 1996ko ekainean, bere zerbitzarietan sartzen ziren nabigatzaile guztien %65ek HTTP/1.1 estandarra betetzen zutela.
- 1997ko urtarrilean, RFC 2068 ofizialki argitaratu zen http/1.1 espezifikazio gisa.
- 1999ko ekainean, RFC 2616 argitaratu zen, aurreko HTTP/1.1 zehaztapenetan (zaharkituak) oinarritutako hobekuntza eta eguneratze guztiak sartzeko.
- W3C HTTP-NG lantaldea
- Aurreko HTTP Lantaldearen 1995eko plan zaharrari helduz, 1997an lantalde bat osatu zen, HTTP protokolo berri bat garatzeko, HTTP-NG (HTTP Next Genration) izenekoa. Proposamen/zirriborro batzuk egin ziren protokolo berriak HTTP transakzioen multiplexazioa erabil zezan TCP/IP konexio bakar baten barruan, baina 1999an taldeak bere jarduera utzi zuen arazo teknikoak IETFri pasatuz.[25]
- IETF HTTP lantaldea berriro hasi
- 2007an, IETFren HTTP Lantaldea (HTTP WG bis edo HTTPbis) berriz hasi zen, lehenik eta behin, aurreko HTTP/1.1 zehaztapenak berrikusteko eta argitzeko, eta, bigarrenik, etorkizuneko HTTP/2 zehaztapenak idazteko eta hobetzeko (httpbis deituak).[26][27]
- SPDY: Googlek garatutako HTTP protokolo ez-ofiziala
- 2009an, Googlek, enpresa pribatu batek, SPDY izeneko HTTP protokolo bitar berri bat garatu eta probatu zuela iragarri zuen. Helburu inplizitua web trafikoa izugarri bizkortzea zen (bereziki etorkizuneko web nabigatzaileen eta haien zerbitzarien artean).
- SPDY, egia esan, HTTP/1.1 baino askoz azkarragoa izan zen proba askotan, eta, beraz, Chromium azkar hartu zuen eta, ondoren, beste web nabigatzaile garrantzitsu batzuk.[28]
- TCP/IP konexio bakar baten bidez HTTP fluxuen multiplexazioari buruzko ideietako batzuk hainbat iturritatik hartu ziren, W3C-ko HTTP-NG Lantaldearen lana barne.
- HTTP/2 (2015ean argitaratua)
- 2012ko urtarrila-martxoa bitartean, HTTP lantaldeak (HTTPbis) HTTP/2 protokolo berri batean zentratzen hasteko beharra iragarri zuen (HTTP/1.1 espezifikazioen berrikuspena amaitzen zen bitartean), agian SPDYrentzat egindako lana eta ideiak kontuan hartuta.[29][30]
- Hilabete batzuk HTTP bertsio berri bat garatzeko zer egin eztabaidatu ondoren, SPDYtik eratortzea erabaki zen.[31]
- 2015eko maiatzean, HTTP/2 RFC 7540 bezala argitaratu zen, eta berehala onartu zuten SPDY jasaten zuten web-nabigatzaile guztiek eta, astiroago, web-zerbitzariek.
- HTTP/1.1 eguneraketak (2014)
- 2014ko ekainean, HTTP lantaldeak sei zatiko HTTP/1.1 zehaztapen eguneratu bat argitaratu zuen, RFC 2616 zaharkituta utzi zuena:
- HTTP/0.9 deprekazioa
- RFC 7230ren A gehigarrian, HTTP/0.9 zaharkituta geratu zen HTTP/1.1 bertsioa (eta goragokoa) onartzen duten zerbitzarientzat:
- HTTP/0.9k ez zuenez eskabide baten goiburu-eremurik onartzen, ez dago inolako mekanismorik izenetan oinarritutako ostalari birtualak onartzeko (baliabideak hautatzea ostalariko goiburu-eremua ikuskatuz). Izenetan oinarritutako ostalari birtualak inplementatzen dituen edozein zerbitzarik HTTP/0.9 euskarria desgaitu behar du. HTTP/0.9 diruditen eskaera gehienak, izan ere, gaizki eraikitako HTTP/1.x eskaerak dira, eskaeraren xedea behar bezala kodetu ez zuen bezero batek eragindakoak.
- 2016az geroztik, produktu-kudeatzaile eta erabiltzaile-agenteen (nabigatzaileak, etab.) eta web-zerbitzarien garatzaile asko hasi dira HTTP/0.9 protokolorako euskarria pixkanaka ez onartzeko eta baztertzeko planak egiten, batez ere arrazoi hauengatik:[32]
- Hain da sinplea, non RFC dokumentu bat ez zela inoiz idatzi (jatorrizko dokumentua baino ez dago);
- Ez du HTTP goibururik, eta ez ditu gaur egun gutxieneko segurtasun-arrazoiengatik beharrezkoak diren beste ezaugarri asko;
- 1999-2000 urteetatik ez da orokortu (HTTP/1.0 eta HTTP/1.1 protokoloak direla eta), eta sareko hardware oso zahar batzuetan bakarrik erabiltzen da, hala nola, bideratzaileetan, etab.
- HTTP/3 (2018an argitaratua)
- HTTP/3 proposatutako HTTP/2ren ondorengoa da,[33][34] eta dagoeneko erabiltzen da webgunean, UDP erabiliz azpiko garraio-protokolorako, TCP erabili beharrean. HTTP/2 bezala, ez dago zaharkitua protokoloaren aurreko bertsio nagusietan. HTTP/3rako euskarria 2019ko irailean gehitu zen Cloudflaren eta Google Chromen,[35][36] eta Chrome eta Firefoxen bertsio egonkorretan gaitu daiteke.[37]
- 2022ko ekainaren 6an, IETFk HTTP/3 estandarizatu zuen RFC 9114 bezala.
- 2022ko eguneratzeak eta errefaktorizazioa
- 2022ko ekainean, RFC sorta bat argitaratu zen, aurreko dokumentu asko zaharkituta utzi zituena, eta aldaketa txiki batzuk eta HTTP semantikaren deskribapenaren errefaktorizazio bat sartu zituen dokumentu bereizi batean.
Funtzionamendua
[aldatu | aldatu iturburu kodea]HTTP bezero eta zerbitzari arteko eskaera/erantzun protokolo bat da. HTTP bezero bat, web nabigatzaile bat, esate baterako, eskaera egiten du normalean TCP erabiliz urruneko zerbitzari bateko 80 portura konektatzeko. Ondoren, burualdeak eta MIME luzapenak bidaltzen dira eskatutako dokumentuaren eta konexioaren egoeraren metainformazioarekin. Zerbitzariak honi erantzun egiten dio behar den fitxategia bidaliz, erroreren bat azalduz edo dena delakoa eginez. Esan beharra dago zerbitzariak ez duela bezeroaren eskaerei buruzko inolako informaziorik gordeko. Hori dela eta HTTP "egoera gabeko" protokoloa dela esaten da.
Bezero batek zerbitzari bati eskaera bat egiten dion bakoitzean, hurrengo urratsak egikaritzen dira:[38]
- Erabiltzaile bat URL batera sartzen da, HTML dokumentu baten esteka aukeratuta edo web bezeroaren helbide eremuan zuzenean sartuta.
- Web bezeroak URLa dekodetzen du, haren zatiak bereiziz. Horrela, sarbide-protokoloa, zerbitzariaren DNS edo IP helbidea, balizko aukerako ataka (lehenetsitako balioa 80 da) eta zerbitzariaren eskatutako objektua identifikatzen ditu.
- TCP/IP konexio bat irekitzen da zerbitzariarekin, dagokion TCP portura deituz.
- Eskaera egiten da. Horretarako, beharrezko komandoa (GET, POST, HEAD,...), eskatutako objektuaren helbidea (zerbitzariaren helbidera jarraitzen duen URLaren edukia), erabilitako HTTP protokoloaren bertsioa eta informazio-multzo aldakor bat, nabigatzailearen gaitasunei buruzko datuak, zerbitzariarentzako aukerako datuak eta abar barne hartzen dituena, bidaltzen dira.
- Zerbitzariak erantzuna itzultzen dio bezeroari. Itzulera-informazioaren egoera-kodea eta MIME datu-mota dira, eta, ondoren, informazioa bera.
- TCP konexioa ixten da. HTTP Keep Alive modua erabiltzen ez bada, prozesu hori errepikatu egiten da HTTP zerbitzarirako sarbide bakoitzerako.
HTTP konexioak
[aldatu | aldatu iturburu kodea]Funtzionamenduan adierazi den bezala, HTTP bezeroak TCP konexio bat ezarri beharko du zerbitzari bateko 80.portuarekin. HTTP konexio hauek bi motatakoak izan daitezke: iraunkorrak edo ez-iraunkorrak.
HTTP konexio iraunkorrak: HTTP bezeroak botatako eskaera ezberdinak TCP konexio berdinean bota eta erantzun egingo dira. Beraz TCP konexio bakar batean HTTP bezeroak eta zerbitzariak objektu bat baino gehiago bidaltzeko aukera izango dute. HTTP/1.1 bertsioak era honetako konexioak erabiltzen ditu defektuz. Era honetako konexioak erabiliz HTTP eskaeretan erantzun denbora laburragoak lor ditzakegu.
Gainera konexio iraunkorrak erabiltzeak beste aukera bat ematen digu: "Pipelining" delakoa. "Pipelining" erabiltzen duen konexio iraunkor batek bezeroari eskaerak bata bestearen atzean botatzeko aukera ematen dio aurreko eskaeren erantzun edo baieztapena jaso aurretik. Hau da, HTTP bezeroak eskera bat bota duenean normalean zerbitzariaren erantzuna itxarotera behartuta egongo litzake, "Pipelining" darabilen HTTP konexio Iraunkor batean berriz bezeroak eskaerak paraleloan botatzeko aukera izango du aurrekoen erantzuna itxaron gabe, modu horretan azkarragoa izanik. Dena den "Pipelining" erabiltzean paraleloan egin ditzakegun konexioak zerbitzari bati mugaturik daude, zerbitzaria blokea ez dadin.
HTTP konexio ez-iraunkorrak: HTTP bezero batek eskaera bakoitzeko TCP konexio bat ezarri eta askatu behar izango du. Beraz TCP konexio bakoitzean objektu bakarra bidali ahal izango da.
HTTP/1.0 HTTPren hasierako bertsioak era honetako konexioak erabiltzeko aukera ematen zuen bakarrik.
HTTP mezuak
[aldatu | aldatu iturburu kodea]HTTP protokoloak bi mezu mota ditu RFC 1954 eta RFC 2616 estandarretan definituta: eskaerako mezua eta erantzun mezua. Mezu hauek 8 biteko ASCIIan idazten dira, beraz nahiko erraz irakur daitezke.Hona hemen bi mezu hauen egitura eta eremu ezberdinei buruzko azalpenak:
'Eskaera-mezua:'

Adibide bat:
GET /products/list.html HTTP/1.1
Host: www.dendabat.eu
User-Agent: Mozilla/5.0
Connection: keep alive
If-modified-since: Mon, 23 Nov 2009 10:43:55 GMT
Accept-language: eu
Cookie: dendabat_idusr=SDfla80AABQc28s-f21a381a022f63a5cd2dbf11868
Adibidean ikus dezakegu GET metodoa erabiltzen dela. Metodo ezberdinak beherago ikusi daitezke. Agertzen zaizkigun goiburu ezberdinen azalpena:
Host: zeini egin diogun konexioa
User-Agent: web arakatzailearen bertsioa
Connection: konexio iraunkorra(Keep Alive) edo konexio ez iraunkorra (close) erabiltzen gaudela adierazteko
If-modified-since: eremu honetan data bat sartzen da, hain zuzen ere bezeroak bere "caché" memorian duen objektuaren kopiaren data zehazten duena. Eremu honen bidez BALDINTZAZKO GET eskaera bat egiten dugu. Bezeroak bere "caché" memorian duen objektuaren kopiaren data bidaltzean zerbitzariari galdetzen dio ea data horretatik aurrera objektu horretan aldaketarik egon den, aldaketa egon bada zerbitzariak bere erantzun mezuan objektu horren bertsio berria bidaliko dio, aldaketarik egon ez bada zerbitzariak bere erantzun mezuan ez du objekturik bidaliko (gainera erantzun mezua 304 Not Modified modukoa izango da).
Accept-language: web orrialde batek orrialdearen hizkuntza bertsio ezberdinak baditu eremu honen bidez hizkuntza konkretu bat eskatzen zaio( eu-euskara, en-ingelesa, it-italiera…). Eskatzen dugun hizkuntza ez badago defektuz hizkuntzaren orrialde bertsioa itzuliko digu.
Cookie: eremu honetan cookie konkretu baten identifikadorea bidali egiten da, gurekin eta eskaera egin diogun webgunearekin erlazionatuta dagoen cookie-arena hain zuzen. Beste eremu asko daude, baina ezin ditugu denak azaldu.
'Erantzun mezua:'

Adibide bat:
HTTP/1.1 200 OK
Connection close
Date: Mon, 18 Jan 2010 10:43:55 GMT
Server: Mathopd/1.3pl7.7
Last-Modified: Mon, 23 Nov 2009 10:43:55 GMT
Set-Cookie: DendabatAccountsLocale_session=en
Content-Type: image/jpeg
Content-Length: 5270
(lerro zuria)
Datuak datuak datuak datuak…
HTTP/1.1 bertsioaren erabateko erantzun baiezkorreko egoera kodea jaso dugu adibidean.
Ikus ditzagun orain agertzen diren goiburuak:
Connection close: mezu honekin konexioa itxi egin dela adierazten da.
Date: egundo data jartzen da adierazten da eremu honetan.
Server: erabiltzen den zerbitzariaren mota.
Last-Modified: eskatu egin den objektuaren azkeneko bertsioaren data. BALDINTZAKO GET eskaeretan eremu hau objektu bat bidaltzen denean jaso eta gorde egiten da jakiteko zein izan den objektuaren azken bertsio data.
Set-Cookie: Gure eskaeran Cookie-aren identifikazioa bidali ez bada gure ordenagailuan ez dugulako, zerbitzariak set-cookie eremu honen bidez cookie-a ezartzeko eskatzen digu eta normalean identifikadore bat pasako digu gure cookie horrentzako.
Content-Type: bidali egiten den objektuaren izaera zein den adierazten dugu hemen.
Content-Length: bidali egiten den objektuaren tamaina zein den adierazten da, bytetan.
HTTP Goiburua
[aldatu | aldatu iturburu kodea]HTTP eskaera edo erantzunetan bidaltzen diren metadatuak dira, uneko transakzioari buruzko funtsezko informazioa emateko. Goiburu bakoitza goiburu-izen batek zehazten du; ondoren bi puntu, zuriune bat eta goiburu horren balioa, eta azkenik orga-itzulera eta lerro-jauzia bat. Lerro zuri bat erabiltzen da goiburuen amaiera adierazteko. Goibururik ez badago, lerro zuriak iraun egin behar du.
Goiburuek malgutasun handia ematen diote protokoloari eta aukera ematen dute funtzio berriak gehitzeko oinarria aldatu beharrik gabe. Horregatik, HTTP bertsioak gertatu ahala, onartutako goiburu gehiago gehitu dira.
Goiburuek metadatuak izan ditzakete eta bezeroak prozesatu behar ditu (adibidez: eskaerari erantzunez, eduki-mota adieraz daiteke), zerbitzariaren (adibidez: eskatzen duen edukiaren bezeroak onar ditzakeen irudikapen-motak) edo bitartekariak (adibidez, proxy-ek nola kudeatu behar duten cacheak) bidez.
Goiburu batek izan dezakeen mezu-motaren arabera, honela sailka daitezke: eskaera-goiburuak, erantzun-goiburuak eta, bai eskaera batean, bai erantzun batean joan daitezkeen goiburuak.
Eskaera-goiburuak
[aldatu | aldatu iturburu kodea]| Goiburuaren izena | Deskribapena | Adibidea | Egoera |
|---|---|---|---|
| Accept | Onartzen diren Content-Types (eduki-motak). | Accept: text/plain | Iraunkorra |
| Accept-Charset | Onartzen diren karaktereen multzoa. | Accept-Charset: utf-8 | Iraunkorra |
| Accept-Encoding | Onartzen diren kodifikazioen zerrenda. | Accept-Encoding: gzip, deflate | Iraunkorra |
| Accept-Language | Onartzen diren hizkuntzak. | Accept-Language: en-US | Iraunkorra |
| Accept-Datetime | Onartzen diren orduaren eta egunaren bertsioa. | Accept-Datetime: Thu, 31 May 2007 20:35:00 GMT | Behin-behinekoa |
| Authorization | Baimen-agiriak. | Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== | Iraunkorra |
| Caché-Control | Cache politikak kontrolatzen dira. | Cache-Control: no-cache | Iraunkorra |
| Connection | Konexio-mota kontrolatzen da. | Connection: keep-alive
|
Iraunkorra |
| Cookie | Aurrez zerbitzariak bidalitako cookie bat, Set-Cookie erabiliz. | Cookie: $Version=1; Skin=new; | Iraunkorra: Estandarra |
| Content-Length | Eskaeraren edukiaren tamaina byte-tan. | Content-Length: 348 | Iraunkorra |
| Content-MD5 | Edukiari buruzko checksum bat MD5 formatuan. | Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ== | Zaharkitua |
| Content-Type | POST edo PUTeko eskaeraren eduki-mota. | Content-Type: application/x-www-form-urlencoded | Iraunkorra |
| Date | Eskaeraren data eta ordua. | Date: Tue, 15 Nov 1994 08:12:31 GMT | Iraunkorra |
| Forwarded | Proxy bidez konektatuz gero, bezeroaren jatorrizko informazioa adierazten du. | Forwarded: for=192.0.2.60;proto=http;by=203.0.113.43 Forwarded: for=192.0.2.43, for=198.51.100.17 | Iraunkorra |
| From | Eskaeraren helbide elektronikoa. | From: user@example.com | Iraunkorra |
| Host | Domeinuaren izena edo IP helbidea (portu-zenbakia izan dezake). Goiburua nahitaez erabili behar da HTTP 1.1etik aurrera. | Host: en.wikipedia.org:8080
|
Iraunkorra |
| Max-Forwards | Mezuak proxietatik zenbat aldiz bidaiatzen duen mugatzen du. | Max-Forwards: 10 | Iraunkorra |
| Origin | Zerbitzarietarako eskaera bat hasten du, Access-Control-Allow-Origin-i erantzunez. | Origin: http://www.example-social-network.com | Iraunkorra: Estandarra |
| Pragma | Goiburuak ezartzen ditu, zeinetan efektu ugari aplikatzen zaizkio guztiari. | Pragma: no-cache | Iraunkorra |
| Proxy-Authorization | Proxy bat konektatzeko baimen-kredentzialak. | Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== | Iraunkorra |
| Range | Edukiaren zati bat bakarrik eskatzen du. | Range: bytes=500-999 | Iraunkorra |
| Referer [sic] | Jatorria duen URL helbidea adierazten du, bestela esanda, atzera botoiaren web-helbidea. | Referer: http://en.wikipedia.org/wiki/Main_Page | Iraunkorra |
| User-Agent | Eskaeraren informazioa du, hala nola nabigatzailea, sistema eragilea eta abar. | User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/21.0 | Iraunkorra |
| Upgrade | Zerbitzariari HTTP bertsioa eguneratzeko eskatzen dio, funtziona dezan. | Upgrade: HTTP/2.0, HTTPS/1.3, IRC/6.9, RTA/x11, websocket | Iraunkorra |
| Warning | Erakundearen arazoei buruzko ohar orokorra. | Warning: 199 Miscellaneous warning | Iraunkorra |
HTTP/1.1 Eskaeraren/erantzunaren transakzioaren adibidea
[aldatu | aldatu iturburu kodea]Jarraian, HTTP/1.1 bezero baten eta HTTP/1.1 zerbitzari baten arteko HTTP transakzioaren adibide bat ageri da, www.example.com web orrian exekutatzen dena, 80. portuan. [Oharra 1][Oharra 2]
Bezero eskaera
[aldatu | aldatu iturburu kodea]GET / HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Bezeroaren eskaera bat ("Host: hostname" goiburura soilik murritz daitezkeen eskaera-lerroaren eta goiburu batzuen kasua) lerro zuri baten atzetik doa, eta, beraz, eskaera bi lerro amaierekin amaitzen da, bakoitza orga-itzulera batekin, lerro-jauzi bat jarraitzen dioelarik. "Host: hostname" goiburuko balioak IP helbide bakar bat partekatzen duten DNS izen batzuk bereizten ditu, eta izenan oinarritutako ostatu birtuala baimentzen du. HTTP/1.0 aukeran bada ere, HTTP/1.1 ezinbestekoa da. (A "/" (slash) normalean fitxategi bat bilatuko du /index.html bat badago.)