Chapter 2 Application Layer



Samankaltaiset tiedostot
Sovelluskerros. Chapter 2 Application Layer. Sovelluskerros. Joitain verkkosovelluksia. Verkkosovelluksen luominen. Sovellusarkkitehtuurit

Luento 3: Sovelluskerros verkkosovelluksen periaatteet, WWW, pistoke

Chapter 1 Introduction

Chapter 3 Transport Layer. Kuljetuskerros

Tietoliikenteen perusteet

Verkkosovellusten periaatteet

Tietoliikenteen perusteet. VERKKOSOVELLUKSIA SOVELLUSPROTOKOLLIA Kurose, Ross: Ch 2

Tietoliikenteen perusteet SOVELLUSKERROS

Tietoliikenteen perusteet SOVELLUSKERROS

2.2. Sähköposti. SMTP (Simple Mail Transfer Protocol) Postipalvelimet käyttävät SMTPprotokollaa. TCP-yhteys on pysyvä

Tietoliikenteen perusteet SOVELLUSKERROS

Chapter 2 Application Layer

Verkkosovellusten periaatteet

3. Kuljetuskerros 3.1. Kuljetuspalvelu

Tietoliikenteen perusteet SOVELLUSKERROS

Tietoliikenteen perusteet SOVELLUSKERROS

Chapter 3 Transport Layer. Kuljetuskerros

Push- ja pull-protokollat

Verkkosovellusten periaatteet

Verkkosovellusten periaatteet

Sovelluskerros. Chapter 2 Application Layer. Sovelluskerros. Joitain verkkosovelluksia. Sovelluskerros. Verkkosovelluksen luonnista

Verkko-ohjemointia. TCP vs. UDP Socket, ServerSocket Datagrammit RMI

S Tietoliikennetekniikan perusteet. Pakettikytkentäiset verkot. Helsinki University of Technology Networking Laboratory

Sähköpostisanoman muoto. Push- ja pull-protokollat. työntöprotokolla (PUSH) Yleisiä sanoman otsakekenttiä kentät erotettu rivinvaihdolla

C:. S: 250 Message accepted for delivery C: QUIT S: 221 princeton.edu closing connection

Lähettävä postipalvelin Vastaanottava postipalvelin

OSI ja Protokollapino

Käyttäjäliitäntä (user agent) sanomien kirjoittaminen, lukeminen ja lähettäminen

Tietoliikenne II (2 ov)

Kuljetuskerros. Tietokoneverkot. Matti Siekkinen Pasi Sarolahti

kynnysarvo (threshold)

kynnysarvo (threshold)

ELEC-C7241 Tietokoneverkot Sovelluskerros

Tietoliikenteen perusteet

DNS- ja DHCPpalvelut. Linuxissa. Onni Kytönummi & Mikko Raussi

Chapter 2 Application Layer

Tietoliikenne II. Syksy 2005 Markku Kojo. Tietoliikenne II (2 ov,, 4 op) Page1. Markku Kojo Helsingin yliopisto Tietojenkäsittelytieteen laitos

Tietoliikenne II (2 ov)

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

kynnysarvo (threshold) varoitusarvo = tästä lähtien syytä varoa ruuhkaa aluksi 64 K RTT

Chapter 5 Link Layer and LANs

TCP/IP-protokollat ja DNS

Security server v6 installation requirements

SSH Secure Shell & SSH File Transfer

3. Kuljetuskerros 3.1. Kuljetuspalvelu

Tietokone. Tietokone ja ylläpito. Tietokone. Tietokone. Tietokone. Tietokone

Security server v6 installation requirements

Internet Protocol version 6. IPv6

Verkkoliikennettä Java[ssa lla] Jouni Smed

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Mikä on internet, miten se toimii? Mauri Heinonen

Osio 4: Tietovirrat. Properties- eli ominaisuustiedostot Logger: lokitietojen käsittely

ELEC-C7241 Tietokoneverkot Sovelluskerros

