Chapter 2 Application Layer

Samankaltaiset tiedostot
Ryhmän kokoonpano. Kaikki kalvot on jaettu tasan ryhmän jäsenten kesken

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

Sovellukset (osa 2) ja verkkoohjelmointi

Security server v6 installation requirements

Chapter 2 Application Layer

Security server v6 installation requirements

OSI ja Protokollapino

FinFamily Installation and importing data ( ) FinFamily Asennus / Installation

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

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

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

Lab SBS3.FARM_Hyper-V - Navigating a SharePoint site

On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)

ELEC-C7241 Tietokoneverkot Ohjelmointiprojekti

Choose Finland-Helsinki Valitse Finland-Helsinki

You can check above like this: Start->Control Panel->Programs->find if Microsoft Lync or Microsoft Lync Attendeed is listed

Käännös Mirja Hosionaho 100%

Salasanan vaihto uuteen / How to change password

Microsoft Lync 2010 Attendee

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

Information on preparing Presentation

Lähettävä postipalvelin Vastaanottava postipalvelin

Push- ja pull-protokollat

Capacity Utilization

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

SuomiCom-sähköpostiasetukset Microsoft Outlook 2016

Kierroksen 4 ratkaisut

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

3. Kuljetuskerros 3.1. Kuljetuspalvelu

1. SIT. The handler and dog stop with the dog sitting at heel. When the dog is sitting, the handler cues the dog to heel forward.

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

100 % Kaisu Keskinen Diat

Chapter 2 Application Layer

Voice Over LTE (VoLTE) By Miikka Poikselkä;Harri Holma;Jukka Hongisto

TIEKE Verkottaja Service Tools for electronic data interchange utilizers. Heikki Laaksamo

On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)

Group 2 - Dentego PTH Korvake. Peer Testing Report

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

AXXION OY. Hosting-palvelut Asiakasohjeistus Versio 1.0

GPRS-lisäpalvelu INTERNET-ASETUKSET

On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)

SSH Secure Shell & SSH File Transfer


Use of spatial data in the new production environment and in a data warehouse

Software Signing System System overview and key domain concepts

Outlook Office 365. Tässä ohjeessa kuvataan miten sähköpostitili (IMAP) sekä Kotisivut.com Autentikoiva SMTPlisäpalvelu

DNA Toimistoviestintä Microsoft - sähköposti

truck Check In. truck Check Net. ewaybill ja ajat suoraan terminaaliin

Arkkitehtuuritietoisku. eli mitä aina olet halunnut tietää arkkitehtuureista, muttet ole uskaltanut kysyä

Lab A1.FARM_Hyper-V.v3

amkbyod-tulostaminen Huittisten ja Kankaanpään kampuksilla / BYOD printing in Huittinen and Kankaanpää campuses

Uusi Ajatus Löytyy Luonnosta 4 (käsikirja) (Finnish Edition)

OFFICE 365 OPISKELIJOILLE

LANSEERAUS LÄHESTYY AIKATAULU OMINAISUUDET. Sähköinen jäsenkortti. Yksinkertainen tapa lähettää viestejä jäsenille

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

Kuljetuskerros. Tietokoneverkot. Matti Siekkinen Pasi Sarolahti

Network to Get Work. Tehtäviä opiskelijoille Assignments for students.

Luento 3: Sovelluskerros verkkosovelluksen periaatteet, WWW, pistoke

Oulun yliopisto Sähkö- ja tietotekniikan osasto

Verkkoliikennettä Java[ssa lla] Jouni Smed

Chapter 2 Application Layer

OHJEISTUS KRYPTONIITIN SÄHKÖPOSTIPALVELUN KÄYTTÖÖN v. 1.0

Travel Getting Around

