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.

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

720 views

Published on

HTTP protokoloa.

Published in: Education
  • Be the first to comment

  • Be the first to like this

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

  1. 1. 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.
  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 HTTP-REN FUNTZIONAMENDUA: ESKAERAREN PROZESAKETA ZERBITZARIAN 4 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)
  5. 5. 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 5
  6. 6. Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática HTTP-REN FUNTZIONAMENDUA: ZERBITZARIAREN ERANTZUNA 6 HDD1 HDD2 BEZEROA ZERBITZARIA TCP konexioa HTTP erantzuna 808057535 HTTP/1.1 Status Deskribapena Goiburuak CRLF Mezuaren gorputza (zortzikoteetan) HTTP erantzunaren sintaxia HTTP/1.1 200 OKrnDate: Thu, 20 Mar 2014 20:25:52 GMTrnLast-Modified: Tue, 17 Sep 2013 13:00:02 GMTrnETag: "1a968-3ec-4e693e61bb8b6“rn Content-Length: 76rnContent-Type: text/html; charset=ISO-8859-1rnrn<html><head><title>index.html</title></head><body>Hello World!</body></html> 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: 76 Content-Type: text/html; charset=ISO-8859-1 <html><head><title>index.html</title></head> <body>Hello World!</body></html> Adibidearen HTTP erantzuna
  7. 7. Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática HTTP-REN FUNTZIONAMENDUA: ZERBITZARIAREN ERANTZUNA 7 Status: 200 Eskaera ulertzeko eta betetzeko ahalegina deskribatzen duen kodea. 200 kodeak eskaera ondo osoturik dagoela eta zuzen prozesatu dela adierazten du. Programei zuzendua. Deskribapena: OK Status-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 Deskribapena Goiburuak CRLF Mezuaren gorputza (zortzikoteetan) HTTP erantzunaren sintaxia 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: 76 Content-Type: text/html; charset=ISO-8859-1 <html><head><title>index.html</title></head> <body>Hello World!</body></html> Adibidearen HTTP erantzuna
  8. 8. Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática HTTP-REN FUNTZIONAMENDUA: ZERBITZARIAREN ERANTZUNA 8 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 Deskribapena Goiburuak CRLF Mezuaren gorputza (zortzikoteetan) HTTP erantzunaren sintaxia 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: 76 Content-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 GMT Content-Length: 12 Content-Type: text/plain; charset=ISO-8859-1 Hello World! Last-Modified: Tue, 17 Sep 2013 13:00:02 GMT Content-Length: 76 Content-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
  9. 9. Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática ADIBIDEA: HTTP ERANTZUNAREN JASOTZEA PYTHON-EN 9 ---> 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
  10. 10. 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 10
  11. 11. 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
  12. 12. 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 21 UTF-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
  13. 13. Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática JARDUERA: MEZUAREN GORPUTZAREN KODIFIKAZIOA 13 • Wireshark erabilita, http://coding-1190.appspot.com/ baliabidea nabigatzailean ondo bistaratu ezinaren arrazoia aurkitu.
  14. 14. Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática JARDUERA: MEZUAREN GORPUTZAREN KODIFIKAZIOA 14 Edukia notazio hamaseitarrean
  15. 15. 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 15
  16. 16. 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
  17. 17. 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 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: 13 Content-Type: text/plain Hello World!! “Content-Length”-dun HTTP erantzuna 51738 80 51738 80
  18. 18. 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 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: 13 Content-Type: text/plain Hello “Content-Length”-dun HTTP erantzuna World!! 51738 80 51738 80 51738 80 (1) (2) (1) (2)
  19. 19. 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 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-Type: text/plain Transfer-Encoding: chunked 6rnHello rn “Transfer-Encoding”-dun HTTP erantzuna 6rnWorld!rn 1rn!rn 0rnrn 51738 80 51738 80 51738 80 51738 80 51738 80 (1) (2) (3) (4) (1) (2) (3) (4)
  20. 20. 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

×