Sunteți pe pagina 1din 13

Ministerul Educaiei Republicii Moldova Universitatea Tehnic a Moldovei Facultatea Calculatoare, Informatic i Microelectronic Catedra Automatic i Tehnologii Informaionale

RAPORT
La disciplina Securitatea Informaional i Protocoale de Comunicaie
Lucrare de laborator Nr. 1

Tema: Protocolul Http

A efectuat st. gr. TI-102

Braga Teodor

A verificat lector superior

Ciorb Dumitru

Chiinu 2013

Cuprins
1. Consideraii teoretice ............................................................................................................................ 3 1.1 Noiuni generale .............................................................................................................................. 3 1.2 Sintaxa URI ...................................................................................................................................... 3 1.3 Metode ale protocolului HTTP ........................................................................................................ 5 1.4 Cmpurile protocolului HTTP ........................................................................................................... 6 2. Elaborarea clientului ............................................................................................................................. 7 2.1 Specificarea cerinelor..................................................................................................................... 7 2.2 Implementarea ................................................................................................................................ 8 Rezultatele programului..........................................................................................................................11 Concluzii ..................................................................................................................................................12 Bibliografie ..............................................................................................................................................13

Scopul lucrrii: Studierea protocolului HTTP. Obiectivele lucrrii: Crearea unei aplicatii-client HTTP.

1. Consideraii teoretice
1.1 Noiuni generale Internetul reprezint o mulime de servicii care sunt utilizate de toat populaia, fie n mod direct prin accesarea paginilor web, pentru informare, transfer de fiiere, comunicare sau indirect prin utilizarea serviciilor prestate de alte instituii care la rndul lor utilizeaz serviciile internetului cum ar fi achitarea facturilor n oficiile bncilor sau efectuarea transferurilor monetare. Fiecare din noi, ntr-un mod sau altul este legat de internet. Deci, fiecre este un client care utilizez anumite servicii. Un serviciu reprezint o relaie care presupune existena unei cereri , parvenite de la un client, i a unui raspuns, pe care l ofer un server. Informaiile pe care le acceseaz n permanen clienii sunt depozitate pe servere WWW (World Wide Web). Pentru ca utilizatorii s poat accesa datele de pe servere, s poat expedia cereri i s primeasc anume rspunurile care sunt destinate lor s-a dovedit a fi necesar existena unor reguli care stabilesc cum anume are loc aceesul la date i transferul acestora, adic a fost necesar stabilirea unor protocoale de comunicaie. Un protocol face ca dou pri care comunic n limbi diferite s se poat nelege. Unul din protocoalele cele mai des utilizate pentru accesul la datele din internet, n prezent este protocolul HTTP HiperText Transfer Protocol. Acesta este considerat ca fiind protocolul de baz al internetului, adic pentru cazurile cnd o adresa URL nu specific protocolul utilizat, acesta este http. Protocolul asigur transferul nu doar de fiiere hipertext, ci i a secvenelor video, audio, a fiierelor executabile care sunt prezentate utilizatorului prin limbajul HTML (HiperText Mark-up Language). HTML furnizeaz mijloacele prin care coninutul unui document poate fi adnotat cu diverse tipuri de metadate i indicaii de redare. Indicaiile de redare pot varia de la decoraiuni minore ale textului, cum ar fi specificarea faptului c un anumit cuvnt trebuie subliniat sau c o imagine trebuie introdus, pn la scripturi sofisticate, hri de imagini i formulare. Metadatele pot include informaii despre titlul i autorul documentului, informaii structurale despre cum este mprit documentul n diferite segmente, paragrafe, liste, titluri etc. i informaii cruciale care permit ca documentul s poat fi legat de alte documente pentru a forma astfel hiperlink-uri (sau web-ul).

1.2 Sintaxa URI Localizarea resurselor Web se realizeaz prin intermediul unor identificatori uniformi de resurse URI. Pentru asigurarea accesului rapid i simplu, resursele sunt desemnate printr-un
3