Esimerkkinä - ilmainen blogi-julkaisujärjestelmä. WordPress:stä on myös palvelimelle asennettava versio (WordPress.

BDD (behavior-driven development) suunnittelumenetelmän käyttö open source projektissa, case: SpecFlow/.NET.

100 % Kaisu Keskinen Diat

Tekninen kuvaus Aineistosiirrot Interaktiiviset yhteydet iftp-yhteydet

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

Tietoliikenteen perusteet

National Building Code of Finland, Part D1, Building Water Supply and Sewerage Systems, Regulations and guidelines 2007

7.4 Variability management

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

Sisällysluettelo Table of contents

Nuku hyvin, pieni susi -????????????,?????????????????. Kaksikielinen satukirja (suomi - venäjä) ( (Finnish Edition)

anna minun kertoa let me tell you

LYTH-CONS CONSISTENCY TRANSMITTER

HAMINETTI WLAN LIITTYMÄN KÄYTTÖÖNOTTO-OHJE

Tässä ohjeessa käydään läpi sosiaalisen median verkkopalveluiden lisätoimintojen lisääminen verkkosivuillesi.

HITSAUKSEN TUOTTAVUUSRATKAISUT

Efficiency change over time

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

Office 365 -palveluiden uudistukset maaliskuussa 2017

Curriculum. Gym card

Slides for Chapter 11: Time and Global State

C++11 seminaari, kevät Johannes Koskinen

Automatisoitu sähköpostin vastaanotto Linux ympäristössä. SUGIF SAS Technical Club Tapio Kalmi, SAS Institute

Tietorakenteet ja algoritmit

E-THESIS OHJEET TARKASTAJALLE INSTRUKTIONERFÖR GRANSKARE INSTRUCTIONSFOR THEREVIEWER

kynnysarvo (threshold)

Internet-palvelujen käyttöönottoprojekti Asennusohje 1

Aloita oman blogisi luominen (järjestelmä lupaa sen tapahtuvan sekunneissa ;-))

kynnysarvo (threshold)

S Teletekniikan perusteet

Automaatiojärjestelmän hankinnassa huomioitavat tietoturva-asiat

Tietoliikenne II (2 ov)

Tietoliikenteen perusteet

BLOCKCHAINS AND ODR: SMART CONTRACTS AS AN ALTERNATIVE TO ENFORCEMENT

Käyttäjienhallintatyökalu

The CCR Model and Production Correspondence

Information on Finnish Language Courses Spring Semester 2017 Jenni Laine

Transkriptio:

Chapter 2 Application Layer Antti Sinkkonen 2-15 Esko Mäkelä ja Markus Leppioja 15-28 Patrik Tikka 29-43 Ilari Tuomela 43-59 Saku Käsnänen 59-75 Henri Takki 76-92 Markus Leppioja 93-96 Sami Harju-Villamo 97-109 Computer Networking: A Top Down Approach th 6 edition Jim Kurose, Keith Ross Addison-Wesley March 2012 Application Layer 2-1

Chapter 2: outline 2.1 principles of network applications app architectures app requirements 2.6 P2P applications 2.7 socket programming with UDP and TCP 2.2 Web and HTTP 2.3 FTP 2.4 electronic mail SMTP, POP3, IMAP 2.5 DNS Application Layer 2-2

FTP: the file transfer protocol FTP user interface user at host file transfer FTP client local file system FTP server remote file system transfer file to/from remote host client/server model client: side that initiates transfer (either to/from remote) server: remote host ftp: RFC 959 ftp server: port 21 Application Layer 2-3

FTP: tiedon siirron protokolla FTP FTP Käyttäjän käyttäjä liittymä Käyttäjä palvelimena tiedonsiirto FTP palvelin Paikallinen tiedosto systeemi etätiedosto systeemi Tiedonsiirto palvelimelta/palvelimelle Käyttäjä/palvelin malli käyttäjä: aloittaa siirron (palvelimelle/palvelimelta) palvelin: etäinen palvelin ftp: RFC 959 ftp server: port 21 Application Layer 2-4

FTP: separate control, data connections TCP control connection, FTP client contacts FTP server port 21 server at port 21, using TCP client authorized over control TCP data connection, FTP FTP connection server port 20 client server client browses remote directory, sends commands server opens another TCP over control connection data connection to transfer when server receives file another file transfer command, server control connection: out of opens 2nd TCP data band connection (for file) to client FTP server maintains after transferring one file, state : current directory, server closes data connection earlier authentication Application Layer 2-5

FTP: erillinen ohjaus, datayhteydet FTP asiakas ottaa yhteyden FTP palvelimen port 21:een, käyttäen TCP:tä Asiakas valtuutetaan kontrolliyhteydellä Asiakas selaa etähakemistoa, lähettää käskyjä kontrolliyhteyden kautta Kun palvelin saa tiedonsiirtokomennnon, palvelin avaa toisen TCP datayhteyden (tiedostolle) asiakkaalle Tiedonsiirron jälkeen palvelin sulkee yhteyden TCP control connection, server port 21 FTP client TCP data connection, server port 20 FTP server Palvelin avaa toisen yhteyden lähettääkseen toisen tiedoston kontrolliyhteys: out of band FTP palvelin pitää yllä tilan : nykyinen hakemisto, edellinen varmistus Application Layer 2-6

FTP commands, responses sample commands: sent as ASCII text over control channel USER username PASS password LIST return list of file in current directory RETR filename retrieves (gets) file STOR filename stores (puts) file onto remote host sample return codes status code and phrase (as in HTTP) 331 Username OK, password required 125 data connection already open; transfer starting 425 Can t open data connection 452 Error writing file Application Layer 2-7

FTP komennot, vastaukset Esimerkki komentoja: Lähetetään ASCII tekstinä kontrolliyhteyellä USER username PASS password LIST return list of file in current directory RETR filename retrieves (gets) file STOR filename stores (puts) file onto remote host Esimerkki palautuskoodeja Tilakoodi ja lause (HTTP) 331 Username OK, password required 125 data connection already open; transfer starting 425 Can t open data connection 452 Error writing file Application Layer 2-8

Chapter 2: outline 2.1 principles of network applications app architectures app requirements 2.6 P2P applications 2.7 socket programming with UDP and TCP 2.2 Web and HTTP 2.3 FTP 2.4 electronic mail SMTP, POP3, IMAP 2.5 DNS Application Layer 2-9

Electronic mail outgoing message queue user mailbox Three major components: user agents mail servers simple mail transfer protocol: SMTP User Agent a.k.a. mail reader composing, editing, reading mail messages e.g., Outlook, Thunderbird, iphone mail client outgoing, incoming messages stored on server user agent mail server user agent SMTP mail server user agent SMTP SMTP mail server user agent user agent user agent Application Layer 2-10

Sähköinen posti outgoing message queue user mailbox Kolme pääkomponenttia: Käyttäjä toimijat Sähköposti palvelimet Yksinkertainen postin lähetysprotokolla: SMTP Käyttäjätoimijat postin lukijat Kirjottaa, editoi, lukee postit Esim., Outlook, Thunderbird, iphone mail client Lähetävät ja tulevat postit palvelimella user agent mail server user agent SMTP mail server user agent SMTP SMTP mail server user agent user agent user agent Application Layer 2-11

Electronic mail: mail servers mail servers: mailbox contains incoming messages for user message queue of outgoing (to be sent) mail messages SMTP protocol between mail servers to send email messages client: sending mail server server : receiving mail server user agent mail server user agent SMTP mail server user agent SMTP SMTP mail server user agent user agent user agent Application Layer 2-12

Sähköposti: palvelimet palvelimet: postilaatikko sisältää tulevat viestit käyttäjälle Viestijono lähtevistä sähköposteista SMTP protokolla sähköpostipostipalvelimie n välillä Asiakas: lähettää sähköpostia palvelimelle palvelin : vastaanottaa postin user agent mail server user agent SMTP mail server user agent SMTP SMTP mail server user agent user agent user agent Application Layer 2-13

Electronic Mail: SMTP [RFC 2821] uses TCP to reliably transfer email message from client to server, port 25 direct transfer: sending server to receiving server three phases of transfer handshaking (greeting) transfer of messages closure command/response interaction (like HTTP, FTP) commands: ASCII text response: status code and phrase messages must be in 7-bit ASCI Application Layer 2-14

Sähköposti: SMTP [RFC 2821] käyttää TCP:tä lähettääkseen luotettavasti sähköpostia asiakkaalta, port 25 Suora siirto: lähettävä palvelin vastaanottavalle Siirron kolme vaihetta tervehdys viestinsiirto lopetus Komento/vastaus vuorovaikutus (kuten HTTP, FTP) komennot: ASCII teksti vastaus: tilakoodi ja lauseke Viestin täytyy olla 7-bit ASCI Application Layer 2-15

Scenario: Alice sends message to Bob 4) SMTP client sends Alice s message over the TCP connection 5) Bob s mail server places the message in Bob s mailbox 6) Bob invokes his user agent to read message 1) Alice uses UA to compose message to bob@someschool.edu 2) Alice s UA sends message to her mail server; message placed in message queue 3) client side of SMTP opens TCP connection with Bob s mail server 1 user agent 2 mail server 3 Alice s mail server user agent mail server 6 4 5 Bob s mail server Application Layer 2-16

