Locked History Actions

Hypertext Transfer Protocol

Hypertext Transfer Protocol

HTTP

Hyperteksto perdavimo protokolas


Apibrėžimas

Tai yra pagrindinis ir populiariausias visame pasaulyje metodas pasiekti informacija pasauliniame tinkle (World Wide Web), kitaip sakant - tai hyperteksto perdavimo protokolas, Interneto pagrindas. Pagrindinis protokolo tikslas yra pateikti standartizuotą būdą HTML puslapių peržiūrai.


Paaiškinimai

HTTP yra užklausos – atsakymo protokolas, kuris inicijuoja ryšį tarp kliento ir serverio. Naršyklė yra HTTP klientas, kuris naudodamas TCP/IP ryšį (dažniausiai HTTP protokolui naudojamas 80 prievadas „Portas“), siunčia užklausą pvz.: „GET / HTTP/1.1 į tam tikrą nutolusį kompiuterį ar serverį. HTTP serveris gavęs užklausą „GET / HTTP/1.1“ atgal atsiunčia atsakymą „200 OK“ kartu su susijusiu pranešimu, kuris dažniausiai būna HTML puslapis.

  • Yra galimi trys HTTP operacijų tipai:

  • 1. Aukščiau aprašytas, tiesioginis ryšys, kuris vyksta betarpiškai tarp kliento ir serverio.

  • 2. Panaudojant papildomus (tarpinius) serverius. Galimi trys atvejai:

  • HTTP.JPG

  • "Proxy" veikia klientų pusėje ir jų užklausas perduoda serveriui. Tai gali būti ir lokalaus tinklo ekranas ("firewall"), kuriam serveris turi "prisistatyti", kad galėtų bendrauti su surinkėju, kuris priima tik tuos atsakymus, kurie praėjo pro filtrą. Kitu atveju, kai valdomos skirtingos kliento ir serverio HTTP versijos, "proxy" atlieka vertėjo paslaugas.

  • "Gateway" (tiltas) klientui prisistato, lyg jis ir būtų tikrasis serveris. Per jį kiti serveriai, neturintys tiesioginio ryšio su klientu, gali perduoti informaciją. Naudojant kaip ekraną ("firewall"), prisistatyti turi klientas (o ne serveris, kaip "proxy" atveju), kuris po to (jei užklausa patenkinama) prileidžiamas prie serverio. Kitu atveju, tai ryšio palaikymas su serveriu, nedirbančio HTTP protokolu, pvz., FTP ar "Gopher".

  • "Tunel" paprasčiausiai tėra jungtis tarp dviejų TCP ryšių. HTTP paketai keliauja nepakitę. Jie naudojami, kai tarp kliento ir serverio yra tarpinis serveris, o kita nesvarbu.

  • 3. Trečiasis HTTP operacijų tipas - „cache“, t.y. ankstesnių užklausų ir atsakymų įsiminimas.

  • HTTP2.JPG

  • Jei užklausa sutampa su kuria nors, saugoma „cache“ serveryje, - iškart siunčiamas atsakymas. „cache“ gali būti tiek kliento, tiek serverio pusėje. Ne visas tranzakcijas galima įsiminti, - ir tai gali valdyti tiek klientas, tiek serveris.

Pagrindinės HTTP užklausos:

HTTP užklausos iš esmės yra komandų rinkinys, siunčiamas iš naršyklės į tinklapio serverio.

Užklausos sudėtis

  • Užklausos eilutė – (ang. A request line) ši eilutė yra sudaroma iš tryjų, tarpais atskirtų, elementų. Kuriuose yra nurodomas prašomo dokumento tipas (URL), metodas kuris bus taikomas (METHOD) bei protokolo versija (VERSION).
  • Užklausos antraštės laukai – (ang. The request header fields) šios eilutės nusako papildmą užklausos informaciją. Kiekviena šio tipo eilutė yra sudaroma iš apibrėžiamo antraštės tipo (HEADER), po kurio eina dvitaškis (:), ir antraštės reikšmės (Value).
  • Pagrindinė užklausos dalis – (ang. The body of the request) ši dalis turi būti atskiriama tuščia eilute (Emty line), nuo prieš tai buvusių eilučių. Nusako papildomą užklausos informaciją.