identificator. Pentru ca diverse tipuri de identificatori de resurse s poat fi utilizate n aceeai manier, se recurge la folosirea unor scheme uniforme de identificatori[Berners-Lee et al., 1998]. Acest principiu adoptat asigur independena de mecanismul (protocolul) folosit pentru accesarea resurselor, permindu-se astfel interpretarea n mod uniform a mai multor convenii sintactice desemnnd identificatori ai unor resurse eterogene. De asemenea, se pot introduce noi tipuri de identificatori de resurse fr a fi modificat modul de adresare a vechilor tipuri. Aadar, pentru ca o resurs s poat fi numit, partajat sau interconectat cu alta/altele n cadrul spaiului WWW, ea trebuie s aib ataat un identificator uniform de resurse. Un identificator uniform de resurse poate fi reprezentat ca ir de caractere aparinnd unui alfabet limitat (compus din literele alfabetului latin, cifrele i diverse caractere de punctuaie). Un URI poate include, de asemenea, o serie de caractere rezervate [Berners-Lee et al., 1998]. Un identificator generic este compus din urmtoarele componente: schema "://" authority path "?" query Existnd mai multe metode de a accesa resursele, vor fi disponibile mai multe scheme pentru a le identifica (i.e. http, mailto, ldap, urn etc.) . Componenta autoritate (authority) este definit de o locaie de server disponibil la nivelul internetului sau de o secven special de nregistrare. Serverul poate fi specificat fie prin adresa IP (de exemplu 193.231.30.225), fie prin adresa simbolic (e.g. thor.infoiasi.ro) eventual fiind urmat de un numr de port. Componenta cale (path) conine date menite s identifice o resurs localizat pe serverul desemnat de componenta autoritate descris mai sus. Calea poate conine secvene de segmente de cale separate prin /. Ultima component este cea de interogare (query), reprezentat de un ir de informaii ce vor fi interpretate de resursa. URI este divizat n:

localizatori uniformi de resurse URL (Uniform Resource Locator) care identific


resursele printr-o reprezentare a mecanismului de accesare a lor (e.g., localizarea unor resurse prin intermediul adresei IP), nu prin nume sau alte atribute;
Forma unui URL: Protocol:// adresa site-ului / cale / nume fiier De exemplu: http://articole.web-start.ro/ i o pagin de pe site este: http://articole.web-start.ro/2009/03/ce-este-un-url/ URL-ul de mai sus const n: Protocolul: http Subdomeniu: articole 4

Nume domeniu: web-start Domeniu de tip: RO Cale: / 2009/03/ Nume fiier: ce-este-un-url

nume uniforme de resurse URN (Uniform Resource Name) care permit referirea unei
resurse chiar dac resursa a disprut ori a devenit inaccesibil, prin intermediul unui nume persistent i unic. URN-ul se utilizeaz mai ales pentru a desemna entiti (componente, tipuri de date, servicii etc.) folosite de anumite aplica ii Web.

1.3 Metode ale protocolului HTTP Metodele snt, de fapt, operaiile care pot fi aplicate obiectelor constituite de resursele din reea, n accepiunea protocolului HTTP. Metoda va trebui sa fie totdeauna primul element dintr-o linie de cerere. GET este una dintre cele mai importante metode i singura care era disponibil n prima versiune a protocolului, HTTP/0.9. GET este metoda care "aduce" ceva de la resurs; mai concret, dac resursa este un proces care produce date (o cutare de pild), rspunsul la metoda GET va fi o entitate care s cuprind acele date. Rspunsul este unul singur: aceasta este o caracteristic de baz a protocolului. Chiar dac volumul de date care trebuie incluse n raspuns este mare, nu se face o fracionare n bucaele mai mici, care s permit transferul mai uor al rspunsului. Din punct de vedere al protocolului HTTP, discuia este totdeauna simpl: o ntrebare are un rspuns. Nu se pot pune mai multe ntrebari pentru a obine un singur rspuns, nu se pot formula mai multe rspunsuri la o ntrebare. Exist totui dou posibiliti de a micora volumul de date care sa circule pe reea n urma elaborrii unui raspuns; o condiionare de genul "daca s-a schimbat ceva" i posibilitatea de a prelua numai o parte din acesta. De exemplu, o cerere de genul: GET www.stiinte.ro/?cerere HTTP/1.1 If-Modified-Since: Wed, 24 Mar 1999 1:00:00 GMT va aduce ceea ce s-a cerut numai dac s-a modificat ceva dup data i ora specificate n parametrii metodei. HEAD este o metod folosit n principiu pentru testarea validitii i/sau accesibilitii unei resurse, sau pentru a afla daca s-a schimbat ceva.

