3. ASTEA (2016/02/09): HTTP

20
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática HTTP HYPERTEXT TRANSFER PROTOCOL Web Sistemak 3. ASTEA (2016/02/09) 1 Web Sistemak by Oskar Casquero & María Luz Álvarez is licensed under a Creative Commons Reconocimiento 4.0 Internacional License .

Transcript of 3. ASTEA (2016/02/09): HTTP

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

Page 2: 3. ASTEA (2016/02/09): 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: 3. ASTEA (2016/02/09): 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: 3. ASTEA (2016/02/09): HTTP

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)

Page 5: 3. ASTEA (2016/02/09): HTTP

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

Page 6: 3. ASTEA (2016/02/09): HTTP

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

Page 7: 3. ASTEA (2016/02/09): HTTP

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

Page 8: 3. ASTEA (2016/02/09): HTTP

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

Page 9: 3. ASTEA (2016/02/09): HTTP

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

Page 10: 3. ASTEA (2016/02/09): HTTP

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

Page 11: 3. ASTEA (2016/02/09): HTTP

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

Page 12: 3. ASTEA (2016/02/09): HTTP

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

Page 13: 3. ASTEA (2016/02/09): HTTP

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.

Page 14: 3. ASTEA (2016/02/09): HTTP

Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 14

JARDUERA: MEZUAREN GORPUTZAREN KODIFIKAZIOA

Edukia notazio hamaseitarrean

Page 15: 3. ASTEA (2016/02/09): HTTP

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

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

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

Page 17: 3. ASTEA (2016/02/09): HTTP

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

Page 18: 3. ASTEA (2016/02/09): HTTP

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)

Page 19: 3. ASTEA (2016/02/09): HTTP

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)

Page 20: 3. ASTEA (2016/02/09): HTTP

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