Laitteessa tulee olla ohjelmisto tai uudempi, tarvittaessa päivitä laite

Internet ja tietoverkot 2015 Harjoitus 5: (ISO/OSI-malli: Verkkokerros, TCP/IP-malli: internet-kerros)

Tietoliikenne I (muuntokoulutettaville) 2 ov Syksy 2002 Luennot Liisa Marttinen 11/6/2002 1

Sovelluskerros: Socket API, WWW, sähköposti, DNS

ELEC-C7241 Tietokoneverkot Kuljetuskerros

DNA Toimistoviestintä Microsoft - sähköposti

IHTE 1900 Seittiviestintä (syksy 2007) VERKKOTEKNIIKKAA. Mikä on protokolla, IP osoite, nimipalvelu jne ja mihin näitä tarvitaan?

Luento 4: Sovelluskerros nimipalvelu (DNS), tiedostonsiirto sähköposti, vertaisverkot (P2P)

Salasanan vaihto uuteen / How to change password

Sovellusprotokolla on vain osa hajautettua sovellusta Esim. WWW

Directory Information Tree

Tietoliikenneohjelmointi. v. 0.01

1/20/15. Sovellukset 1: sähköposti, web, verkkoohjelmointi. Sisältö. Sovellusten historiaa. Verkkosovellus ja protokolla

Sovellukset 1: sähköposti, web, verkkoohjelmointi

Action Request System

WWW-PALVELUN KÄYTTÖÖNOTTO LOUNEA OY

Miten Internet toimii?

Choose Finland-Helsinki Valitse Finland-Helsinki

SuomiCom-sähköpostiasetukset Microsoft Outlook 2016

Chapter 4 Network Layer

2. Sovelluksia ja sovellusprotokollia

2. Sovelluksia ja sovellusprotokollia

AXXION OY. Hosting-palvelut Asiakasohjeistus Versio 1.0

Oulun yliopisto Sähkö- ja tietotekniikan osasto

Sovellukset 1: sähköposti, web, nimipalvelu

Sovellukset (osa 2) ja verkkoohjelmointi

Palomuurit. Palomuuri. Teoriaa. Pakettitason palomuuri. Sovellustason palomuuri

Kuva maailmasta Pakettiverkot (Luento 1)

Salausmenetelmät (ei käsitellä tällä kurssilla)

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32

WWW-sivu. Miten Internet toimii? World Wide Web. HTML-koodi. HTTP-istunto URL <#>

11/20/ Siirron optimointi

