1 / 46

HTTP

HTTP. pratybos. Hypertext Transfer Protocol (HTTP ). HTTP yra aplikacinio lygio protokolas, naudojantis TCP ir tarnaujantis paskirstytoms, bendradarbiaujančioms, besikeičiančiom hipermedia informacinėm sistemom.

Download Presentation

HTTP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. HTTP pratybos

  2. Hypertext Transfer Protocol (HTTP) HTTP yra aplikacinio lygio protokolas, naudojantis TCP ir tarnaujantis paskirstytoms, bendradarbiaujančioms, besikeičiančiom hipermedia informacinėm sistemom. Nors WWW naršyklės palaiko daug protokolų, kaip pavyzdžiui FTP, NNTP, SMTP, bei kitus, HTTP yra dažniausiai naudojamas. Egzistuoja kelios HTTP versijos. Version 1.0 ( HTTP/1.0 - RFC1945 ) ir versija 1.1 ( HTTP/1.1 - RFC2616 ) yra dažniausiai šiandien naudojamos. HTTP yra pagrįstas užklausų/atsakymų persiuntimais, realizuojamis TCP protokolu.

  3. Resursas HTTP naudojamas resursų perdavimui, ne vien failų. Resursas yra tam tikras informacijos kiekis, kurį identifikuoja URL. Dažniausiai sutinkamas resursas tai failas, tačiau resursas taip pat gali būti dinamiškai generuojamas objektas, pavyzdžiui – CGI skripto išvedimas,

  4. HTTP paskirtis • HTTP protokolas skirtas web puslapių siuntimui ir gavimui bei tam tikriems serverių veiksmams. • Norėdami pamatyti dokumentą, esantį kažkur web mes turime žinoti jo URL. • Be to reikalinga naršyklė, kuriai ir pateikiamas šis URL. • Naršyklė negali negali perskaityti dokumento tiesiai iš disko, nes tas diskas yra kažkur kitame kontinente. Tam, kad jūs galėtumėte perskaityti tą dokumentą iš kito kompiuterio , tame kompiuteryje turi suktis webserveris. Web serveris tai tiesiog kompiuterine programa kuri laukia (klausosi)ateinančių užklausų iš naršyklių ir jas vykdo.

  5. Naršyklė-serveris Kas gi atsitinka, kai naršyklė sukontaktuoja su serveriu ir užprašo, kad serveris išsiųstų jam dokumentą? Serveris pateikia atsakymą, kuris turi šį dokumentą ir naršyklė parodo jį vartotojui. Serveris taip pat pasako naršyklei, kokio tipo tas dokumentas yra (HTML failas,PDF failas, ZIP failas ir t.t.) taigi naršyklė gali parodyti dokumentą naudodamasis atitinkama programa kuri sukonfigūruota šio tipo dokumentams.

  6. Naršyklė Naršyklė parodys HTML dokumentus. Jei yra nuorodos į paveikslus, java apletus garsinius klipus ir jei naršyklė sukonfigūruota parodyti juos, ji užprašys jų iš serverio, kuriame jie yra(paprastai iš to paties serverio ir kur buvo dokumentas, bet ne visada). Tai bus atskiros užklausos ir jos uždės papildomą apkrovimą serveriui ir tinklui. Tada vartotojas nurodo naują nuorodą ir ciklas prasideda iš naujo.

  7. Tiek užklausos, tiek atsakymai yra pateikiami formate, kurį nusako Hiper Text Transfer Protokolas. HTTP apsprendžia ką naršyklė ir serveris pasako viens kitam, o ne kaip jie komunikuoja. Realus darbas pernešant bitus ir baitus per tinklą yra vykdomas TCP ir IP. Bet kokia programinės įrangos programa, kuri atlieka veiksmus panašius į naršyklės( gauna dokumentus iš serverio) yra vadinama klientine programa (tinklinėj terminalogijoj) arba vartotojo agentu(user agent) naudojant web terminalogiją.

  8. Naršyklės veiksmai: Step1.URL nagrinėjimas Pirmas žingsnis, kurį naršyklė privalo atlikti – tai peržiūrėti URL naujo dokumento, nustatant, kaip gi gauti naują dokumentą. Dauguma URL turi šią bazinę formą: “protokolas://serveris/užklausos-URI”. Protokolo dalis nusako serveriui, kokio dokumento jūs norite ir kaip jį gauti. Serverio dalis pasako naršyklei su kokiu serveriu sukontaktuoti ir užklausos URI yra vardas, kurį naudoja web serveris dokumento identifikavimui.

  9. Serverio direktorijos, failai Serverį instaliuojant paprastai jis yra sukonfigūruojamas naudoti tam tikrą direktoriją diske naudojimui kaip savo root direktoriją ir čia paprastai yra failas vardu “index.html”( kiekvienai direktorijai). Tai reiškia, kad jei jūs prašote iš serverio informacijos, nurodydami tik jo adresą arba jo katalogą,(root --- “/” )jūs gausite failą index.html iš serverio root direktorijos. Jei prašome /ddd/bar.html gausim bar.html failą iš ddd katalogo.  Serveryje gali būti nustatyta, kad /ddd/ direktorija – būtų atspindima (set up to map ) kažkur kitur diske arba gali būti naudojamos serverio-pusės programos atsakymui į visas užklausas, kurios prašo šios direktorijos. Serveris net neturi sulyginti užklausas su direktorijos struktūra iš viso, bet gali naudotis kita schema.

  10. Dokumento gavimas. GET yra dažniausias užklausos tipas. GET užklausa paprastai reiškia “ atsiųskite man šį dokumentą” ir atrodo taip “GET document_path HTTP/version". Užklausoje nurodžius URL taip: "http://www.yahoo.com/" document_path būtų "/", ir "http://www.w3.org/Talks/General.html" būtų "/Talks/General.html".

  11. Naršyklės veiksmai: Step2. Užklausos persiuntimas Dažniausiai protokolas yra “http”. Dokumento gavimui per HTTP , naršyklė perduoda sekančią užklausą serveriui: “GET /request-URI HTTP/version” kur versija nusako serveriui kuri HTTP versija yra naudojama.  Svarbu pažymėti tai, kad ši užklausoseilutė yra viskas, ką serveris mato. Taigi serveriui yra visai nesvarbu, ar ši užklausa yra atėjusi iš naršyklės, nuorodų tikrintojo, paieškos roboto ar jūs esate surašę ranka. Jis vykdo užklausą ir grąžina atsakymą.

  12. Kliento atsiųsta užklausa. Užklausos forma: [METH] [REQUEST-URI] HTTP/[VER] [fieldname1]: [field-value1] [fieldname2]: [field-value2]  [request body, if any]

  13. Step3. Serverio atsakymas Kai serveris gauna HTTP užklausą jis atranda dokumento saugojimo vietą ir grąžina jį. Tačiau HTTP atsakymas turi būti tam tikro formato. Jis atrodo taip: HTTP/ [VER] [CODE] [TEXT] Field1: Value1 Field2: Value2 ... Dokumento turinys čia.... 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

  14. Standartinė HTTP užklausos procedūra (nevertinant proxy, ugniasienių, gateway) yra: • Sukurti TCP susijungimą su hostu, kurį užduoda URL ir standartiniu portu (skaitant, kad WWW serveris klausosi tame taške). Jei joks hostas nėra nurodomas URL, jungtis prie lokalaus hosto, jei porto numeris nenurodomas, jungtis prie 80 porto. • Pasiųsti HTTP užklausą, pav, GET /index.html HTTP/1.0 • Gauti užprašytą dokumentą iš WWW serverio. • Uždaryti TCP susijungimą.(HTTP susijungimo uždarymas nėra tiksliai apibrėžiamas). Ši veiksmų schema gali būti pratestuota standartinėm priemonėm: • Vykdomas telnet į WWW serverį, pav.,: telnet www.dslab.tuwien.ac.at 80 • Pateikiama užklausa, po kurios seka du <CRLF> (enter), pav., GET / HTTP/1.0<CRLF><CRLF>

  15. telnet www.dslab.tuwien.ac.at 80 Trying 128.131.172.54... Connected to www.dslab.tuwien.ac.at. Escape character is '^]'. GET / HTTP/1.0 HTTP/1.1 200 OK Date: Mon, 16 Dec 2002 07:31:16 GMT Server: Apache/1.3.12 (Unix) tomcat/1.0 Last-Modified: Son, 15 Dec 2002 14:57:00 GMT ETag: "fc00-2b03-3c34713c" Accept-Ranges: bytes Content-Length: 11011 Connection: close Content-Type: text/html <html> <head> <title> Po kiekvienos užklausos naršyklė išnagrinėja atsakymą, ar nereikalingos papildomos užklausos įdėtiems paveiksliukams, Java kodams ir t t. Šių elementų parsisiuntimas susijęs su naujomis HTTP užklausomis.

  16. HTTP (1.0)trūkumai ir problemos Problema gaunasi tame, kad jei puslapyje yra daug įdėtų elementų, šių elementų užprašymas yra neefektyvus, nes: • Reikia sukurti susijungimą su nutolusiu hostu • Nusiųsti užklausą į nutolusį hostą • Išgauti dokumentą, paveiksliuką,... iš serverio • Serveriui uždaryti susijungimą Pav., jei vidutinis HTML puslapis turi 10 paveiksliukų ir Java apletą, tai reikės mažiausiai 12 užklausų, ty. 12 TCP susijungimų, net jei susijungimai gali būti pakartotinai panaudoti( jei elementai randasi tame pačiame serveryje). Jei Java apletai yra saugomi archyviniame faile (.jar), liekviena Java apletoklasėreikalaus atskiros užklausos.

  17. HTTP (1.0)trūkumai ir problemos Kita problema susijusi su HTTP kyla iš HTTP veiklosscenarijaus (užklausa-atsakymas). Jei į sesiją orientuotas servisas kaip kad duomenų bazės yra permetamas į Web, jis konfliktuoja su HTTP taikoma schema, kadangi šis protokolas veikia neįsimindamasbūvio. HTTP nėra sesijos koncepcijos. HTTP neišlaiko būvio/konteksto informacijos. Kiekviena HTTP užklausa yra pilnai savarankiška. Nežiūrint to sesijos tipo servisas kartais turi būti palaikomas.

  18. HTTP/1.1 patobulinimai Hostname identification–hosto vardo identifikacija Naršykė siunčiaHost: www.which.one protokolo galvutėje header kiekvienoje užklausoje. Tai pagreitina susisiekimą, jei mašinoje sukasi keli virtualūs web serveriai,pav.,web serveriai www.myfirstvirtual.at ir www.mysecondvirtual.at abu sukasi toje pačioje mašinoje. Content negotiation- turinio derybos Dokumentas gali būti pateiktas įvairiais formatais, pvz., plain text, PostScript, Portable Document Format (PDF), o paveiksliukai įvairių rezoliucijų. Naršyklės gali derėtis su WWW serveriu, kokio formato jos pageidauja.

  19. HTTP/1.1 patobulinimai Persistentconnections-išliekantys susijungimai HTML puslapiai nėra paprastai sudaryti vien iš HTML teksto, bet turi paveiksliukus, apletus ir t t. HTTP/1.0 tai reikštų, kad atskiras TCP/HTTP susijungimas yra reikalingas kiekvienam šiam elementui, sudarančiam puslapį. Esant išliekantiems susijungimams vienas susijungimas gali būti panaudojamas keliems persiuntimams. Byte ranges– baitų diapazonas Ši koncepcija leidžia klientui nusakyti , kurio baitų diapazono jis nori iš dokumento, tai naudinga esant ilgiems dokumentams. Proxy support - proxy palaikymas Proxy cach’ai turi tą problemą, kad jie nežino, kaip ilgai reikia laikyti atitinkamą dokumentą cach’e. HTTP/1.1 leidžia pasirūpinti šioms dokumentų validumo(galiojimo) problemomis.

  20. Metodai HTTP/1.0aprašo tik GET, HEAD ir POST metodus, kurių pakanka paprastai peržiūrai. Tačiau galima norėti taip pat naudoti HTTP redagavimui ir palaikymui failų tiesiai serveryje, vietoj to, kad daryti tai naudojant FTP. HTTP/1.1 turi tam eilę naujų metodų: Tai PUT DELETE metodai. PUT PUT perkelia naują resursą (failą) į serverį pagal nurodytą URL. Tiksliai kas yra daroma serveryje nėra nusakoma HTTP/1.1. PUT užklausos nėra cashuojamos. DELETE Prašoma ištrinti resursą pagal nurodytą URL.

  21. HTTP užklausa ( joje exp1 | exp1 reiškiaexp1 arbaexp2 , [ exp ] žymi nebūtinąexp ir ( exp )* žymi bet kokį kiekį pasikartojančių exp įskaitant ir nulinį). request = request-line <CRLF> (general-header|request-header|entity-header)* <CRLF> [entity-body] request-line = GET <Space> absolute-url <Space> (HTTP/1.0|HTTP/1.1) absolute-url = // the path of an absolute URL general-header = // can be ignored; some non-empty lines of information, // where each line is terminated by a single <CRLF> request-header = // contains the 'Host' parameter in an HTTP 1.1 request. // e.g., 'Host: www.dslab.tuwien.ac.at' // all other entries can be ignored; // some non-empty lines of information, // where each line is terminated by a single <CRLF> entity-header = // can be ignored; some non-empty lines of information, // where each line is terminated by a single <CRLF> Note that the HTTP request header section has to end with two CRLF!

  22. HTTP atsakymas response = status-line <CRLF> general-header response-header entity-header <CRLF> [entity-body] status-line = HTTP/1.1 <Space> status-code+reason-phrase status-code+reason-phrase = 200 <Space> OK | 400 <Space> Bad Request | 404 <Space> Not Found | 500 <Space> Internal Server Error | 501 <Space> Not Implemented general-header = Date: <Space> date <CRLF> Connection: <Space> close <CRLF> response-header = Server: <Space> vendor-string <CRLF>

  23. HTTP atsakymas entity-header = Content-Length: <Space> integer-greater-or-equal-0 <CRLF> Content-Type: <Space> text/html <CRLF> Last-Modified: <Space> date <CRLF> [ Cache-Control: <Space> no-cache <CRLF> ] // only for dynamic pages [ Expires: <Space> date <CRLF> ] // only for dynamic pages entity-body = // kliento užprašyto dokumento turinys date = // data formatu kurį nusako RFC822 ir RFC1123 vendor-string = // serverio identifikacija Pranešimo kūnas pradedamas po pirmos tuščios eilutės. (du CRLF!).

  24. Atsakymas Galvučių: general-header , response-header ir entity-header eilės tvarka yra nesvarbi. Reikiamos eilutės tiesiog turi būti pateiktos atsakyme. status code HTTP atsakyme praneša kokiu kodu baigėsi užklausa. Atsakymo galvutės suteikia tam tikrą informaciją apie serverį, susijungimą, ir pranešimokūną, kuris iš serverio grąžinamas klientui. Kitos galvutės teikia informaciją apie patį dokumentą. Jos leidžia klientui nustatyti dokumento dydį iš anksto, parodo dokumento charakteristikas, susijusias su jo saugojimu cach’e.

  25. Date nusako datą ir laiką, kada atsakymas buvo sugeneruotas. Connection leidžia siuntėjui nusakyti su atitinkamu susijungimu susijusias opcijas, jei susijungimas neišlieka šio lauko reikšmė būna “close”. Server indikuoja HTTP serverio pardavėjo vardą. Content-Length indikuoja pranešimo-kūno ilgį baitais. Content-Type indikuojaperduodamo klientui pranešimo turinio media tipą. Last-Modified indikuoja datąir laiką kada pagal serverį resursas buvo paskutinį sykį modifikuotas. Tiksli reikšmė šio lauko priklauso nuo serverio ir originalaus resurso tipo. Failų atv. tai sutaps su jų paskutiniu modifikavimo laiku. Pranešimams su dinamiškai įtraukiamomis komponentėmis tai nusakys šios komponentės. Cache-Control cach’avimo kontroleivisų HTTP cach’ų tarp kliento ir HTTP serverio (įskaitant ir kliento cach’ą). Tai naudinga konfidencialiems dokumentams, arba tuo atveju, jei dokumentas yra generuojamas dinamiškai ir keičiasi sulig kiekviena užklausa. Ši galvutė vartojama su dinaminiais puslapiais. Expires pateikiadatą/laiką po kurio atsakymas laikomas pasenusiu. Pasenęs atsakymas neturi būt išrenkamas iš cach’o prieš tai neatlikus jo sutikrinimo su serveriu. Expires lauko buvimas dar nesako, kad originalus resursas pasikeis ar nustos egzistavęs tuo momentu. Pažymėjimui to, kad atsakymas yra “pasibaigęs” Web serveris Expires lauke nusako tokį patį laiką kaip Date galvutės lauke.

  26. Turinio tipas Turinio –tipo lauką naudoja naršyklėišsiaiškindama kokiame formate dokumentas yra gautas. HTML tekstas yra identifikuojamas reikšme “text/html”, paprastas tekstas- “text/plain”, GIF kaip “image/gif” ir t t. To pasekoje naršyklė gali suprasti, kokios rūšies dokumentą ji gauna atsakyme.

  27. tipinis HTTP/1.1 pavyzdys user@host:~% telnet www.infosys.tuwien.ac.at 80 Trying 128.131.172.91... Connected to www.infosys.tuwien.ac.at. Escape character is '^]'. GET /Teaching/Courses/RN.html HTTP/1.1 Host: www.infosys.tuwien.ac.at HTTP/1.1 200 OK Date: Mon, 16 Dec 2002 07:59:02 GMT Server: Apache/1.3.14 (Unix) tomcat/1.0 PHP/4.0.3pl1 mod_ssl/2.7.1 OpenSSL/0.9.4 Last-Modified: Tue, 23 Oct 2001 09:54:46 GMT ETag: "67987-2095-3bd53e66" Accept-Ranges: bytes Content-Length: 8341 Content-Type: text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> ... </HTML>

  28. Pastabos: Galvutė “ Host”, esanti užklausoje yra būtina pagal HTTP/1.1. Ši galvutė reikalinga visose HTTP/1.1 užklausose. Ją praleidus grąžinama būklės kodas "400 Bad Request". Tai reikalinga kadangi serveriai gali turėt kelis virtualius serverius kitais vardais. HTTP/1.0 užklausoms host laukas nėra tikrinamas.

  29. Turinio derinimas(negotiation) Tarkim, jūs išgirdot apie naują paveikslų formatą PNG ir norite jį panaudoti vietoje senesnio GIF. Tačiau GIF yra palaikomas visų broeserių o PNG yra palaikomas tik moderniuose. Taigi jums pakeitus GIF į PNG tik ribotas vartotojų skaičius matys paveiksliukus. Problemos išvengimui, galima padaryt nuorodą į pavekslų padėjimo vietą (lai tai bus /ddd/imgbar). Tada, kai naršyklės užprašys šio paveiksliuko, pamatę jų lokaciją IMG elemente, jie pridės Acceptgalvutės lauką užklausoje (dauguma naršyklių daro tai su visom užklausom) Accept galvutė bus nustatyta į “image/*, image/png” kas reikštų: Aš bevelyčiau PNG paveiksliukų, bet jei jūs negalite išsiųsti jų, tai siųskite man tokius paveiksliukus, kokius turite. Taip yra standartais pagrįstame pasaulyje. Bet yra visaip. Dauguma naršyklių paprasčiausiai siųs galvutę “Accept: */*” kas realiai nepasako serveriui nieko iš viso. Tai ateity turi keistis.

  30. Užklausa su visom galvutėm: GET /log HTTP/1.0 Connection: Keep-Alive User-Agent: Mozilla/4.03 [en] (X11; I; HP-UX B.10.20 9000/777) Host: w0:4711 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* Accept-Language: en Accept-Charset: iso-8859-1,*,utf-8

  31. URL-encoding 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 URInė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.

  32. URL-encoding HTML naudoja URL-encoded duomenis GET arba POST užklausose. Duomenys yra formoje name-value • Visi “nesaugūs” simboliai yra konvertuojami tiek vardų tiek reikšmių lauke į "%xx", kur "xx" yrasimbolio ascii reikšmė( hex). “nesaugūs" simboliai tai=, &, %, +, neatspausdinami simboliai, ir bet kokie kiti, kuriuos norite užkoduoti– nieko blogo, jei užkoduosit daugiau. Paprastumo dėlei galima užkoduoti visus nealfabetinius simbolius. • Visi tarpai keičiami į pliusus.. • Vardų reikšmių eilutė padaroma ištisa name1=value1&name2=value2&name3=value3 • Tokia eilutė yra POST pranešimo kūnas arba yra įdedama į GET Pav, vardas "name" yra nustatomas į "Lucy", ir vardas "neighbors" į"Fred & Ethel", URL-encoded formojeduomenys atrodys taip:name=Lucy&neighbors=Fred+%26+Ethel(ilgis 34 baitai)

  33. URL Encoding(arba: kas tie "%20" kodai, esantys URL?') URL specifikacija (RFC 1738, Dec. '94) pasižymi ta problema, kad ji ribojaURL 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, irTR elementams.)

  34. Kokie simboliai turi būti koduojami ir kodėl? ASCII Control characters Why:Šie simboliai negali būti spausdinami. Characters:Includes the ISO-8859-1 (ISO-Latin) character ranges 00-1F hex (0-31 decimal) and 7F (127 decimal.) Non-ASCII characters Why:These are by definition not legal in URLs since they are not in the ASCII set. Characters:Includes the entire "top half" of the ISO-Latin set 80-FF hex (128-255 decimal.) "Reserved characters" Dollar ("$") Ampersand ("&"),Plus ("+"),Comma (","),Forward slash/Virgule ("/") Colon (":"),Semi-colon (";"),Equals ("="),Question mark ("?") 'At' symbol ("@")     Why: URLs use some characters for special use in defining their syntax. When these characters are not used in their special role inside a URL, they need to be encoded. "Unsafe characters"Why: Some characters present the possibility of being misunderstood within URLs for various reasons. These characters should also always be encoded. URL encoding of a character consists of a "%" symbol, followed by the two-digit hexadecimal representation (case-insensitive) of the ISO-Latin code point for the character. Example • Space = decimal code point 32 in the ISO-Latin set. • 32 decimal = 20 in hexadecimal • The URL encoded representation will be "%20"

  35. MIME formatas MIME formate, media tipasirkodavimas yra nusakomi taip: Content-Type: text/html; charset=iso-8859-1Čia media tipas yratextir potipis(subtype) yrahtml, simbolių kodavimas yraISO 8859-1. Gavus pranešimą programa turi automatiškai išrinkti informaciją apie kodavimą, nurodytą atitinkamoje galvutėje ir atitinkamai interpretuoti pranešimo kūną. Jei programa blogai atlieka šį pakeitimą, matomi keisti simboliai. ASCIIsimbolių tai neliečia – jie bus teisingi, bet vietoje tarkim Äatsirasti gali simbolisf.

  36. Kodavimas Kai tekstiniai duomenys yra siunčiami per tinklą, siuntėjas ir gavėjas turi priimti bendrąsusitarimą liečiantį simbolių kodavimą. Optimaliu atveju tai padaro programinė įranga automatiškai, tačiau vartotojai taip pat turi tuo pasirūpinti. Svarbu įsitikinti, kad jūsų naudojama programinė įranga, susijusi su Internetinėm tarnybom nusakytų teisingai simbolių kodavimą atitinkamose galvutėse. Svarbūs du momentai: turi būti galvutė ir ji turi atspindėt panaudotą kodavimą. Kodavimas turi būti vienas iš tų, kurie yra plačiai vartojami, kad jį suorastų priimančios pusės programinė įranga. Kartais daromas kompromisas – panaudojamas ne plačiai paplitęs kodavimas tikslu, kad duomenys iš vis praeitų.

  37. Kodavimas Kompiuteriuose ir duomenų perdavime tarp jų,t.y. skaitmeniniame duomenų apdorojime ir perdavime, duomenis įprasta vaizduoti octetais. Octetas yra duomenų vienetaskurio skaitmeninė reikšmė yra nuo 0 iki 255. Skaitmeninės reikšmės yra atvaizduojamos 10-tainėj, aštuntainėj(octal) ar šešioliktainėj(hex) sistemoj. Daromi susitarimai, nusakantys kaip octetai ar jų seka atspindi duomenis. Tai nusako standartai. Yra žinoma eilė skirtingų standartų, tokių kaip gerai-žinomasASCIIkodavimas, ISO Latin familykodavimai. Teisinga simbolinių duomenų interpretacija reikalauja tam tikrų žinių apie atitinkamus kodavimus. Pvz ISO Latin 1 be įprastinių ASCII simbolių, turi dar papildomų simbolių, atitinkančių raides iš Western Europe kalbų, bei keletą specialių simbolių. Šie simbolai atitinkakodus 160 - 255,

  38. Cookies: HTTP būvioinformacijos saugojimas Kai serveryje yra naudojama kažkokia funkcija, kuri eilėje susijungimų su klientu turi atpažinti klientą, ji siunčia nedidelį duomenų kiekį Web klientui, vadinamą“cookie”. cookie turi informaciją, kuri yra svarbi atitinkamai Web aplikacijai, tokia kaip vartotojo vardas, kortelės nr parduotuvėj, vartotojo vardas bei slaptažodis. Klientinė pusė išsaugo šią informaciją savo diske ir ji yra panaudojama sekančiuose susijungimuose su ta aplikacija.

  39. cookies Pavyzdžiui, aplankiusgoto.com, cookie faile atsirado tokia informacija: UserID A9A3BECE0563982D www.goto.com/ Goto.comišsaugojo kliento mašinoje vieną name-value porą. Amazon.comišsaugo šiek tie daugiau informacijos: session-id-time 954242000 amazon.com/ session-id 002-4135256-7625846 amazon.com/ x-main eKQIfwnxuF7qtmX52x6VWAXh@Ih6Uo5H amazon.com/ ubid-main 077-9263437-9645324 amazon.com/

  40. HTTP Proxy HTTP proxytai programa, kuri veikia kaip tarpininkas tarp kliento ir serverio. Ji priima užklausas iš klientų, persiunčia jas nurodytiems serveriams. Atsakymas vėl keliauja pro juos. Taigi proxy turi tiek kliento tiek serverio funkcijų. Proxy serveriai naudojami ir kaip ugniasienės. Kai klientai naudoja proxy, paprastai jie siunčia užklausas į proxy ir jose yra nurodomas pilnas URL. Pavyzdžiui : GET http://www.somehost.com/path/file.html HTTP/1.0 Proxy žino, kur toliau persiųsti užklausą.

  41. HTTP CONNECT Method HTTP protokolaspalaiko eilę kreipimosi metodų, tokių kaip GET, POST, ir CONNECT. CONNECT metodas paprastai yra naudojamas įkurti tuneliuotam susijungimui, per kurį gali būti perduodamas šifruotas SSL srautas. Tačiau nėra saugu skaityti, kad visi CONNECT susijungimo reikalavimai yra iš tikrųjų skirti SSL srautui. Atakuotojai dažnai skenuoja Internetą, ieškodami proxy serverių, besisukančių porte8080ir kituose dažnai naudojamuose portuose, tikslu atrasti proxy serverius, kuriuos galima iš jų pasiekti. CONNECT(host,port) metodas, sukuria "tuneliuotą" susijungimą iš Proxy į paskirties serverį, nusakomą pora host,port. Pradinė intencija buvo sukurti tunelį į porta 443 ( SSL), bet jis taip pat leidžia daryti tunelį į 80 portą( HTTP).

  42. CONNECT Kai kurie proxy apsiriboja tik susijungimu su 443 portu, kai kurie net tikrina, ar srautas, keliaujantis į 443 yra SSL. Aišku, pilnai tai patikrinti sunku. Galima ataka, kai įsiterpiama į susijungimą(man-in-the-middle attack). Reikalingi tikrinimai, ar susijungimas tikrai yra pagal SSL protokolą. Kai kurie proxy nevykdo tikrinimų ir veikia kaip perdavimo šliuzas.

  43. Saugos klausimai CONNECT tuneliavimo mechanizmas realiai yra žemo-lygio f-ja, lyginant su kitais HTTP metodais. Pagal šį metodą proxy neturi įsiterpti į užklausą, o tik ją persiųsti.  SSL tuneliavimo atveju taip yra todėl, kad proxy visai neprivalo žinoti apie URI, į kurią kreipiamasi o tik perduoti tam tikru adresu gautą informaciją: (hostname and port number). Proxy nebūtinai turi tikrinti ar tas protokolas, kurį jis ruošiasi tuneliuoti iš tikrųjų yra tas (SSL pavyzdžiui), todėl vykdant proxy konfigūracijas turi būti apribojami susijungimai tik su tinkamais portais (  443 HTTPS, 563 SNEWS) Portai, kurie turi būti ypač prižiūrimi, tai telnet portas (port 23), SMTP  portas (port 25) ir daug UNIX specifinių servisų portų (512-600).  Leidžiant tokį tuneliavimą, pavyzdžiui į SMTP portus galime suteikti galimybes nekontroliuojamiems   E-mail ("spam") siuntimams.

  44. Saugos klausimai Kadangi dauguma proxy servisų netikrina aplikacijos lygio duomenų HTTP CONNECT metodu atliekant tuneliavimą, beveik bet kuris protokolas, veikiantis TCP-bazėje gali būt persiunčiamas per proxy servisą. Tai sukuria papildomas spragas HTTP anti-virusiniams skenuotojams ir turinio tikrintojams, nes jie netikrina HTTP CONNECT metodu perduodamo turinio. Atakuotojas gali sukelti DoS tipo ataką sudarydamas rekursyvų susijungimą su proxy serveriu. HTTP CONNECT metodas, kaip ir kiti HTTP metodai ir FTP komandos, gali būti išprievartautos sukurti savivališkus TCP susijungimus per pažeidžiamus proxy servisus. Atakuotojas gali panaudoti pažeidžiamą proxy servisąviename tinkle kaip tarpininką skenavimui arba susijungti su su TCP servisais kitame tinkle.Dar blogesnis atvejas gaunasi, kai atakuotojas per pažeidžiamą proxy servisą sukuria susijungimą iš viešo tinklo į vidinį tinklą. Jei proxy servisas leidžia rekursyvius susijungimus, atakuotojas gali sukelti DoS sąlygas išnaudojant resursus pakartotinų susijungimų organizavimui iš proxy į jį patį.

  45. Autentifikacija Serveriuose gali būti nustatyta neleisti priėjimo prie tam tikrų URL, pakol vartotojas nepatvirtino savo identiškumo. Tai gali būt vykdoma pateikiant vartotojo-vardą/slaptažodį arba naudojant kitus metodus. Kai toks puslapis užprašomas serveris paprastai grąžina “401 Not authorized” būvio kodą. Browseriai tokiu atveju paprašo vartotojo vardo ir slaptažodžio, kuriuos vartotojas pateikia(jei žino). Browseris bando vėl, pridėdamas “Autorization” galvutę su vartotojo vardu ir slaptažodžiu. Jei tai yra priimama serverio, resursas yra grąžinamas kaip paprastos užklausos atveju. Jei ne – serveris vėl pateikia 401 kodą.

More Related