HTTP

Iz Wikipedije, proste enciklopedije

Nabor internetnih protokolov
Plast Protokol
aplikacijska plast DNS, FTP, HTTP, IMAP, IRC, NNTP, POP3, SIP, SMTP, SSH, Telnet, BitTorrent ...
transportna plast DCCP, TCP, UDP, SCTP, RTP ...
omrežna plast IPv4, IPv6, ICMP, IGMP, ARP ...
plast podatkovne povezave ECP, ATM, DDCMP, BSC, LAPB, LAPD, LLC, SDLC ...
fizična plast Token ring, Ethernet, FDDI, PPP, Wi-Fi ...

HTTP [hatetepé] (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 naprimer 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 stranka poslala svoj zahtevek naprimer "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 naprimer obvezen), čemur lahko sledi neobvezno polje poljubnih podatkov. Ko strežnik prejme tak zahtevek in morebitno sporočilo, na to odgovori naprimer z "200 OK" in lastnim sporočilom, katerega vsebina je naprimer zahtevana datoteka, sporočilo o napaki ali pa kaka druga informacija.

Vsebina

[uredi] HTTP zahtevki

  • 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 vspostavitev SSL tunela.

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

[uredi] HTTP URL

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

[uredi] HTTP različice

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.

[uredi] Trajnost HTTP povezave

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.

Ta metodo 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.

[uredi] Zapiranje HTTP povezave

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.

[uredi] Stanja in HTTP

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.

[uredi] HTTPS, zavarovana različica HTTP

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.

[uredi] Primer

Spodaj je primer izmenjave sporočil med HTTP stranko in HTTP strežnikom, ki se nahaja na www.primer.si, priklop 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.)