osnove http protokola

Upload: ivan-vidovic

Post on 07-Jul-2018

241 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/18/2019 Osnove HTTP Protokola

    1/37

  • 8/18/2019 Osnove HTTP Protokola

    2/37

  • 8/18/2019 Osnove HTTP Protokola

    3/37

    WEB je masivni razgranati klijentsko/poslužiteljski informacijski sustav.

    Brojne aplikacije na Webu izvode se istodobno (pretraživanje, e-mail, FTP, audio-video

    streaming). S ciljem uspostavljanja valjane komunikacije između klijenta i servera,aplikacije moraju koristiti neki od specifičnih protokola aplikacijske razine kao što suHTTP, FTP, SMPT, POP itd.

  • 8/18/2019 Osnove HTTP Protokola

    4/37

    HTTP (Hypertext Transfer Protocol) – možda najpopularniji protokol na WEBu(Internetu)

    • HTTP je asimetrični request-response client-server protokol. HTTP klijent šalje

    zahtjev (request message) na HTTP server. Server vraća odgovor (responsemessage). Drugim riječima, HTTP je pull protokol, klijent dohvaća informacije saservera (umjesto da server šalje ( pushes) informacije klijentu);

    • HTTP je protokol koji ne pamti stanje stateless (statefull – protokol s pamćenjem

    stanja – najčešće postoji oporavak od neuspješnog izvršavanja zadatka).

    • HTTP protokol je aplikacijski protokol koji služi za distribuiranje, hipermedijalneinformacijske sustave. To je generički protokol koji se može koristiti i za noge drugezadatke izvan njegove izvorne upotrebe za hyper tekst, kao što je distribuiranisustav za upravljanje objektima, name server.

    Tipična HTTP konekcija (sesija) se odvija u sljedećim koracima prema slici.

  • 8/18/2019 Osnove HTTP Protokola

    5/37

    Kad god upišemo URL s http oznakom u pretraživač kako bi dohvatili neki web sadržaj,pretraživač pretvara URL u „request message” upućen nekom serveru. Serverinterpretira zahtjev i odgovara odgovarajuću poruku.

  • 8/18/2019 Osnove HTTP Protokola

    6/37

    For example, in the URL http://www.nowhere123.com/docs/index.html, the

    communication protocol is HTTP; the hostname is www.nowhere123.com. The port

    number was not specified in the URL, and takes on the default number, which is TCP

    port 80 for HTTP. The path and file name for the resource to be located is

    "/docs/index.html".

    Other examples of URL are:

    ftp://www.ftp.org/docs/test.txt mailto:[email protected]

    news:soc.culture.Singapore telnet://www.nowhere123.com/

  • 8/18/2019 Osnove HTTP Protokola

    7/37

    As mentioned, whenever you enter a URL in the address box of the browser, the

    browser translates the URL into a request message according to the specified

    protocol; and sends the request message to the server.

    For example, the browser translated the

    URL http://www.nowhere123.com/doc/index.html into the following request

    message:

    Kada http zahtjev stigne do servera, server izvršava jednu od sljedećih aktivnosti:

    1. Server interpretira primljenih zahtjev i mapira ga u datoteku unutar svog

    datotečnog sustava i vraća traženu datoteku klijentu.

    2. Server interpretira zahtjev i mapira ga u program koji se nalazi na serveru, izvršavaprogram i vraća rezultat programa klijentu.

    3. Server ne može izvršiti zahtjev i vraća poruku o grešci

  • 8/18/2019 Osnove HTTP Protokola

    8/37

    Internet pretraživač prima poruku, interpretira poruku i prikazuje sadržaj poruke naprozoru sukladno vrsti sadržaja.

    Najčešći tipovi sadržaja su: text/plain", "text/html", "image/gif", "image/jpeg","audio/mpeg", "video/mpeg", "application/msword", i "application/pdf".

    U stanju mirovanja HTTP server ne radi ništa nego osluškuje ip adrese i portove nakojima osluškuje dolazne zahtjeve. Kada zahtjev stigne, server analizira zaglavljeporuke, i na osnovu zaglavlje primjenjuje pravilo koje je specificirano u konfiguraciji i

    bira priklanu akciju.

  • 8/18/2019 Osnove HTTP Protokola

    9/37

  • 8/18/2019 Osnove HTTP Protokola

    10/37

    Apache HTTP server: je najpopularniji HTTP server. O njegovom razvoju brine se

    Apache Software Foundation (ASF). ASF je softverska udruga otvorenog-koda. Štoznači da je Apache HTTP server besplatan za upotrebi i otvorenog je koda.

    Prvi HTTP server napisao je Tim Berners Lee na CERNU (European Center for Nuclear

    Research) u Ženevi, on je također izumio HTML. Apache je napravljen na NCSA(National Center for Supercomputing Applications, USA) 1995 godine. Ime je

    najvjerojatnije dobio iz činjenice da sadrži jedan dio izvornog koda (ranijeg httpd webservera) plus dodatne zakrpe.

  • 8/18/2019 Osnove HTTP Protokola

    11/37

    Klijent i server komuniciraju slanjem tekstualnih poruka. Klijent šalje: requestmessage, a server uzvraća response message.

    HTTP poruka se sastoji od Message Header i Message Body. Tijelo poruke i zaglavljesu razdvojeni praznom linijom.

    Tijelo poruke je ne obavezno.

  • 8/18/2019 Osnove HTTP Protokola

    12/37

    Request Line:

    Kao što smo već rekli, HTTP koristi klijent/server mrežni model: HTTP klijent otvara

    konekciju i šalje zahtjev HTTP serveru; server zatim vraća odgovor klijentu, koji običnosadrži resurse koji su traženi. Nakon slanja odgovora, server zatvara konekciju. Formatzahtjeva i odgovora su slični i imaju sljedeću strukturu:

    • Linija zahtjeva,

    • Nula ili više linija u zaglavlju,

    • Prazna linija,

    • tijelo poruke koje može biti datoteka, tekst itd. (Ne obavezno).

  • 8/18/2019 Osnove HTTP Protokola

    13/37

    Linija zahtijeva se sastoji od tri dijela koji su odvojeni razmacima (spaces):

    • HTTP Ime metode,

    • Lokalna putanja traženog resursa,

    • Verzija HTTP-a koji se koristi.

    • GET je najkorištenija HTTP metoda.

    • Putanja je dio URL-a nakon imena hosta. Ova putanja se također zove i URI(request Uniform Resource Identifier). URI je sličan URL-u, s tim što je URI opširniji.

    • Verzija HTTP-a dolazi na kraju zahtijeva u formatu "HTTP/x.x.

  • 8/18/2019 Osnove HTTP Protokola

    14/37

    • Umjesto CRLF tolerira se i samo LF.

    • Ime zaglavlja je neosjetljivo na velika/mala slova.

    • Između ":" i vrijednosti može biti bilo koji broj razmaka.

    • linije zaglavlja koje počinju s bjelinama pripadaju prethodnom zaglavlju .

  • 8/18/2019 Osnove HTTP Protokola

    15/37

  • 8/18/2019 Osnove HTTP Protokola

    16/37

  • 8/18/2019 Osnove HTTP Protokola

    17/37

    Allow

    Allow polje zaglavlja prikazuje listu HTTP metoda koje podržavaju resursi na traženoj URI lokaciji. Osnovna svrha je, dakle, da kli jentu jasno prikažekoje metode može da koristi.

    Authorization

    Ovo polje sadrži podatke o autentifikaciji klijenta.

    Content-Encoding

    Kada je ovo polje prisutno, njegova vrijednost pokazuje na koji način je resurs kodiran, kao i način na koji je potrebno izvršiti dekodiranje.ContentEncoding se najviše koristi da bi osigurali sigurnu kompresiju dokumenta, pri čemu se zadržava podešeni kodni sistem.

    Content-Length

    Content-Length prikazuje veličinu tijela poruke, i to u decimalnom broju okteta, to jest u bajtovima.

    Content-Type

    Content-Type polje zaglavlja prikazuje tip resursa koji se šalje klijentu kroz tijelo poruke.

    From

    Ovo polje bi trebalo da sadrži e-mail korisnika koji koristi klijent.

    Last-Modified

    Prikazuje kada je resurs posljednji put izmijenjen odnosno ažuriran.

    Location

    Prikazuje lokaciju resursa koristeći zahtijevani-URI. Za određene odgovore moguće je da ovo polje prikaže URL adresu. Maksimalno  jedna URLadresa se može dobiti kroz ovo polje HTTP zaglavlja.

    Server

    Ovo polje zaglavlja sadrži informacije o softveru koji server koristi da bi obradio zahtev.

    User-Agent

    Ovo polje prikazuje informacije o klijentu, to jest web pregledniku korisnika. Ovo polje se uglavnom koristi u statističke sv rhe, za praćenje grešakau protokolu na različitim klijentima, i slično.

  • 8/18/2019 Osnove HTTP Protokola

    18/37

    Status line

    Prvi redak se naziva Status Line, nakon čega slijedi neobavezno zaglavlje odgovora(eng. response header).

  • 8/18/2019 Osnove HTTP Protokola

    19/37

    Statusna linija ima sljedeću sintaksu:

    HTTP-version status-code reason-phrase.

    HTTP-version: Verzija HTTP protokola koja se koristit za sesiju. (HTTP/1.0 ili HTTP/1.1)

    status-code: troznamenkasti broj koji je generirao poslužitelj, kao rezultat zahtjeva.

    reason-phrase: kratko objašnjenje statusnog koda

    Primjeri najčešćih statusnih kodova i objašnjenja:

    200 OK", "404 Not Found", "403 Forbidden", "500 Internal Server Error".

    Primjer statusne linije:

    • HTTP/1.1 200 OK

    • HTTP/1.0 404 Not Found

    • HTTP/1.1 403 Forbidden - Zabranjen

  • 8/18/2019 Osnove HTTP Protokola

    20/37

  • 8/18/2019 Osnove HTTP Protokola

    21/37

  • 8/18/2019 Osnove HTTP Protokola

    22/37

    HTTP protokol definira nekoliko metoda koje klijent može koristiti za slanje poruke zahtijeva HTTPserveru.

    GET metoda zahtjeva nalaže serveru da klijentu dostavi tražene resurse koje se nalaze na izabranoj URIadresi. Po standardu, zahtjevi koji koriste GET metodu ne bi trebalo da vrše bilo koju drugu operaciju

    osim preuzimanja podataka odnosno resursa.

    Metoda HEAD traži odgovor koji je isti odgovoru dobivenom GET metodom ali bez tijela poruke. Ovomože biti korisno za dohvaćanje meta podataka koji se čuvaju u zaglavlju odgovora a da se pri tome neučitava kompletan odgovor.

    Metoda POST šalje podatke serveru na procesuiranje, najčešće preko HTML formi. Podaci se smještajuu tijelo poruke zahtjeva. Ovim se mogu kreirati novi ili pak ažurirati stari resursi na serveru koji sekasnije mogu preuzeti metodom GET.

    PUT: Ask the server to store the data.

    DELETE metoda briše izabrani resurs na serveru bez bilo kakvog upozorenja.

    TRACE: Ask the server to return a diagnostic trace of the actions it takes.

    Metoda OPTIONS će vratiti spisak metoda koje server podržava za izabranu URL adresu.

    Metode HEAD, OPTIONS i GET su označene kao sigurne metode jer ne vrše nikakve promjene naserveru, tj. dopuštaju samo pregled resursa. Za razliku od njih, metode POST, PUT i DELETE mogudovesti do promjena stanja servera te se zbog toga smatraju nesigurnim.

  • 8/18/2019 Osnove HTTP Protokola

    23/37

  • 8/18/2019 Osnove HTTP Protokola

    24/37

    • Ključna riječ GET je case sensitive i mora biti napisana velikim slovima.

    •   request-URI: specificira točnu putanju do traženog resursa, i mora započeti s root„/”

    • HTTP verzija protokola koja se koristi za sesiju. Ukoliko klijent traži verzijuprotokola koju server ne podržava. Server će obavijestiti klijenta.

    • U zaglavlju zahtijeva klijent može od servera tražiti željeni način isporuke sadržaja.(Kao što je: Accept-Language, jezik koji klijen preferira)

    • Tijelo poruke također nije obavezno. U njemu se može niz upita.

  • 8/18/2019 Osnove HTTP Protokola

    25/37

    In this example, the client issues a GET request to ask for a document named "/index.html"; and negotiates to useHTTP/1.0 protocol. A blank line is needed after the request header. This request message does not contain abody.

    The server receives the request message, interprets and maps the request-URI to a document under its documentdirectory. If the requested document is available, the server returns the document with a response status code"200 OK". The response headers provide the necessary description of the document returned, such as the last-modified date (Last-Modified), the MIME type (Content-Type), and the length of the document (Content-Length).The response body contains the requested document. The browser will format and display the documentaccording to its media type (e.g., Plain-text, HTML, JPEG, GIF, and etc.) and other information obtained from theresponse headers.

    Notes:

    • The request method name "GET" is case sensitive, and must be in uppercase.

    • If the request method name was incorrectly spelt, the server would return an error message "501 Method NotImplemented".

    • If the request method name is not allowed, the server will return an error message "405 Method NotAllowed". E.g., DELETE is a valid method name, but may not be allowed (or implemented) by the server.

    • If the request-URI does not exist, the server will return an error message "404 Not Found". You have to issue a

    proper request-URI, beginning from the document root "/". Otherwise, the server would return an errormessage "400 Bad Request".

    • If the HTTP-version is missing or incorrect, the server will return an error message "400 Bad Request".

    • In HTTP/1.0, by default, the server closes the TCP connection after the response is delivered. If you use telnetto connect to the server, the message "Connection to host lost" appears immediately after the response bodyis received. You could use an optional request header "Connection: Keep-Alive" to request for a persistent(or keep-alive) connection, so that another request can be sent through the same TCP connection to achievebetter network efficiency. On the other hand, HTTP/1.1 uses keep-alive connection as default.

  • 8/18/2019 Osnove HTTP Protokola

    26/37

    Već smo spominjali da se u zaglavlju svakog odgovora u inicijalnoj liniji nalazi statusni kod odgovora. HTTPstatusne kodove odgovora možemo podijeliti u pet grupa:

    200 OK

    Standardan odgovor za svaki uspješan HTTP zahtjev. Odgovor zavisi od korištene HTTP metode zahtijeva. U slučaju

    GET metode, ovaj statusni kod obavještava klijenta da je resurs pronađen i prikazan. Ukoliko je korištena POSTmetoda, status će obavijestiti da su poduzete akcije uspješno izvršene.

    301 Moved Permanently

    Ovaj i svi naredni zahtjevi se preusmjeravaju na novu URL adresu.

    400 Bad Request

    Zahtjev ne može biti procesuiran zbog greške u sintaksi.

    401 Unauthorized

    Slično kao i kod "403 Forbidden" statusnog koda, međutim ovaj kod nam poručuje da bismo mogli pristupitiresursima ukoliko izvršimo autentifikaciju.

    403 Forbidden

    Zahtjev je ispravan ali server odbija da odgovori na. Ovaj statusni kod se pojavljuje kada nisu dozvoljena pravapristupa resursima na serveru.

    404 Not Found

    Traženi resurs nije pronađen na traženoj URL adresi, međutim moguće je da će uskoro biti dostupan ponovo.

    500 Internal Server Error

    Generička poruka o grešci koja se prikazuje kada server nema drugo "objašnjenje" zašto je greška nastala.

  • 8/18/2019 Osnove HTTP Protokola

    27/37

  • 8/18/2019 Osnove HTTP Protokola

    28/37

    Kada HTTP server pošalje odgovor klijentu odmah zatvara TCP konekciju. Klijent možeeksplicitno tražiti da se konekcija ne zadrži, kako bi mogao poslati drugi zahtjevkoristeći istu konekciju. Server u odgovoru također dodaje liniju Connection: Keep-Alive kako bi obavijestio klijenta da može poslati još jedan zahtjev koristeći istukonekciju prije nego što konekcija istekne. Druga linija timeout=x, max=x govoreklijentu koliko konekcija traje u sekundama i maksimalni broj zahtjeva koji možeposlati unutar jedne konekcije.

    • Poruka „Connection to host lost” će se pojaviti nakon što "keep-alive" vrijemeistekne

    • Prije nego što vrijeme istekne klijent može slati zahtjeve kroz istu TCP konekciju

    • The header "Connection: Keep-alive" is not case sensitive.

  • 8/18/2019 Osnove HTTP Protokola

    29/37

    Kada klijent želi pristupiti dokumentu za kojeg nema dopuštenje, Server vraća grešku"403 Forbidden"

  • 8/18/2019 Osnove HTTP Protokola

    30/37

    If-Modified-Since – Ako je promijenjen od postavljenog vremena do danas

    If-Unmodified-Since – Ako nije modificiran od postavljenog vremena do danas

    ETags - se svaki put promjeni kada se neki resurs na serveru editira – i time se možeusporediti da li je došlo do promjena u dokumentu

    If-None-Match – ako se etagovi ne poklapaju – došlo je do promjena

    3

  • 8/18/2019 Osnove HTTP Protokola

    31/37 3

  • 8/18/2019 Osnove HTTP Protokola

    32/37 3

  • 8/18/2019 Osnove HTTP Protokola

    33/37 3

  • 8/18/2019 Osnove HTTP Protokola

    34/37 3

  • 8/18/2019 Osnove HTTP Protokola

    35/37 3

  • 8/18/2019 Osnove HTTP Protokola

    36/37 3

  • 8/18/2019 Osnove HTTP Protokola

    37/37