18
HTTP protokolas Dainius Četrauskas IFK-4 2006-11-08

HTTP protokolas

Embed Size (px)

DESCRIPTION

HTTP protokolas. Dainius Četrauskas IFK-4 2006-11-08. HTTP protokolas. Hyper Transfer Protocol (HTTP) – tai programinio lygio protokolas naudojamas informacijos mainams žiniatinklyje (WWW). Pagrindinis šio protokolo tikslas buvo suteikti galimybę skelbti ir peržiūrėti HTML puslapius. - PowerPoint PPT Presentation

Citation preview

Page 1: HTTP  protokolas

HTTP protokolas

Dainius ČetrauskasIFK-42006-11-08

Page 2: HTTP  protokolas

HTTP protokolas.

Hyper Transfer Protocol (HTTP) – tai programinio lygio protokolas naudojamas informacijos mainams žiniatinklyje (WWW). Pagrindinis šio protokolo tikslas buvo suteikti galimybę skelbti ir peržiūrėti HTML puslapius. Tarp paplitusių protokolų: FTP, NNTP, SMTP... HTTP protokolas yra dažniausiai naudojamas. HTTP protokolas pagrįstas užklausų/atsakymų apsikeitimu tarp kleinto ir serverio.

Page 3: HTTP  protokolas

HTTP protokolo versijos

HTTP 0.9Nebepalaikoma. Palaiko tik GET užklausą. Nepalaiko antraščių

(headers). Kadangi nepalaikomas POST metodas, klientas serveriui gali perduoti labai mažai informacijos.

HTTP 1.0Vis 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ūvio/konteksto informacijos.

Page 4: HTTP  protokolas

HTTP protokolo versijos

HTTP 1.1Einamoji 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’o vardą. Naršykė siunčia Host: www.which.one protokolo galvutėje header kiekvienoje užklausoje. Tai pagreitina susisiekimą, jei mašinoje sukasi keli virtualūs web serveriai.Naudojant šį protokolą, turinys gali būti pateikiamas įvairiais formatais: PostScript, PDF, arba tiesiog kaip paprastas tekstas.

Page 5: HTTP  protokolas

HTTP 1.1 pavyzdys

$telnet 209.85.129.99 80Trying 209.85.129.99...Connected to 209.85.129.99.Escape character is '^]'.GET / HTTP/1.1HOST: www.google.lt

HTTP/1.1 200 OKCache-Control: privateContent-Type: text/htmlSet-Cookie: PREF=ID=40bd7c2c921c6ab3:TM=1162931530:LM=1162931530:S=L3Pbcv7-v8RliRvc; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.ltServer: GWS/2.1Transfer-Encoding: chunkedDate: Tue, 07 Nov 2006 20:32:10 GMT

<html></html>

Page 6: HTTP  protokolas

HTTP užklausų sintaksė

[METH] [REQUEST-URI] HTTP/[VER]

[fieldname1]: [field-value1]

[fieldname2]: [field-value2]

...

Kliento užklausos sintaksė:

Page 7: HTTP  protokolas

HTTP užklausų sintaksė

GET / HTTP/1.1

Host: www.google.lt

User-Agent: User-Agent: Opera/9.02 (Windows NT 5.1; U; en)

Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain

Accept-Language: en-us,en;q=0.5

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

Keep-Alive: 300

Connection: keep-alive

Cookie: PREF=ID=5a52155dae6c60d6:TM=1162195354:LM=1162195354:S

Cache-Control: max-age=0

Kliento užklausos pavyzdys:

Page 8: HTTP  protokolas

HTTP užklausų sintaksė

HTTP/ [VER] [CODE] [TEXT]

Field1: Value1

Field2: Value2

...

[Dokumento turinys]

Pirma eilutė rodo HTTP versiją, po to seka trijų skaitmenų skaičius(HTTP būklės kodas) ir priežąsties frazė, suprantama žmonėms. Dažnai tai būna kodas 200, kas reiškia viskas tvarkoje.

Po pirmos eilutės seka eilė eilučių, vadinamų galvute, kuriose yra informacija apie dokumentą. Galvutės baigiasi tuščia eilute, po kurios seka dokumento turinys

Serverio atsakymo sintaksė:

Page 9: HTTP  protokolas

HTTP serverio atsakymų kodai.

200: OK201: Created202: Accepted203: Non-Authoritative Information204: No Content205: Reset Content206: Partial Content207: Multi-Status400: Bad Request401: Unauthorized 402: Payment Required 403: Forbidden404: Not Found405: Method Not Allowed500: Internal Server Error501: Not Implemented502: Bad Gateway503: Service Unavailable504: Gateway Timeout

Page 10: HTTP  protokolas

HTTP užklausų metodai

HEADPanaudojus šią užklausą vykdoma beveik tokia pati operacija kaip ir naudojant GET užklausą, tačiau parsiunčiamas ne visas turinys, o tik <head></head> antraštė. Tai naudinga norinti pasiimti meta duomenis.