HTTP 1.0 užklausos sintaksė:

  • METHOD URL VERSION

  • HEADER: Value

  • .

  • .

  • .

  • HEADER: Value

  • Tuščia eilutė

  • BODY OF THE REQUEST


Žemiau pateikiamas HTTP 1.0 užklausos pavyzdys:

  • GET http://en.kioskea.net/ HTTP/1.0

  • Accept: text/html

  • If-Modified-Since: Saturday, 15-January-2000 14:37:11 GMT

  • User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 95)


  • GET – dažniausiai naudojama užklausa. Ji reikalauja tam tikro resurso (duomenų) duotu URL adresu.

  • POST – panašu į GET, bet siunčiama papildoma informacija, paprastai raktų ir reikšmių poros, nusakančios HTML formos laukų reikšmes.

  • PUT – naudojama failų dėjimui į serverį.

  • DELETE – naudojama trynimui, retai palaikoma.

  • HEAD – panaši į GET, tačiau reikalaujama tik atsakymo antraštė, o pats atsakymo dokumentas nelaukiamas.

  • TRACE – grąžina gautą užklausą, gali būti naudojama tikrinimui, kokių papildomų meta-duomenų prideda tarpiniai serveriai.

  • CONNECT – retai palaikoma, dažniausiai naudojama „tuneliniam ryšiui“ (SSL tunneling)


Užklausos antraščių tipai

Antraštė

Apibrėžimas

Accept

Turinio tipas, kurį pripažįsta klientas (pvz. text/html)

Accept-Charset

Kliento pripažįstamas simbolių rinkinys

Accept-Encoding

Kliento pripažįstamas duomenų kodavimas

Accept-Language

Kalba kurios tikisi klientas (pagal nutylėjimą – anglų)

Autorization

Kiento indetifikavimas serveriui

Content-Encoding

Pagrindinės užklausos dalies kodavimo tipas

Content-Language

Pagrindinės užklausos dalies kalbos tipas

Content-Length

Pagrindinės užklausos dalies ilgis

Content-Type

Pagrindinės užklausos dalies turinio tipas (pvz. text/html)

Date

Duomenų persiuntimo pradžios data

Forwarded

Nurodomas tarpinis įrenginys tarp kliento ir serverio

From

Suteikia galimybę klientui nurodyti e-paštą

Link

Nuoroda tarp dviejų URL adresų

Orig-URL

URL adresas iš kurio atėjo užklausa

Referer

Nuoroda URL adreso, kuriame užklausa buvo sukurta

User-Agent

Eilutė nurodanti informaciją apie klientą (pvz. naršyklės pavadinimą ir versiją, operacinę sistemą)

HTTP atsakas

HTTP atsakas yra komandų rinkinys siunčiamas naršyklei iš tinklapio serverio. Jį sudaro:

  • Būsenos eilutė – (ang. A status line) ši eilutė susideda iš trijų elementų, kurie turi būti atskiriami tarpais:
  • • Naudojamo protokolo versija (VERSION-HTTP);
  • • Būsenos kodas (CODE);
  • • Būsenos reikšmė (EXPLANATION).
  • Atsako antraštės laukai – (ang. The response header fields) šios eilutės nurodo papildomą informaciją, kuri gali būti pateikiama prie atsako. Kiekviena šio tipo eilutė yra sudaroma iš apibrėžiamo atraštės tipo (HEADER), po kurio eina dvitaškis (:), ir antraštės reikšmės (Value).
  • Pagrindinė atsako dalis – (ang. The body of the response) užklausoje prašomas dokumentas.


HTTP 1.0 atsako sintaksė:

  • VERSION-HTTP CODE EXPLANATION
  • HEADER: Value
  • .
  • .
  • .
  • HEADER: Value
  • Tuščia eilutė
  • BODY OF THE RESPONSE


HTTP 1.0 atsako pavyzdys:

  • HTTP/1.0 200 OK
  • Date: Sat, 15 Jan 2000 14:37:12 GMT
  • Server: Microsoft-IIS/2.0
  • Content-Type: text/HTML
  • Content-Length: 1245
  • Last-Modified: Fri, 14 Jan 2000 08:25:13 GMT

Atsako antraščių tipai

Antraštė

Apibrėžimas

Content-Encoding