Tilanne: Alice lähettää viestin Bobille 4) SMTP asiakas lähettää Alice: n viestin TCP yhteyden avulla 5) Bob:in sähköpostipalvelin laittaa viestin Bob:in postilaatikkoon 6) Bob käyttää selainta lukeakseen sähköpostin 1) Alice käyttää UA:ta kirjoittaakseen sähköpostin bob@someschool.edu 2) Alice:n UA lähettää viestin hänen sähköpostin palvelimelleen; viesti menee jonoon 3) SMTP:n käyttäjä puoli avaa TCP yhteyden Bob:in sähköpostipalvelimeen 1selain 2 Sposti serveri 3 Alicen postiserveri selain Sposti serveri 4 6 5 Bobin postiserveri Application Layer 2-17

Sample SMTP interaction S: C: S: C: S: C: S: C: S: C: C: C: S: C: S: 220 hamburger.edu HELO crepes.fr 250 Hello crepes.fr, pleased to meet you MAIL FROM: <alice@crepes.fr> 250 alice@crepes.fr... Sender ok RCPT TO: <bob@hamburger.edu> 250 bob@hamburger.edu... Recipient ok DATA 354 Enter mail, end with "." on a line by itself Do you like ketchup? How about pickles?. 250 Message accepted for delivery QUIT 221 hamburger.edu closing connection Application Layer 2-18

Malli SMTP interaktiosta S: C: S: C: S: C: S: C: S: C: C: C: S: C: S: 220 hamburger.edu HELO crepes.fr 250 Hello crepes.fr, pleased to meet you MAIL FROM: <alice@crepes.fr> 250 alice@crepes.fr... Sender ok RCPT TO: <bob@hamburger.edu> 250 bob@hamburger.edu... Recipient ok DATA 354 Enter mail, end with "." on a line by itself Do you like ketchup? How about pickles?. 250 Message accepted for delivery QUIT 221 hamburger.edu closing connection Application Layer 2-19

Try SMTP interaction for yourself: telnet servername 25 see 220 reply from server enter HELO, MAIL FROM, RCPT TO, DATA, QUIT commands above lets you send email without using email client (reader) Application Layer 2-20

Kokeile SMTP interaktiota itse: telnet servername 25 see 220 reply from server enter HELO, MAIL FROM, RCPT TO, DATA, QUIT commands Yllä oleva antaa sinun lähettää sähköposteja käyttmättä selainta (lukijaa) Application Layer 2-21

SMTP: final words SMTP uses persistent connections SMTP requires message (header & body) to be in 7-bit ASCII SMTP server uses CRLF. CRLF to determine end of message comparison with HTTP: HTTP: pull SMTP: push both have ASCII command/response interaction, status codes HTTP: each object encapsulated in its own response msg SMTP: multiple objects sent in multipart msg Application Layer 2-22

SMTP: viimeiset sanat SMTP käyttää jatkuvia yhteyksiä SMTP vaatii viestin olevan 7-bittisessä ASCII muodossa SMTP palvelin käyttää CRLF.CRLF määritällekseen viestin lopun HTTP:n verrattuna: HTTP: veto SMTP: työntö Molemmilla on ASCII komento/vastaus interaktio, tilakoodit HTTP: jokainen kohde omasa vastausviestissä SMTP: monta kohdetta lähetetään moniosaisissa viesteissä Application Layer 2-23

Mail message format SMTP: protocol for exchanging email msgs RFC 822: standard for text message format: header lines, e.g., To: From: Subject: header blank line body different from SMTP MAIL FROM, RCPT TO: commands! Body: the message ASCII characters only Application Layer 2-24

Sähköpostiviesti muoto SMTP: protokolla sähköpostien vaihtamiseen RFC 822: standardi tekstiviesteille: Otsikoita esim. Kenelle: Keneltä: Aihe: Otsikko Tyhjä viiva runko Runko: viesti Vain ASCII Application Layer 2-25

Mail access protocols user agent SMTP SMTP mail access user protocol agent (e.g., POP, IMAP) sender s mail server receiver s mail server SMTP: delivery/storage to receiver s server mail access protocol: retrieval from server POP: Post Office Protocol [RFC 1939]: authorization, download IMAP: Internet Mail Access Protocol [RFC 1730]: more features, including manipulation of stored msgs on server HTTP: gmail, Hotmail, Yahoo! Mail, etc. Application Layer 2-26

Sähköpostin avaamisprotokollat user agent SMTP SMTP mail access user protocol agent (e.g., POP, IMAP) sender s mail server receiver s mail server SMTP: lähetys/säilitys vastaanottajan palvelimelle Sähköpostin avaamisprotokolla:palvelimelta hakeminen POP: Post Office Protocol [RFC 1939]: valtuutus, lataus IMAP: Internet Mail Access Protocol [RFC 1730]: enemmän toimintoja, mm. serverillä olevien viestien muuttaminen HTTP: gmail, Hotmail, Yahoo! Mail, jne. Application Layer 2-27