Apple Mail. Käynnistäkää Apple Mail-ohjelma. Valitkaa Aloitusvalikosta sähköpostitilin tarjoajaksi Lisää muu sähköpostitili (Other Mail Account..

Siirron optimointi. Optimointi on usein tarpeen: Silly window syndrome

BaseMidlet. KÄYTTÖOHJE v. 1.00

Chapter 2 Application Layer

1. Tietokoneverkot ja Internet Tietokoneesta tietoverkkoon. Keskuskone ja päätteet (=>-80-luvun alku) Keskuskone ja oheislaitteet

HOW-TO: Kuinka saan yhdistettyä kaksi tulospalvelukonetta keskenään verkkoon? [Windows XP]

Metodien tekeminen Javalla

ICMP-sanomia. 3. IP-kerroksen muita protokollia ja mekanismeja ICMP (Internet Control Message Protocol)

2. Sovelluksia ja sovellusprotokollia

Tietoliikenne I 2 ov kevät 2004

Tietoliikenne I 2 ov kevät 2004

Chapter 4 Network Layer

GPRS-lisäpalvelu INTERNET-ASETUKSET

Sovellusprotokolla on vain osa hajautettua sovellusta Esim. WWW

Transkriptio:

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 (3/3) 1 Sovelluskerros Verkkosovellusten periaatteet WWW ja HTTP FTP Sähköposti SMTP, POP3, IMAP DNS P2P ja tiedostojen jakaminen Sokettiohjelmointi Sovelluskerros (3/3) 2 1

DNS: Domain Name System Ihmiset: useita tunnisteita: hetu, nimi, passin numero Internetin päätelaitteet ja reitittimet: IP-osoite (32 bittiä), käytetään datagrammien osoitteissa nimi, esim. www.jyu.fi, ihmisten käyttämä Q: Miten yhdistetään IPosoitteet ja nimet? Domain Name System Hajautettu tietokanta: toteutettu hierarkkisesti useisiin nimipalvelimiin Sovelluskerroksen protokolla: päätelaitteet, reitittimet ja nimipalvelimet kommunikoivat selvittääkseen nimet (osoite-nimi-vastaavuus) huom: Internetin rungon toiminta, toteutettu sovelluskerroksen protokollana monimutkaisuus verkon reunalla Sovelluskerros (3/3) 3 DNS: kommentteja DNS-palvelut Laitteen nimen muunnos IPosoitteeksi Usean nimen käyttö (aliasing) Kanoniset ja alias-nimet Postipalvelimien aliasing Kuorman hajautus Monistetut WWWpalvelimet: joukko IPosoitteita yhdelle kanoniselle nimelle Miksi ei keskitetty DNS? single point of failure liikenteen määrä kaukainen keskitetty tietokanta ylläpito Ei skaalaudu! Sovelluskerros (3/3) 4 2

Hajautettu ja hierarkkinen tietokanta Root DNS Servers com DNS servers org DNS servers fi DNS servers google.com DNS servers amazon.com DNS servers wikipedia.org DNS servers jyu.fi DNS servers Asiakas haluaa www.jyu.fi:n IP-osoitteen: Asiakas kysyy juurinimipalvelimelta fi-alueesta vastaavan nimipalvelimen IP-osoitteen Asiakas kysyy fi-nimipalvelimelta jyu.fi-alueesta vastaavan nimipalvelimen IP-osoitteen Asiakas kysyy jyu.fi-nimipalvelimelta nimeä www.jyu.fi vastaavan osoitteen csc.fi DNS servers Sovelluskerros (3/3) 5 DNS: juurinimipalvelimet Paikallinen nimipalvelin kysyy juurinimipalvelimelta, jos ei itse tiedä Juurinimipalvelin ottaa yhteyden alueesta (domainista) vastaavaan viralliseen nimipalvelimeen, jos ei itse tiedä saa nimeä vastaavan IP-osoitteen lähettää osoitteen paikalliselle nimipalvelimelle e NASA Mt View, CA f Internet Software C. Palo Alto, CA (and 17 other locations) b USC-ISI Marina del Rey, CA l ICANN Los Angeles, CA a Verisign, Dulles, VA c Cogent, Herndon, VA (also Los Angeles) d U Maryland College Park, MD g US DoD Vienna, VA h ARL Aberdeen, MD j Verisign, ( 11 locations) k RIPE London (Amsterdam, Frankfurt) i Autonomica, Stockholm (plus 3 other locations) m WIDE Tokyo maailmassa 13 juurinimipalvelinta (13 IP-osoitetta, mutta kymmeniä palvelimia) Sovelluskerros (3/3) 6 3

TLD ja auktoritatiiviset palvelimet Ylimmän tason (top-level domain, TLD) palvelimet: vastuussa alueista com, org, net, edu, (generic TLD) sekä kaikista ylimmän tason maakohtaisista alueista fi, se, uk, esim. com: Network solutions esim. fi: Viestintävirasto/Ficora Auktoritatiiviset (authoritative) palvelimet: organisaation nimipalvelimet, tarjoavat viralliset nimi-ip-vastaavuudet organisaation sovelluspalvelimille (esim. www.jyu.fi, smtp.jyu.fi) ylläpitäjä voi olla joko organisaatio itse tai palveluntarjoaja Sovelluskerros (3/3) 7 Paikalliset nimipalvelimet Jokaisella palveluntarjoajalla (alueellinen ISP, yritys, yliopisto): yksi päänimipalvelin (primary name server) kutsutaan myös oletusnimipalvelimeksi (default name server) lisäksi varanimipalvelimia (secondary name servers) Kun päätelaite tekee DNS-kyselyn, se lähetetään paikalliselle nimipalvelimelle toimii kuin välimuistipalvelin (proxy) tarvittaessa lähettää kyselyn hierarkian seuraavalle tasolle Sovelluskerros (3/3) 8 4

Esimerkki root DNS server Päätelaite cis.poly.edu haluaa IP-osoitteen laitteelle gaia.cs.umass.edu 2 3 4 5 TLD DNS server iteratiivinen kysely: palvelin, johon otettiin yhteyttä, vastaa antamalla toisen palvelimen nimen En tiedä tätä nimeä, mutta kysy tuolta palvelimelta local DNS server dns.poly.edu 1 8 requesting host cis.poly.edu 7 6 authoritative DNS server dns.cs.umass.edu gaia.cs.umass.edu Sovelluskerros (3/3) 9 Rekursiivinen kysely root DNS server rekursiivinen kysely: palvelin, johon otettiin yhteyttä, jatkaa nimen selvittämistä kuormittaa palvelinta? normaalisti: päätelaite jättää kyselyn paikallisen nimipalvelimen tehtäväksi paikallinen nimipalvelin suorittaa iteratiivisen kyselyn local DNS server dns.poly.edu 1 requesting host cis.poly.edu 2 8 7 6 5 3 authoritative DNS server dns.cs.umass.edu 4 TLD DNS server gaia.cs.umass.edu Sovelluskerros (3/3) 10 5

DNS: välimuisti ja tietojen päivitys Kun (mikä tahansa) nimipalvelin oppii nimen ja osoitteen vastaavuuden, se tallennetaan välimuistiin Jos vastaus kyselyyn löytyy välimuistista, kyselyä ei tarvitse jatkaa Välimuistin tiedot tuhotaan tietyn ajan kuluttua (timeout) TLD-palvelimien tiedot ovat tyypillisesti paikallisten nimipalvelimien välimuistissa siksi juurinimipalvelimilta kysytään vain harvoin Sovelluskerros (3/3) 11 DNS-tietueet DNS: hajautettu tietokanta, tiedot tietueissa (resource records, RR) RR:n muoto: (name, value, type, ttl) Type=A name on laitenimi value on IP-osoite Type=NS name on domain (esim. jyu.fi) value on tämän domainin auktoritatiivisen nimipalvelimen IP-osoite Type=CNAME name on alias-nimi jollekin kanoniselle nimelle (esim. users.jyu.fi on oikeasti karahka.cc.jyu.fi) value on kanoninen nimi Type=MX value on nimeen name liittyvän postipalvelimen nimi Sovelluskerros (3/3) 12 6

DNS-protokollan viestit DNS-protokolla : query- ja reply-viestit, molemmilla sama viestin muoto Viestin otsikko identification: 16 bittinen kyselyn numero, vastauksessa käytetään samaa numeroa flags: kysymys vai vastaus rekursio halutaan rekursio mahdollinen vastaus auktoritatiivinen Sovelluskerros (3/3) 13 DNS-protokollan viestit kyselyjen nimija tyyppikentät vastaukset kyselyihin tietoja auktoritatiivisille palvelimille mahdollista lisätietoa Sovelluskerros (3/3) 14 7

Tietojen syöttäminen DNS:ään Esimerkki: perustetaan verkkoutopia Rekisteröidään nimi verkkoutopia.com rekisterinpitäjältä (esim. Network Solutions) Rekisterinpitäjälle täytyy toimittaa kahden nimipalvelimen (auktoritatiivinen primary, secondary) nimet ja IP-osoitteet Rekisterinpitäjä lisää RR-tietueet com-domainin TLDpalvelimelle (molemmille nimipalvelimille omansa): (verkkoutopia.com, dns1.verkkoutopia.com, NS) (dns1.verkkoutopia.com, 212.212.212.1, A) Auktoritatiiviseen palvelimeen laitetaan tyypin A tietue nimelle www.verkkoutopia.com ja tyypin MX tietue nimelle verkkoutopia.com Miten muut saavat WWW-sivujesi IP-osoitteen? Sovelluskerros (3/3) 15 Sovelluskerros Verkkosovellusten periaatteet WWW ja HTTP FTP Sähköposti SMTP, POP3, IMAP DNS P2P ja tiedostojen jakaminen Sokettiohjelmointi Sovelluskerros (3/3) 16 8

P2P ja tiedostojen jakaminen Esimerkki Alicella on P2Pasiakassovellus käynnissä tietokoneellaan On epäsäännöllisesti yhteydessä Internetiin; saa joka kerta uuden IPosoitteen Pyytää tiettyä tiedostoa Sovellus näyttää toiset vertaiskäyttäjät, joilla on kopio tiedostosta Alice valitsee yhden vertaiskäyttäjän, Bobin Tiedosto kopioidaan Bobin koneelta Alicen koneelle: käytetään HTTP:tä Kun Alice lataa tiedostoa, muut käyttäjät voivat ladata sen Alicelta Alicen sovellus on sekä WWW-asiakas että väliaikainen WWW-palvelin Kaikki vertaiskäyttäjät ovat palvelimia = helposti skaalautuva! Sovelluskerros (3/3) 17 P2P: keskitetty hakemisto Alkuperäinen Napster - malli 1) kun käyttäjä ottaa yhteyden, informoidaan keskuspalvelinta: käyttäjän IP-osoite tarjolla oleva sisältö 2) Alice kysyy tiedoston sijaintia palvelimelta 3) Alice pyytää tiedoston Bobilta centralized directory server 2 1 1 1 1 Alice 3 Bob peers Sovelluskerros (3/3) 18 9

