Ryhmän kokoonpano Taru Hakkarainen Liisa Salminen Miia Ruuskanen Eetu Kauppila Jannina Blomqvist Matias Hirvonen Topias Viiala Jami Pankakari Roosa Huotari Kaikki kalvot on jaettu tasan ryhmän jäsenten kesken
Chapter 2: outline 2.1 principles of network applications app architectures app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic mail SMTP, POP3, IMAP 2.5 DNS 2.6 P2P applications 2.7 socket programming with UDP and TCP Application Layer 2-3
Luku 2: pääpiirteet 2.1 verkkosovellusten periaatteet 2.2 Web ja HTTP 2.3 FTP 2.4 sähköposti SMTP, POP3, IMAP 2.5 DNS 2.6 P2P sovellukset 2.7 sokettiohjelmointi UDP:llä ja TCP:llä Application Layer 2-4
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) 2-5 Application Layer 2-5
Puhdas P2P arkkitehtuuri ei aina palvelimella satunnaiset päätelaitteet kommunikoivat suoraan osallistujat ajoittain yhteydessä ja jakavat IP osoitteita esimerkkejä: tiedostojen jakelu (BitTorrent) streamaus (KanKan) Puheyhteys (Skype) Application Layer 2-6
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 u s : server upload capacity file, size F server u s u 1 d 1 u 2 d 2 d i : peer i download capacity u N d N network (with abundant bandwidth) d i u i u i : peer i upload capacity Application Layer 2-7
Tiedoston jakelu: asiakas-palvelin vs P2P Kysymys: kuinka kauan kestää jakaa tiedosto (kokoa F) yhdeltä palvelimelta N määrälle osallistujia? vertaisen palvelimelle latauksen/palvelimelta latauksen kapasiteetti on rajallinen resurssi tiedosto, koko Fpalvelin u s : palvelimen latauskapasiteetti u N d N u s u 1 d 1 verkko (runsaalla kaistanleveydellä) u 2 d 2 d i u i d i : vertaisen i latauskapasiteetti u i : vertaisen i latauskapasiteetti palvelimelle Application Layer 2-8
File distribution time: client-server server transmission: must sequentially send (upload) N file copies: time to send one copy: F/u s time to send N copies: NF/u s client: each client must download file copy d min = min client download rate min client download time: F/d min F u s network d i u i time to distribute F to N clients using client-server approach D c-s > max{nf/u s,,f/d min } increases linearly in N Application Layer 2-9
Tiedoston jakeluaika: asiakas-palvelin palvelimen siirto: täytyy lähettää peräkkäin N tiedosto kopioita aika yhden kopion lähettämiseen: F/u s aika N määrän kopioita lähettämiseen: NF/u s F u s verkko d i u i asiakas: jokaisen asiakkaan pitää ladata kopio d min = min asiakkaan latausnopeus min asiakkaan latausaika: F/d min aika F jakamiseen N määrälle asiakkaita käyttäen asiakas-palvelin lähestymistapaa D c-s > max{nf/u s,,f/d min } kasvaa lineaarisesti N Application Layer 2-10
File distribution time: P2P server transmission: must upload at least one copy time to send one copy: F/u s client: each client must download file copy min client download time: clients: as aggregate must download NF bits F/d min max upload rate (limting max download rate) is u s + time to Σu distribute i F to N clients using P2P approach increases linearly in N F u s network D P2P > max{f/u s,,f/d min,,nf/(u s + Σu i )} but so does this, as each peer brings service capacity d i u i Application Layer 2-11
Tiedoston jakeluaika: P2P palvelimen siirto: pitää ladata ainakin yksi kopio kopion lähettämisaika: F/u s F u s asiakas: jokaisen asiakkaan pitää ladata kopio tiedostosta asiakkaan minimi latausaika: F/d min verkko d i u i asiakkaat: kuten yhtenlaskettu pitää ladata NF bittiä maximi lähetysnopeus (max latausnopeus) on u s + Σu i time to distribute F to N clients using P2P approach D P2P > max{f/u s,,f/d min,,nf/(u s + Σu i )} kasvaa lineaarisesti N kohti mutta niin tekee myös tämä, koska jokaista kohti myös palvelu kapasiteettia Application Layer 2-12
Client-server vs. P2P: example client upload rate = u, F/u = 1 hour, u s = 10u, d min u s Application Layer 2-13
Asiakas-palvelin vs. P2P: esimerkki Asiakkaan lähetysnopes = u, F/u = 1 hour, u s = 10u, d min u s Application Layer 2-14
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-15
P2P tidoston jakaminen: BitTorrent tiedosto jaetaan 256Kb palaseen torrenttiin osallisutjat lähettävät/vastaanottavat tiedoston palaisia tracker: palvelin joka jäljittää osallistujat torrentti: joukko osallistujia jakaa palasia tiedostosta Alice sapuu saa listan osallistujista trackerpalvelimelta ja vaihtaa tiedostopaloja osallistujien kesken torrentissa Application Layer 2-16
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-17
P2P tiedoston jakelu: BitTorrent henkilö liittyy torrentiin: ei omista tietopaloja, mutta kerää niitä ajan myötä rekisteröi palvelimelle saadakseen listan osallistujista, yhdistää alijoukkoon. ladatessa peer jakelee tietopalaset meille peer:lle peer may change peers with whom it exchanges chunks vaihtuvuus: osallistujat tulee ja lähtee saatuaan koko tiedoston osallistuja voi (itsepäisesti) lähtä tai (epäistekästi) jäädä torrenttiin. Application Layer 2-18
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 Application Layer 2-19
BitTorrent: pyytää, lähettää tiedostopalaset chunks-pyyntö: jokaisena ajankohtana, eri osallistujilla on eri paloja tiedostosta jaksoisesti, Alice kysyy listaa palasista eri osallistujilta tiedostosta Alice pyytää puuttuvat tiedoston palaset osallistujilta, harvinaisinta ensin chunks-lähetys: tit-for-tat (aktiivisuus ensinmetodi) Alice lähettää tiedoston palat neljälle osallistujille, jotka lähettävät hänelle suurimmalla tahdilla muut osallistujat Alice kuristaa (eivät vastaanota tiedoston palasia Alicelta) top4 uudelleenarvion alainen kymmenen sekunnin välein joka 30 sekunttia: satunnaisesti valitsee toisen osallistujan, aloittaa lähetyksen optimistisesti vapauttaa kuristuksen tältä osallistujalta uusi, valittu osallistuja liittyy top4:ään Application Layer 2-20
BitTorrent: tit-for-tat (1) Alice optimistically unchokes (2) Bob Alice becomes one of Bob s top-four providers; Bob (3) reciprocates Bob becomes one of Alice s top-four providers higher upload rate: find better trading partners, get file faster! Application Layer 2-21
BitTorrent: potut pottuina (1) Alice ottaa satunnaisesti Bobin mukaan (2) Alicesta tulee yksi Bobin neljästä huipputarjoajasta; Bob vastaa (3) Bobista tulee yksi Alicen huipputarjoajista korkeampi latausmäärä: löytää parempia vaihtokumppaneita, saa tiedostot nopeammin! Application Layer 2-22
Distributed Hash Table (DHT) Hash table DHT paradigm Circular DHT and overlay networks Peer churn 2-23
Yleinen hajautustaulu (DHT) Hajautustaulu DHT paradigma Kiertelevä DHT ja kerrostetut verkot Osallistujien vaihtuvuus 2-24
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 2-25
Yksinkertainen tietokanta Yksinkertainen tietokanta (selite, arvo) pareilla: selite: henkilön nimi; arvo: sosiaaliturvatunnus Avain Arvo 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 selite: elokuvan nimi; arvo: IP osoite 2-26
Hash Table More convenient to store and search on numerical representation of key key Original = hash(original Key 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 2-27
Hajautustaulu Kätevämpi varastoimaan ja etsimään numeerisia selitteitä (numerical representation of key) numeerinen hajautus 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 2-28
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) 2-29
Jaettu hajautustaulu (DHT) Jaetut parit miljoonien käyttäjien kesken parit ovat loput jaettu käyttäjien kesken kuka tahansa käyttäjä voi jonottaaa tietokantaan avaimella tietokanta palauttaa arvon avaimelle selvittääkseen jonon, pieni määrä viestejä tulee vaihtaa käyttäjien kesken Jokainen käyttäjä tuntee vain muutaman toisen käyttäjän Käyttäjien vaihtuvuus on vahvaa 2-30
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 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 2-31
Osallistujien tunnistautuminen avain-arvoilla, tehdään osallistujista tiivisteet sääntö: nimetään avain-arvopari osallistujille lähimmän ID:n perusteella. yleissopimus : Lähin on välitön seuraaja avain esim. tunnustila {0,1,2,3,,63} oletetaan 8 osallistujaa: 1,12,13,25,32,40,48,60 Jos avain = 51, sitten siirretään käyttäjälle 60 Jos avain = 60, sitten siirretään käyttäjälle 60 Jos avain = 61, sitten siirretään käyttäjälle 1 2-32
Circular DHT each peer only aware of immediate successor and predecessor. 6 0 4 8 4 0 3 2 1 1 2 1 3 2 5 overlay network 2-33
Ympyrän muotoinen DHT jokainen peer tietoinen vain seuraajastaan ja edeltäjästään. 1 60 12 13 48 40 32 25 Peittää Verkko 2-34
Resolving a query 60 value 1 12 What is the value associated with key 53? 13 O(N) messages on avgerage to resolve 48 40 32 25 2-35
Viestin löytäminen arvo 1 12 Mikä on avaimeen 53 liittyvä arvo? 60 13 48 O(N) viestiä keskimäärin löytämään viestin, kun siellä on N osallistujaa 40 32 25 2-36
Circular DHT with shortcuts 6 0 4 8 4 0 1 value 3 2 1 2 1 2 3 5 What is the value for key 53 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 2-37
Ympyrän muotoinen DHT oikoteiden kanssa 6 0 4 8 4 0 1 ARVO 3 2 1 2 1 2 3 5 Mikä on avaimen 53 arvo Jokainen osallistuja pitää muistia IP osoitteista edeltäjästä, seuraajaksi, oikoteitä. vähentynyt 6 viestistä kolmeen.. Mahdollista muokata oikoteitä O(log N) Naapurit, O(log N) Viestejä tiedustellakseen 2-38
Peer churn 15 12 10 8 1 example: peer 5 abruptly leaves 3 5 4 handling peer churn: peers may come and go (churn) each peer knows address of its two successors each peer periodically pings its two successors to check aliveness if immediate successor leaves, choose next successor as new immediate successor 2-39
Osallistujien vaihtuvuus 1 15 3 12 5 10 8 4 käsittelyn osallistujien vaihtuvuus: osallistujat voivat mennä ja tulla jokainen osallistuja tietää osoitteen sen kahdesta seuraajasta jokainen osallistuja säännöllisesti pings sen kahdesta seuraajasta katsoakseen eläväisyyden Jos välitön seuraaja lähtee, valitse seuraava seuraajaksi uudeksi välittömästi esimerkiksi: osallistuja 5 yhtäkkiä lähtee pois 2-40
Peer churn 15 12 10 8 1 3 4 handling peer churn: peers may come and go (churn) each peer knows address of its two successors each peer periodically pings its two successors to check aliveness example: peer 5 abruptly leaves peer 4 detects peer 5 s departure; choose makes next successor 8 its immediate as new successor immediate successor 4 asks 8 who its immediate successor is; makes 8 s if immediate successor leaves, 2-41
Osallistujien vaihtuvuus 15 12 10 8 1 3 4 Vaihtuvuuden käsittely: vertaiset saattavat tulla ja lähteä (vaihtuvuus) jokainen vertainen tietää kahden seuraajansa osoitteen jokainen vertainen viestittää ajoittain kahdelle seuraajalleen tarkistaakseen elossaolon jos lähin seuraaja poistuu, valitse seuraava seuraaja lähimmäksi seuraajaksi Esim: vertainen 5 lähtee yhtäkkiä vertainen 4 havaitsee 5:n lähdön; tekee 8:sta lähimmän seuraajansa 4 kysyy 8 kuka on sen ilähin seuraaja; tekee 8:n lähimmästä seuraajasta toisen seuraajansa 2-42
Chapter 2: outline 2.1 principles of network applications app architectures app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic mail SMTP, POP3, IMAP 2.5 DNS 2.6 P2P applications 2.7 socket programming with UDP and TCP Application Layer 2-43
Kappale 2: Sisällys 2.1 Verkkosovellusten periaatteet sovellusarkkitehtuurit sovellusvaatimukset 2.2 Verkko ja HTTP 2.3 FTP 2.4 Sähköposti SMTP, POP3, IMAP 2.5 DNS 2.6 P2P-sovellukset 2.7 Sokettien ohjelmointi UDP:lla ja TCP:lla Application Layer 2-44
Socket programming goal: learn how to build client/server applications that communicate using sockets socket: door between application process and end-end-transport protocol proc ess application transport network link physical socke t Interne t proc ess application transport network link physical controlled by app developer controlle d by OS Application Layer 2-45
Sokettiohjelmointi Tavoite: Oppia, kuinka rakentaa asiakas/serveri-sovelluksia jotka kommunikoivat sokettien avulla Soketti: Ovi sovellusprosessien ja välitysprotokollien välillä sovellus prosessi siirto verkko linkki fyysinen soketti Internet sovellus prosessi siirto verkko linkki fyysinen sovelluskehittäjän hallinnassa käyttöjärjestelmän hallinnassa Application Layer 2-46
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 Application Layer 2-47
Sokettiohjelmointi Kaksi sokettityyppiä kahdelle siirtopalvelulle: UDP: viestin lähetyspalvelu, lähettää palan dataa kerralla(user Datagram Protocol) on ns. yhteydetön protokolla TCP: reliable, tavuvirta palvelu, lukee dataa merkki kerrallaan (Transmission Control Protocol) on tietoliikenneprotokolla Sovellusesimerkki: 1. Client lukee rivin merkkejä (data) näppäimistöltään ja lähettää datan palvelimelle 2. Palvelin vastaanottaa datan ja muuttaa kirjaimet isoiksi. 3. Palvelin lähettää muunnetun datan clientille. 4. Client vastaanottaa muunnetun datan ja näyttää rivin näytöllä. Application Layer 2-48
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 Application Layer 2-49
Sokettiohjelmointi UDP:n avulla UDP: yhteydetön protokolla asiakasohjelman & palvelimen välillä Ennen datan lähetystä ei alkukättelyä lähettäjä liittää IP-osoitteen ja portin # jokaiseen pakettiin RCVR poimii lähettäjän IP-osoitteen ja portin # vastaanotetusta paketista UDP: lähetetty data saattaa olla hävinnyt tai vastaanotettu epäkunnossa Sovellusnäkökulma: UDP tarjoaa epäluotettavan tavuryhmien ( datagrammit ) lähetyksen käyttäjän ja palvelimen välillä. Application Layer 2-50
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-51 2-51
Asiakkaan/palvelimen sokettien vuorovaikutus: UDP palvelin (käynnissä palvelimen IP) luo soketin, portti= x: palvelinsoketti = soketti(af_inet,sock_dgram) kuuntelee datagrammeja from palvelinsoketilta asiakas luo soketin: asiakassoketti = soketti(af_inet,sock_dgram) Luo datagrammin palvelinip:n kanssa ja portti=x; lähettää datagrammeja asiakassoketin kautta kirjoittaa vastauksen palvelinsoketille tarkentaen asiakkaan osoitteen ja porttinumeron lukee datagrammeja asiakassoketilta sulkee asiakassoketin Application 2-52 2-52
Example app: UDP client include Python s socket library create UDP socket for server get user Attach keyboard server name, port to input message; send into socket read reply characters from socket print out into received string string and close socket Python UDPClient from socket import * servername = hostname serverport = 12000 clientsocket = socket(socket.af_inet, socket.sock_dgram) message = raw_input( Input lowercase sentence: ) clientsocket.sendto(message,(servername, serverport)) modifiedmessage, serveraddress = Application Layer 2-53
Esimerkkisovellus: UDP asiakas sisältää Pythonin soketin kirjasto luo UDP soketin palvelimelle saa käyttäjän näppäimiston kirjoituksen Hakee palvelimen nimen, portin viestille; lähettää soketille lukee vastaus merkit soketilta stringille tulostaa vastaanotetun stringin sulkee soketin Python UDP -asiakas soketilta tuonti* palvelinnimi = hostname palvelinportti = 12000 asiakassoketti = soketti(socket.af_inet, socket.sock_dgram) viesti = raw_input( Input lowercase sentence: ) asiakassoketti.sendto(viesti,(palvelinnimi, palvelinportti)) muokattu viesti, palvelinosoite= asiakassoketti.recvfrom(2048) tulosta muokattu viesti asiakassoketti.sulje() Application Layer 2-54
Example app: UDP server create UDP socket bind socket to local port number 12000 loop forever Read from UDP socket into message, getting client s send upper address case (client string IP and back port) to this client Python UDPServer from socket import * serverport = 12000 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() Application Layer 2-55
Esimerkki sovellus: UDP-palvelin luo UDP-soketin sido soketti paikalliseen porttiin 12000 ikuinen silmukka Lue UDP-soketilta viestille, asiakkaan osoitteen saaminen (asiakas IP ja portti) Python UDP-palvelin soketilta tuonti* palvelinportti = 12000 palvelin soketti = soketti(af_inet, SOCK_DGRAM) palvelinsoketti.bind(('', palvelinportti)) tulosta Palvelin on valmis vastaanottamaan samalla kun 1: lähetä ylemmän tapauksen stringi takaisin asiakkaalle viesti, asiakasosoite = palvelinsoketti.recvfrom(2048) muokattu viesti = viesti.upper() palvelinsoketti.sendto(muokattu viesti, asiakasosoite) Application Layer 2-56
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-57
Soketti-ohjelmointi TCP:llä asiakkaan tulee kontaktoitua serveriin serveriprosessin tulee olla ensin käynnissä serverin tulee olla luonut soketti (ovi) joka vastaanottaa asiakkaan kontaktoinnin asiakas kontaktoi serveriin: Luomalla TCP soketin, spesifioimalla IP osoitteen, serveriprosessin porttinumero kun asiakas luo soketin: asiakkaan TCP perustaa yhteyden TCP-serveriin kun asiakas kontaktoi, TCP-serveri luo uuden soketin serveriprosessille kommunikointiin juuri sen tietyn asiakkaan kanssa luo serverille mahdollisuuden kommunikoida useiden asiakkaiden kanssa lähdeporttinumeroa käytetään usein asiakkaiden erottamiseen toisistaan (lisää luvussa 3) sovellusnäkökulma: TCP tarjoaa luotettavan, tilauksesta tapahtuvan siirron ( putki )asiakkaan ja serverin välille Application Layer 2-58
Client/server socket interaction: TCP server (running on hostid) create socket, port=x, for incoming request: serversocket = socket() clien t wait for incoming connection request connectionsocket = serversocket.accept() read request from connectionsocket write reply to connectionsocket close connectionsocket TCP connection setup create socket, connect to hostid, port=x clientsocket = socket() send request using clientsocket read reply from clientsocket close clientsocket Application Layer 2-59
Asiakasohjelmien/palvelinten sokettien vuorovaikutus: TCP palvelin (käynnissä hostidissa) asiakas soketin muodostus, port=x, sisääntulevalle pyynnölle: serverisoketti = soketti() sisääntulevan pyynnön odotus yhteys-soketti = serverisoketti.hyväksyntä() lukee pyynnön yhteyssoketista kirjoittaa vastauksen yhteys-sokettiin yhteys-soketin sulku TCP yhteysasetus luo soketin, luo yhteyden hostid, portti=x asiakas-soketti = soketti() lähettää pyynnön asiakas-soketin kautta lukee vastauksen asiakas-soketista asiakas-soketin sulku Application Layer 2-60
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, specific protocols: HTTP FTP SMTP, POP, IMAP DNS P2P: BitTorrent, DHT socket programming: TCP, UDP sockets Application Layer 2-61
Luku 2: yhteenveto opiskelumme tietoverkkoapplikaatioista ovat nyt valmiit! applikaatioiden arkkitehtuurit asiakas-serveri P2P applikaatiopalveluiden vaatimukset: luotettavuus, kaistanleveys, viive Internetin siirtopalvelumalli yhteys-orientoitunut, luotettava: TCP epäluotettava, datagrammit: UDP spesifit protokollat: HTTP FTP SMTP, POP, IMAP DNS P2P: BitTorrent, DHT soketti-ohjelmointi: TCP, UDP soketit Application Layer 2-62
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-63
Luku 2: yhteenveto Tärkeintä: opittu protokollista! tyypillinen pyyntö/vastaus viestitys: asiakas pyytää tietoa tai palvelua serveri vastaa tiedolla, statuskoodilla viestiformaatit: ylätunnisteet: kentät antavat tietoa datasta data: info kommunikoidaan tärkeät teemat: kontrolli vs. dataviestit in-band, out-of-band keskitetty vs. hajautettu merkitön vs. merkillinen luotettava vs. epäluotettava viestinvälitys monimutkaisuus verkon reunalla Application Layer 2-64