POP3 protocol authorization phase client commands: user: declare username pass: password server responses +OK -ERR transaction phase, client: list: list message numbers retr: retrieve message by number dele: delete quit S: C: S: C: S: +OK POP3 server ready user bob +OK pass hungry +OK user successfully logged C: S: S: S: C: S: S: C: C: S: S: C: C: S: list 1 498 2 912. retr 1 <message 1 contents>. dele 1 retr 2 <message 1 contents>. dele 2 quit +OK POP3 server signing on off Application Layer 2-28

POP3 protokolla valtuutusvaihe Käyttäjän komennot: user: declare username pass: password Serverin vastaus +OK -ERR vuorovaikutusvaihe, käyttäjä: list: kerro viestien numerot retr: hae viesti numerolla dele: poista quit S: C: S: C: S: +OK POP3 server ready user bob +OK pass hungry +OK user successfully logged C: S: S: S: C: S: S: C: C: S: S: C: C: S: list 1 498 2 912. retr 1 <message 1 contents>. dele 1 retr 2 <message 1 contents>. dele 2 quit +OK POP3 server signing on off Application Layer 2-29

POP3 (more) and IMAP more about POP3 previous example uses POP3 download and delete mode Bob cannot re-read email if he changes client POP3 download-andkeep : copies of messages on different clients POP3 is stateless across sessions IMAP keeps all messages in one place: at server allows user to organize messages in folders keeps user state across sessions: names of folders and mappings between message IDs and folder name Application Layer 2-30

POP3 (enemmän) jaimap enemmän POP3:sta Edellinen esimerkki käyttä POP3:n lataa ja poista tilaa Bob ei voi lukea sähköpostia uudestaan jos hän vaihtaa selainta POP3 tallena ja pidä : kopioita viesteistä pidetään eri selaimilla POP3 on tilaton istunnolla IMAP Pitää kaikki viestit yhdessä paikassa: palvelimella Antaa käyttäjän järjestää viestit kansioihin Pitää käyttäjän tilan sessioilla: Kansioiden nimet ja yhteydet viestin tiedoista ja kansion nimistä Application Layer 2-31

Chapter 2: outline 2.1 principles of network applications app architectures app requirements 2.6 P2P applications 2.7 socket programming with UDP and TCP 2.2 Web and HTTP 2.3 FTP 2.4 electronic mail SMTP, POP3, IMAP 2.5 DNS Application Layer 2-32

2-33

2-34

2-35

2-36

2-37

2-38

2-39

2-40

2-41

2-42

2-43

2-44

2-45

2-46

2-47

2-48

2-49

2-50

2-51

2-52

2-53

2-54

2-55

2-56

2-57

2-58

2-59

2-60

Chapter 2: outline 2.1 principles of network applications app architectures app requirements 2.6 P2P applications 2.7 socket programming with UDP and TCP 2.2 Web and HTTP 2.3 FTP 2.4 electronic mail SMTP, POP3, IMAP 2.5 DNS Application Layer 2-61

Pure P2P architecture no always-on server arbitrary end systems directly communicate peers are intermittently connected and change IP addresses examples: file distribution (BitTorrent) Streaming (KanKan) VoIP (Skype) Application Layer 2-62

Pure P2P architecture Ei aina-serverillä Mielivaltaiset loppusysteemit suorassa kommunikoinnissa Vertaiset ovat ajoittain yhteydessä ja vaihtavat IP osoitteita esimerkkejä: tiedostonjako (BitTorrent) Striimaus (KanKan) VoIP (Skype) Application Layer 2-63

File distribution: client-server vs P2P Question: how much time to distribute file (size F) from one server to N peers? peer upload/download capacity is limited resource us: server upload capacity file, size F server un dn us u1 d1 u2 di: peer i download capacity d2 network (with abundant bandwidth) di ui ui: peer i upload capacity Application Layer 2-64

File distribution: client-server vs P2P Kysymys: Kuinka kauan kestää jakaa (koko F) yhdeltä serveriltä N lkm vertaisia? Vertais lähetys/lataus kapasiteetti on rajoitettu resurssi us: server upload capacity file, size F server un dn us u1 d1 u2 di: peer i download capacity d2 network (with abundant bandwidth) di ui ui: peer i upload capacity Application Layer 2-65

File distribution time: client-server server transmission: must sequentially send (upload) N file copies: time to send one copy: F/us time to send N copies: NF/us F us di network ui client: each client must download file copy dmin = min client download rate min client download time: F/dmin time to distribute F to N clients using D c-s client-server approach > max{nf/us,,f/dmin} increases linearly in N Application Layer 2-66

File distribution time: client-server serveri siirto: on lähetettävä vuoronperään (upload) N tiedoston kopioita: F di Yhden kopion lähetysaika: us network F/us N kopioiden lähetysaika: käyttäjä: NF/us jokaisen käyttäjän ui on ladattava tiedoston kopio dmin = minimi käyttäjien latausmäärä Minimikäyttäjien latausaika: F:n F/d jakominn käyttäjälle ajassa Käyttäjä-serveri lähestyminen D c-s > max{nf/us,,f/dmin} Kasvaa lineaarisesti N:ssä Application Layer 2-67

File distribution time: P2P server transmission: must upload at least one copy time to send one copy: F/us F us client: each client must download file copy di network ui min client download time: F/dmin clients: as aggregate must download NF bits max upload rate (limting max download rate) is us + Σui time to distribute F to N clients using P2P approach DP2P > max{f/us,,f/dmin,,nf/(us + Σui)} increases linearly in N but so does this, as each peer brings service capacity Application Layer 2-68

