Upload
sarah-todd
View
57
Download
0
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
HTTP protokolas
Dainius ČetrauskasIFK-42006-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. Tarp paplitusių protokolų: FTP, NNTP, SMTP... HTTP protokolas yra dažniausiai naudojamas. HTTP protokolas pagrįstas užklausų/atsakymų apsikeitimu tarp kleinto ir serverio.
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.
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.
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>
HTTP užklausų sintaksė
[METH] [REQUEST-URI] HTTP/[VER]
[fieldname1]: [field-value1]
[fieldname2]: [field-value2]
...
Kliento užklausos sintaksė:
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:
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ė:
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
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.
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.
HTTP užklausų metodai
CONNECTŠis metodas paprastai yra naudojamas sukurti tuneliuotam susijungimui, per kurį gali būti perduodamas šifruotas SSL srautas.
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.
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
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.)
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
HTTP protokolas. URL encoding. Pavyzdys
www.kazkas.org/aaa bbb\ccc~bla
www.kazkas.org/aaa%20bbb%5Cccc%7Ebla
“ “ -> %20“\” -> %5C“~” -> %7E
HTTP protokolas
Informacijos šaltiniai:
http://www.w3.org/Protocols/http://en.wikipedia.orghttp://www.blooberry.com/indexdot/html/topics