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

31
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 .

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

Page 1: 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.

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

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

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

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

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

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.

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

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

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

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.

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

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)

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

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

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

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.

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

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

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

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)

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

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

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

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.

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

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

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

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

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

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

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

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

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

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• …

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.

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

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

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

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