4. ASTEA (2016/02/16): HTTP
-
Upload
oskar-casquero -
Category
Education
-
view
777 -
download
2
Transcript of 4. ASTEA (2016/02/16): HTTP
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 1
HTTPHYPERTEXT TRANSFER
PROTOCOLWeb Sistemak
4. ASTEA (2016/02/16)
Web Sistemak by Oskar Casquero & María Luz Álvarez is licensed under a Creative Commons Reconocimiento 4.0 Internacional License.
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 2
TEORIA• HTTP protokoloaren funtzionamendua deskribatu.
– Zer gertatzen da erabiltzaile batek baliabide bat (adibidez, web orrialde bat) nabigatzailearen bitartez eskatzen duenean?
– Zelan egiten dira berhelbideraketak? (3xx erantzun kodeak)– Zer gertatzen da eskaera bete ezin daitekeenean? (4xx y 5xx erantzun kodeak) – Zelan laburtzen da erantzunen tamaina? (Konpresioa)– Zelan ekiditzen da beharrezkoa ez den trafiko trukea? (Cachea)– Zelan bidaltzen dira datuak bezerotik zerbitzarira? (Inprimakiak)– Zelan mantentzen da identifikaturik erabiltzaile bat nabigazio saio batean zehar? (Cookie-ak)
• Galdera horiek erantzuteko, adibideen bitartez HTTP protokoloaren semantika eta sintaxia deskribatuko dira:– Eskaera eta erantzunaren egitura.– Protokoloaren funtzionamendua inplementatzeko metodoak eta goiburuak.
PRAKTIKA• HTTP trafikoa nabigatzailea, Wireshark eta Fiddler programekin aztertu.• Python-en HTTP bezeroak programatu:
– Google-era konektatu.– Zerbitzari batera datuak bidali: NAN baten letra hartu.– Zerbitzari batetik fitxategi bat deskargatu.– Moodle gela batera konektatu.
HELBURUAK
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 3
Jarraian, HTTP protokoloaren funtzionamendua adibide baten bitartez deskribatuko da. Ondorengo galderak erantzungo dira, hain zuzen ere:• Zer gertatzen da erabiltzaile batek baliabide bat (adibidez, web
orrialde bat) nabigatzailearen bitartez eskatzen duenean? • Zer egiten du nabigatzaileak? • Zein formatu (sintaxi eta semantika) dauka eskaerak? • Zelan prozesatzen da eskaera zerbitzarian?• Zein formatu (sintaxi eta semantika) dauka erantzunak
–Mezuaren gorputzaren kodifikazioa.–Mezuaren gorputzaren luzeera.
• Zelan kargatzen da web orri bat nabigatzailean? –TCP konexioaren kudeaketa.
HTTP-REN FUNTZIONAMENDUA
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 4
HTTP-REN FUNTZIONAMENDUA: WEB ORRIALDE BATEN
KARGA• Web orrialde bat, funtsean, HTML dokumentu bat da, baina beste hainbat
baliabidez osoturik dago:– irudiak– CSS bitartez definituriko estiloak– erabiltzailearen interfazea dinamikoki aldatzeko JavaScript kodea
• HTML dokumentua web orriaren euskarria edo baliabide nagusia da, beste baliabide guzti horiek lotzen dituena.
• Sarritan irudiak, CSS estiloak eta JavaScript kodea kanpo fitxategi banatan gordetzen dira, HTML dokumentuan erreferentziatzen direlarik. Nabigatzaileak, HTML dokumentua jaso eta gero, web orria osotzen duten beste baliabideen estekak (URI-ak) hartu eta horiek deskargatzeko HTTP eskaera bana egiten ditu.
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 5
HTTP-REN FUNTZIONAMENDUA: WEB ORRIALDE BATEN
KARGA
www.ehu.es158.227.0.65
zerbitzariabezeroa
GET / HTTP/1.1Host: www.ehu.esAccept: text/htmlAccept-Encoding: gzip,identity;q=0.5Accept-Language: en-US,es-ES;q=0.8User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0)Connection: keep-alive*
* “Connection” goiburuak erantzuna bidali/jaso ostean TCP konexioarekin zer egin adierazten du.Connection: close
TCP konexioa itxi Connection: keep-alive
TCP konexioa zabalik mantendu
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 6
HTTP-REN FUNTZIONAMENDUA: WEB ORRIALDE BATEN
KARGA
www.ehu.es158.227.0.65
HTTP/1.1 200 OKDate: Thu, 20 Nov 2015 20:25:52 GMTLast-Modified: Tue, 17 Sep 2015 13:00:02 GMTETag: "1a968-3ec-4e693e61bb8b6"Content-Length: 1004Content-Type: text/html; charset=ISO-8859-1Keep-Alive: timeout=2, max=500*
WEB ORRIA (HTML DOKUMENTUA) zerbitzariabezeroa
* “Keep-Alive” goiburuak TCP konexioa mantentzeko baldintzak zehazten ditu.
timeout=2 TCP konexio bat HTTP trafiko gabe mantendu daitekeen denbora (s-tan) adierazten du.
max=500 TCP konexio baten barnean bidali daitekeen HTTP eskaera kopuru maximoa.
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 7
HTTP-REN FUNTZIONAMENDUA: WEB ORRIALDE BATEN
KARGA<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-Transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="eu"> <head> <title>Euskal Herriko Unibertsitateko Web Ataria/Portal web de la Universidad del País Vasco</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1“/> <link href="/AVCustom/styles/prehome.css" rel="stylesheet" type="text/css“/> <script type="text/javascript" src="/AVCustom/r01gLangSelectorVA/scripts/PortalLanguagePreHome.js“/> </head> <body> <script type="text/javascript"> testPreHome("p200","home","home","shenhm"); </script> <div id=container> <ul> <li><a href="/p200-home/eu/">Euskara </a><img src="/AVCustom/images/bullet.jpg"></li> <li><a href="/p200-home/es/">Español </a><img src="/AVCustom/images/bullet.jpg"></li> <li><a href="/p200-shenhm/en">English </a><img src="/AVCustom/images/bullet.jpg"></li> </ul> </div> </body> </html>
WEB ORRIA(HTML DOKUMENTUA)
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 8
HTTP-REN FUNTZIONAMENDUA: WEB ORRIALDE BATEN
KARGA
www.ehu.es158.227.0.65
GET /AVCustom/styles/prehome.css
GET …PortalLanguagePreHome.js
GET /AVCustom/images/bullet.jpg
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OKzerbitzariabezeroa
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 9
Jarraian, HTTP protokoloaren funtzionamendua adibide baten bitartez deskribatuko da. Ondorengo galderak erantzungo dira, hain zuzen ere:• Zer gertatzen da erabiltzaile batek baliabide bat (adibidez, web
orrialde bat) nabigatzailearen bitartez eskatzen duenean? • Zer egiten du nabigatzaileak? • Zein formatu (sintaxi eta semantika) dauka eskaerak? • Zelan prozesatzen da eskaera zerbitzarian?• Zein formatu (sintaxi eta semantika) dauka erantzunak
–Mezuaren gorputzaren kodifikazioa.–Mezuaren gorputzaren luzeera.
• Zelan kargatzen da web orri bat nabigatzailean? –TCP konexioaren kudeaketa.
HTTP-REN FUNTZIONAMENDUA
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 10
HTTP-REN FUNTZIONAMENDUA: TCP KONEXIOAREN
KUDEAKETA• Aurreko adibideko web orria kargatzeko 4 HTTP transferentzia egin behar dira:
– HTML orria– irudia– CSS estilo orria– JavaScript kodea
• HTTP eskaera bati lotutako beste baliabideen deskarga ondorengo moduetan egin daiteke:– TCP konexio berdina erabilita, konexio iraunkorra ere deitua (eraginkorra*)– TCP konexio bereizietan (ez eraginkorra*) – edo modu mistoan.
• Azpiko TCP konexioak kudeatzeko, HTTP protokoloak bi goiburu ditu:– Eskaeran: “Connection”– Erantzunean: “Keep-Alive”
* Eraginkortasuna TCP konexio ezarpen (SYN, SYN-ACK, ACK) kopuruaren arabera neurtzen da.
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 11
HTTP-REN FUNTZIONAMENDUA: TCP KONEXIOAREN
KUDEAKETA
51739
80
51739
51738
80
51738
(1)
(1)
(2)
(2)
51738
80
(SYN)
51738 (SYN-ACK)
80(ACK)
51739
80
(SYN)
51739 (SYN-ACK)
80(ACK)
51738
80
51738
51738
80
51738
(1)
(1)
(2)
(2)
51738
80
(SYN)
51738 (SYN-ACK)
80(ACK)
HTTP
mez
uak
TCP
kone
xio
bere
iziet
an HTTP mezuak TCP konexio berean
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 12
HTTP-REN FUNTZIONAMENDUA: TCP KONEXIOAREN
KUDEAKETA• Konexio iraunkorretan, HTTP eskaera bat bidaltzeko ez da aurreko HTTP eskaeraren
erantzuna jasotzeari itxaron behar “pipelining”
51738
80
51738
51738
80
51738
51738
80
51738 51738
80
51738
51738
51738
51738
80
51738
80
80
80
80
(1)
(1)
(2)
(3)
(2)
(3)
(1)
(2)
(3)
(1)
(2)
(3)
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 13
HTTP-REN FUNTZIONAMENDUA: TCP KONEXIOAREN
KUDEAKETA• Pipelining-ek arazo bat du: erantzunak eskaerak jaso diren orden berean erantzun behar
dira lerro-buruko blokeoa (“head-of-line blocking”)
51738
80
51738
51738
51738
51738
80
51738
80
80
80
80
(1)
(2)
(3)
(1)
(2)
(3)
51738
8051738
51738
51738
51738
80
51738
80
80
80
80
(1)
(2)
(3)
(1)
(2)
(3)head-of-line blocking: (3) eskaeraren prozesatze denbora (1) eta (2) eskaerena baino laburragoa bada ere, ezin da (3) erantzuna bidali (1) eta (2) erantzunak bidaltzen direnerarte.
HTTP/2 lerro-buruko blokeoa konpontzen du
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 14
HTTP-REN FUNTZIONAMENDUA: TCP KONEXIOAREN
KUDEAKETA• HTTP/1.1-ek TCP konexio iraunkorrak erabiltzen dituen arren, praktikan,
nabigatzaile batek jatorri bakoitzeko batazbesteko 4-8 konexio zabaltzen ditu.
• Web orri bat jatorri askotako edukiak hartuta osotzen dela kontutan izanda, ohiko web orri batek 30 TCP konexio baino gehiago ezar ditzake, honek suposatzen duen gainkargarekin.
• Arazo hau ekiditzeko, HTTP/2-k ondorengoa zehazten du: – Jatorri bakoitzeko TCP konexio bakarra erabili behar da.– Eskaera eta erantzun anizkunak multiplexatu daitezke.
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 15
TEORIA• HTTP protokoloaren funtzionamendua deskribatu.
– Zer gertatzen da erabiltzaile batek baliabide bat (adibidez, web orrialde bat) nabigatzailearen bitartez eskatzen duenean?
– Zelan egiten dira berhelbideraketak? (3xx erantzun kodeak)– Zer gertatzen da eskaera bete ezin daitekeenean? (4xx y 5xx erantzun kodeak) – Zelan laburtzen da erantzunen tamaina? (Konpresioa)– Zelan ekiditzen da beharrezkoa ez den trafiko trukea? (Cachea)– Zelan bidaltzen dira datuak bezerotik zerbitzarira? (Inprimakiak)– Zelan mantentzen da identifikaturik erabiltzaile bat nabigazio saio batean zehar? (Cookie-ak)
• Galdera horiek erantzuteko, adibideen bitartez HTTP protokoloaren semantika eta sintaxia deskribatuko dira:– Eskaera eta erantzunaren egitura.– Protokoloaren funtzionamendua inplementatzeko metodoak eta goiburuak.
PRAKTIKA• HTTP trafikoa nabigatzailea, Wireshark eta Fiddler programekin aztertu.• Python-en HTTP bezeroak programatu:
– Google-era konektatu.– Zerbitzari batera datuak bidali: NAN baten letra hartu.– Zerbitzari batetik fitxategi bat deskargatu.– Moodle gela batera konektatu.
HELBURUAK
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 16
• Zelan egiten dira berhelbideraketak? (3xx erantzun kodeak)
– Batzutan, baliabide baten URI-a aldatu daiteke, edo web zerbitzari batek web bezero bat erantzun hobeago bat jasoko duen beste URI batera berhelbideratu dezake.
– HTTP protokoloak beste URI batera berhelbideraketa egiteko modua eskeintzen du. Horretarako,• 301, 302 edo 303 erantzun kodeak• eta “Location” goiburua erabiltzen dira.
HTTP-REN FUNTZIONAMENDUA: BERHELBIDERAKETAK
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática
• Demagun Madrilen kokatutako bezero batek ondorengo URI-a duen baliabidea eskatzen duela: http://www.google.com/• HTTP eskaera hori erantzuten duen zerbitzariak paketearen jatorrizko IP
helbidea Espainiakoa dela antzematen du: bezeroari http://www.google.es/ URI-ra berhelbideraketa egiteko erantzuna bidaltzen dio.• Bezeroak, erantzunean 302 kodea detektatzean, “Location” goiburuaren
balioa atera eta URI berrira beste eskaera bat egiten du. Nabigatzailean prozesu hau erabiltzailearentzako modu gardenean gertatzen da.
HTTP-REN FUNTZIONAMENDUA: BERHELBIDERAKETAK
17
GET / HTTP/1.1 Host: www.google.comAccept: text/htmlAccept-Encoding: identityAccept-Language: en-US,es-ES;q=0.8User-Agent: Mozilla Windows Desktop
Eskaera baten adibideaHTTP/1.1 302 FoundContent-Length: 137Content-Type: text/html; charset=UTF-8Location: http://www.google.es/
<html><head><title>Redirection 302</title></head><body><a href=“http://www.google.es/>Redirect to http://www.google.es/</a></body></html>
Erantzun baten adibidea
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 18
TEORIA• HTTP protokoloaren funtzionamendua deskribatu.
– Zer gertatzen da erabiltzaile batek baliabide bat (adibidez, web orrialde bat) nabigatzailearen bitartez eskatzen duenean?
– Zelan egiten dira berhelbideraketak? (3xx erantzun kodeak)– Zer gertatzen da eskaera bete ezin daitekeenean? (4xx y 5xx erantzun kodeak) – Zelan laburtzen da erantzunen tamaina? (Konpresioa)– Zelan ekiditzen da beharrezkoa ez den trafiko trukea? (Cachea)– Zelan bidaltzen dira datuak bezerotik zerbitzarira? (Inprimakiak)– Zelan mantentzen da identifikaturik erabiltzaile bat nabigazio saio batean zehar? (Cookie-ak)
• Galdera horiek erantzuteko, adibideen bitartez HTTP protokoloaren semantika eta sintaxia deskribatuko dira:– Eskaera eta erantzunaren egitura.– Protokoloaren funtzionamendua inplementatzeko metodoak eta goiburuak.
PRAKTIKA• HTTP trafikoa nabigatzailea, Wireshark eta Fiddler programekin aztertu.• Python-en HTTP bezeroak programatu:
– Google-era konektatu.– Zerbitzari batera datuak bidali: NAN baten letra hartu.– Zerbitzari batetik fitxategi bat deskargatu.– Moodle gela batera konektatu.
HELBURUAK
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 19
•Zer gertatzen da eskaera bete ezin daitekeenean? (4xx y 5xx erantzun kodeak) – Bezeroak edo zerbitzariak eraginda, eskaera bat bete ezin
denean, erantzunean ondorengo Status kodeak itzultzen dira.
HTTP-REN FUNTZIONAMENDUA: ERROREAK
Bezeroak eragindako erroreak: 4xx (RFC 2616, 10.4 atala)• 400 Bad Request• 401 Unauthorized • 403 Forbidden• 404 Not Found• …
Zerbitzariak eragindako erroreak: 5xx (RFC 2616, 10.5 atala):• 500 Internal Server Error• 503 Service Unavailable• …
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 20
• 400 Bad Request• Zerbitzariak ez du eskaera ulertzen bere semantika/sintaxia okerrak direlako.• Demagun /html/main page.html baliabidea eskatzen dela.
HTTP-REN FUNTZIONAMENDUA: 4XX ERROREAK
GET /html/main page.html HTTP/1.1 Host: sw2016.comAccept: text/htmlAccept-Encoding: gzip,identity;q=0.5Accept-Language: en-US,es-ES;q=0.8User-Agent: Mozilla Windows Desktop
Eskaera baten adibideaHTTP/1.1 400 Bad RequestDate: Wed, 25 Nov 2015 08:07:43 GMTContent-Length: 138Content-Type: text/html; charset=UTF-8
<html><head><title>Error 400 (Bad Request)</title></head><body><p>Your client has issued a malformed or illegal request.</p></body></html>
Erantzun baten adibidea
Zerbitzariak eskaera irakurtzean ulertzen duena:• Metodoa: GET• RequestURI: /html/main• Protokoloaren bertsioa: page.html• Kate gehigarria: HTTP/1.1
Konponbidea: RequestURI-an SP-a kodifikatzea: /html/main%20page.html
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 21
• 404 Not Found• Eskaera ondo formateatuta dago, baina zerbitzariak ez du URI-a aurkitzen.• Demagun sw2016.com zerbitzariari /login/index.php baliabidea eskatzen
zaiola, zerbitzari horretan existitzen ez dena.
HTTP-REN FUNTZIONAMENDUA: 4XX ERROREAK
GET /login/index.php HTTP/1.1 Host: sw2016.com Accept: text/htmlAccept-Encoding: gzip,identity;q=0.5Accept-Language: en-US,es-ES;q=0.8User-Agent: Mozilla Windows Escritorio
Eskaera baten adibideaHTTP/1.1 404 Not FoundDate: Wed, 25 Nov 2015 08:07:43 GMTContent-Length: 134Content-Type: text/html; charset=UTF-8
<html><head><title>Error 404 (Not Found)</title></head><body><p>The requested resource was not found in this server.</p></body></html>
Erantzun baten adibidea
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 22
• 403 Forbidden• Eskaera ondo formateatuta dago, baina zerbitzariak bera betetzeari uko egiten dio.• Zerbitzari batek 403 kodea arrazoi askorengandik itzuli dezake.
Zerbitzu bakoitzak bere arrazioak definitzen ditu, adibidez:– Google Drive REST API: https://developers.google.com/drive/web/handle-errors– Twitter API: https://dev.twitter.com/overview/api/response-codes
• Demagun web zerbitzari batek hashtag jakin batekin erlazionatutako txioak automatikoki bertxiokatzen dituela baina, ordu batean bidali daitezkeen bertxio kopuru maximoa gainditu egiten duela.
HTTP-REN FUNTZIONAMENDUA: 4XX ERROREAK
POST /1.1/statuses/retweet/241259202004267009.json HTTP/1.1 Host: api.twitter.comAuthorization: Oauth oauth_consumer_key="cChZNFj6T5R0TigYB9yd1w",
oauth_nonce="a9900fe68e2573b27a37f10fbad6a755",oauth_signature="39cipBtIOHEEnybAR4sATQTpl2I%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1318467427", oauth_token="NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0”, oauth_version="1.0"User-Agent: Google App Engine web server
Eskaera baten adibideaHTTP/1.1 403 ForbiddenDate: Wed, 25 Nov 2015 08:07:43 GMTContent-Length: 77Content-Type: application/json
{"errors":[{"message":"User is over daily status update limit ","code":185}]}
Erantzun baten adibidea
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 23
RFC 3986, 2. atala
• URI bat US-ASCII alfabetoan bildutako karakterez osoturik egon behar da.
• URI batean onartzen diren karaktereek “ez bereiziak” izena dute.
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
• URI baten zati ezberdinak banatzeko erabiltzen diran karaktereak “bereiziak” izena dute.
reserved = gen-delims / sub-delims gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@" sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="
• Horrez gain, URI batek ezin dezake zuriunerik (SP) eduki.
HTTP-REN FUNTZIONAMENDUA: URI-AREN KODIFIKAZIOA
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 24
RFC 3986, 2. atala
• Karaktere bereizi bat edo US-ASCII alfabetoan agertzen ez den karaktere bat kodifikatu nahi bada (adibidez, azentua duten karaktereak), izen-balio bikote katea osotu aurretik bi pausu burutu behar dira:
1. Karakterea UTF-8-n kodifikatu. – Adibidea 1: & 26 – Adibidea 2: á C3 A1
2. Aurreko emaitza “ehuneko” kodifikazioan (percent encoding) kodifikatu.– Adibidea 1: 26 %26– Adibidea 2: C3 A1 %C3 %A1
OHARRA: goiko adibide bakoitzean, karaktere bakarra kodifikatzen da; baina kodifikazio prozeduraren eraginez, zenbat karaktere bidaliko dira?
– Adibidea 1: %26 3 karaktere bidaltzen dira: 25 32 30– Adibidea 2: %C3 %A1 6 karaktere bidaltzen dira: 25 43 33 25 41 31
HTTP-REN FUNTZIONAMENDUA: URI-AREN KODIFIKAZIOA
% C 3 % A 1
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 25
Zuriuneen (SP) kodifikazioari buruzko argibideak:
• Path-ean SP-a %20 bezela kodifikatzen daURI1: http://sw2016.com:8080/ldap/user/Iñaki Pérez/index.htmlURI1 coded: http://sw2016.com:8080/ldap/user/I%C3%B1aki%20P%C3%A9rez/index.html
• HTTP eta HTML arteko erlazioa dela eta (HTML5, 4.10.22.6 atala), query string-ean SP-a "+“ bezela kodifikatzen daURI2: http://sw2016.com:8080/ldap/login?user=Iñaki PérezURI2 coded: http://sw2016.com:8080/ldap/login?user=I%C3%B1aki+P%C3%A9rez
• Baina query string-ean "+“ karakterea datu bezela erabiltzekotan, orduan UTF-8 + % kodifikazio prozedura jarraitu behar daURI3: http://sw2016.com:8080/download/datasheets/nRF24+.pdfURI3 coded: http://sw2016.com:8080/download/datasheets/nRF24%2B.pdf
HTTP-REN FUNTZIONAMENDUA: URI-AREN KODIFIKAZIOA
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 26
TEORIA• HTTP protokoloaren funtzionamendua deskribatu.
– Zer gertatzen da erabiltzaile batek baliabide bat (adibidez, web orrialde bat) nabigatzailearen bitartez eskatzen duenean?
– Zelan egiten dira berhelbideraketak? (3xx erantzun kodeak)– Zer gertatzen da eskaera bete ezin daitekeenean? (4xx y 5xx erantzun kodeak) – Zelan laburtzen da erantzunen tamaina? (Konpresioa)– Zelan ekiditzen da beharrezkoa ez den trafiko trukea? (Cachea)– Zelan bidaltzen dira datuak bezerotik zerbitzarira? (Inprimakiak)– Zelan mantentzen da identifikaturik erabiltzaile bat nabigazio saio batean zehar? (Cookie-ak)
• Galdera horiek erantzuteko, adibideen bitartez HTTP protokoloaren semantika eta sintaxia deskribatuko dira:– Eskaera eta erantzunaren egitura.– Protokoloaren funtzionamendua inplementatzeko metodoak eta goiburuak.
PRAKTIKA• HTTP trafikoa nabigatzailea, Wireshark eta Fiddler programekin aztertu.• Python-en HTTP bezeroak programatu:
– Google-era konektatu.– Zerbitzari batera datuak bidali: NAN baten letra hartu.– Zerbitzari batetik fitxategi bat deskargatu.– Moodle gela batera konektatu.
HELBURUAK
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 27
•Zelan ekiditzen da beharrezkoa ez den trafiko trukea? (Cachea)
–HTTP protokoloak baditu bezeroak azkenegoz eskatu zituenetik aldatu ez diren baliabideen transferentzia saihesteko moduak:• Status: 304• Goiburuak:
– Eskaeran: Cache-Control, If-Modified-Since, If-None-Match– Erantzunean: Cache-Control, Date, Last-Modified, ETag
–Horrela, banda-zabaleraren erabilera optimizatu eta web zerbitzariak eskaera eta erantzun erredundanteak prozesatu eta sor ditzan saihesten da.
HTTP-REN FUNTZIONAMENDUA: CACHE
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática
• Demagun nabigatzaile batek web orri bat eskatzen duela. Erantzuna (HTML dokumentua) jasotzen duenean, nabigatzaileak web orriaren barnean irudi bati erreferentzia egiten dion <img> elementua dagoela ikusten du• Beraz, nabigatzaileak irudia eskuratzeko bigarren HTTP eskaera bat egiten du.
Web zerbitzariak irudia HTTP erantzun batean itzultzen du, erantzun horretako goiburu jakin batzuetan meta-datu batzuk sartzen dituelarik.
HTTP-REN FUNTZIONAMENDUA: CACHE
28
GET /image.jpg HTTP/1.1 Host: sw2016.com:8080 Accept: image/*User-Agent: Mozilla Windows Escritorio
Eskaera baten adibideaHTTP/1.1 200 OKDate: Thu, 20 Nov 2015 20:25:52 GMTLast-Modified: Tue, 17 Sep 2015 13:00:02 GMTETag: "1a968-3ec-4e693e61bb8b6”Cache-Control: max-age=2592000Content-Length: 12405Content-Type: image/jpg
IRUDIA (eduki binarioa)
Erantzun baten adibidea
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática
• Demagun erabiltzaileak nabigatzailea itxi eta hurrengo egunean web orri bera eskatzeko berriro zabaltzen duela.
HTTP-REN FUNTZIONAMENDUA: CACHE: FRESKOTASUNA
29
HTTP/1.1 200 OKDate: Thu, 20 Nov 2015 20:25:52 GMTLast-Modified: Tue, 17 Sep 2015 13:00:02 GMTETag: "1a968-3ec-4e693e61bb8b6”Cache-Control: max-age=2592000Content-Length: 12405Content-Type: image/jpg
IRUDIA (eduki binarioa)
Aurreko adibideko erantzuna“Cache-Control” goiburua (RFC 2616, 14.9 atala) bezero eta proxy-en cache-en alderdi ezberdinak kudeatzeko erabiltzen da.
Kasu honetan, zerbitzariak nabigatzaileari ondorengo dinotso: “hilabete batez, ez iezadazu irudi honengaitik galdetu”.
Horrela, nabigatzaileak irudia bere cache-tik zuzenean hartzen du.
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática
• Demagun bi hilabete geroago erabiltzaileak web orri bera berriro eskatzen duela, baina, nahiz eta web orriaren edukia aldatu den, irudia ez da aldatu.• Nabigatzaileak, irudiari lotutako cache gordetze denbora iraungi dela ikustean,
eskaera berri bat egiten du:
HTTP-REN FUNTZIONAMENDUA: CACHE: BALIDAZIOA
BEZEROAN
30
“If-Modified-Since” goiburuan aurreko erantzunean “Last-Modified” goiburuan itzulitako balioa sartzen da.
“If-None-Match” goiburuan aurreko erantzunean “ETag” goiburuan itzulitako balioa sartzen da.
GET /image.jpg HTTP/1.1 Host: sw2016.com:8080 Accept: image/*If-Modified-Since: Tue, 17 Sep 2015 13:00:02 GMTIf-None-Match: "1a968-3ec-4e693e61bb8b6”User-Agent: Mozilla Windows Desktop
Eskaera berriaren adibidea
HTTP/1.1 200 OKDate: Thu, 20 Nov 2015 20:25:52 GMTLast-Modified: Tue, 17 Sep 2015 13:00:02 GMTETag: "1a968-3ec-4e693e61bb8b6”Cache-Control: max-age=2592000Content-Length: 12405Content-Type: image/jpg
IRUDIA (eduki binarioa)
Aurreko adibideko erantzuna
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática
• If-Modified-Since datatik hona irudia aldatu ez bada eta If-None-Match-en adierazitako kodea zerbitzariak irudiari esleituta dion Etag kodearekin bat badator, orduan HTTP erantzunean 304 Not Modified erantzun kodea itzultzen da eta ez da edukirik txertatzen.
HTTP-REN FUNTZIONAMENDUA: CACHE:BALIDAZIOA
ZERBITZARIAN
31
HTTP/1.1 304 Not ModifiedDate: Thu, 20 Jan 2016 20:25:52 GMTLast-Modified: Tue, 17 Sep 2015 13:00:02 GMTETag: "1a968-3ec-4e693e61bb8b6”Cache-Control: max-age=2592000
Erantzun baten adibidea