P2P: keskitetyn hakemiston ongelmia Single point of failure Pullonkaula suorituskyvyssä Tekijänoikeuksien rikkominen tiedostojen siirto hajautettu, mutta sisällön paikannus vahvasti keskitetty Sovelluskerros (3/3) 19 Hajautettu hakemisto: Gnutella Täysin hajautettu ei keskuspalvelinta Julkinen protokolla Monia Gnutella-protokollaa käyttäviä asiakassovelluksia Gnutella käytti aikaisemmin query flooding menetelmää sisällön etsimiseen, nykyisin tehokkaampia algoritmeja Overlay-verkko (graafi): verkko koostuu TCPyhteyksistä käyttäjien välillä aktiiviset käyttäjät ovat verkon solmuja verkon kaaret ovat yhteyksiä (eivät fyysisiä linkkejä) käyttäjä on tyypillisesti yhteydessä alle 10 naapuriin verkossa Sovelluskerros (3/3) 20 10

Gnutella: alkuperäinen protokolla Query-viesti lähetetään olemassa olevien TCPyhteyksien yli Käyttäjät lähettävät Queryviestin eteenpäin File transfer: HTTP Query QueryHit QueryHit-viesti lähetetään käänteistä polkua pitkin Query QueryHit Skaalautuvuus: rajoitettu Sovelluskerros (3/3) 21 Gnutella: käyttäjän liittyminen 1. Liittyvän käyttäjän X täytyy löytää jokin toinen käyttäjä Gnutella-verkossa: lista käyttäjäehdokkaista 2. X yrittää vuoronperään muodostaa TCP-yhteyden listalla oleviin käyttäjiin kunnes saadaan luotua yhteys käyttäjään Y 3. X lähettää Ping-viestin Y:lle; Y lähettää Pingviestin eteenpäin 4. Kaikki Ping-viestin vastaanottavat käyttäjät vastaavat Pong-viestillä 5. X vastaanottaa monta Pong-viestiä ja voi sitten muodostaa lisää TCP-yhteyksiä Käyttäjä lähtee verkosta? Sovelluskerros (3/3) 22 11

