Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

4. ASTEA (2016/02/16): HTTP

847 views

Published on

HTTP protokoloa.

Published in: Education
  • Be the first to comment

  • Be the first to like this

4. ASTEA (2016/02/16): HTTP

  1. 1. Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática HTTP HYPERTEXT TRANSFER PROTOCOL Web Sistemak 4. ASTEA (2016/02/16) 1 Web Sistemak by Oskar Casquero & María Luz Álvarez is licensed under a Creative Commons Reconocimiento 4.0 Internacional License.
  2. 2. Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 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 2
  3. 3. Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 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 3
  4. 4. 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.
  5. 5. 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.es 158.227.0.65 zerbitzariabezeroa GET / HTTP/1.1 Host: www.ehu.es Accept: text/html Accept-Encoding: gzip,identity;q=0.5 Accept-Language: en-US,es-ES;q=0.8 User-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
  6. 6. 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.es 158.227.0.65 HTTP/1.1 200 OK Date: Thu, 20 Nov 2015 20:25:52 GMT Last-Modified: Tue, 17 Sep 2015 13:00:02 GMT ETag: "1a968-3ec-4e693e61bb8b6" Content-Length: 1004 Content-Type: text/html; charset=ISO-8859-1 Keep-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.
  7. 7. 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)
  8. 8. 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.es 158.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 OK zerbitzariabezeroa
  9. 9. Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 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 9
  10. 10. 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.
  11. 11. 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) HTTPmezuakTCPkonexiobereizietan HTTPmezuakTCPkonexioberean
  12. 12. 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)
  13. 13. 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 80 51738 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
  14. 14. 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.
  15. 15. Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 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 15
  16. 16. Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática • 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 16
  17. 17. 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.com Accept: text/html Accept-Encoding: identity Accept-Language: en-US,es-ES;q=0.8 User-Agent: Mozilla Windows Desktop Eskaera baten adibidea HTTP/1.1 302 Found Content-Length: 137 Content-Type: text/html; charset=UTF-8 Location: 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
  18. 18. Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 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 18
  19. 19. Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática • 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 19 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 • …
  20. 20. Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática • 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 20 GET /html/main page.html HTTP/1.1 Host: sw2016.com Accept: text/html Accept-Encoding: gzip,identity;q=0.5 Accept-Language: en-US,es-ES;q=0.8 User-Agent: Mozilla Windows Desktop Eskaera baten adibidea HTTP/1.1 400 Bad Request Date: Wed, 25 Nov 2015 08:07:43 GMT Content-Length: 138 Content-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
  21. 21. Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática • 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 21 GET /login/index.php HTTP/1.1 Host: sw2016.com Accept: text/html Accept-Encoding: gzip,identity;q=0.5 Accept-Language: en-US,es-ES;q=0.8 User-Agent: Mozilla Windows Escritorio Eskaera baten adibidea HTTP/1.1 404 Not Found Date: Wed, 25 Nov 2015 08:07:43 GMT Content-Length: 134 Content-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
  22. 22. Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática • 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 22 POST /1.1/statuses/retweet/241259202004267009.json HTTP/1.1 Host: api.twitter.com Authorization: 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 adibidea HTTP/1.1 403 Forbidden Date: Wed, 25 Nov 2015 08:07:43 GMT Content-Length: 77 Content-Type: application/json {"errors":[{"message":"User is over daily status update limit ","code":185}]} Erantzun baten adibidea
  23. 23. Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 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 23
  24. 24. Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 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 24 % C 3 % A 1
  25. 25. Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática Zuriuneen (SP) kodifikazioari buruzko argibideak: • Path-ean SP-a %20 bezela kodifikatzen da URI1: http://sw2016.com:8080/ldap/user/Iñaki Pérez/index.html URI1 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 da URI2: http://sw2016.com:8080/ldap/login?user=Iñaki Pérez URI2 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 da URI3: http://sw2016.com:8080/download/datasheets/nRF24+.pdf URI3 coded: http://sw2016.com:8080/download/datasheets/nRF24%2B.pdf HTTP-REN FUNTZIONAMENDUA: URI-AREN KODIFIKAZIOA 25
  26. 26. Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 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 26
  27. 27. Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática • 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 27
  28. 28. 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 adibidea HTTP/1.1 200 OK Date: Thu, 20 Nov 2015 20:25:52 GMT Last-Modified: Tue, 17 Sep 2015 13:00:02 GMT ETag: "1a968-3ec-4e693e61bb8b6” Cache-Control: max-age=2592000 Content-Length: 12405 Content-Type: image/jpg IRUDIA (eduki binarioa) Erantzun baten adibidea
  29. 29. 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 OK Date: Thu, 20 Nov 2015 20:25:52 GMT Last-Modified: Tue, 17 Sep 2015 13:00:02 GMT ETag: "1a968-3ec-4e693e61bb8b6” Cache-Control: max-age=2592000 Content-Length: 12405 Content-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.
  30. 30. 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 GMT If-None-Match: "1a968-3ec-4e693e61bb8b6” User-Agent: Mozilla Windows Desktop Eskaera berriaren adibidea HTTP/1.1 200 OK Date: Thu, 20 Nov 2015 20:25:52 GMT Last-Modified: Tue, 17 Sep 2015 13:00:02 GMT ETag: "1a968-3ec-4e693e61bb8b6” Cache-Control: max-age=2592000 Content-Length: 12405 Content-Type: image/jpg IRUDIA (eduki binarioa) Aurreko adibideko erantzuna
  31. 31. 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 Modified Date: Thu, 20 Jan 2016 20:25:52 GMT Last-Modified: Tue, 17 Sep 2015 13:00:02 GMT ETag: "1a968-3ec-4e693e61bb8b6” Cache-Control: max-age=2592000 Erantzun baten adibidea

×