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 (1/3) 1 Sovelluskerros Tavoite: Tutustua verkkosovellusten protokollien käsitteisiin ja toteutusnäkökulmiin: kuljetuskerroksen palvelumallit asiakas-palvelinmalli vertaisverkkomalli Opiskellaan protokollia tutkimalla yleisimpiä sovelluskerroksen protokollia: HTTP FTP SMTP / POP3 / IMAP DNS Sovelluskerros (1/3) 2 1
Sovelluskerros Verkkosovellusten periaatteet WWW ja HTTP FTP Sähköposti SMTP, POP3, IMAP DNS P2P ja tiedostojen jakaminen Sokettiohjelmointi Sovelluskerros (1/3) 3 Joitain verkkosovelluksia sähköposti WWW pikaviestimet etäkäyttö P2P tiedostojen jako verkkopelit suoratoisto (streaming) Internet-puhelut reaaliaikaiset etäneuvottelut massiivinen rinnakkaislaskenta Sovelluskerros (1/3) 4 2
Verkkosovelluksen luominen Kirjoitetaan ohjelma, joka toimii eri päätelaitteissa kommunikoi verkon yli esim. WWW-palvelimen ohjelmisto kommunikoi selainohjelmiston kanssa Verkon rungon laitteisiin ei kirjoiteta sovellusohjelmia rungon laitteet eivät toimi sovelluskerroksella tämä mahdollistaa nopean sovellussuunnittelun application transport network data link physical application transport network data link physical application transport network data link physical Sovelluskerros (1/3) 5 Sovellusarkkitehtuurit Asiakas-palvelin (client-server) Vertaisverkko (peer-to-peer, P2P) Asiakas-palvelin- ja vertaisverkkoarkkitehtuurien yhdistelmä (hybrid) Sovelluskerros (1/3) 6 3
Asiakas-palvelin-arkkitehtuuri Palvelin: päätelaite aina päällä pysyvä IP-osoite palvelinfarmeja skaalautuvuuteen Asiakkaat: kommunikoivat palvelimen kanssa voivat olla yhteydessä verkkoon epäsäännöllisesti IP-osoite voi olla dynaaminen eivät kommunikoi suoraan toistensa kanssa Sovelluskerros (1/3) 7 Puhdas P2P-arkkitehtuuri Ei aina päällä olevaa palvelinta Mitkä tahansa päätelaitteet kommunikoivat suoraan keskenään Vertaiskumppanit (peers) ovat epäsäännöllisesti yhteydessä verkkoon ja niiden IP-osoitteet muuttuvat Esim. Gnutella, Kazaa/FastTrack Helposti skaalautuva Mutta hankala hallinnoida Sovelluskerros (1/3) 8 4
Asiakas-palvelin- ja P2Parkkitehtuurien yhdistelmä Napster tiedostojen siirtoon P2P tiedostojen etsintä keskitetty: sisältö rekisteröidään keskuspalvelimelle sisällön sijainti selvitetään keskuspalvelimelta Pikaviestimet (instant messaging) kahden käyttäjän väliseen keskusteluun P2P sijainnit ja läsnäolotiedot keskitetty: käyttäjä rekisteröi IP-osoitteensa keskuspalvelimelle kytkeytyessään verkkoon keskuspalvelimelta kysytään muiden käyttäjien IP-osoitteet Sovelluskerros (1/3) 9 Prosessien kommunikointi Prosessi: päätelaitteessa toiminnassa oleva ohjelma samassa päätelaitteessa kaksi prosessia kommunikoivat käyttäen prosessien välistä kommunikointia (käyttöjärjestelmän määrittelemä) eri päätelaitteissa sijaitsevat prosessit kommunikoivat vaihtamalla viestejä Asiakasprosessi: prosessi, joka aloittaa kommunikoinnin Palvelinprosessi: prosessi, joka odottaa yhteydenottoa Huom: P2Parkkitehtuurin mukaisissa sovelluksissa on sekä asiakas- että palvelinprosessit Sovelluskerros (1/3) 10 5
Soketit (sockets) Prosessi lähettää ja vastaanottaa viestejä sokettinsa välityksellä Soketti vastaa ovea: lähettävä prosessi työntää viestin ulos ovesta lähettävä prosessi luottaa kuljetusinfrastruktuurin oven toisella puolella kuljettavan viestin vastaanottavan prosessin soketille Ohjelmointirajapinta (API): valitaan kuljetusprotokolla host or server process socket TCP with buffers, variables voidaan määritellä joitain parametreja controlled by app developer controlled by OS Internet host or server process socket TCP with buffers, variables Sovelluskerros (1/3) 11 Prosessien osoitteet Jotta prosessi voi vastaanottaa viestejä, sillä täytyy olla tunniste Päätelaitteella on yksikäsitteinen 32 bittinen IP-osoite Q: Riittääkö päätelaitteen IP-osoite tunnistamaan prosessin? A: Ei, koska samassa päätelaitteessa voi olla toiminnassa monta prosessia samanaikaisesti Tunniste sisältää sekä IP-osoitteen että porttinumeron, joka liittyy prosessiin kyseisessä päätelaitteessa Esimerkkejä porttinumeroista: HTTP-palvelin: 80 sähköpostipalvelin: 25 Sovelluskerros (1/3) 12 6
Sovelluskerroksen protokollat Minkälaisia viestejä vaihdetaan: esim. request- ja responseviestit Viestien syntaksi: mitä kenttiä viestissä on, miten kentät kuvataan Kenttien semantiikka: kenttien merkitys Säännöt sille milloin ja miten prosessit lähettävät viestejä ja vastaavat viesteihin Julkisia protokollia: määritellään RFC:ssä mahdollistaa yhteentoimivuuden esim. HTTP, SMTP Yksityisiä (proprietary) protokollia: esim. Skype, Kazaa/FastTrack Sovelluskerros (1/3) 13 Mitä kuljetuspalveluita sovellus tarvitsee? Tiedon häviäminen jotkut sovellukset (esim. äänen tai puheen siirtäminen) sietävät jonkin verran häviöitä monet sovellukset (esim. tiedostonsiirto, telnet) vaativat 100% luotettavan yhteyden Ajoitus jotkut sovellukset (esim. Internet-puhelut, interaktiiviset pelit) vaativat pienen viiveen toimiakseen tehokkaasti Kaistanleveys jotkut sovellukset (esim. multimedia) vaativat minimikaistanleveyden toimiakseen tehokkaasti monet sovellukset ( joustavat sovellukset ) käyttävät kaiken saamansa kaistanleveyden Sovelluskerros (1/3) 14 7
Kuljetuspalvelun vaatimukset yleisimmille sovelluksille Application Data loss Bandwidth Time Sensitive file transfer e-mail Web documents real-time audio/video stored audio/video interactive games instant messaging no loss no loss no loss loss-tolerant loss-tolerant loss-tolerant no loss elastic elastic elastic audio: 5kbps-1Mbps video:10kbps-5mbps same as above few kbps up elastic no no no yes, 100 s msec yes, few secs yes, 100 s msec yes and no Sovelluskerros (1/3) 15 Internetin kuljetusprotokollien palvelut TCP-palvelu: yhteydellinen: asiakas- ja palvelinprosessien välillä vaaditaan yhteyden alustus luotettava tiedonsiirto lähettävän ja vastaanottavan prosessin välillä vuonvalvonta: lähettäjä ei tukahduta vastaanottajaa ruuhkanhallinta: lähettäjä hidastaa lähetysnopeutta, kun verkko ruuhkaantuu ei tarjoa: takeita ajoitukselle tai minimikaistanleveydelle UDP-palvelu: yhteydetön, epäluotettava tiedonsiirto lähettävän ja vastaanottavan prosessin välillä ei tarjoa: yhteyden muodostusta, luotettavuutta, vuonvalvontaa, ruuhkanhallintaa, takeita ajoitukselle tai minimikaistanleveydelle Q: Onko mitään hyötyä? Miksi UDP on olemassa? Sovelluskerros (1/3) 16 8
Internet-sovellukset: sovellus- ja kuljetusprotokollat Application e-mail remote terminal access Web file transfer streaming multimedia Internet telephony Application layer protocol SMTP [RFC 2821] Telnet [RFC 854] HTTP [RFC 2616] FTP [RFC 959] proprietary (e.g., RealNetworks) proprietary (e.g., Skype) Underlying transport protocol TCP TCP TCP TCP TCP or UDP typically UDP (maybe TCP for handshaking) Sovelluskerros (1/3) 17 Sovelluskerros Verkkosovellusten periaatteet WWW ja HTTP FTP Sähköposti SMTP, POP3, IMAP DNS P2P ja tiedostojen jakaminen Sokettiohjelmointi Sovelluskerros (1/3) 18 9
WWW ja HTTP Ensin hieman termejä WWW-sivu koostuu objekteista Objekti voi olla HTML-tiedosto, JPEG-kuva, Javasovelma (appletti), äänitiedosto, WWW-sivu sisältää perus HTML-tiedoston, jossa voidaan viitata muihin objekteihin Jokaisella objektilla on URL-osoite Esimerkki URL: www.someschool.edu/somedept/pic.gif laitenimi polkunimi Sovelluskerros (1/3) 19 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 server Sovelluskerros (1/3) 20 10
HTTP: yleiskatsaus Käyttää TCP:tä kuljetuskerroksella: asiakas aloittaa TCPyhteyden (luo soketin) palvelimeen, porttiin 80 palvelin hyväksyy asiakkaan TCP-yhteyden HTTP-viestejä (sovelluskerroksen protokolla-viestejä) vaihdetaan selaimen (HTTPasiakas) ja WWW-palvelimen (HTTP-palvelin) välillä TCP-yhteys suljetaan HTTP on tilaton palvelin ei säilytä mitään tietoja asiakkaan aikaisemmista pyynnöistä Tilatietoja ylläpitävät protokollat ovat monimutkaisia! aikaisempi historia (tila) täytyy säilyttää jos palvelin tai asiakas kaatuu, niiden näkemys tilasta voi olla erilainen, vaatii yhteensovittamista Sovelluskerros (1/3) 21 HTTP-yhteydet Nonpersistent HTTP Enintään yksi objekti lähetetään yhden TCPyhteyden yli HTTP/1.0 käyttää nonpersistentyhteyksiä Persistent HTTP Useita objekteja voidaan lähettää saman TCP-yhteyden yli HTTP/1.1 käyttää oletuksena persistentyhteyksiä Sovelluskerros (1/3) 22 11
Nonpersistent HTTP Oletetaan, että käyttäjä kirjoittaa URL:n www.someschool.edu/somedepartment/home.index (sisältää tekstiä, viittaukset 10 jpeg-kuvaan) aika 1a. HTTP-asiakas aloittaa TCPyhteyden HTTP-palvelimeen (prosessiin) päätelaitteen www.someschool.edu portissa 80 2. HTTP-asiakas lähettää HTTP request-viestin (sisältää URL:n) TCP-yhteyden sokettiinsa; viesti ilmaisee, että asiakas haluaa objektin somedepartment/home.index 1b. HTTP-palvelin päätelaitteessa www.someschool.edu odottaa TCP-yhteyttä portissa 80; hyväksyy yhteyden, ilmoittaa asiakkaalle 3. HTTP-palvelin vastaanottaa request-viestin, muodostaa response-viestin, joka sisältää pyydetyn objektin ja lähettää viestin sokettiinsa Sovelluskerros (1/3) 23 Nonpersistent HTTP (jatkuu) aika 5. HTTP-asiakas vastaanottaa response-viestin, joka sisältää html-tiedoston ja esittää sen selaimessa; jäsentäessään html-tiedostoa löytää 10 viittausta jpeg-objekteihin 6. Askeleet 1-5 toistetaan jokaiselle 10 jpeg-objektille 4. HTTP-palvelin sulkee TCPyhteyden Sovelluskerros (1/3) 24 12
Vasteajan mallinnus RRT (round-trip time): aika, joka kuluu pienen paketin matkaan asiakkaalta palvelimelle ja takaisin Vasteaika: yksi RTT menee TCP-yhteyden avaamiseen yksi RTT menee HTTP-pyynnön lähettämiseen sekä HTTPvastauksen ja tiedoston ensimmäisten tavujen vastaanottamiseen transmit time: tiedoston lähettämiseen kuluva aika total = 2RTT+transmit time initiate TCP connection RTT request file RTT file received time time time to transmit file Sovelluskerros (1/3) 25 Persistent HTTP Nonpersistent HTTP vaatii 2 RTT:tä per objekti käyttöjärjestelmän täytyy jakaa resursseja jokaiselle TCP-yhteydelle mutta selain usein avaa rinnakkaisia TCP-yhteyksiä hakeakseen viitattuja objekteja Persistent HTTP palvelin jättää yhteyden auki lähetettyään pyynnön seuraavat HTTP-viestit saman asiakkaan ja palvelimen välillä lähetetään saman yhteyden yli Persistent without pipelining: asiakas lähettää uuden pyynnön vasta sitten kun edellinen vastaus on vastaanotettu yksi RTT per viitattu objekti Persistent with pipelining: oletus HTTP/1.1:ssä asiakas lähettää pyynnön heti kun se huomaa viitatun objektin vain yksi RTT kaikille viitatuille objekteille Sovelluskerros (1/3) 26 13
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-agent: Mozilla/4.0 Connection: close Accept-language: fr Carriage return and line feed indicates end of message (extra carriage return and line feed) Sovelluskerros (1/3) 27 HTTP request-viesti: yleinen muoto Sovelluskerros (1/3) 28 14
Lomakkeen sisällön lataaminen POST-metodi: WWW-sivuilla on usein lomakkeita, joihin syötetään tietoja syötetyt tiedot ladataan palvelimelle request-viestin entity body -kentässä URL-metodi: käyttää GET-metodia syötetyt tiedot ladataan palvelimelle request-viestin URL-kentässä: www.somesite.com/animalsearch?monkeys&banana Sovelluskerros (1/3) 29 Metodityypit HTTP/1.0 GET POST HEAD pyytää palvelinta jättämään pyydetyn objektin pois vastauksesta HTTP/1.1 GET, POST, HEAD PUT lataa entity body kentässä annetun tiedoston URL-kentässä määriteltyyn paikkaan DELETE tuhoaa URL-kentässä määritellyn tiedoston Sovelluskerros (1/3) 30 15
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 (1/3) 31 HTTP response-viestin tilakoodit Ensimmäisellä rivillä response-viestissä Joitain esimerkkejä: 200 OK pyyntö onnistui, pyydetty objekti on tässä viestissä 301 Moved Permanently pyydetty objekti siirretty, uusi sijainti ilmoitetaan tässä viestissä (otsikko Location:) 400 Bad Request palvelin ei ymmärtänyt pyyntöä 404 Not Found pyydettyä dokumenttia ei löydy tältä palvelimelta 505 HTTP Version Not Supported Sovelluskerros (1/3) 32 16
Kokeile itse HTTP-protokollaa 1. Ota Telnet-yhteys johonkin WWW-palvelimeen: telnet users.jyu.fi 80 Avaa TCP-yhteyden palvelimen porttiin 80 (HTTP-palvelimen oletusportti); kaikki mitä kirjoitetaan, lähetetään samaan porttiin 2. Kirjoita GET HTTP-viesti: GET /~mannikko/tietoverkot/ HTTP/1.1 Host: users.jyu.fi Kirjoittamalla tämän (paina lopuksi Enteriä kahdesti) lähetät lyhyen mutta täydellisen GET-pyynnön HTTP-palvelimelle 3. Tutki HTTP-palvelimen lähettämää vastausta Sovelluskerros (1/3) 33 Käyttäjä-palvelin-tila: evästeet Monet WWW-sivustot käyttävät evästeitä Neljä komponenttia: 1) cookie-otsikkorivi HTTP response-viestissä 2) cookie-otsikkorivi HTTP request-viestissä 3) cookie-tiedosto säilytetään käyttäjän koneella ja sitä hallinnoi käyttäjän selain 4) tietokanta WWWpalvelimella Esimerkki: Olet yhteydessä Internetiin aina samalta koneelta Vierailet jonkin verkkokaupan sivulla ensimmäistä kertaa Kun HTTP-pyyntö saapuu palvelimelle, luodaan yksikäsitteinen tunnus ja tallennetaan tiedot tietokantaan Seuraavilla vierailuilla palvelin tunnistaa sinut tunnuksen perusteella Sovelluskerros (1/3) 34 17
Evästeet: tilatietojen säilyttäminen Cookie file ebay: 8734 client usual http request msg usual http response + Set-cookie: 1678 server server creates ID 1678 for user Cookie file amazon: 1678 ebay: 8734 one week later: Cookie file amazon: 1678 ebay: 8734 usual http request msg cookie: 1678 usual http response msg usual http request msg cookie: 1678 usual http response msg cookiespecific action cookiespectific action Sovelluskerros (1/3) 35 Evästeet Evästeet mahdollistavat: käyttövaltuutus ostoskorit suosittelut käyttäjän istunnon tila (WWW-pohjainen sähköposti) Evästeet ja yksityisyys: evästeiden avulla sivustot keräävät tietoja käyttäjistä annat nimesi ja sähköpostiosoitteesi sivustolle hakukoneet käyttävät uudelleensuuntausta ja evästeitä lisätiedon keräämiseen mainostajat saavat tietoa sivustoilta Sovelluskerros (1/3) 36 18