Hajautuksen hyödyntäminen: Kazaa Jokainen käyttäjä on joko ryhmänjohtaja tai ryhmänjohtajan alainen TCP-yhteys käyttäjän ja ryhmänjohtajan välillä TCP-yhteys joidenkin ryhmänjohtajien välillä Ryhmänjohtaja ylläpitää tietoa alaistensa sisällöstä ordinary peer group-leader peer neighboring relationships in overlay network Sovelluskerros (3/3) 23 Kazaa: kyselyt Jokaisella tiedostolla tiiviste (hash) Asiakas lähettää avainsana-kyselyjä ryhmänjohtajalleen Ryhmänjohtaja vastaa, jos osuma: Jokaiselle osumalle: metadata, hash, IP-osoite Jos ryhmänjohtaja lähettää kyselyn edelleen muille ryhmänjohtajille, myös ne vastaavat Asiakas valitsee ladattavat tiedostot HTTP request -viestejä käyttäjille, joilla tiedostot ovat; tunnisteena käytetään tiivisteitä Sovelluskerros (3/3) 24 12

Sovelluskerros Verkkosovellusten periaatteet WWW ja HTTP FTP Sähköposti SMTP, POP3, IMAP DNS P2P ja tiedostojen jakaminen Sokettiohjelmointi Sovelluskerros (3/3) 25 Sokettiohjelmointi Tavoite: oppia miten asiakas-palvelin-sovellus kommunikoi sokettien avulla Socket API esitelty 1981: BSD4.1 UNIX sovellus luo, käyttää ja vapauttaa soketit asiakas-palvelin-malli kaksi kuljetustyyppiä: luotettava tavuvirta epäluotettava datagrammi soketti paikallinen, sovelluksen luoma, käyttöjärjestelmän kontrolloima rajapinta ( ovi ), jonka kautta sovellusprosessi voi sekä lähettää että vastaanottaa viestejä Sovelluskerros (3/3) 26 13

