Informatica
Realizarea unui browserREALIZAREA UNUI BROWSER Sarcina lucrarii: de realizat un browser web utilizand C#. Extras teoretic: Protocolul HTTP.Descriere și definiție. HTTP (Hypertext Transfer Protocol) este un protocol de comunicare pentru
transferul informației in internet care sunt pastrate pe servere
World Wide Web. Este protocolul implicit al WWW, care conform modelului de
referința OSI este de nivel aplicație. Realizarea și
evoluția acestui protocol este coordonata de W3C (WWW Consortium). Modul de funcționare: Cand se scrie o adresa in
browser aceasta este convertita intr-o adresa IP (internet protocol)
de catre protocolul DNS (domain name system). Dupa aceasta operație
are loc trasnferul de date utilizand protocolul TCP pe portul 80 standard al
serverului HTTP, acest transfer se face ca raspuns al cererii HTTP-GET. Mesajele de cerere: Un mesaj HTTP este divizat intr-o parte
de antet și o parte corp. Antetul cuprinde o serie de campuri (unele
dintre ele obligatorii) oferind informații despre versiunea de protocol
folosit, codificarea datelor, tipul de medii, lungimea și tipul mesajului
etc. Orice mesaj HTTP trebuie sa debuteze cu un camp indicand versiunea
protocolului in prima linie a mesajului: HTTP-Version ::= 'HTTP-Version' ':' 'HTTP'
'/' digit '.' digit In prezent este operațional protocolul 1.1 deci toate mesajele de
cerere și de raspuns vor incepe cu linia HTTP/1.1. Mesajele pot fi codificate conform autoritații IANA (Internet
Assigned Numbers Authority) fiind permise codificarile: * gzip (GNU zip) este un cod Lempel-Ziv (LZ77) cu suma de control pe 32 de
biți * compress este un cod produs de programul compress din toate mediile UNIX,
dupa codificarea Lempel-Ziv-Welch (LZW) Aceste codificari sunt specificate de campul Content-Transfer-Encoding. Pentru MIME, se specifica tipul și subtipul mediului de
informații (de exemplu: text/html, text/plain, image/jpeg, video/mpeg
etc.) in campul Content-Type. Un mesaj poate fi transmis in format multipart,
constand din mai multe entitați, toate avand o sintaxa
comuna. Daca o aplicație recepționeaza un subtip
nerecunoscut, in mod automat il va trata ca multipart/mixed. Simbolul '*' specifica toate tipurile/subtipurile de medii
dintr-o anumita categorie. De exemplu, pentru a accepta doar imagini,
indiferent de format, se va transmite Accept: image/*. Pot fi specificați
unul sau mai mulți factori de calitate relativa. De pilda,
cererea Accept: audio/*; q=0.2, audio/basic este interpretata astfel:
'se prefera tipul audio/basic dar serverul va trebui sa trimita
toate tipurile audio avand calitatea de cel puțin 80%'. Metode: HTTP permite 8 metode care indica operația dorita sa
fie aplicata sursei identificate. GET este cea mai folosita metoda, fiind utilizata atunci
cand serverului i se cere o resursa. Reprezinta
o cerere de accesare a unor informații (entitați) identificate
de Request-URI. Semantica metodei GET se schimba in cerere
condiționata daca mesajul de cerere include campuri antet
If-Modified-Since, If-Match, If-Range etc. Daca se specifica un camp
Range, atunci GET va specifica o cerere parțiala. HEAD se comporta exact ca metoda GET, dar serverul returneaza
doar antetul resursei, ceea ce permite clientului sa inspecteze antetul
resursei, fara a fi nevoit sa obtina si corpul
resursei. POST a fost proiectata pentru a trimite date de intrare catre
server. In cazul acestei metode datele se include in corpul cererii.
PUT este folosita pentru a depune documente pe server, fiind inversul
metodei GET. DELETE șterge sursa specificata. TRACE: este o metoda folosita de obicei pentru diagnosticare,
putand da mai multe informatii despre traseul urmat de legatura HTTP,
fiecare server proxy adaugandu-si semnatura in antetul Via. OPTIONS: este folosita pentru identificarea capacitatilor serverului Web, inainte de a face o cerere. Reprezinta o cerere de informații despre opțiunile de comunicare disponibile intr-un dialog cerere/raspuns. CONNECT: este o metoda folosita in general de serverele
intermediare. Coduri de stare: Pentru fiecare cerere a unui
client, serverul HTTP raspunde cu o serie de coduri de stare a
operației solicitate, dintre care menționez: 1.Coduri de informare (1xx) care dau informații
despre o anumita acțiune: *100 Continue - clientul poate continua cererea, trebuind
sa trimita urmatoarea parte a unui mesaj parțial; *101 Switching Protocols - serverul ințelege cererea, dar
necesita recepționarea unui camp Upgrade pentru a ști ce tip de
protocol va fi folosit la nivelul aplicației (e.g. pentru transmiterea de
informații multimedia, cand poate fi utilizat un protocol sincron, in
timp-real); 2.Coduri de succes (2xx) raporteaza efectuarea cu
succes a unui operațiuni: * 200 Ok - cererea a fost rezolvata cu succes; *201 Created - o noua resursa a fost creata cu
succes. Resursa creata poate fi identificata de URI-ul returnat de
entitatea-raspuns, trebuind a fi generata inainte de returnarea
codului (in caz contrar se trimite 202); *202 Accepted - cererea a fost acceptata spre procesare,
dar inca n-a fost satisfacuta in intregime. Nu exista nici o
facilitate pentru retransmiterea unui cod de stare in urma execuției unei
operații asincrone; *204 No Content - serverul a rezolvat cererea, dar nu are ce
returna; 3. Coduri de redirectare (3xx) indica o redirectare,
catre alta locație/server a cererii (de exemplu, la apariția
marcatorului <meta name='refresh' content=''> in
cadrul unui document HTML): *300 Multiple Choices - resursa ceruta corespunde uneia
dintre reprezentarile multiple pe care le are; *301 Moved Permanently - resursa ceruta a fost
asignata unui URI nou și orice referința viitoare la ea
trebuie sa se realizeze prin acest URI returnat; *302 Moved Temporarily - resursa ceruta are un alt URI,
pentru o perioada temporara; *303 See Other - raspunsul la cerere poate fi gasit
la o alta locație URI și trebuie accesat folosind o metoda GET; *305 Use Proxy - resursa ceruta trebuie accesata
printr-un proxy desemnat de campul Location; 4. Coduri de eroare client (4xx) indica
apariția unei erori pe partea clientului: *400 Bad Request - cererea n-a putut fi
ințeleasa de server din cauza unei sintaxe eronate a metodei; *401 Unauthorized - cererea necesita autentificarea
utilizatorilor, prin transmiterea unui camp Authorization; *403 Forbidden - serverul ințelege cererea, dar
refuza s-o satisfaca din diverse metode; *404 Not found - serverul nu gasește resursa
specificata de Request-URI; *406 Not Acceptable - resursa este incompatibila cu
antetul cererii; 5.Coduri de eroare server (5xx) sunt coduri semnificand o
eroare pe partea serverului: *501 Not Implemented - serverul nu are implementata o
funcționalitate necesara satisfacerii unei cereri; *502 Bad Gateway - serverul, lucrand ca poarta sau proxy,
a receptionat un raspuns invalid de la alt server caruia i-a trimis cererea; *503 Service Unavailable - serverul nu poate satisface cererea,
din cauza supraincarcarii temporare sau a unor ratiuni de
administrare; *504 Gateway Timeout - timpul de așteptare a
raspunsului a expirat. Pot fi transmise și coduri de avertisment, cu valori cuprinse intre 0
si 99. Securitate: Protocolul HTTP
fiind bazat pe TCP/IP nu ofera suport pentru securitatea datelor, acest
lucru fiind rezolvat, la nivel protocol, prin doua metode: * SSL (Secure Socket Layer) este un sistem proiectat de Netscape care
ofera o cale TCP/IP criptata intre doua mașini, suportand
protocoalele HTTP, TELNET sau FTP. SSL folosește o varietate de sisteme de
criptare pe chei publice și secrete. Implementarea HTTP pentru SSL se
numeste HTTPS. *SHTTP (Secure HTTP) este un sistem de criptare pentru HTTP conceput de
CommerceNet, oferind mecanisme de securitate prin semnatura, autentificare
și cifrare, folosite independent sau impreuna. Concluzie: Pentru a efectua aceasta lucrare de
laborator am studiat informațiile referitoare la protocolul HTTP, modul
sau de funcționare, metodele utilizate, codurile de stare. Alt punct important in realizarea acestei lucrari de laborator a fost
crearea unui browser web, adica a instrumentului de accesare a
internetului, browser-ul creat de mine este unul tipic, care conține
butoanele cele mai des intalnite la un browser. In urma adancirii in materie pot concluziona ca protocolul HTTP
va fi inca mult timp protocolul implicit al WWW deoarece nu are multe
neajunsuri, insa cele care apar in timp sunt eliminate prin gasirea
de noi metode de implementare, de exemplu securitatea a fost asigurata
datorita SHTTP. Anexa 1: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace lab1 private void toolStripButton1_Click(object sender, EventArgs e) private void toolStripButton2_Click(object sender, EventArgs e) private void toolStripButton3_Click(object sender, EventArgs e) private void toolStripButton4_Click(object sender, EventArgs e) private void toolStripButton5_Click(object sender, EventArgs e) private void toolStripTextBox1_KeyUp(object sender, KeyEventArgs e) private void webBrowser1_ProgressChanged(object sender,
WebBrowserProgressChangedEventArgs e) Anexa 2:
|