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 .
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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.
– 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.
– 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
• 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
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
• 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.
* 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
– 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.
– 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>
– 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.
– 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>
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}]}
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:
• 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
– 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.
– 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:
–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
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
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