File distribution time: P2P Serverisiirto: on ladattava vähintään yksi kopio Yhden kopion lähetysaika: F/us jokaisen käyttäjän käyttäjä: on ladattava tiedoston kopio F us di network ui Minimi käyttäjän latausaika: F/dmin käyttäjät: liitettävien tiedostojen on latauduttava NF biteissä Maximi lataustaso (rajoitettu maximi lataustaso) on us + Σui ajassa: ako N käyttäjälle kko (P2P) lähestyminen DP2P > max{f/us,,f/dmin,,nf/(us + Σui)} Kasvaa lineaarisesti N:ssä mutta niin tämäkin, sillä jokainen vertainen tuo kapasiteettia pa Application Layer 2-69

Client-server vs. P2P: example client upload rate = u, F/u = 1 hour, us = 10u, dmin us Application Layer 2-70

Client-server vs. P2P: example Käyttäjän latausnopeus = u, F/u = 1 hour, us = 10u, dmin us Application Layer 2-71

P2P file distribution: BitTorrent file divided into 256Kb chunks peers in torrent send/receive file chunks tracker: tracks peers participating in torrent torrent: group of peers exchanging chunks of a file Alice arrives obtains list of peers from tracker and begins exchanging file chunks with peers in torrent Application Layer 2-72

P2P file distribution: BitTorrent Tiedosto jaettu 256Kb paloihin peerit torrenteissa lähettävät/vastaanottavat tiedostopaloja seuranta: seuraavat peerien Osallistumista torrenteissa torrentti: peerien joukko vaihtavat tiedostopaloja Alice arrives obtains list of peers from tracker and begins exchanging file chunks with peers in torrent Application Layer 2-73

P2P file distribution: BitTorrent peer joining torrent: has no chunks, but will accumulate them over time from other peers registers with tracker to get list of peers, connects to subset of peers ( neighbors ) while downloading, peer uploads chunks to other peers peer may change peers with whom it exchanges chunks churn: peers may come and go once peer has entire file, it may (selfishly) leave or (altruistically) remain in torrent Application Layer 2-74

P2P file distribution: BitTorrent Peeri yhtyy torrenttiin: Ei ole paloina, mutta aikoo kerätä niitä ajan mittaan muista peereistä. Rekisteröi seuraajan saadakseen peerien listan, liittyy peerien osajoukkoon ( naapureihin ) ladattaessa, peeri lähettää paloja toisille peereille peeri voi vaihtaa peerejä sen kanssa, jonka kanssa se vaihtaa paloja churn: peerit voivat mennä ja tulla Kun peerillä on koko tiedosto, se saattaa (itsekkäästi) lähteä tai (altruistisesti) pysyä torrentissa Application Layer 2-75

BitTorrent: requesting, sending file chunks requesting chunks: at any given time, different peers have different subsets of file chunks periodically, Alice asks each peer for list of chunks that they have Alice requests missing chunks from peers, rarest first sending chunks: tit-for-tat Alice sends chunks to those four peers currently sending her chunks at highest rate other peers are choked by Alice (do not receive chunks from her) re-evaluate top 4 every10 secs every 30 secs: randomly select another peer, starts sending chunks optimistically unchoke this peer newly chosen peer may join top 4 Application Layer 2-76

BitTorrent: requesting, sending file chunks Palojen pyytäminen: Minä tahansa ajanjaksona, eri peereillä on on eri osajoukkojsa tiedoston paloja jakoittain, Alice kysyy jokaiselta peeriltä listaa niistä paloista, joita niillä on Alice pyytää puuttuvia paloja alkaen harvinaisimmasta Palojen lähettäminen: tit-fortat Alice lähettää paloja niille neljälle peerille, jotka lähettävät hänen palojaan suurimmalla tasolla. Muut peerit ovat tuhketuneet Alicen takia (eivät vastaanota paloja häneltä) Uudelleenarvioi parhaat 4 joka 10 sekunti Joka 30 sekunti: umpimähkään valitsee toisen peerin, alkaa lähettämään paloja optimistisesti epätukehduttaa tämän peerin Uudelleenvalittu peeri voi liittyä Application Layer 2-774 parhaan joukkoon

BitTorrent: tit-for-tat (1) Alice optimistically unchokes Bob (2) Alice becomes one of Bob s top-four providers; Bob reciprocates (3) Bob becomes one of Alice s top-four providers higher upload rate: find better trading partners, get file faster! Application Layer 2-78

BitTorrent: tit-for-tat (1) Alice optimistisesti epätukehduttaa Bobin (2) Alicesta tulee yksi Bobin top-4 tarjoajista ; Bob antaa vaihtaa (3) Bobista tulee yksi Alicen top-neljä tarjoajista Korkeampi lähetystaso: löytää paremmin vaihtokäyttäjiä, saa tiedoston nopeammin! Application Layer 2-79

Distributed Hash Table (DHT) Hash table DHT paradigm Circular DHT and overlay networks Peer churn

Distributed Hash Table (DHT) #pöytä DHT ajatusmalli Pyöreä DHT and tukkeutuvat verkot Peerien vellominen

Simple Database Simple database with(key, value) pairs: key: human name; value: social security # Key Value John Washington 132-54-3570 Diana Louise Jones 761-55-3791 Xiaoming Liu 385-41-0902 Rakesh Gopal 441-89-1956 Linda Cohen 217-66-5609. Lisa Kobayashi 177-23-0199 key: movie title; value: IP address

Simple Database Yksinkertainen tietokanta (avain, arvo) pareista: avain: ihmisnimi; arvo: sosiaalinen turvallisuus # Key Value John Washington 132-54-3570 Diana Louise Jones 761-55-3791 Xiaoming Liu 385-41-0902 Rakesh Gopal 441-89-1956 Linda Cohen 217-66-5609. Lisa Kobayashi 177-23-0199 avain: elokuvaotsikko; arvo: IP osoite

