3. ASTEA (2016/02/09): HTTP
-
Upload
oskar-casquero -
Category
Education
-
view
658 -
download
2
Transcript of 3. ASTEA (2016/02/09): HTTP
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 1
HTTPHYPERTEXT TRANSFER
PROTOCOLWeb Sistemak
3. ASTEA (2016/02/09)
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: ESKAERAREN PROZESAKETA
ZERBITZARIAN
Zerbitzariari buruzko suposaketak:• Zerbitzariaren alias-a sw2016.com da.• Tomcat aplikazioa zerbitzari motako aplikazioa da,
HTTP protokoloa inplementatzen duena.• Tomcat 8080. portuan entzuten dago.• Tomcat-ek http://sw2016.com:8080/resource URI-
arekin identifikatutako baliabidea eskeintzen du.• Baliabide hori testu lauean eta HTML-n, euskeraz eta
gazteleraz, mahaigaineko eta mugikorrentzako bertsioetan, eskuragarri dago.• Tomcat-ek ezin dezake testua konprimatu.• Zerbitzariak TCP/IP protokolo multzoa darabil.
HDD1
HDD2
ZERBITZARIAZerbitzariak eskaera jasotzen duenean, metodoa eta RequestURI aztertzen ditu ondorengoa jakiteko:
1. Baliabidea existitzen ote den.2. Eskatutako ekintza baliabideari aplikatu ahal zaion.
Edukiaren negoziaketa: baliabidea existitzen bada eta eskatutako ekintza aplikatu ahal bazaio, web zerbitzariak eskaeraren goiburuak aztertzen ditu bezeroaren beharrei hobetoen doakion baliabidearen bertsioa itzultzeko:• Accept: text/html• Accept-Encoding: gzip,identity;q=0.5• Accept-Language: en-US,es-ES;q=0.8• User-Agent: Mozilla Windows Desktop
Kasu honetan, web zerbitzariak ondorengo ezaugarriak dituen erantzuna itzultzen du:• HTML-en kodifikatua• konpresiorik gabe• gazteleraz• bertsio klasikoa (mugikorrak ez diren gailuentzako)
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 5
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 6
HTTP-REN FUNTZIONAMENDUA: ZERBITZARIAREN
ERANTZUNA
HDD1
HDD2
BEZEROAZERBITZARIA
TCP konexioaHTTP erantzuna
808057535
HTTP/1.1 Status DeskribapenaGoiburuakCRLFMezuaren gorputza (zortzikoteetan)
HTTP erantzunaren sintaxia
HTTP/1.1 200 OK\r\nDate: Thu, 20 Mar 2014 20:25:52 GMT\r\nLast-Modified: Tue, 17 Sep 2013 13:00:02 GMT\r\nETag: "1a968-3ec-4e693e61bb8b6“\r\nContent-Length: 76\r\nContent-Type: text/html; charset=ISO-8859-1\r\n\r\n<html><head><title>index.html</title></head><body>Hello World!</body></html>
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: 76Content-Type: text/html; charset=ISO-8859-1
<html><head><title>index.html</title></head><body>Hello World!</body></html>
Adibidearen HTTP erantzuna
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 7
HTTP-REN FUNTZIONAMENDUA: ZERBITZARIAREN
ERANTZUNAStatus: 200
Eskaera ulertzeko eta betetzeko ahalegina deskribatzen duen kodea.
200 kodeak eskaera ondo osoturik dagoela eta zuzen prozesatu dela adierazten du.
Programei zuzendua.
Deskribapena: OKStatus-ari loturiko testu deskribapena.
Gizakiei zuzendua.
Goiburuak: erantzunaren alderdi ezberdinak bereizten ditu.Content-Length: zerbitzariak mezuaren gorputzeko luzeera
(zortzikote kopurua) adieratzen du.Content-Type: zerbitzariak edukia HTML motakoa dela eta
bere zortzikoteak latin-1-en (ISO-8859-1) kodifikatuta daudela adierazten du.
HTTP/1.1 Status DeskribapenaGoiburuakCRLFMezuaren gorputza (zortzikoteetan)
HTTP erantzunaren sintaxia
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: 76Content-Type: text/html; charset=ISO-8859-1
<html><head><title>index.html</title></head><body>Hello World!</body></html>
Adibidearen HTTP erantzuna
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 8
HTTP-REN FUNTZIONAMENDUA: ZERBITZARIAREN
ERANTZUNA
Goiburuak: (jarraipena)Date: zerbitzariak erantzuna sortu zueneko data (
RFC 822, 5. atala formatuan, 1s-ko bereizmenarekin).Last-Modified: baliabidea azkenengoz aldatu zeneko data. ETag: entitate* bereizlea; baliabide berdinaren bi bertsio
bereizteko erabiltzen da, adibidez:
* entitatea: goiburu jakin batzuk eta mezuaren gorputzak osotzen duten multzoa (RFC 2616, 7. atala).
Mezuaren gorputza: edukia; kasu honetan, HTML dokumentua (web orria).
HTTP/1.1 Status DeskribapenaGoiburuakCRLFMezuaren gorputza (zortzikoteetan)
HTTP erantzunaren sintaxia
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: 76Content-Type: text/html; charset=ISO-8859-1
<html><head><title>index.html</title></head><body>Hello World!</body></html>
Adibidearen HTTP erantzuna Last-Modified: Tue, 17 Sep 2013 13:00:02 GMTContent-Length: 12Content-Type: text/plain; charset=ISO-8859-1
Hello World!
Last-Modified: Tue, 17 Sep 2013 13:00:02 GMTContent-Length: 76Content-Type: text/html; charset=ISO-8859-1
<html><head><title>index.html</title></head><body>Hello World!</body></html>
RequestURI: http://sw2016.com:8080/resource
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 9
ADIBIDEA: HTTP ERANTZUNAREN JASOTZEA PYTHON-EN
---> HTTP erantzuna jasotzen... STATUS: 200 OK RESPONSE HEADER: content-length: 7822 RESPONSE HEADER: content-encoding: gzip RESPONSE HEADER: set-cookie: NID=76=fmggh5aP22yIS8...; expires=Tue, 16-Aug-2016
12:13:06 GMT; path=/; domain=.google.es; HttpOnly RESPONSE HEADER: cache-control: private, max-age=0 RESPONSE HEADER: date: Mon, 15 Feb 2016 12:13:06 GMT RESPONSE HEADER: content-type: text/html; charset=ISO-8859-1 RESPONSE BODY: |[w 8 6 ʖ4 30 HǼ ' z {��� � ���� �� ��� �� � � ���
print "/r/n---> HTTP erantzuna jasotzen..."erantzuna = conn.getresponse()print " STATUS: " + str(erantzuna.status) + " " + erantzuna.reason
goiburuak_erantzuna = erantzuna.getheaders()for each in goiburuak_erantzuna: print " RESPONSE HEADER: " + each[0] + ": " + each[1]
edukia_erantzuna = erantzuna.read()print " RESPONSE BODY: " + edukia_erantzuna
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 10
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
• Mezuaren gorputza zortzikotez (byte-z) osoturik dago:– Testua (testu sinplea, HTML, CSS, XML, JSON, CSS, …)– Eduki binarioa (PDF, bideoa, exekutagarriak, etc.)
• Eduki binarioak aplikazio edo plataforma jakin batzuentzako pentsaturik daude. Adibidez, PDF-ak PDF-irakurle batek soilik ulertu ditzake ondo. PDF bat testu editore arrunt batekin zabaldu edo irteera estandarrera bidaltzen bada, bere edukiaren adierazpen oker bat bistaratzen da, testu oinarria duena.
• Testua programa ugarirekin bistaratu daiteke, baina guztiek ez dute zortzikoteak dekodifikatzeko konfigurazio berdina erabiltzen. –Adibidez, jatorrian fitxategi bat UTF-8 erabiliz kodifikatu bazen, ”ñ” ikurra C3 B1
byte-ekin gordeko da. – Fitxategia ISO-8859-1-en konfiguratutako testu editore baten bitartez zabaltzen
badugu, dekodifikazioaren eraginez ondorengo bi ikurrak bistaratuko dira: ñ
HTTP-REN FUNTZIONAMENDUA: MEZUAREN GORPUTZA
11
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática
• “Content-Type” goiburaren bitartez, zerbitzariak, itzultzen duen eduki mota adierazi dezake: text/html, application/pdf, …
• Nabigatzaileak “Content-Type” goiburua irakurtzen duenean, bere balioa testu motakoa edo beste mota batekoa ote den egiaztatzen du. – Edukia beste mota batekoa bada, bera zabaltzeko plugin-ik konfiguratuta ote duen egiaztatzen
du. Horrela ez bada, erabiltzaileari edukia gordetzeko edo dagokion aplikazioarekin zabaltzeko aukera ematen dio.
– Edukia testu motakoa bada, nabigatzialeak berak interpretatu (bistaratu) egiten du. Horretarako zelan kodifikatuta dagoen jakin behar du *. • HTTP-k edukiaren kodifikazioa “Content-Type” goiburuan adierazteko aukera du:
Content-Type: text/html; charset=ISO-8859-1
* Demagun ondorengo testua kodifikatu nahi dela: Hola Iñaki Pérez!US-ASCII: Ezin da kodifikatu, “ñ” y “é” ikurrak ez bait dira US-ASCII alfabetoan existitzen.Latin-1: 48 6f 6c 61 20 49 f1 61 6b 69 20 50 e9 72 65 7a 21UTF-8: 48 6f 6c 61 20 49 c3 b1 61 6b 69 20 50 c3 a9 72 65 7a 21
HTTP-REN FUNTZIONAMENDUA: MEZUAREN GORPUTZA
12
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 13
JARDUERA: MEZUAREN GORPUTZAREN KODIFIKAZIOA• Wireshark erabilita, http://coding-1190.appspot.com/ baliabidea
nabigatzailean ondo bistaratu ezinaren arrazoia aurkitu.
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 14
JARDUERA: MEZUAREN GORPUTZAREN KODIFIKAZIOA
Edukia notazio hamaseitarrean
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 15
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
• Web zerbitzari batek itzulitako erantzun bat irakurri behar duen web bezero batek mezuaren gorputza non amaitzen den jakin behar du.
• HTTP protokoloak mezuaren gorputzaren luzeera adierazteko duen modu bat “Content-Length” goiburua da.– OHARRA: HTTP erantzuna bidali aurretik, “Content-Length” goiburuak erantzunean sartuko den edukiaren tamaina
ezagutzea eskatzen du.
• Batzutan, erantzunean datu kopuru handi bat itzuli behar da, baina ez dago datu horien tamaina aldez aurretik ezagutzerik eskaera guztiz prozesatzen denerarte; adibidez: demagun datu base bateko eskaera baten emaitzak web orri batean bistaratu nahi direla. – “Content-Length” goiburua erabiltzekotan, mezuaren gorputzean doazen datuen tamaina HTTP erantzuna bidali aurretik
ezagutu beharra dago. Honek, alde batetik, datu baseko eskaeraren prozesamendua bukatzeari itxoitea suposatzen du. Bestetik, datuak gordetzeko buffer handi bat behar da.
– Erantzuna bidali aurretik erantzuna prozesatzeko beharrezkoa den denborak sortutako atzerapenak erabiltzailearen esperientzian eragin negatiboa dauka.
• HTTP protokoloak web zerbitzariak eskaera prozesatzen duen bitartean bezeroak eskatutako edukiaren zatiak bidaltzen joateko modua eskeintzen du: “Transfer-Encoding” goiburua “chunked” balioarekin.
HTTP-REN FUNTZIONAMENDUA: CONTENT LENGTH
ETA TRANSFER ENCODING
16
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática
• “Content-Length” adibidea: zerbitzariak “Hello World!!” testua bidali behar duela suposatuko dugu.
HTTP-REN FUNTZIONAMENDUA: CONTENT LENGTH
ETA TRANSFER ENCODING
17
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: 13Content-Type: text/plain
Hello World!!
“Content-Length”-dun HTTP erantzuna
51738
80
51738
80
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática
• OHARRA: erantzunaren edukia TCP mailako MTU-a baino handiagoa bada, HTTP mezua hainbat segmentutan bidaliko da.
• Adibidea: TCP mailaren MTU-a 187 zortzikote direla suposatuko dugu.
HTTP-REN FUNTZIONAMENDUA: CONTENT LENGTH
ETA TRANSFER ENCODING
18
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: 13Content-Type: text/plain
Hello
“Content-Length”-dun HTTP erantzuna
World!!
51738
80
51738
80
51738
80
(1)
(2)
(1)
(2)
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática
• “Transfer-Encoding: chunked” adibidea: zerbitzariak “Hello World!!” testua bidali behar duela suposatuko dugu.
Zati bakoitzaren luzeera notazio hamaseitarrean adierazten da.
2, 3 eta 4 zatiek ez daramate HTTP goibururik. Zuzenean TCP segmentuetan kapsulatuta doaz.
HTTP-REN FUNTZIONAMENDUA: CONTENT LENGTH
ETA TRANSFER ENCODING
19
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-Type: text/plainTransfer-Encoding: chunked
6\r\nHello \r\n
“Transfer-Encoding”-dun HTTP erantzuna
6\r\nWorld!\r\n
1\r\n!\r\n
0\r\n\r\n
51738
80
51738
80
51738
80
51738
80
51738
80
(1)
(2)
(3)
(4)
(1)
(2)
(3)
(4)
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática
• Bi moduen arteko ezberdintasunak :
– "Content-Length" goiburuarekin HTTP mezuak ez dira erantzun osoa prozesatzen denerarte bidaltzen; aldiz, "Transfer-Encoding“ goiburuarekin HTTP mezuak zatiak prozesatu ahala bidaltzen dira
– "Content-Length" goiburuarekin HTTP mezuen zatitzea TCP mailak egiten du; aldiz, "Transfer-Encoding" goiburuarekin HTTP mailak berak egiten du.
HTTP-REN FUNTZIONAMENDUA: CONTENT LENGTH
ETA TRANSFER ENCODING
20