GETPlačiausiai naudojamas metodas. Jį panaudojus, klientui parsiunčiamas nurodytas resursas.

POSTIš HTML formos nusiunčia duomenis nurodytam šaltiniui.

Page 11: HTTP  protokolas

HTTP užklausų metodai

PUTNusiunčia serveriui nurodytą resursą.

DELETEIštrina nurodytą resursą.

TRACENusiunčia atgal gautą užklausą. Tokiu būdu klientas gali matyti tarpinius serverius, per kuriuos keliauja užklausa.

OPTIONS Sugražina metodų, kuriuos palaiko serveris, sąrašą. Gali būt naudojamas tikrinti serverio funkcionalumui.

Page 12: HTTP  protokolas

HTTP užklausų metodai

CONNECTŠis metodas paprastai yra naudojamas sukurti tuneliuotam susijungimui, per kurį gali būti perduodamas šifruotas SSL srautas.

Page 13: HTTP  protokolas

HTTP metodų saugumas

GET, HEADŠie metodai apibūdinami kaip saugūs, nes jie gali būti panaudoti tik informacijos gavimui iš serverio, nepadarant jokių pakeitimų pačiam serveryje.

POST, PUT, DELETENesaugūs metodai. Jais gali būt išsiunčiami vartotojo duomenys, bei atliekami tam tikri pakeitimai web serveryje. Todėl rekomenduojama, kuriant tinklalapius tokius metodus atvaizduot ne kaip link’us, bet mygtukų pagalba, kad vartotojas suvoktų galimas pasekmes.

Page 14: HTTP  protokolas

HTTP protokolas. GET metodas

GET metodas gali būti naudojamas tam tikrų užklausą nusakančių parametrų perdavimui.GET gali persiųsti serveriui nedidelį duomenų kiekį. Tai yra tais atvejais, kai užklausos URI nėra failas, o pavyzdžiui specifinė užklausa specifinei duomenų bazei.CGI scriptui irgi galima persiųsti duomenis naudojant GET užklausą; duomenys tokiu atveju yra nurodomi po ? simbolio. Pavyzdžiui:

GET /path/script.cgi?field1=value1&field2=value2 HTTP/1.0

Tai “URL-encoded” duomenų pavyzdys. Tai naudojama esant nedideliems duomenų kiekiams. Kitais atv naudotinas POST metodas

Page 15: HTTP  protokolas

HTTP protokolas. URL encoding.

URL specifikacija (RFC 1738, Dec. '94) pasižymi ta problema, kad ji riboja URL naudojamų ženklų kiekį tam tikra US-ASCII simbolių aibe: "...Only alphanumerics [0-9a-zA-Z], the special characters "$-_.+!*'()," [not including the quotes - ed], and reserved characters used for their reserved purposes may be used unencoded within a URL.“HTML, iš savo pusės leidžia visą rinkinį simbolių, nusakomų ISO-8859-1 (ISO-Latin) HTML4 išplečia leidžiamus simbolius įtraukdama ir aibę Unicode character set. Ne-ISO-8859-1 simboliai (simboliai, kurių kodas virš FF hex/255 decimal iš Unicode grupės), nėra naudojami užduodant URL, kadangi nėra saugaus būdo, kuris leistų nusakyti simbolių rinkinį nusakant URL [RFC2396.]

URL gali būti koduojami visur HTML dokumente, kada URL yra nurodoma importui kažkurio objekto (A, APPLET, AREA, BASE, BGSOUND, BODY, EMBED, FORM, FRAME, IFRAME, ILAYER, IMG, ISINDEX, INPUT, LAYER, LINK, OBJECT, SCRIPT, SOUND, TABLE, TD, TH, ir TR elementams.)

Page 16: HTTP  protokolas

HTTP protokolas. URL encoding.

Character (Hex)

Space 20

Quotation marks'Less Than' symbol ("<")'Greater Than' symbol (">")

223C3E

'Pound' character ("#") 23

Percent character ("%") 25

Misc. characters:   Left Curly Brace ("{")   Right Curly Brace ("}")   Vertical Bar/Pipe ("|")   Backslash ("\")   Caret ("^")   Tilde ("~")   Left Square Bracket ("[")   Right Square Bracket ("]")  Grave Accent ("`")

7B7D7C5C5E7E5B5D60

Page 17: HTTP  protokolas

HTTP protokolas. URL encoding. Pavyzdys

www.kazkas.org/aaa bbb\ccc~bla

www.kazkas.org/aaa%20bbb%5Cccc%7Ebla

“ “ -> %20“\” -> %5C“~” -> %7E

Page 18: HTTP  protokolas

HTTP protokolas

Informacijos šaltiniai:

http://www.w3.org/Protocols/http://en.wikipedia.orghttp://www.blooberry.com/indexdot/html/topics