POST este metoda prin care resursei specificate n cerere i se cere s i subordoneze datele incluse n entitatea care trebuie sa nsoeasc cererea. Cu POST se poate aduga un fiier unui anumit director, se poate trimite un mesaj prin pota electronic, se poate aduga un mesaj unui grup de tiri, se pot aduga date unei baze de date existente, etc.. PUT este o metod care cere serverului s stocheze/memoreze entitatea cuprins n cerere cu numele specificat n URI. Dac resursa specificat exist deja, entitatea noua trebuie privit ca o versiune modificat care ar trebui s o nlocuiasca pe cea existent. Serverul, binenteles, va accepta sau nu aceasta cerere, n funcie de drepturile de acces pe care i le-a acordat clientului. PATCH este o metod care nu conine toate datele care s defineasc resursa, ci numai diferenele fa de versiunea existenta pe server cu toate informaiile necesare care s i permita serverului s reconstruiasc o versiune la zi a resursei. COPY, MOVE si DELETE snt metode prin care se cere ca resursa specificat n URI-ul din cerere sa fie copiat n locaiile specificate ca parametri pentru metod, mutat acolo sau respectiv doar tears. OPTIONS semnifica o cerere relativ la informaiile ce definesc opiunile de comunicare disponibile pe conexiunea ctre URI-ul specificat n cerere. Metoda permite determinarea opiunilor i/sau posibilitilor unui server, fr s determine o aciune din partea resursei adresate. TRACE este o metod care i permite clientului s vad cum ajung cererile sale la server, pentru a verifica/diagnostica conexiunea, pentru a se verifica pe sine sau pentru a determina felul n care eventualele proxy-uri de pe parcurs au modificat cererea iniial. Serverul, n rspuns la aceast cerere, va trimite n ecou cererile care i vin de la client, fr sa le mai trateze ca cereri "reale".

1.4 Cmpurile protocolului HTTP Numele cmpului User Agent Accept Accept-Charset Accept-Encoding Accept-Language Host Tipul Cerere Cerere Cerere Cerere Cerere Cerere Descriere Informaie asupra programului de navigare i a platformei Tipul de pagini pe care clientul le poate trata Seturile de caractere care sunt acceptabile la client Codificrile de pagini pe care clientul le poate trata Limbajele naturale pe care clientul le poate trata Numele DNS al serverului care va prelua cererea
6

Authorization Cookie Referer If-Modified-Since Range Date Upgrade Server Content-Encoding Content-Language Content-Length Content-Type Last-Modified Location

Cerere Cerere Cerere Cerere Cerere Ambele Ambele Rspuns Rspuns Rspuns Rspuns Rspuns Rspuns Rspuns Rspuns Rspuns

O list a drepturilor clientului Transmite un cookie care a fost salvat anterior Arat de la cine vine utilizatorul Preia datele daca au fost modificate Cere un fragment din resurs(in bytes) Data i ora la care mesajul a fost trimis Protocolul la care transmitorul vrea s comute Informaie despre server Cum este codat coninutul (de exemplu, gzip) Limbajul natural utilizat n pagin Lungimea paginii n octei Tipul MIME al paginii Ora i data la care pagina a fost ultima dat modificat O comand pentru client pentru a trimite cererea n alt parte Serverul va accepta cereri n anumite limite de octei Serverul vrea s salveze un cookie la client

Accept-Ranges Set-Cookie

