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