Hash Table More convenient to store and search on numerical representation of key key = hash(original key) Original Key Key Value John Washington 8962458 132-54-3570 Diana Louise Jones 7800356 761-55-3791 Xiaoming Liu 1567109 385-41-0902 Rakesh Gopal 2360012 441-89-1956 Linda Cohen 5430938 217-66-5609. Lisa Kobayashi 9290124 177-23-0199

Hash Table Mukavampaa on varastoida ja etsiä numeerisen esitystavan avaimella avain = hash(alkuperäinen avain) Original Key Key Value John Washington 8962458 132-54-3570 Diana Louise Jones 7800356 761-55-3791 Xiaoming Liu 1567109 385-41-0902 Rakesh Gopal 2360012 441-89-1956 Linda Cohen 5430938 217-66-5609. Lisa Kobayashi 9290124 177-23-0199

Distributed Hash Table (DHT) Distribute (key, value) pairs over millions of peers pairs are evenly distributed over peers Any peer can query database with a key database returns value for the key To resolve query, small number of messages exchanged among peers Each peer only knows about a small number of other peers Robust to peers coming and going (churn)

Distributed Hash Table (DHT) Jako (avain, arvo) miljoonien peerien yli Parit ovat jaettu tasaisesti peerien yli Mikä tahansa peeri voi tiedustella tietokantaa avaimella Tietokanta palauttaa avaimelle arvon Tiedustelun ratkaisemiseksi, pieni määrä viestejä vaihdetaan peerien välillä Jokainen peeri tietää vain pienen määrän toisia peerejä Vankat peerit menevät ja tulevat (churn)

Assign key-value pairs to peers rule: assign key-value pair to the peer that has the closest ID. convention: closest is the immediate successor of the key. e.g., ID väli {0,1,2,3,,63} Oleta 8 peeriä: 1,12,13,25,32,40,48,60 Jos avain = 51, silloin tarkoitettu peerille 60 Jos avain = 60, silloin tarkoitettu peerille 60 Jos avain = 61, silloin tarkoitettu peerille1

Assign key-value pairs to peers sääntö: määrämäällä avain-arvo parin peerille, jolla on lähin ID. käytäntö: lähin on avaimen välitön seuraaja. e.g., ID space {0,1,2,3,,63} suppose 8 peers: 1,12,13,25,32,40,48,60 If key = 51, then assigned to peer 60 If key = 60, then assigned to peer 60 If key = 61, then assigned to peer 1

Circular DHT each peer only aware of immediate successor and predecessor. 1 12 60 13 48 25 40 32 overlay network

Circular DHT Jokainen peeri on vain tietoinen Välittömästä seuraajasta ja Edeltäjästä. 1 12 60 13 48 25 40 32 overlay network

Resolving a query 1 value 12 What is the value associated with key 53? 60 13 48 O(N) messages on avgerage to resolve query, when there 25 40 32

Resolving a query 1 Mikä on arvo yhteydessä avain 53:een arvo 12 60 13 48 O(N) viestejä on keskimääräinen ratkaisu tiedustelu, kun on N 25 40 32

Circular DHT with shortcuts value 1 What is the value for key 53 12 60 13 48 25 40 32 each peer keeps track of IP addresses of predecessor, successor, short cuts. reduced from 6 to 3 messages. possible to design shortcuts with O(log N) neighbors, O(log N) messages in query

Circular DHT with shortcuts arvo 1 Mikä on avaimen arvo 53 12 60 13 48 25 40 32 Jokainen peeri seuraa IP osoitteita edeltäjältänsä, seuraajaltansa, short cuts. Vähennetty 6 viestistä 3:een. On mahdollista suunnitella oikoteitä O(log N) naapureilla, O (log N) tiedustelijän viesteissä

Peer churn handling peer churn: 1 15 peers may come and go (churn) each peer knows address of its two successors 3 4 12 5 each peer periodically pings its two successors to check aliveness if immediate successor leaves, 10 choose next successor as new 8 example: peer 5 abruptly leavesimmediate successor peer 4 detects peer 5 s departure; makes 8 its immediate successor 4 asks 8 who its immediate successor is; makes 8 s immediate successor its second successor.

Peeri rinkula Peeri rinkulan käyttö: 1 Peerit voivat tulla ja mennä Jokainen peeri tietää kahden seuraajansa osoitteen 3 15 4 12 10 Jokainen peeri pingaa välillä kahdelle seuraajille, että ne ovat vielä yhteydessä Jos 8 lähi seuraaja katoaa, valitaan uusi lähi seuraaja esimerkki: Viisi peeriä poistuu yhtäkkiä Peeri 4 havaitsee 5:sen lähdön ja tekee 8:sista seuraajansa 4 kysyy 8:silta kuka hänen välitön seuraaja on ja tekee siitä toisen seuraajansa

Chapter 2: outline 2.1 principles of network applications app architectures app requirements 2.6 P2P applications 2.7 socket programming with UDP and TCP 2.2 Web and HTTP 2.3 FTP 2.4 electronic mail SMTP, POP3, IMAP 2.5 DNS Application Layer 2-98

Socket programming goal: learn how to build client/server applications that communicate using sockets socket: door between application process and endend-transport protocol application proce ss socket application proce ss transport transport network network link physical Internet link controlled by app developer controlled by OS physical Application Layer 2-99

Soketti ohjelmointi päämäärä: oppia kuinka rakentaa asiakas/palvelin sovelluksia jotka kommunikoivat käyttäen soketteja Soketti: ovi sovellusprosessin ja pääty-pääty-kuljetus protokollan välillä application proce ss soketti application proce ss transport transport network network link physical Internet link Sovelluskehittäjä hallitsee Käyttöjärjestelmä hallitsee physical Application Layer 2-100

Socket programming Two socket types for two transport services: UDP: unreliable datagram TCP: reliable, byte stream-oriented Application Example: 1. Client reads a line of characters (data) from its keyboard and sends the data to the server. 2. The server receives the data and converts characters to uppercase. 3. The server sends the modified data to the client. 4. The client receives the modified data and displays the line on its screen. Application Layer 2-101