2. Elaborarea clientului
2.1 Specificarea cerinelor Este necesar s se creeze un client http care ar ndeplini urmtoarele sarcini: Cererea de la server a unei pagini web utiliznd metoda GET a protocolului http; Transmiterea unor date la server mpreun cu cererea utiliznd metoda POST a protocolului http; Afiarea cmpurilor clientului i serverului; Cutarea pe pagina ncrcat a unui cuvnt dat de ctre utilizator determinarea numrului de apariii a acestui cuvant pe pagina dat; Realizarea unei interfee care asigur introducerea datelor necesare i afiarea rezultatelor obinute.

Fig.1 Funcionalitile programului Clientul realizat pune la dispoziia utilizatorului mai multe funcionaliti. Odata ce a lansat programul, utilizatorul poate sa introduca o adres web a paginii care urmeaz sa fie cerut de la server. Dac a fost selectat metoda GET, cmpul metodei POST este dezactivat. n cazul n care a fost selectat metoda POST este necesar s se intoduc valorile care vor fi expediate la server odat cu cererea. Odat cu afisearea paginii cerute vor fi afiate cmpurile clientului i cele ale serverului. Dup ncrcarea paginii, poate fi efectut numrarea apariiilor unui cuvnt pe pagina dat. Mesajul cu numrul de apariii este afiat ntro fereastr nou.

2.2 Implementarea Iniial, am creat un proiect n Visual C. Am realizat, utiliznd mediul C Sharp, interfaa clientului http. Interfaa presupune existena a trei elemente text-box, cte una pentru fiecare din metodele utilizate i una pentru introducerea cuvntului cutat n pagin, a dou radio-butoane pentru selectarea metodei aplicate, a unui buton pentru expedierea cererii. Am plasat n partea stng a ferestrei nc 2 elemente text-mox multiline pentru afiarea cmpurilor cererii i a rspunsului serverului. Am plasat un element web-browser pentru afiarea coninutului paginii web. n partea inferioar a ferestrei, n partea dreapt fa de text-box-ul pentru cutare am plasat un buton care lanseaz comanda pentru numrare i n final afieaz rezultatul.

Fig.2 Fereastra clientului Odat cu iniializarea formei clientului s-a generat clasa http_form care moteneste proprieti i metode de la clasa Form.
public partial class http_form : Form

La crearea butoanelor din form, se creeaz pentru fiecare buton cte o metod. Pentru metodele create stabilim evenimentele ce determin aceste metode s se execute. Metoda
post_radiobutton_CheckedChanged

determin dac a fost selectat un radio buton. Dac

este bifat butonul POST metoda returneaz valoarea true, n caz contrar returneaz valoarea false.
private void post_radiobutton_CheckedChanged(object sender, EventArgs e) { if (post_radiobutton.Checked) { post_textbox.Enabled = true; } else { post_textbox.Enabled = false; } }

Metoda

request_button_Click

stabilete metoda protocolului n dependen de radiobutonul

selectat. Se creaz o cerere apelnd funcia Create cu valoarea parametrului citit din text-box-ul n care iniial se scrie adresa web. Am utilizat componenta .Net HttpWebRequiest pentru crearea i expedierea cererilor. Pentru crearea cererilor utilizam metoda Create a clasei WebRequiest. Efectum convertirea obiectului request din clasa printe WebRequest n HttpWebRequest.
private void request_button_Click(object sender, EventArgs e)

{ try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url_textbox.Text) } }

Dac este selectat radiobutonul GET se expediaz cererea pentru apelul resursei dorite.
if (get_radiobutton.Checked) { request.Method = "GET"; }

n cazul cnd este bifat butonul metodei POST se apeleaz funcia GetBytes . Valoarea parametrului funciei este citit din din text-box-ul n care se nscriu valorile transmise la server odat cu cererea. Se stabilete metoda, tipul coninutului i lungimea lui. Textul din post_textbox este convertit din unicod n bytes.
byte[] post_data = ASCIIEncoding.ASCII.GetBytes(post_textbox.Text); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = post_data.Length;

