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žiniring. Rezultat je bila publikacija serije RFCjev, predvsem RFC 2616, ki definira HTTP/1.1, torej različico v pogosti uporabi dandanes.

HTTP je [komunikacijski protokol] med strankami in strežniki. HTTP stranka, kot na primer spletni brskalnik, navadno začne zahtevo tako da vspostavi TCP povezavo na izbrani priklop na oddaljenem gostitelju (privzeta je številka priklopa 80). HTTP strežnik, ki na tem priklopu pričakuje da bo stranka poslala svoj zahtevek na primer »GET / HTTP/1.1« (ta zahtevek prosi za privzeto spletno stran na dotičnem strežniku), čemur sledi MIME sporočilo, podobno kot pri elektronski pošti, ki vsebuje kup 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 je 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.. zbriše dotično datoteko z strežnika.
  • TRACE Vrne nazaj zahtevek, zato da lahko stranka ugotovi če so vmes kaki dodatni strežniki ki spreminjajo zahtevke.
  • OPTIONS Vrne seznam HTTP zahtevkov, ki jih strežnik podpira. Zahtevek gre uporabit da se ugotovi če spletni strežnik deluje.
  • CONNECT Se uporablja pri spletnih posrednikih za vzpostavitev SSL tunela.

HTTP strežniki naj bi podpirali GET in HEAD zahtevka in ko le možno tudi OPTIONS zahtevek.

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 prokolovo na osnovi TCP po tem da ima različni različici:

  • 0.9 Podpira samo GET ukaz... 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 unčinkovitost.

Trajnost HTTP povezave[uredi | uredi kodo]

V HTTP/0.9 in HTTP/1.0, stranka pošlje zahtevek strežniku in strežnik na to odgovori, po tem se povezava zapre. HTTP/1.1 pa je podprta tudi trajna povezava. To omogoča stranki da pošlje dodatne zahtevke ne da bi bilo treba ponovno vspostavljati 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«. Nekatere stranike in nekateri strežniki, ki trdijo da uporabljajo HTTP/1.0 lahko podpirajo tudi trajnost povezave in strežniki ki podpirajo HTTP/1.1 imajo lahko 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 stranke 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) med tem ko druga se lahko zapre takoj ko je poln odgovor poslan.

Stanja in HTTP[uredi | uredi kodo]

HTTP lahko povzroča razvijalcem precejšnje probleme, ker HTTP sam po sebi ne podpira različnih stanj (ne obdrži podatkov čez več povezav). V izogib tej pomankljivosti 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 priklop številka 443. SSL, ki je bil narejen za HTTP je posebno primeren saj omogoča zavarovanje 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.

Strankin zahtevek:

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

(Temu sledi dvojni lom 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.)