Socket programming Kaksi sokettityyppiä tiedonsiirtoon: UDP: Epäluotettavia datagrammeja TCP: Luotettava, tavujonoihin keskittynyt Sovellusesimerkki: 1. Asiakas lukee merkkijonon näppäimistöltä ja lähettää sen serverille 2. Serveri vastaanottaa datan ja muuttaa kirjaimet isoiksi 3. Serveri lähettää muokatun datan asiakkaalle 4. Asiakas vastaanottaa muokatun datan ja näyttää tekstin näytöllä Application Layer 2-102

Socket programming with UDP UDP: no connection between client & server no handshaking before sending data sender explicitly attaches IP destination address and port # to each packet rcvr extracts sender IP address and port# from received packet UDP: transmitted data may be lost or received out-of-order Application viewpoint: UDP provides unreliable transfer of groups of bytes ( datagrams ) between client and server Application Layer 2-103

Socket programming with UDP UDP: ei yhteyttä asiakkaan ja isännän välillä Ei kättelyä ennen datan lähetystä Lähettäjä erikseen lisää IP-osoitteen ja porttinumeron jokaiseen pakettiin rcvr saa lähettäjän IP-osoitteen ja porttinumeron paketista UDP: lähetetty data voi hukkua tai tulla väärässä järjestyksessä Sovelluksen näkökulma: UDP tarjoaa epäluotettavaa datagrammien siirtoa asiakkaan ja isännän välillä Application Layer 2-104

Client/server socket interaction: UDP server (running on serverip) create socket, port= x: serversocket = socket(af_inet,sock_dgram) read datagram from serversocket write reply to serversocket specifying client address, port number clien t create socket: clientsocket = socket(af_inet,sock_dgram) Create datagram with server IP and port=x; send datagram via clientsocket read datagram from clientsocket close clientsocket Application 2-105

Client/server socket interaction: UDP serveri (pyörii serverip:llä) Luo soketti, port= x: serversocket = socket(af_inet,sock_dgram) Lue datagrammi serversocket Kirjoita vastaus serversocket Tarkentaen asiakkaan Osoitteen ja porttinumeron asiaka s Luo soketti: clientsocket = socket(af_inet,sock_dgram) Luo datagrammi serverin IP:llä ja port=x; lähetä käyttämällä clientsocket Lue datagrammi clientsocket sulje clientsocket Application 2-106

Example app: UDP client Python UDPClient include Python s socket library from socket import * servername = hostname serverport = 12000 create UDP socket for server clientsocket = socket(socket.af_inet, get user keyboard input Attach server name, port to message; send into socket read reply characters from socket into string socket.sock_dgram) message = raw_input( Input lowercase sentence: ) clientsocket.sendto(message,(servername, serverport)) modifiedmessage, serveraddress = print out received string and close socket clientsocket.recvfrom(2048) print modifiedmessage clientsocket.close() Application Layer 2-107

Example app: UDP client Python UDPClient Pythonin sokettikirjasto sisältyy from socket import * servername = hostname serverport = 12000 Luo UDP soketti serverille clientsocket = socket(socket.af_inet, Ota vastaan käyttäjän näppäimistön input Liitä serverin nimi ja portti viestii. Lähetä sokettin Lue soketin vastaus merkkijonoon socket.sock_dgram) message = raw_input( Input lowercase sentence: ) clientsocket.sendto(message,(servername, serverport)) modifiedmessage, serveraddress = Tulosta saatu merkkijono ja sulje soketti clientsocket.recvfrom(2048) print modifiedmessage clientsocket.close() Application Layer 2-108

Example app: UDP server Python UDPServer from socket import * serverport = 12000 create UDP socket bind socket to local port number 12000 loop forever Read from UDP socket into message, getting client s address (client IP and port) send upper case string back to this client serversocket = socket(af_inet, SOCK_DGRAM) serversocket.bind(('', serverport)) print The server is ready to receive while 1: message, clientaddress = serversocket.recvfrom(2048) modifiedmessage = message.upper() serversocket.sendto(modifiedmessage, clientaddress) Application Layer 2-109

Example app: UDP server Python UDPServer from socket import * serverport = 12000 Luo UDP soketti Kiinnitä soketti paikalliseen porttiin (nro 12000) Pyörii ikuisesti Lue UDP soketista viestiksi, saa asiakkaan osoite ja porttinumero Lähetä isokirjaiminen merkkijono asiakkaalle serversocket = socket(af_inet, SOCK_DGRAM) serversocket.bind(('', serverport)) print The server is ready to receive while 1: message, clientaddress = serversocket.recvfrom(2048) modifiedmessage = message.upper() serversocket.sendto(modifiedmessage, clientaddress) Application Layer 2-110

Socket programming with TCP client must contact server server process must first be running server must have created socket (door) that welcomes client s contact client contacts server by: Creating TCP socket, specifying IP address, port number of server process when client creates socket: client TCP establishes connection to server TCP when contacted by client, server TCP creates new socket for server process to communicate with that particular client allows server to talk with multiple clients source port numbers used to distinguish clients (more in Chap 3) application viewpoint: TCP provides reliable, in-order byte-stream transfer ( pipe ) between client and server Application Layer 2-111

Socket programming with TCP Asiakkaan täytyy ottaa yhteys serveriin Serveriprosessin täytyy olla käynnissä Serverin täytyy olla luonut soketti joka ottaa vastaan asiakkaan yhteyden Asiakas ottaa yhteyttä serveriin: Luo TCP soketin. Kertoo serveriprosessin iposoitteen ja porttinumeron Kun asiakas luo soketin: Asiakkaan TCP luo yhteyden serverin TCP:een Kun asiakas ottaa yhteyttä, serverin TCP luo soketin kyseisen asiakkaan yhteyttä varten Sallii viestimisen monen asiakkaan kanssa samanaikaisesti Asiakkaat erotetaan toisitaan lähdeporttinumerolla Sovelluksen näkökulma: TCP: Luotettava ja data tulee oikeassa Järjestyksessä asiakkaan ja serverin välillä Application Layer 2-112