Sokettiohjelmointi TCP:llä Soketti: ovi sovellusprosessin ja kuljetusprotokollan (UDP tai TCP) välillä TCP-palvelu: luotettava tavujen siirto prosessilta toiselle controlled by application developer controlled by operating system process socket TCP with buffers, variables internet process socket TCP with buffers, variables controlled by application developer controlled by operating system host or server host or server Sovelluskerros (3/3) 27 Sokettiohjelmointi TCP:llä Asiakkaan täytyy ottaa yhteys palvelimeen: palvelinprosessin täytyy olla ensin käynnissä palvelimen on täytynyt luoda soketti, joka hyväksyy asiakkaan kontaktit Asiakas ottaa yhteyttä palvelimeen: luo paikallisen TCP-soketin määrittelee palvelinprosessin IP-osoitteen ja porttinumeron kun asiakas luo soketin: asiakas avaa TCP-yhteyden palvelimeen kun asiakas avaa TCP-yhteyden, palvelin luo uuden soketin kommunikointia varten mahdollistaa sen, että palvelin voi kommunikoida useiden asiakkaiden kanssa asiakkaat erotetaan toisistaan lähdeporttinumerojen avulla sovelluksen näkökulma TCP tarjoaa luotettavan, järjestyksen säilyttävän bittivirran ( putken ) asiakkaan ja palvelimen välillä Sovelluskerros (3/3) 28 14

