4.3.1 Protocolul HTTP
Numele este acronimul pentru HyperText Transfer Protocol, protocol ce stabileste regulile de transfer a documentelor hypermedia. Aplicatiile care folosesc protocolul - cei doi parteneri de la capetele unei conexiuni- sunt considerate niste entitati abstracte, din punctul de vedere al protocolului. Entitatile trebuie sa poata formula cereri si/sau receptiona raspunsuri (modelul client-server) . Protocolul defineste reguli de comunicare, care permit interpretarea corecta a cererilor si raspunsurilor.
Unul dintre conceptele de baza- preluat si de alte protocoale- este cel de resursa, desemnand un calculator, o baza de date, un document, in general un serviciu. Resursa trebuie sa poata fi referita corect si fara echivoc. Pentru referirea unei resurse in Internet, se foloseste termenul generic URI -Uniform Resource Identifier , care poate specifica o locatie, caz in care se vorbeste de un URL -Universal Resource Locator sau de un nume, caz in care avem de-a face cu un URN- Universal Resource Name . Protocolul se bazeaza pe paradigma cerere/raspuns. Clientul cere accesul la o resursa, aceasta fiind identificata prin URI, iar serverul raspunde printr-o linie de stare (contine, printre altele, un cod de succes sau eroare si, in primul caz, urmeaza datele cerute). Cel mai simplu caz este acela cand conexiunea client-server se realizeaza prin intermediul unei singure conexiuni. In general, exista mai multi intermediari de-a lungul conexiunii. Acestia pot fi de trei feluri:
• proxy-este un intermediar sofisticat: primeste cereri adresate unei resurse identificate prin URI, rescrie anumite parti ale mesajului, dupa care retrimite cererea catre serverul adresat initial. El se substituie, practic, clientului initial, mesajul de raspuns va fi primit tot de el, iar proxy-ul trimite clientului raspunsul. Dinspre server nu se mai "vad" clientii adevarati, ei fiind reprezentati de serverul proxy. Serverul proxy poate realiza anumite verificari (de autentificare, de securitate,...), dificil de implementat pe toate masinile conectate la acel proxy. Serverul proxy trebuie inteles ca un reprezentant al unui grup intreg de clienti, negociind cererile acestora adresate "restului lumii".
• gateway - este similar unui proxy, dar pe partea de server. Este un fel de camera de primire pusa in fata unui server sau a unui grup de servere. Serverele de "dupa gateway" nu sunt vizibile, ele fiind reprezentate de gateway. Cererile sosite la gateway sunt dirijate spre serverul care poate raspunde cererii, sau celui mai liber dintre serverele ce pot raspunde, in dorinta de a utiliza eficient puterea de calcul. Poarta realizeaza si o conversie de protocol, serverul nefiind obligat sa "cunoasca" protocolul "http"
• tunnel - tunelul este un intermediar neinteligent: el transporta date pe care nu le intelege sau interpreteaza in nici un fel intre doua conexiuni. De obicei, la un capat al tunelului se afla un server gateway, iar la capatul celalalt un proxy.
Un mare avantaj al folosirii unui server proxy este acela ca, beneficiind de un cache
intern, acesta poate memora cererile facute de clienti. Ulterior, la aparitia unei cereri care s-a mai facut, serverul proxy trimite raspunsul direct, daca acesta a ramas memorat in cache (nu se mai realizeaza conexiunea cu "detinatorul" resursei). Un proxy poate lucra cu mai multi clienti in acelasi timp, putand filtra cererile primite.
Adresarea unei resurse se face prin constructii de forma:
http://adresa_host [:port] /cale/subcale1/.../subcale_n/nume_document
unde:
• http- numele protocolului utilizat
• adresa_host identifica un server sau un gateway din retea, utilizand adresarea uzuala din DNS (vezi lectia precedenta)
• :port specifica portul de date la care se face conexiunea, implicit :80
• /cale/subcale1/.../subcale_n/ - calea absoluta pana la documentul nume_document de pe respectivul server
Observatie: resursa referita nu este neaparat un intreg document, ci poate fi doar o fractiune a documentului.
Serverul care raspunde cererilor privitoare la documente hypermedia se numeste server WWW si "cunoaste" protocolul http.
Unul dintre conceptele de baza- preluat si de alte protocoale- este cel de resursa, desemnand un calculator, o baza de date, un document, in general un serviciu. Resursa trebuie sa poata fi referita corect si fara echivoc. Pentru referirea unei resurse in Internet, se foloseste termenul generic URI -Uniform Resource Identifier , care poate specifica o locatie, caz in care se vorbeste de un URL -Universal Resource Locator sau de un nume, caz in care avem de-a face cu un URN- Universal Resource Name . Protocolul se bazeaza pe paradigma cerere/raspuns. Clientul cere accesul la o resursa, aceasta fiind identificata prin URI, iar serverul raspunde printr-o linie de stare (contine, printre altele, un cod de succes sau eroare si, in primul caz, urmeaza datele cerute). Cel mai simplu caz este acela cand conexiunea client-server se realizeaza prin intermediul unei singure conexiuni. In general, exista mai multi intermediari de-a lungul conexiunii. Acestia pot fi de trei feluri:
• proxy-este un intermediar sofisticat: primeste cereri adresate unei resurse identificate prin URI, rescrie anumite parti ale mesajului, dupa care retrimite cererea catre serverul adresat initial. El se substituie, practic, clientului initial, mesajul de raspuns va fi primit tot de el, iar proxy-ul trimite clientului raspunsul. Dinspre server nu se mai "vad" clientii adevarati, ei fiind reprezentati de serverul proxy. Serverul proxy poate realiza anumite verificari (de autentificare, de securitate,...), dificil de implementat pe toate masinile conectate la acel proxy. Serverul proxy trebuie inteles ca un reprezentant al unui grup intreg de clienti, negociind cererile acestora adresate "restului lumii".
• gateway - este similar unui proxy, dar pe partea de server. Este un fel de camera de primire pusa in fata unui server sau a unui grup de servere. Serverele de "dupa gateway" nu sunt vizibile, ele fiind reprezentate de gateway. Cererile sosite la gateway sunt dirijate spre serverul care poate raspunde cererii, sau celui mai liber dintre serverele ce pot raspunde, in dorinta de a utiliza eficient puterea de calcul. Poarta realizeaza si o conversie de protocol, serverul nefiind obligat sa "cunoasca" protocolul "http"
• tunnel - tunelul este un intermediar neinteligent: el transporta date pe care nu le intelege sau interpreteaza in nici un fel intre doua conexiuni. De obicei, la un capat al tunelului se afla un server gateway, iar la capatul celalalt un proxy.
Un mare avantaj al folosirii unui server proxy este acela ca, beneficiind de un cache
intern, acesta poate memora cererile facute de clienti. Ulterior, la aparitia unei cereri care s-a mai facut, serverul proxy trimite raspunsul direct, daca acesta a ramas memorat in cache (nu se mai realizeaza conexiunea cu "detinatorul" resursei). Un proxy poate lucra cu mai multi clienti in acelasi timp, putand filtra cererile primite.
Adresarea unei resurse se face prin constructii de forma:
http://adresa_host [:port] /cale/subcale1/.../subcale_n/nume_document
unde:
• http- numele protocolului utilizat
• adresa_host identifica un server sau un gateway din retea, utilizand adresarea uzuala din DNS (vezi lectia precedenta)
• :port specifica portul de date la care se face conexiunea, implicit :80
• /cale/subcale1/.../subcale_n/ - calea absoluta pana la documentul nume_document de pe respectivul server
Observatie: resursa referita nu este neaparat un intreg document, ci poate fi doar o fractiune a documentului.
Serverul care raspunde cererilor privitoare la documente hypermedia se numeste server WWW si "cunoaste" protocolul http.