Chapter 2 Application Layer A note on the use of these ppt slides: We re making these slides freely available to all (faculty, students, readers). They re in PowerPoint form so you can add, modify, and delete slides (including this one) and slide content to suit your needs. They obviously represent a lot of work on our part. In return for use, we only ask the following: If you use these slides (e.g., in a class) in substantially unaltered form, that you mention their source (after all, we d like people to use our book!) If you post any slides in substantially unaltered form on a www site, that you note that they are adapted from (or perhaps identical to) our slides, and note our copyright of this material. Thanks and enjoy! JFK/KWR All material copyright 1996-2004 J.F Kurose and K.W. Ross, All Rights Reserved Computer Networking: A Top Down Approach Featuring the Internet, 3 rd edition. Jim Kurose, Keith Ross Addison-Wesley, July 2004. Sovelluskerros (2/3) 1 Sovelluskerros Verkkosovellusten periaatteet WWW ja HTTP FTP Sähköposti SMTP, POP3, IMAP DNS P2P ja tiedostojen jakaminen Sokettiohjelmointi Sovelluskerros (2/3) 2 1
HTTP: yleiskatsaus HTTP: hypertext transfer protocol WWW:n sovelluskerroksen protokolla asiakas-palvelin-malli asiakas: selain, joka pyytää, vastaanottaa ja esittää WWWobjekteja palvelin: WWW-palvelin lähettää objekteja vastauksena pyyntöihin HTTP 1.0: RFC 1945 HTTP 1.1: RFC 2068 PC running Explorer Mac running Navigator Server running Apache Web Sovelluskerros (2/3) 3 HTTP request-viesti HTTP-viestit: ASCII (ihmisen luettavissa) kaksi HTTP-viestityyppiä: request, response request line (GET, POST, HEAD commands) header lines GET /somedir/page.html HTTP/1.1 Host: www.someschool.edu User-: Mozilla/4.0 Connection: close Accept-language: fr Carriage return and line feed indicates end of message (extra carriage return and line feed) Sovelluskerros (2/3) 4 2
HTTP response-viesti status line (protocol, status code, status phrase) data, e.g., requested HTML file header lines HTTP/1.1 200 OK Connection: close Date: Thu, 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 (Unix) Last-Modified: Mon, 22 Jun 1998... Content-Length: 6821 Content-Type: text/html data data data data data... Sovelluskerros (2/3) 5 WWW-välimuistit (proxy-palvelin) Tavoite: täyttää asiakkaan pyynnöt ilman alkuperäisen palvelimen kuormitusta käyttäjän asetus selaimessa: WWWyhteydet välimuistipalvelimen kautta selain lähettää kaikki HTTP-pyynnöt välimuistipalvelimelle objekti välimuistissa: välimuistipalvelin palauttaa objektin muuten välimuistipalvelin pyytää objektin alkuperäiseltä palvelimelta ja palauttaa sen asiakkaalle client client Proxy origin origin Sovelluskerros (2/3) 6 3
Lisää WWW-välimuisteista Välimuisti toimii sekä asiakkaana että palvelimena Tyypillisesti välimuistin asentaa palveluntarjoaja (yliopisto, yritys, paikallinen ISP) Miksi WWW-välimuisti? Pienentää asiakkaan pyyntöjen vasteaikaa Vähentää liikennettä instituution pääsyverkon linkissä Mahdollistavat tehokkaamman tiedon jakamisen, jos palvelimen yhteys tai suoritusteho on heikko Sovelluskerros (2/3) 7 Esimerkki välimuistista Oletukset keskimääräinen objektin koko = 100 000 bittiä pyyntöjä instituution selaimilta alkuperäisille palvelimille keskimäärin = 15/s viive instituution reittimeltä mille tahansa alkuperäiselle palvelimelle ja takaisin = 2 s Seuraukset lähiverkon käyttöaste = 15% pääsylinkin käyttöaste = 100% kokonaisviive = Internetin viive + pääsylinkin viive + lähiverkon viive = 2 s + minuutteja + millisekunteja institutional network public Internet 1.5 Mbps access link 10 Mbps LAN origin s Sovelluskerros (2/3) 8 4
Esimerkki välimuistista (jatkuu) Mahdollinen ratkaisu kasvatetaan pääsylinkin kaistanleveyttä esim. 10 Mbps Seuraukset lähiverkon käyttöaste = 15% pääsylinkin käyttöaste = 15% kokonaisviive = Internetin viive + pääsylinkin viive + lähiverkon viive = 2 s + millisekunteja + millisekunteja usein kallis päivitys institutional network public Internet 10 Mbps access link 10 Mbps LAN origin s Sovelluskerros (2/3) 9 Esimerkki välimuistista (jatkuu) Asennetaan välimuisti oletetaan, että 40% pyynnöistä löytyy välimuistista Seuraukset 40% pyynnöistä palvellaan lähes välittömästi 60% pyynnöistä välitetään alkuperäiselle palvelimelle pääsylinkin käyttöaste pienenee 60 prosenttiin, joten viiveet merkityksettömiä (esim. 10 ms) kokonaisviive = Internetin viive + pääsylinkin viive + lähiverkon viive = 0.6*(2.01) s + millisekunteja < 1.4 s institutional network public Internet 1.5 Mbps access link 10 Mbps LAN origin s institutional cache Sovelluskerros (2/3) 10 5
Ehdollinen GET Tavoite: ei lähetetä objektia, jos välimuistissa oleva kopio on sama kuin uusin versio välimuisti: määrittelee kopion päivämäärän HTTP request-viestissä: If-modified-since: <date> palvelin: vastaus ei sisällä objektia, jos välimuistin kopio on ajan tasalla: HTTP/1.0 304 Not Modified cache HTTP request If-modified-since: <date> HTTP response HTTP/1.0 304 Not Modified HTTP request If-modified-since: <date> HTTP response HTTP/1.0 200 OK <data> object not modified object modified Sovelluskerros (2/3) 11 Sovelluskerros Verkkosovellusten periaatteet WWW ja HTTP FTP Sähköposti SMTP, POP3, IMAP DNS P2P ja tiedostojen jakaminen Sokettiohjelmointi Sovelluskerros (2/3) 12 6
FTP: protokolla tiedostojen siirtoon at host FTP interface FTP client local file system file transfer FTP remote file system FTP: file transfer protocol Siirretään tiedostoja verkon yli koneiden välillä asiakas-palvelin-malli asiakas: se, joka aloittaa siirron (kumpaan suuntaan tahansa) palvelin: päätelaite toisessa päässä (remote host) FTP: RFC 959 FTP-palvelin: portti 21 Sovelluskerros (2/3) 13 FTP: erilliset kontrolli- ja tiedostonsiirtoyhteydet FTP-asiakas avaa yhteyden FTPpalvelimen porttiin 21, määrittää TCP:n kuljetusprotokollaksi Asiakas saa käyttövaltuudet kontrolliyhteydellä Asiakas selaa etälaitteen hakemistoja lähettämällä komentoja kontrolliyhteyden kautta Kun palvelin vastaanottaa komennon tiedoston siirrosta, palvelin avaa TCP-yhteyden portista 20 asiakkaaseen Kun yksi tiedosto on siirretty, palvelin sulkee yhteyden Palvelin avaa uuden TCPyhteyden seuraavan tiedoston siirtämiseen FTP client TCP control connection port 21 TCP data connection port 20 FTP Toinen moodi tiedoston siirtoon: Asiakas avaa TCP-yhteyden palvelimen ilmoittamaan dynaamiseen porttiin Kontrolliyhteys: out of band FTP-palvelin säilyttää tilan : nykyinen hakemisto, aikaisempi käyttövaltuutus Sovelluskerros (2/3) 14 7
FTP: komentoja ja vasteita Joitain komentoja: lähetetään ASCII-tekstinä kontrolliyhteyden kautta USER name PASS password LIST tiedostojen listaus nykyisessä hakemistossa RETR filename nouda (get) tiedosto etälaitteelta STOR filename lähetä (put) tiedosto etälaitteelle Joitain vastauskoodeja: tilakoodi ja teksti (kuten HTTP:ssä) 331 Username OK, password required 125 data connection already open; transfer starting 425 Can t open data connection 452 Error writing file Sovelluskerros (2/3) 15 Sovelluskerros Verkkosovellusten periaatteet WWW ja HTTP FTP Sähköposti SMTP, POP3, IMAP DNS P2P ja tiedostojen jakaminen Sokettiohjelmointi Sovelluskerros (2/3) 16 8
Sähköposti outgoing message queue Kolme pääkomponenttia: käyttäjäit ( s) sähköpostipalvelimet SMTP: simple transfer protocol Käyttäjäti postin lukija viestien kirjoittaminen, editointi ja lukeminen esim. Pine, Mutt, Eudora, Outlook, Netscape Messenger lähtevät ja tulevat viestit säilytetään palvelimella SMTP SMTP SMTP box Sovelluskerros (2/3) 17 Sähköposti: postipalvelimet Postipalvelimet postilaatikko (box) sisältää käyttäjälle tulleet viestit viestijono sisältää lähetettävät viestit SMTP-protokolla postipalvelimien välillä sähköpostien välitykseen asiakas: lähettävä postipalvelin palvelin : vastaanottava postipalvelin SMTP SMTP SMTP Sovelluskerros (2/3) 18 9
Sähköposti: SMTP [RFC 2821] Käyttää TCP:tä luotettavaan sähköpostien lähetykseen asiakkaalta palvelimelle porttiin 25 Suora tiedonsiirto: lähettävältä palvelimelta vastaanottavalle palvelimelle Tiedonsiirron kolme vaihetta kättely (tervehdys) viestien siirto yhteyden sulkeminen Komennot ja vasteet komennot: ASCII-tekstiä vasteet: tilakoodi ja teksti Viestien täytyy olla 7 bitin ASCII -muodossa Sovelluskerros (2/3) 19 Esimerkki: Alice lähettää viestin Bobille 1) Alice käyttää omaa sähköpostiohjelmaansa viestin kirjoittamiseen Bobille 2) Alicen ohjelma lähettää viestin Alicen postipalvelimelle; viesti menee viestijonoon 3) SMTP:n asiakaspuoli avaa TCP-yhteyden Bobin postipalvelimelle 4) SMTP-asiakas lähettää viestin TCP-yhteyden yli 5) Bobin postipalvelin laittaa viestin Bobin postilaatikkoon 6) Bob käyttää omaa sähköpostiohjelmaansa viestin lukemiseen 1 2 3 4 5 6 Sovelluskerros (2/3) 20 10
Esimerkki SMTP-viestinvaihdosta S: 220 hamburger.edu C: HELO crepes.fr S: 250 Hello crepes.fr, pleased to meet you C: MAIL FROM: <alice@crepes.fr> S: 250 alice@crepes.fr... Sender ok C: RCPT TO: <bob@hamburger.edu> S: 250 bob@hamburger.edu... Recipient ok C: DATA S: 354 Enter, end with "." on a line by itself C: Do you like ketchup? C: How about pickles? C:. S: 250 Message accepted for delivery C: QUIT S: 221 hamburger.edu closing connection Sovelluskerros (2/3) 21 Kokeile itse SMTP-protokollaa telnet name 25 varmista, että saat 220-vastauksen palvelimelta käytä HELO, MAIL FROM, RCPT TO, DATA, QUIT komentoja Näin voit lähettää sähköpostia ilman sähköpostiohjelmaa Sovelluskerros (2/3) 22 11
SMTP: kommentteja SMTP käyttää persistentyhteyksiä SMTP vaatii, että viesti (otsikot ja runko) on 7 bitin ASCII-tekstiä SMTP-palvelin käyttää merkkijonoa <CR><LF>.<CR><LF> viestin lopun määrittämiseen Vertailua HTTP:n kanssa: HTTP: pull SMTP: push molemmissa ASCIImuotoiset komennot ja vasteet, molemmissa tilakoodit HTTP: jokainen objekti kapseloidaan omaan vastausviestiinsä SMTP: useita objekteja lähetetään moniosaisissa viesteissä Sovelluskerros (2/3) 23 Viestin muoto SMTP: protokolla sähköpostiviestien vaihtamiseen RFC 822: standardi viestien tekstimuodolle: otsikot, esim. To: From: Subject: Eivät ole SMTP:n komentoja! viestin runko itse viesti, vain ASCIImerkkejä header body blank line Sovelluskerros (2/3) 24 12
Viestin muoto: multimedialaajennukset MIME: multimedia extension, RFC 2045, 2046, 2047 lisärivit viestin otsikossa määrittävät MIME-sisällön tyypin MIME version method used to encode data multimedia data type, subtype, parameter declaration encoded data From: alice@crepes.fr To: bob@hamburger.edu Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data.........base64 encoded data Sovelluskerros (2/3) 25 Postinnoutoprotokollat SMTP SMTP access protocol sender s receiver s SMTP: kuljetus ja tallennus vastaanottajan postipalvelimelle Postinnoutoprotokolla ( access protocol): haku palvelimelta POP: Post Office Protocol [RFC 1939] käyttövaltuutus (ti <--> palvelin) ja lataus IMAP: Internet Mail Access Protocol [RFC 1730] enemmän ominaisuuksia (monimutkaisempi) palvelimelle tallennettujen viestien manipulointi HTTP: Web-ohjelmat http://web.jyu.fi, G, Hot, Sovelluskerros (2/3) 26 13
POP3-protokolla authorization phase asiakkaan komennot: : käyttäjätunnus pass: salasana palvelimen vastaukset: +OK -ERR transaction phase, asiakas: list: listaa viestinumerot retr: nouda viesti numeron perusteella dele: poista viesti quit S: +OK POP3 ready C: bob S: +OK C: pass hungry S: +OK successfully logged on C: list S: 1 498 S: 2 912 S:. C: retr 1 S: <message 1 contents> S:. C: dele 1 C: retr 2 S: <message 1 contents> S:. C: dele 2 C: quit S: +OK POP3 signing off Sovelluskerros (2/3) 27 POP3 ja IMAP Lisää POP3:sta Edellisessä esimerkissä käytettiin lataa ja tuhoa - moodia Bob ei voi lukea viestejä uudelleen, jos hän vaihtaa asiakasohjelmaa Lataa ja säilytä : viestien kopioita useassa eri asiakasohjelmassa POP3 on tilaton istuntojen välillä IMAP Säilyttää kaikki viestit yhdessä paikassa: palvelimella Käyttäjä voi järjestellä viestejä kansioihin IMAP säilyttää käyttäjän tilan istuntojen välillä: kansioiden nimet sekä viestien tunnusten ja kansioiden nimien linkitykset Sovelluskerros (2/3) 28 14