outtoserver infromserver infromuser Sokettiohjelmointi: virrat Virta (stream) on jono merkkejä, joka virtaa sisään prosessiin tai ulos prosessista Syötevirta (input stream) on liitetty johonkin lähteeseen (input source), esim. näppäimistö tai soketti Tulostevirta (output stream) on liitetty johonkin kohteeseen (output source), esim. näyttö tai soketti Sovelluskerros (3/3) 29 Sokettiohjelmointi TCP:llä Esimerkki sovelluksesta: 1) asiakas lukee tekstirivin näppäimistöltä (infromuser stream) ja lähettää sen palvelimelle soketin kautta (outtoserver stream) 2) palvelin lukee rivin soketistaan 3) palvelin muuntaa rivin isoiksi kirjaimiksi ja lähettää sen takaisin asiakkaalle 4) asiakas lukee muunnetun rivin soketistaan (infromserver stream) ja tulostaa sen näytölle Process Client process input stream output stream keyboard monitor client TCP clientsocket socket input stream TCP socket to network from network Sovelluskerros (3/3) 30 15

Asiakas-palvelin-sokettien toiminta: TCP Server (running on hostid) create socket, port=x, for incoming request: welcomesocket = ServerSocket() wait for incoming connection request connectionsocket = welcomesocket.accept() read request from connectionsocket write reply to connectionsocket close connectionsocket TCP connection setup Client create socket, connect to hostid, port=x clientsocket = Socket() send request using clientsocket read reply from clientsocket close clientsocket Sovelluskerros (3/3) 31 Esimerkki: Java-asiakas (TCP) import java.io.*; import java.net.*; class TCPClient { Create input stream Create client socket, connect to server Create output stream attached to socket public static void main(string argv[]) throws Exception { String sentence; String modifiedsentence; BufferedReader infromuser = new BufferedReader(new InputStreamReader(System.in)); Socket clientsocket = new Socket("hostname", 6789); DataOutputStream outtoserver = new DataOutputStream(clientSocket.getOutputStream()); Sovelluskerros (3/3) 32 16

Esimerkki: Java-asiakas (TCP) jatkuu Create input stream attached to socket Send line to server Read line from server BufferedReader infromserver = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); sentence = infromuser.readline(); outtoserver.writebytes(sentence + '\n'); modifiedsentence = infromserver.readline(); System.out.println("FROM SERVER: " + modifiedsentence); clientsocket.close(); } } Sovelluskerros (3/3) 33 Esimerkki: Java-palvelin (TCP) import java.io.*; import java.net.*; class TCPServer { Create welcoming socket at port 6789 Wait on welcoming socket for contact by client Create input stream attached to socket public static void main(string argv[]) throws Exception { String clientsentence; String capitalizedsentence; ServerSocket welcomesocket = new ServerSocket(6789); while(true) { Socket connectionsocket = welcomesocket.accept(); BufferedReader infromclient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); Sovelluskerros (3/3) 34 17

Esimerkki: Java-palvelin (TCP) jatkuu Create output stream attached to socket Read in line from socket Write out line to socket } } } DataOutputStream outtoclient = new DataOutputStream(connectionSocket.getOutputStream()); clientsentence = infromclient.readline(); capitalizedsentence = clientsentence.touppercase() + '\n'; outtoclient.writebytes(capitalizedsentence); End of while loop, loop back and wait for another client connection Sovelluskerros (3/3) 35 Sokettiohjelmointi UDP:llä UDP: ei yhteyttä asiakkaan ja palvelimen välillä ei kättelyä lähettäjä laittaa vastaanottajan IPosoitteen ja porttinumeron jokaiseen pakettiin palvelimen täytyy lukea lähettäjän IP-osoite ja porttinumero jokaisesta vastaanotetusta paketista UDP: siirretty data voi tulla väärässä järjestyksessä, tai voi kadota matkalla sovelluksen näkökulma UDP tarjoaa epäluotettavan tavupakettien ( datagrammien ) siirron asiakkaan ja palvelimen välillä Sovelluskerros (3/3) 36 18