Pagrindinės atsako dalies kodavimo tipas

Content-Language

Pagrindinės atsako dalies kalbos tipas

Content-Length

Pagrindinės atsako dalies ilgis

Content-Type

Pagrindinės atsako dalies turinio tipas (pvz. text/html)

Date

Duomenų persiuntimo pradžios data

Expires

Duomenų galiojimas pagal datą

Forwarded

Nurodomas tarpinis įrenginys tarp kliento ir serverio

Location

Nukreipimas į naują URL vietą siejamą su nurodytu dokumentu

Server

Serverio išsiuntusio atsaką parametrai

Atsako būsenos kodai

Būklės kodas

Būsenos reikšmė

Apibrėžimas

10x

Information message

Šie kodai nėra naudojami HTTP 1.0 protokolo versijoje

20x

Success

Šie kodai nurodo sėkmingą duomenų apsikeitimo procesą

200

OK

Užklausa buvo sėkmingai įvykdyta

201

CREATED

Jis kodas gaunamas naudojam POST užklausos metodą. Kodas nurodo sėkmingą užklausos įvykdymą ir savo pagrindinėje atsako dalyje nurodo vietą kurioje turi būti talpinamas naujai sukurtas dokumentas

202

ACCEPTED

Užklausa buvo priimta, po jos sekančios procedūra buvo neįvykdyta

203

PARTIAL INFORMATION

Kai šis kodas gaunamas naudojant GET metodą, reiškia jog atsakas nebuvo pilnai įvykdytas

204

NO RESPONSE

Serveris gavo užklausą, tačiau nėra pageidaujamos informacijos kuri būtų patalpinta į atsaką

205

RESET CONTENT

Serveris liepia klientui ištrinti formos laukelių turinį

30x

Redirection

Šie kodai nurodo, kad pageidaujamų dokumentų nebėra nurodytoje vietoje

301

MOVED

Užklausos duomenys buvo persiųsti į naują adresą

302

FOUND

Pageidaujami duomenys buvo perkelti į naują URL adresą, kuriame jų dabar nerandama

303

METHOD

Klientas turi mėginti siųsti užklausą kitu adresu. Taip pat siūloma pakeisti užklausos metodą

40x

Error due to the client

Šie kodai nurodo jog buvo neteisingai suformuluota užklausa

400

BAD REQUEST

Neteisingai suformuluota užklausa

401

UNAUTHORIZED

Užklausos parametrai neatitinka identifikacijos. Klientas turi performuluoti užklausą

402

PAYMENT REQUIRED

Klientas turi performuluoti užklausą su teisingais apmokėjimo duomenimis

403

FORBIDDEN

Priėjimas prie duomenų draudžiamas

404

NOT FOUND

Nurodytu adresu serveris nerado jokių duomenų

50x

Error due to the server

Šie kodai informuoja, kad serveriui iškilo vidinių klaidų

HTTP protokolo versijos

  • HTTP 0.9

Nebepalaikoma. Palaiko tik GET užklausą. Nepalaiko antraščių (HEADERS). Kadangi nepalaikomas POST metodas, klientas serveriui gali perduoti labai mažai informacijos.

  • HTTP 1.0

Vis dar labai plačiai naudojama, ypač proxy serverių. Palaiko susijungimą aktyvų, todėl to paties susijungimo metu galima įvykdyti keletą užklausų/atsakymų. Tačiau tai veikia tik tada, kai jungiamasi ne per proxy serverius. Neišlaiko būsenos informacijos.

  • HTTP 1.1

Einamoji protokolo versija. Pagal nutylėjimą palaiko aktyvius susijungimus, kurie puikiai veikia ir jungiantis per proxy serverį. Leidžia išsiųsti keletą užklausų vienu metu, taip pagreitinant duomenų persiuntimą vartotojui. Įmanoma identifikuoti host vardą. Naršyklė siunčia Host: www.xxx.com protokolo antraštėje (HEADER) kiekvienoje užklausoje. Tai pagreitina susisiekimą, jeigu įrenginyje yra paleisti keli virtualūs tinklo serveriai. Naudojant šį protokolą, turinys gali būti pateikiamas įvairiais formatais: PostScript, PDF, arba kaip paprastas tekstas.

HTTPS yra saugi HTTP versija.


Naudota literatūra