HTTP

Iz Wikipedije, proste enciklopedije
Skoči na: navigacija, iskanje
Nabor internetnih protokolov
Plast Protokol
aplikacijska plast DNS, FTP, HTTP, IMAP, IRC, NNTP, POP3, SIP, SMTP, SSH,
predstavitvena plast
plast seje
prenosna plast DCCP, TCP, UDP, SCTP, RTP ...
omrežna plast IPv4, IPv6, ICMP, IGMP, ARP ...
povezovalna plast ECP, ATM, DDCMP, BSC, LAPB, LAPD, LLC, SDLC ...
fizična plast Token ring, Ethernet, FDDI, PPP, Wi-Fi ...

HTTP (kratica za HyperText Transfer Protocol) je glavna metoda za prenos informacij na spletu. Protokol je prvotno namenjen objavljanju in prejemanju HTML strani.

Razvoj HTTP je koordiniral WWW konzorcij in delovne skupine za medmrežni inženiring. Rezultat je bila objava niza RFC-jev, predvsem RFC 2616, ki definira HTTP/1.1, torej različico v pogosti uporabi dandanes.

HTTP je [komunikacijski protokol] med odjemalci in strežniki. Odjemalec HTTP, na primer spletni brskalnik, navadno začne zahtevo tako, da vzpostavi TCP povezavo z izbranimi vrati na oddaljenem gostitelju (privzeta številka vrat je 80). HTTP strežnik, ki na teh vratih pričakuje, da bo odjemalec poslal svoj zahtevek, na primer »GET / HTTP/1.1« (ta zahtevek prosi za privzeto spletno stran na zadevnem strežniku), čemur sledi MIME sporočilo, podobno kot pri elektronski pošti, ki vsebuje več obveznih in neobveznih podatkov za informiranje strežnika (podatek o gostitelju »Host« je na primer obvezen), čemur lahko sledi neobvezno polje poljubnih podatkov. Ko strežnik prejme tak zahtevek in morebitno sporočilo, na to odgovori na primer z »200 OK« in lastnim sporočilom, katerega vsebina je na primer zahtevana datoteka, sporočilo o napaki ali pa kaka druga informacija.

HTTP zahtevki[uredi | uredi kodo]

  • GET Najbolj pogosta metoda za pridobitev vsebine datoteke.
  • HEAD Identično kot GET, le da na to strežnik odgovori le z glavo datoteke. Uporabno za pridobivanje meta-oznak.
  • POST Podobno kot GET, samo da telo zahtevka vsebuje podatke, ki jih želimo sporočiti strežniku.
  • PUT Se uporablja za pošiljanje datotek na ciljni spletni strežnik.
  • DELETE Redko implementirani. Izbriše zadevno datoteko iz strežnika.
  • TRACE Vrne zahtevek, zato da lahko odjemalec ugotovi ali so vmes dodatni strežniki, ki spreminjajo zahtevke.
  • OPTIONS Vrne seznam HTTP zahtevkov, ki jih strežnik podpira. Zahtevek je koristen za ugotavljanje, ali spletni strežnik deluje.
  • CONNECT Se uporablja pri spletnih posrednikih za vzpostavitev SSL tunela.

HTTP strežniki naj bi podpirali zahtevka GET in HEAD, če je le možno tudi zahtevek OPTIONS.

HTTP URL[uredi | uredi kodo]

Nahajališča HTTP in HTTPS strani so podana kot URL. Ta način so naredili za povezovanje spletnih strani.

HTTP različice[uredi | uredi kodo]

HTTP se razlikuje od drugih komunikacijskih protokolov na osnovi TCP po tem, da ima različni različici:

  • 0.9 Podpira samo ukaz GET (se ni nikoli uveljavil).
  • HTTP/1.0 Še vedno pogosto uporabljen, posebno s strani spletnih posrednikov; omogoča en zahtevek z odgovorom na povezavo.
  • HTTP/1.1 Trenutna različica; omogoča trajne povezave (znane tudi kot keep-alive povezave) z več kot enim zahtevkom z odgovorom na povezavo, tako poveča odzivnost in učinkovitost.

Trajnost HTTP povezave[uredi | uredi kodo]

V HTTP/0.9 in HTTP/1.0, odjemalec pošlje zahtevek strežniku in strežnik na to odgovori, nato se povezava zapre. HTTP/1.1 pa je podprta tudi trajna povezava. To omogoča odjemalcu da pošlje dodatne zahtevke, ne da bi bilo treba ponovno vzpostavljati povezavo. To tudi omogoča, da se pošlje več kot en zahtevek preden pride nazaj odgovor.

To metodo včasih imenujemo »Pipelining« ali »keep alive«. Nekateri odjemalci in nekateri strežniki, ki trdijo, da uporabljajo HTTP/1.0, lahko podpirajo tudi trajne povezave, in strežniki, ki podpirajo HTTP/1.1, lahko imajo izklopljeno podporo za le-to. Če strežnik v svojem odgovoru poda vrstico »Connection: close«, to pomeni da bo povezavo zaprl ko bo odgovoril na prvi zahtevek.

Zapiranje HTTP povezave[uredi | uredi kodo]

Tako HTTP strežniki kot odjemalci lahko zaprejo povezavo kadarkoli iz kakršnega koli razloga. To naredi HTTP protokol idealen za spletno okolje, kjer se spletne strani enega strežnika pogosto povezujejo na spletne strani z drugih strežnikov.

Zapiranje HTTP/1.1 povezave je lahko precej daljše opravilo (od 200 milisekund do nekaj sekund) kot zapiranje HTTP/1.0 povezave, ker prva navadno rabi trajajoče zapiranje (da se primerno obdelajo še tavajoči paketki še ne odgovorjenih zahtevkov), medtem ko se druga lahko zapre takoj, ko je poslan poln odgovor.

Stanja in HTTP[uredi | uredi kodo]

HTTP lahko povzroča razvijalcem precejšnje težave, ker HTTP sam po sebi ne podpira različnih stanj (ne obdrži podatkov čez več povezav). V izogib tej pomanjkljivosti se navadno uporabljajo piškotki.

HTTPS, zavarovana različica HTTP[uredi | uredi kodo]

Glavni članek: HTTPS.

HTTPS je zavarovana različica HTTP. Uporablja SSL in TLS za to, da zakodira in s tem zaščiti promet pred vmesnimi opazovalci. Ta komunikacijski protokol navadno uporablja vhod številka 443. SSL, ki je bil narejen za HTTP, je posebno primeren, saj omogoča zaščito tudi kadar prihaja informacija za kodiranje samo s strani strežnika.

Primer[uredi | uredi kodo]

Spodaj je primer izmenjave sporočil med HTTP stranko in HTTP strežnikom, ki se nahaja na www.primer.si, vrata 80.

Zahtevek odjemalca:

GET /index.html HTTP/1.1
Host: www.primer.si

(Temu sledi dvojni prelom vrstice.)

Strežnikov odziv:

HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Server: Apache/1.3.27 (Unix)  (Red-Hat/Linux)
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
Etag: »3f80f-1b6-3e1cb03b«
Accept-Ranges: bytes
Content-Length: 438
Connection: close
Content-Type: text/html; charset=UTF-8

(Temu sledi prazna vrstica in besedilo zahtevane strani.)