Client/server socket interaction: TCP clien t server (running on hostid) create socket, port=x, for incoming request: serversocket = socket() wait for incoming TCP connection request connectionsocket = connection serversocket.accept() read request from connectionsocket write reply to connectionsocket close connectionsocket setup create socket, connect to hostid, port=x clientsocket = socket() send request using clientsocket read reply from clientsocket close clientsocket Application Layer 2-113

Client/server socket interaction: TCP serveri (pyörii hosted:llä) asiaka s luo socket, port=x, for incoming request: serversocket = socket() Odota tulevaa TCP yhteyspyyntöä connectionsocket = Yhteyden luominen serversocket.accept() Lue pyyntö connectionsocket vastaa connectionsocket sulje connectionsocket luo socket, Yhdistä hostid, port=x clientsocket = socket() Lähetä pyyntö clientsocket Lue vastaus clientsocket sulje clientsocket Application Layer 2-114

Example app: TCP client Python TCPClient from socket import * servername = servername create TCP socket for server, remote port 12000 serverport = 12000 clientsocket = socket(af_inet, SOCK_STREAM) clientsocket.connect((servername,serverport)) No need to attach server name, port sentence = raw_input( Input lowercase sentence: ) clientsocket.send(sentence) modifiedsentence = clientsocket.recv(1024) print From Server:, modifiedsentence clientsocket.close() Application Layer 2-115

Esimerkkisovellus: TCP client Python TCPClient from socket import * servername = servername Luo TCP-soketti serverille, Etäportti 12000 serverport = 12000 clientsocket = socket(af_inet, SOCK_STREAM) clientsocket.connect((servername,serverport)) Ei tarvitse liittää osoitetta ja porttinumeroa sentence = raw_input( Input lowercase sentence: ) clientsocket.send(sentence) modifiedsentence = clientsocket.recv(1024) print From Server:, modifiedsentence clientsocket.close() Application Layer 2-116

Example app: TCP server Python TCPServer create TCP welcoming socket server begins listening for incoming TCP requests loop forever server waits on accept() from socket import * serverport = 12000 serversocket = socket(af_inet,sock_stream) serversocket.bind((,serverport)) serversocket.listen(1) print The server is ready to receive while 1: connectionsocket, addr = serversocket.accept() for incoming requests, new socket created on return read bytes from socket (but not address as in UDP) close connection to this client (but not welcoming socket) sentence = connectionsocket.recv(1024) capitalizedsentence = sentence.upper() connectionsocket.send(capitalizedsentence) connectionsocket.close() Application Layer 2-117

Example app: TCP server Python TCPServer Luo TCP:n hyväksyvä soketti Serveri alkaa kuunnella TCP-pyyntöjä Pyörii ikuisesti Serveri odottaa uusia pyyntöjä, Uusi soketti luodaan palatessa Lukee tavut soketista (ei osoitetta kuten UDP) Sulkee yhteyden asiakkaaseen from socket import * serverport = 12000 serversocket = socket(af_inet,sock_stream) serversocket.bind((,serverport)) serversocket.listen(1) print The server is ready to receive while 1: connectionsocket, addr = serversocket.accept() sentence = connectionsocket.recv(1024) capitalizedsentence = sentence.upper() connectionsocket.send(capitalizedsentence) connectionsocket.close() Application Layer 2-118

Chapter 2: summary our study of network apps now complete! application architectures client-server P2P application service requirements: reliability, bandwidth, delay Internet transport service model connection-oriented, reliable: TCP unreliable, datagrams: UDP specific protocols: HTTP FTP SMTP, POP, IMAP DNS P2P: BitTorrent, DHT socket programming: TCP, UDP sockets Application Layer 2-119

Chapter 2: summary Verkkosovellusosio ohi Sovellusten arkkitehtuuri Asiakas-serveri P2P Sovelluksien palveluiden vaatimukset: Luotettavuus, kaistanleveys, viive Internetin tiedonsiirron palvelumalli Yhteyskeskeinen, luotettava: TCP Epäluotettava, datagrammit: UDP Erityisiä protokollia: HTTP FTP SMTP, POP, IMAP DNS P2P: BitTorrent, DHT sokettiohjelmointia: TCP, UDP sockets Application Layer 2-120

Chapter 2: summary most importantly: learned about protocols! typical request/reply message exchange: client requests info or service server responds with data, status code message formats: headers: fields giving info about data data: info being communicated important themes: control vs. data msgs in-band, out-of-band centralized vs. decentralized stateless vs. stateful reliable vs. unreliable msg transfer complexity at network edge Application Layer 2-121

Chapter 2: summary Opimme protokollista Tyypillinen pyyntö/vastaus keskustelu : Asiakas pyytää infoa tai palvelua Serveri vastaa datalla, statuskoodi viestiformaatit: headers: kentät, joissa infoa datasta data: informaatiota kommunikoidaan Tärkeitä teemoja: kontrolli vs. dataviestit in-band, out-of-band keskitetty vs. hajautettu Stateless vs. stateful luotetava vs. epäluotetava viestin siirto complexity at network edge Application Layer 2-122

Chapter 1 Additional Slides Introduction 1-123

application (www browser, packet analyzer email client) application packet capture (pcap) OS Transport (TCP/UDP) copy of all Ethernet frames sent/receive d Network (IP) Link (Ethernet) Physical

sovellus (www selain, Pakettianalysointi email) sovellus Käyttöjärjestelmä Paketin kaappaus (pcap) Kopio kaikista Ethernetkehyksistä. Lähetetyt / vastaanotetut tiedonsiirto (TCP/UDP) verkko (IP) Linkki (Ethernet) Fyysinen