sendpacket receivepacket infromuser Asiakas-palvelin-sokettien toiminta: UDP Server (running on hostid) Client create socket, port=x, for incoming request: serversocket = DatagramSocket() read request from serversocket write reply to serversocket specifying client host address, port number create socket, clientsocket = DatagramSocket() create address (hostid,port=x), send datagram request using clientsocket read reply from clientsocket close clientsocket Sovelluskerros (3/3) 37 Esimerkki: Java-asiakas (UDP) keyboard monitor Client Process process Output: lähettää paketin (TCP lähetti bittivirran ) input stream UDP packet client UDP clientsocket socket UDP packet UDP socket Input: vastaanottaa paketin (TCP vastaanotti bittivirran ) to network from network Sovelluskerros (3/3) 38 19

Esimerkki: Java-asiakas (UDP) Create input stream Create client socket import java.io.*; import java.net.*; class UDPClient { public static void main(string args[]) throws Exception { BufferedReader infromuser = new BufferedReader(new InputStreamReader(System.in)); DatagramSocket clientsocket = new DatagramSocket(); Translate hostname to IP address using DNS InetAddress IPAddress = InetAddress.getByName("hostname"); byte[] senddata = new byte[1024]; byte[] receivedata = new byte[1024]; String sentence = infromuser.readline(); senddata = sentence.getbytes(); Sovelluskerros (3/3) 39 Esimerkki: Java-asiakas (UDP) jatkuu Create datagram with data-to-send, length, IP addr, port Send datagram to server Read datagram from server DatagramPacket sendpacket = new DatagramPacket(sendData, senddata.length, IPAddress, 9876); clientsocket.send(sendpacket); DatagramPacket receivepacket = new DatagramPacket(receiveData, receivedata.length); clientsocket.receive(receivepacket); String modifiedsentence = new String(receivePacket.getData()); System.out.println("FROM SERVER:" + modifiedsentence); } clientsocket.close(); } Sovelluskerros (3/3) 40 20

Esimerkki: Java-palvelin (UDP) import java.io.*; import java.net.*; Create datagram socket at port 9876 Create space for received datagram Receive datagram class UDPServer { public static void main(string args[]) throws Exception { DatagramSocket serversocket = new DatagramSocket(9876); byte[] receivedata = new byte[1024]; byte[] senddata = new byte[1024]; while(true) { DatagramPacket receivepacket = new DatagramPacket(receiveData, receivedata.length); serversocket.receive(receivepacket); Sovelluskerros (3/3) 41 Esimerkki: Java-palvelin (UDP) jatkuu Get IP addr, port of sender String sentence = new String(receivePacket.getData()); InetAddress IPAddress = receivepacket.getaddress(); int port = receivepacket.getport(); Create datagram to send to client Write out datagram to socket } } String capitalizedsentence = sentence.touppercase(); senddata = capitalizedsentence.getbytes(); DatagramPacket sendpacket = new DatagramPacket(sendData, senddata.length, IPAddress, port); serversocket.send(sendpacket); } End of while loop, loop back and wait for another datagram Sovelluskerros (3/3) 42 21

Sovelluskerros: Yhteenveto Mitä opimme verkkosovelluksista Sovellusarkkitehtuurit: asiakas-palvelin vertaisverkko, P2P hybridi Sovellusten vaatimuksia palveluille: luotettavuus kaistanleveys viive Internetin kuljetuspalvelut: yhteydellinen, luotettava: TCP yhteydetön, epäluotettava: UDP Protokollia: HTTP FTP SMTP, POP, IMAP DNS Sovelluskerros (3/3) 43 Sovelluskerros: Yhteenveto Mitä opimme protokollista Tyypillinen request- ja reply-viestien vaihto: asiakas pyytää tietoa tai palvelua palvelin vastaa lähettämällä tilakoodin tai dataa Viestien muoto: otsikot: kenttiä, jotka antavat tietoa lähetettävästä datasta data: informaatio, joka välitetään kontrolliviestit vs. dataviestit in-band, out-of-band keskitetty vs. hajautettu tilaton vs. tilallinen luotettava vs. epäluotettava tiedonsiirto monimutkaisuus verkon reunalla Sovelluskerros (3/3) 44 22