Se stabilete stream-ul, utiliznd GetRequestStream.

componenta

.IO

Stream. Se utilizeaz metoda

Stream request_stream = request.GetRequestStream(); request_stream.Write(post_data, 0, post_data.Length);

Se obine rspunsul la cerere, stream-ul rspunsului, care apoi este nscris n fereastra browser. Am utilizat componenta .Net HttpWebResponse pentru obinerea rspunsului de la server . Pentru obinerea rspunsurilor utilizm metoda GetResponse a clasei WebResponse.
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream stream = response.GetResponseStream(); webbrowser.DocumentStream = stream;

Se nscriu datele cererii i a rspunsului.


request_textbox.Text = request.Method + " " + request.RequestUri.LocalPath + " HTTP/" + request.ProtocolVersion + "\r\n" + request.Headers.ToString();

10

response_textbox.Text = "HTTP/" + response.ProtocolVersion + " " + (int)response.StatusCode + " " + response.StatusCode + "\r\n" + response.Headers;

Metoda

search_button_Click

este apelat atunci cand este necesar numararea apariiilor unui

cuvindt n pagina ncrcat. Iniial se declar o variabil occurrences cu valoarea zero, care conine numrul de apariii a cuvntului cutat i poziia de unde se va ncepe cutarea, la fel cu valoarea zero.
int occurences = 0, start_index = 0, index;

Seapeleaz funcia ToLower pentru a converti caracterele paginii ncrcate i cele introduce pentru cutare n caractere mici, pantru a nu face diferen ntre cuvintele scrise cu majuscule i minuscule.
String html_source = webbrowser.DocumentText.ToLower(), search_text = search_textbox.Text.ToLower();

Atta timp ct valoarea variabilei index este diferta de -1 are loc incrementarea variabilei occurrences i a variabilei start_index.
while ((index = html_source.IndexOf(search_text, start_index)) != -1) { ++occurences; start_index = index + 1; }

Dup finisarea cutrii se apeleaz funcia Show careafieaz mesajul corespunztor i numrul de apariii a cuvntului cutat.
MessageBox.Show("Cuvantul cautat apare in pagina de " + occurences + " ori.");

Atunci cnd numrarea nu poate fi efectuat este redat un sunet specificprin apelul funciei Play.
SystemSounds.Beep.Play()

Rezultatele programului

Fig.3 Pagina ncrcat prin metooda GET


11

Fig.4 Rezultatele afiate prin metoda POST

Fig.5 Rezultatul numrrii apariiilor cuvntului http

Concluzii
Internetul reprezint o mulime extrem de vast de servicii. El permite calculatoarelor din capete opuse ale reelei s comunice i s fac schimb de date. Semnalele care, de fapt, ndeplinec aceste funcii, n propagarea lor, aparent haohic i imposibil de neles, se supun, n realitate, unor restricii i legiti, datorit respectrii crora exist claritate, rezultate i eficien n utilizarea serviciilor web. Protocolul reprezint un set de reguli care stabilesc accesul la resursele internetului, care permit diferitor pri s se neleag reciproc, chiar dac utilizeaz limbaje diferite. Protocolul HTTP este protocolul de baz al internetului, el fiind prestabilit i pentru cazurile n care n adresa URL nu este indicat protocolul de comunicare. HTTP are un set de metode care se aplic n dependen de serviciul care trebuie obinut. Protocolul http poseda o mulime de cmpuri: cmpurile cererii(clientului) i cmpurile rspunsului(serverului). Cmpurile
12

ofer informaii despre cerere i rspuns cum ar fi informaii despre nume, referine, timp, dimensiunea datelor, codificare, limb, drepturi de acces.

Bibliografie
1) http://ro.wikipedia.org/wiki/HyperText_Markup_Language; 2) Sabin Corneliu Buraga, Semantic Web. Fundamente i aplicaii, 2004; 3) Andrew S. Tanenbaum, Reele de calculatoare, Ediia a patra, 2003. 4) http://www.intuit.ru/department/network/pami/7/1.html

13