Käännös Mirja Hosionaho 100%

Samankaltaiset tiedostot
Chapter 2 Application Layer

Chapter 2 Application Layer

Security server v6 installation requirements

Security server v6 installation requirements

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

OSI ja Protokollapino

Salasanan vaihto uuteen / How to change password

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

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

SuomiCom-sähköpostiasetukset Microsoft Outlook 2016

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

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

FinFamily Installation and importing data ( ) FinFamily Asennus / Installation

Lab SBS3.FARM_Hyper-V - Navigating a SharePoint site

Microsoft Lync 2010 Attendee

Oulun yliopisto Sähkö- ja tietotekniikan osasto

Choose Finland-Helsinki Valitse Finland-Helsinki

Chapter 1 Introduction

2. Sovelluksia ja sovellusprotokollia

Sovellusprotokolla on vain osa hajautettua sovellusta Esim. WWW

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

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

Information on preparing Presentation

Sovellusprotokolla on vain osa hajautettua sovellusta Esim. WWW

Capacity Utilization

Lähettävä postipalvelin Vastaanottava postipalvelin

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

Push- ja pull-protokollat

2. Sovelluksia ja sovellusprotokollia

2. Sovelluksia ja sovellusprotokollia

Kierroksen 4 ratkaisut

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

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

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

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

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

SSH Secure Shell & SSH File Transfer

AXXION OY. Hosting-palvelut Asiakasohjeistus Versio 1.0

Group 2 - Dentego PTH Korvake. Peer Testing Report

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

Lab A1.FARM_Hyper-V.v3

GPRS-lisäpalvelu INTERNET-ASETUKSET

Internet Protocol version 6. IPv6

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

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.

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

7.4 Variability management

C++11 seminaari, kevät Johannes Koskinen

3. Kuljetuskerros 3.1. Kuljetuspalvelu

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

Efficiency change over time

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

ELEC-C7241 Tietokoneverkot Ohjelmointiprojekti

HITSAUKSEN TUOTTAVUUSRATKAISUT

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

Sisällysluettelo Table of contents

DNA Toimistoviestintä Microsoft - sähköposti

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

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

Käyttäjänedustaja (User Agent) Internetin kuljetusprotokollat. Sovellus ja kuljetuspalvelun laatu

Sähköpostitilin käyttöönotto

Chapter 3 Transport Layer. Kuljetuskerros

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

Chapter 3 Transport Layer. Kuljetuskerros

1. Liikkuvat määreet

Tekninen kuvaus Aineistosiirrot Interaktiiviset yhteydet iftp-yhteydet

ELEC-C7241 Tietokoneverkot Sovelluskerros

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

7. Product-line architectures

T Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot

Web Service torilla tavataan!

TW-LTE 4G/3G. USB-modeemi (USB 2.0)

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

The CCR Model and Production Correspondence

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

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

Business Opening. Arvoisa Herra Presidentti Very formal, recipient has a special title that must be used in place of their name


LYTH-CONS CONSISTENCY TRANSMITTER

Kuljetus- ja sovelluskerroksen tietoturvaratkaisut. Transport Layer Security (TLS) TLS:n suojaama sähköposti

Kuljetuskerros. Tietokoneverkot. Matti Siekkinen Pasi Sarolahti

anna minun kertoa let me tell you

Miksi Suomi on Suomi (Finnish Edition)

Portugalin tasavallan aloite neuvoston päätökseksi Schengenin konsultointiverkoston (tekniset eritelmät) osan 1 muuttamisesta

Automaatiojärjestelmän hankinnassa huomioitavat tietoturva-asiat

16. Allocation Models

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

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

Software Signing System System overview and key domain concepts

OFFICE 365 OPISKELIJOILLE

Verkottunut suunnittelu

100 % Kaisu Keskinen Diat

TW- WLAN ac SOVITTIMEN ASENNUSOHJE

ELEC-C7241 Tietokoneverkot Sovelluskerros

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

ESPOO VANTAA INSTITUTE OF TECHNOLOGY. ser 0/0. Right WS-3 WS-4. Ennen QoS-määrittelyjä tehdään normaalit reititinmäärittelyt ja testataan IP-yhteys:

Nykyaikainen viestintäalusta

Telecommunication Software

Rich Web Applications in Server-side Java without Plug-ins or JavaScript

TeleWell TW-LTE/4G/3G USB -modeemi Cat 4 150/50 Mbps

Transkriptio:

Kappale 2 Käännös Mirja Hosionaho 100% Application Layer 2-1

Chapter 2 Application Layer A note on the use of these ppt slides: We re making these slides freely available to all (faculty, students, readers). They re in PowerPoint form so you see the animations; and can add, modify, and delete slides (including this one) and slide content to suit your needs. They obviously represent a lot of work on our part. In return for use, we only ask the following: If you use these slides (e.g., in a class) that you mention their source (after all, we d like people to use our book!) If you post any slides on a www site, that you note that they are adapted from (or perhaps identical to) our slides, and note our copyright of this material. Thanks and enjoy! JFK/KWR Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012 All material copyright 1996-2012 J.F Kurose and K.W. Ross, All Rights Reserved Application Layer 2-2

Kappale 2 Sovelluskerros A note on the use of these ppt slides: We re making these slides freely available to all (faculty, students, readers). They re in PowerPoint form so you see the animations; and can add, modify, and delete slides (including this one) and slide content to suit your needs. They obviously represent a lot of work on our part. In return for use, we only ask the following: If you use these slides (e.g., in a class) that you mention their source (after all, we d like people to use our book!) If you post any slides on a www site, that you note that they are adapted from (or perhaps identical to) our slides, and note our copyright of this material. Thanks and enjoy! JFK/KWR Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012 All material copyright 1996-2012 J.F Kurose and K.W. Ross, All Rights Reserved Application Layer 2-3

Chapter 2: outline 2.1 principles of network applications 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-4

Kappale 2: sisältö 2.1 verkkosovellusten periaatteet 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 Pakettiohjelmointi UDP:llä ja TCP:llä Application Layer 2-5

Chapter 2: application layer our goals: conceptual, implementation aspects of network application protocols transport-layer service models client-server paradigm peer-to-peer paradigm learn about protocols by examining popular application-level protocols HTTP FTP SMTP / POP3 / IMAP DNS creating network applications socket API Application Layer 2-6

Kappale 2: sovelluskerros Tavoitteet: asiayhteys, verkon sovelluskerroksen protokollat toteutuksen näkökulmasta kuljetuskerroksen palvelumallit asiakas-palvelin esimerkki vertaisverkkoesimerkki oppia protokollista tutkimalla suosittuja sovelluskerroksen protokollia HTTP FTP SMTP / POP3 / IMAP DNS luomalla verkkosovelluksia kanta API Application Layer 2-7

Some network apps e-mail web text messaging remote login P2P file sharing multi-user network games streaming stored video (YouTube, Hulu, Netflix) voice over IP (e.g., Skype) real-time video conferencing social networking search Application Layer 2-8

Jotain verkkosovelluksia sähköposti web tekstiviestit etäyhteys vertaisverkkojen (P2P) tiedostojen jako useiden käyttäjien verkkopelit video-streaming (YouTube, Hulu, Netflix) äänen siirto IP (e.g., Skype) video konferenssit some-palvelut haku Application Layer 2-9

Creating a network app write programs that: run on (different) end systems communicate over network e.g., web server software communicates with browser software no need to write software for network-core devices network-core devices do not run user applications applications on end systems allows for rapid app development, propagation application transport network data link physical application transport network data link physical application transport network data link physical Application Layer 2-10

Verkkosovelluksen luominen tehdään ohjelmia jotka: toimivat (erilaisissa) loppujärjestelmissä viestivät verkon välityksellä esim. serverin verkkoohjelma viestii selainohjelman kanssa ei tarvetta tehdä ohjelmia verkon ytimen laitteille verkon ytimen laitteet eivät käytä käyttäjien sovelluksia loppujärjestelmien sovellukset mahdollistavat nopean sovelluskehityksen application transport network data link physical application transport network data link physical application transport network data link physical Application Layer 2-11

Application architectures possible structure of applications: client-server peer-to-peer (P2P) Application Layer 2-12

Sovellusarkkitehtuurit mahdolliset rakenteet sovelluksille: asiakas-palvelin vertaisverkot (P2P) Application Layer 2-13

Client-server architecture server: always-on host permanent IP address data centers for scaling client/server clients: communicate with server may be intermittently connected may have dynamic IP addresses do not communicate directly with each other Application Layer 2-14

Asiakas-palvelin arkkitehtuuri client/server palvelin: aina valmiudessa pysyvä IP-osoite datakeskukset skaalaavat asiakkaat: viestivät palvelimen kanssa tarvittaessa kytkettäviä saattaa olla vaihtuvia IPosoitteita eivät viesti suoraan Application Layer 2-15

P2P architecture no always-on server arbitrary end systems directly communicate peers request service from other peers, provide service in return to other peers self scalability new peers bring new service capacity, as well as new service demands peers are intermittently connected and change IP addresses complex management peer-peer Application Layer 2-16

P2P arkkitehtuuri ei jatkuvaa valmiustilaa serverillä loppujärjestelmät voivat mielivaltaisesti viestiä keskenään päätteet pyytävät palvelua toisiltaan, ja tuottavat palvelua toisilleen itsestään skaalautuva uudet päätteet tuovat uutta palvelinkapasiteettia, kuten myös palvelupyyntöjä päätteet ovat vain ajoittain kytkettyinä, ja IP-osoitteet ovat vaihtuvia hallinta monimutkaista peer-peer Application Layer 2-17

Processes communicating process: program running within a host within same host, two processes communicate using inter-process communication (defined by OS) processes in different hosts communicate by exchanging messages clients, servers client process: process that initiates communication server process: process that waits to be contacted aside: applications with P2P architectures have client processes & server processes Application Layer 2-18

Prosessien viestintä prosessi: ohjelma pyörii isäntäkoneella sama isäntä viestii kahta prosessia käyttämällä prosessin sisäinen viestintä (käyttöjärjestelmä määrittelee) eri isäntien prosessit viestivät vaihtamalla viestejä Asiakkaat, palvelimet asiakasprosessi: aloittaa viestinnän palvelinprosessi: odottaa yhteydenottoa sivussa: P2Parkkitehtuurin sovelluksilla on asiakasprosessit ja serveriprosessit Application Layer 2-19

Sockets process sends/receives messages to/from its socket socket analogous to door sending process shoves message out door sending process relies on transport infrastructure on other side of door to deliver message to socket at receiving process application process socket application process controlled by app developer transport network link physical Internet transport network link physical controlled by OS Application Layer 2-20

Suoritinkanta prosessi lähettää/ vastaanottaa viestejä suoritinkannasta se on vähän kuin ovi prosessien lähetys työntää viestit ulos ovesta prosessien lähetys riippuu oven toisella puolella olevasta kuljetusinfrastruktuurista, että viesti lähtee vastaanottoprosessiin application process socket application process controlled by app developer transport network link physical Internet transport network link physical controlled by OS Application Layer 2-21

Addressing processes to receive messages, process must have identifier host device has unique 32- bit IP address Q: does IP address of host on which process runs suffice for identifying the process? A: no, many processes can be running on same host identifier includes both IP address and port numbers associated with process on host. example port numbers: HTTP server: 80 mail server: 25 to send HTTP message to gaia.cs.umass.edu web server: IP address: 128.119.245.12 port number: 80 more shortly Application Layer 2-22

Osoittamisprosessi että voi vastaanottaa viestejä, pitää olla jokin yksilöivä tekijä isäntälaitteella on uniikki 32-bittinen IP-osoite Q: Tietääkö isännän IPosoite mitä prosesseja käytetään tunnistamiseen? A: ei, yksi isäntä voi hoitaa useita prosesseja yksilöintitieto sisältää molemmat, isännän Iposoitteen ja porttinumerot. esim. porttinumeroista: HTTP-serveri: 80 email serveri: 25 lähettääkseen HTTPviestin gaia.cs.umass.edu:n verkkoserverille: IP-osoite: 128.119.245.12 porttinumero: 80 lyhyemmin Application Layer 2-23

App-layer protocol defines types of messages exchanged, e.g., request, response message syntax: what fields in messages & how fields are delineated message semantics meaning of information in fields rules for when and how processes send & respond to messages open protocols: defined in RFCs allows for interoperability e.g., HTTP, SMTP proprietary protocols: e.g., Skype Application Layer 2-24

Sovelluskerroksen protokollat määrittelevät viestien tyypin, e.g., pyyntö, vastaus viestin muodostustavan: mitä kenttiä viesteissä & miten kentät muotoillaan viestin merkitys kenttien tiedon merkitys säännöt, koska ja miten prosessit lähetetään & miten vastataan avoimet protokollat: määritetään RFC:ssä sallivat yhteentoimivuuden e.g., HTTP, SMTP sovelluskohtaiset protokollat: e.g., Skype Application Layer 2-25

What transport service does an app need? data integrity some apps (e.g., file transfer, web transactions) require 100% reliable data transfer other apps (e.g., audio) can tolerate some loss timing some apps (e.g., Internet telephony, interactive games) require low delay to be effective throughput some apps (e.g., multimedia) require minimum amount of throughput to be effective other apps ( elastic apps ) make use of whatever throughput they get security encryption, data integrity, Application Layer 2-26

Mitä kuljetuspalvelua sovellus tarvitsee? tiedon eheytys jotkut sovellukset (esim tiedonsiirto, verkkoliiketoiminta) vaativat 100% luotettavan datasiirron muut sovellukset (e.g., ääni) kestää häviötä ajoitus jotkut sovellukset (esim Internet-puhelut, interaktiiviset pelit) vaativat pienen viiveen ollakseen tehokkaita läpimeno jotkut sovellukset (esim multimedia) vaatii tarpeeksi suoritustehoa ollakseen tehokkaita toiset sovellukset ( joustavat sovellukset ) hyötyvät mistä tahansa suoritustehosta turvallisuus salaus, datan eheys, Application Layer 2-27

Transport service requirements: common apps application data loss throughput time sensitive file transfer e-mail Web documents real-time audio/video stored audio/video interactive games text messaging no loss no loss no loss loss-tolerant loss-tolerant loss-tolerant no loss elastic elastic elastic audio: 5kbps-1Mbps video:10kbps-5mbps same as above few kbps up elastic no no no yes, 100 s msec yes, few secs yes, 100 s msec yes and no Application Layer 2-28

Kuljetuspalvelun vaatimukset: yleiset sovellukset sovellus tiedonsiirto e-mail verkkodokumentit real-time ääni/video tallennettu audio/video interaktiiviset pelit tekstiviestit data häviö Ei yhtään Ei yhtään Ei yhtään kestää kestää Ei yhtään suorituskyky joustava joustava joustava ääni: 5kbps-1Mbps video:10kbps-5mbps Pari kbps enemmän joustava aikaherkkyys Ei ole Ei ole Ei ole kyllä, 100 s mse Kyllä, pari seck Kyllä, 100 s Kyllä ja ei Application Layer 2-29

Internet transport protocols services TCP service: reliable transport between sending and receiving process flow control: sender won t overwhelm receiver congestion control: throttle sender when network overloaded does not provide: timing, minimum throughput guarantee, security connection-oriented: setup required between client and server processes UDP service: unreliable data transfer between sending and receiving process does not provide: reliability, flow control, congestion control, timing, throughput guarantee, security, orconnection setup, Q: why bother? Why is there a UDP? Application Layer 2-30

Internet-kuljetusprotokollien palvelut TCP-palvelu: luotettava siirto: lähettävän ja vastaanottavan prosessin välillä vuon valvonta: lähettäjä ei tuki vastaanottajaa ruuhkan valvonta: hallita lähettäjää kun verkko ylikuormittunut ei tarjoa: ajoitusta, min. läpimenon takuita, turvaa yhteysorientoitunut: vaaditaan yhteiset asetukset asiakas ja serveriprosesseille UDP-palvelu: epäluotettava datasiirto: lähetys- ja vastaanottoprosessien välillä ei tarjoa: luotettavuutta, vuon valvontaa, ruuhkan valvontaa, ajoitusta, läpimenon takuita, turvaa tai yhteydenmuotostusta, Q: miksi siis UDP on olemassa? Application Layer 2-31

Internet apps: application, transport protocols application e-mail remote terminal access Web file transfer streaming multimedia Internet telephony application layer protocol SMTP [RFC 2821] Telnet [RFC 854] HTTP [RFC 2616] FTP [RFC 959] HTTP (e.g., YouTube), RTP [RFC 1889] SIP, RTP, proprietary (e.g., Skype) underlying transport protocol TCP TCP TCP TCP TCP or UDP TCP or UDP Application Layer 2-32

Internet-sovellukset: sovellus, kuljetus protokollat application e-mail remote terminal access Web file transfer streaming multimedia Internet telephony application layer protocol SMTP [RFC 2821] Telnet [RFC 854] HTTP [RFC 2616] FTP [RFC 959] HTTP (e.g., YouTube), RTP [RFC 1889] SIP, RTP, proprietary (e.g., Skype) underlying transport protocol TCP TCP TCP TCP TCP or UDP TCP or UDP Application Layer 2-33

Securing TCP TCP & UDP no encryption cleartext passwds sent into socket traverse Internet in cleartext SSL provides encrypted TCP connection data integrity end-point authentication SSL is at app layer Apps use SSL libraries, which talk to TCP SSL socket API cleartext passwds sent into socket traverse Internet encrypted See Chapter 7 Application Layer 2-34

TCP:n turvallisuus TCP & UDP ei salausta suojaamattomat salasanat lähetetään suoritinkannalle SSL tarjoaa salatun TCPyhteyden datan eheys loppupisteen tunnistus SSL on sovelluskerroksella Sovellukset käyttävät SSLkirjastoja, jotka juttelevat TCP:lle SSL-suoritinkannan API suojaamattomat salasanat lähetetään suoritinkannalle Internetsalattuina ks. Kpl 7 Application Layer 2-35

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-36

Kappale 2: sisältö 2.1 verkkosovellusten periaatteet 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 Pakettiohjelmointi UDP:llä ja TCP:llä Application Layer 2-37

Web and HTTP First, a review web page consists of objects object can be HTML file, JPEG image, Java applet, audio file, web page consists of base HTML-file which includes several referenced objects each object is addressable by a URL, e.g., www.someschool.edu/somedept/pic.gif host name path name Application Layer 2-38

Verkko ja HTTP Ensin arvio verkkosivu muodostuu objekteista se voi olla HTML-tiedosto, JPEG kuva, Java sovelluksista, audiotiedostoista, verkkosivu sisältää HTML-tiedoston johon kuuluu useita objekteja jokaisella on URL-osoite, e.g., www.someschool.edu/somedept/pic.gif host name path name Application Layer 2-39

HTTP overview HTTP: hypertext transfer protocol Web s application layer protocol client/server model client: browser that requests, receives, (using HTTP protocol) and displays Web objects server: Web server sends (using HTTP protocol) objects in response to requests PC running Firefox browser iphone running Safari browser server running Apache Web server Application Layer 2-40

HTTP katsaus HTTP: hypertext transfer protocol Verkon sovelluskerroksen protokolla asiakas/palvelinmalli asiakas: selain joka pyytää, vastaanottaa, (käyttää HTTP-prot.) ja näyttää Web-objektit palvelin: Web-serveri lähettää (käyttää HTTP protokollaa) objektin pyynnän seurauksena PC running Firefox browser iphone running Safari browser server running Apache Web server Application Layer 2-41

HTTP overview (continued) uses TCP: client initiates TCP connection (creates socket) to server, port 80 server accepts TCP connection from client HTTP messages (application-layer protocol messages) exchanged between browser (HTTP client) and Web server (HTTP server) TCP connection closed HTTP is stateless server maintains no information about past client requests aside protocols that maintain state are complex! past history (state) must be maintained if server/client crashes, their views of state may be inconsistent, must be reconciled Application Layer 2-42

HTTP katsaus jatkuu Käyttää TCP:tä: asiakas aloittaa TCPyhteyden (luo suoritinkannan) serverille, portti 80 serveri hyväksyy TCPyhteyden asiakkaalta HTTP-viestit (sovelluskerroksen protokollaviestit) vaihtavat selain (HTTP-asiakas) ja Web serveri (HTTP-serveri) TCP yhteys suljetaan HTTP on vaiheeton Serveri ei säilytä tietoa menneist pyynnöistä aside Protokollat jotka säilyttävät vaiheet ovat monimutkaisia! historia (vaiheet) pitää säilyttää jos serveri/asiakas kaatuu, niiden näkemykset vaiheesta voivat olla erilaiset, ja ne joudutaan sovittaa yhteen Application Layer 2-43

HTTP connections non-persistent HTTP at most one object sent over TCP connection connection then closed downloading multiple objects required multiple connections persistent HTTP multiple objects can be sent over single TCP connection between client, server Application Layer 2-44

HTTP-yhteydet ei-pysyvä HTTP yksi objekti lähetetään TCPyhteyden aikana yhteys suljetaan useiden objektien lataaminen vaatii useita yhteyksiä pysyvä HTTP useita objekteja yhden yhteyden aikana Application Layer 2-45

Non-persistent HTTP suppose user enters URL: www.someschool.edu/somedepartment/home.index time 1a. HTTP client initiates TCP connection to HTTP server (process) at www.someschool.edu on port 80 2. HTTP client sends HTTP request message (containing URL) into TCP connection socket. Message indicates that client wants object somedepartment/home.index (contains text, references to 10 jpeg images) 1b. HTTP server at host www.someschool.edu waiting for TCP connection at port 80. accepts connection, notifying client 3. HTTP server receives request message, forms response message containing requested object, and sends message into its socket Application Layer 2-46

Ei pysyvä HTTP suppose user enters URL: www.someschool.edu/somedepartment/home.index time 1a. HTTP-asiakas aloittaa TCP yhteyden HTTP serverille (prosessi) at www.someschool.edu on port 80 2. HTTP-asiakas lähettää HTTP r pyyntöviestin (sisältää URLin) TCPyhteyden kantaan. Viesti keroo, että asiaskas haluaa objektin: somedepartment/home.index (contains text, references to 10 jpeg images) 1b. HTTP server palvelimella www.someschool.edu odottaa TCP-yhteyttä portissa 80. hyväksyy yhteyden, ilmoittaa asiakkaalle 3. HTTP serveri vastaanottaa pyynnön, muodostaa vastausviestin jossa on pyydetty objekti, ja lähettää viestin kantaan Application Layer 2-47

Non-persistent HTTP (cont.) 5. HTTP client receives response message containing html file, displays html. Parsing html file, finds 10 referenced jpeg objects 4. HTTP server closes TCP connection. time 6. Steps 1-5 repeated for each of 10 jpeg objects Application Layer 2-48

Ei-pysyvä HTTP (jatkuu) 5. HTTP asiakas vastaanottaa viestin, jossa on html-tiedosto. Jäsentää tiedoston ja löytää 10 pyydettyä jpeg-objektia. 4. HTTP serveri sulkee TCP yhteyden. time 6.Vaiheet 1-5 toistetaan jokaiselle kymmenelle objektille Application Layer 2-49

Non-persistent HTTP: response time RTT (definition): time for a small packet to travel from client to server and back HTTP response time: one RTT to initiate TCP connection one RTT for HTTP request and first few bytes of HTTP response to return file transmission time non-persistent HTTP response time = 2RTT+ file transmission time initiate TCP connection RTT request file RTT file received time time time to transmit file Application Layer 2-50

Ei pysyvä HTTP: vastausaika RTT (määritelmä): aika, jona paketti matkustaa asiakkaalta serverille ja takaisin HTTP vastausaika: yksi RTT TCP-yhteyden aloittamiseen yksi RTT HTTP-pyyntöön ja HTTP-vastauksen muutaman ensimmäisen tavun saapumiseen tiedoston lähetysaika ei-pysyvän HTTPyhteyden vasteaika = 2RTT + tiedoston siirtoaika initiate TCP connection RTT request file RTT file received time time time to transmit file Application Layer 2-51

Persistent HTTP non-persistent HTTP issues: requires 2 RTTs per object OS overhead for each TCP connection browsers often open parallel TCP connections to fetch referenced objects persistent HTTP: server leaves connection open after sending response subsequent HTTP messages between same client/server sent over open connection client sends requests as soon as it encounters a referenced object as little as one RTT for all the referenced objects Application Layer 2-52

Pysyvä HTTP ei-pysyvän HTTP:n ongelmat: vaatii 2 RTT:tä per objekti käyttöjärjestelmän joutuu avaamaan jokaisen TCPyhteyden selaimet monesti avaavat rinnakkaisia TCP-yhteyksiä hakeakseen pyydettyjä objekteja pysyvä HTTP: palvelin jättää yhteyden auki vastauksen jälkeen myöhemmät HTTPviestit asiakaspalvelinyhteydessä lähetetään avoimella yhteydellä asiakas lähettää pyynnöt heti kun se löytää tarvittavat objektit vain yksi RTT kaikille pyydetyille objekteille Application Layer 2-53

HTTP request message two types of HTTP messages: request, response HTTP request message: ASCII (human-readable format) request line (GET, POST, HEAD commands) header lines carriage return, line feed at start of line indicates end of header lines carriage return character line-feed character GET /index.html HTTP/1.1\r\n Host: www-net.cs.umass.edu\r\n User-Agent: Firefox/3.6.10\r\n Accept: text/html,application/xhtml+xml\r\n Accept-Language: en-us,en;q=0.5\r\n Accept-Encoding: gzip,deflate\r\n Accept-Charset: ISO-8859-1,utf-8;q=0.7\r\n Keep-Alive: 115\r\n Connection: keep-alive\r\n \r\n Application Layer 2-54

HTTP pyyntöviesti on kahdenlaisia HTTP-viestejä: pyynnöt ja vastaukset HTTP-pyyntö: ASCII (ihmisen luettavassa muodossa) request line (GET, POST, HEAD commands) header lines carriage return, line feed at start of line indicates end of header lines carriage return character line-feed character GET /index.html HTTP/1.1\r\n Host: www-net.cs.umass.edu\r\n User-Agent: Firefox/3.6.10\r\n Accept: text/html,application/xhtml+xml\r\n Accept-Language: en-us,en;q=0.5\r\n Accept-Encoding: gzip,deflate\r\n Accept-Charset: ISO-8859-1,utf-8;q=0.7\r\n Keep-Alive: 115\r\n Connection: keep-alive\r\n \r\n Application Layer 2-55

HTTP request message: general format method sp URL sp version cr lf header field name value ~~ ~ cr lf request line header lines header field name value cr lf cr lf entity body ~ ~ ~ body Application Layer 2-56

HTTP-pyyntöviesti: yleinen muoto method sp URL sp version cr lf header field name value ~~ ~ cr lf pyyntörivi otsikkorivit header field name value cr lf cr lf entity body ~ ~ ~ Body/teksti Application Layer 2-57

Uploading form input POST method: web page often includes form input input is uploaded to server in entity body URL method: uses GET method input is uploaded in URL field of request line: www.somesite.com/animalsearch?monkeys&banana Application Layer 2-58

Latauksen syöte POST metodi: Web-sivuilla on usein lomakesyöte Syöte ladataan serverille kokonaisuudessaan URL metodi: käyttää GET metodia Syöte ladataan URLkentän pyyntörivistä: www.somesite.com/animalsearch?monkeys&banana Application Layer 2-59

Method types HTTP/1.0: GET POST HEAD asks server to leave requested object out of response HTTP/1.1: GET, POST, HEAD PUT uploads file in entity body to path specified in URL field DELETE deletes file specified in the URL field Application Layer 2-60

Eri tavat HTTP/1.0: GET POST HEAD Pyytää serveriä jättämään pyydetyt objektit pois vastauksesta HTTP/1.1: GET, POST, HEAD PUT Lataa tiedoston kokonaisuudessaan polun määrittelemän URL-kenttään DELETE Poistaa URL_ssa määritellyn tiedoston Application Layer 2-61

HTTP response message status line (protocol status code status phrase) header lines data, e.g., requested HTML file HTTP/1.1 200 OK\r\n Date: Sun, 26 Sep 2010 20:09:20 GMT\r\n Server: Apache/2.0.52 (CentOS)\r\n Last-Modified: Tue, 30 Oct 2007 17:00:02 GMT\r\n ETag: "17dc6-a5c-bf716880"\r\n Accept-Ranges: bytes\r\n Content-Length: 2652\r\n Keep-Alive: timeout=10, max=100\r\n Connection: Keep-Alive\r\n Content-Type: text/html; charset=iso-8859-1\r\n \r\n data data data data data... Application Layer 2-62

HTTP-vastausviesti statusrivi (protokollan statuskoodi statuslauseke) Otsikko rivit data, e.g., Pyydetty HTML-tiedosto HTTP/1.1 200 OK\r\n Date: Sun, 26 Sep 2010 20:09:20 GMT\r\n Server: Apache/2.0.52 (CentOS)\r\n Last-Modified: Tue, 30 Oct 2007 17:00:02 GMT\r\n ETag: "17dc6-a5c-bf716880"\r\n Accept-Ranges: bytes\r\n Content-Length: 2652\r\n Keep-Alive: timeout=10, max=100\r\n Connection: Keep-Alive\r\n Content-Type: text/html; charset=iso-8859-1\r\n \r\n data data data data data... Application Layer 2-63

HTTP response status codes status code appears in 1st line in server-toclient response message. some sample codes: 200 OK request succeeded, requested object later in this msg 301 Moved Permanently requested object moved, new location specified later in this msg (Location:) 400 Bad Request request msg not understood by server 404 Not Found requested document not found on this server 505 HTTP Version Not Supported Application Layer 2-64

HTTP-vastauksen statuskoodit statuskoodi on 1. rivillä serveri-asiakas vastausviestissä. muutamia esimerkkikoodeja: 200 OK pyyntö onnistui, pyydetty objekti viestissä mukana 301 Moved Permanently pyydetty objekti poistettu, uusi sijainti määritelty myöhemmin tässä viestissä (Sijainti:) 400 Bad Request serveri ei ymmärtänyt viestin pyyntöä 404 Not Found pyydettyä objektia ei löytynyt serveriltä 505 HTTP Version Not Supported Application Layer 2-65

Trying out HTTP (client side) for yourself 1. Telnet to your favorite Web server: telnet cis.poly.edu 80 opens TCP connection to port 80 (default HTTP server port) at cis.poly.edu. anything typed in sent to port 80 at cis.poly.edu 2. type in a GET HTTP request: GET /~ross/ HTTP/1.1 Host: cis.poly.edu by typing this in (hit carriage return twice), you send this minimal (but complete) GET request to HTTP server 3. look at response message sent by HTTP server! (or use Wireshark to look at captured HTTP request/response) Application Layer 2-66

Kokeile HTTP:tä (asiakaspuoli) itse 1. Telnet sinun suosikki Web server: telnet cis.poly.edu 80 opens TCP connection to port 80 (default HTTP server port) at cis.poly.edu. anything typed in sent to port 80 at cis.poly.edu 2. kirjoita GET HTTP pyyntö: GET /~ross/ HTTP/1.1 Host: cis.poly.edu by typing this in (hit carriage return twice), you send this minimal (but complete) GET request to HTTP server 3. katso HTTP serverin vastaus (tai käytä Wiresharkia katosaksesi HTTP pyyntöä/vastausta) Application Layer 2-67

User-server state: cookies many Web sites use cookies four components: 1) cookie header line of HTTP response message 2) cookie header line in next HTTP request message 3) cookie file kept on user s host, managed by user s browser 4) back-end database at Web site example: Susan always access Internet from PC visits specific e-commerce site for first time when initial HTTP requests arrives at site, site creates: unique ID entry in backend database for ID Application Layer 2-68

Käyttäjä-serveri vaihe: keksit monet sivustot käyttävät keksejä (cookies) neljä osaa: 1) keksin otsikkorivi HTTPvastausviestissä 2) keksin otsikkorivi seuraavassa HTTP pyyntöviestissä 3) keksitiedosto pidetään käyttäjän koneella, selain hallinnoi sitä 4) back-end tietokanta verkkosivulla esim: Susan käyttää aina PC:tä netissä käydessään hän käy tietyssä verkkokaupassa ensimmäistä kertaa kun HTTP-pyynnöt saapuvat sivulle, sivu luo: uniikin ID:n pääsyn back-end tietokantaan ID:lle Application Layer 2-69

Cookies: keeping state (cont.) client server ebay 8734 cookie file ebay 8734 amazon 1678 usual http request msg usual http response set-cookie: 1678 Amazon server creates ID 1678 for user create entry backend database usual http request msg cookie: 1678 usual http response msg cookiespecific action access one week later: ebay 8734 amazon 1678 usual http request msg cookie: 1678 usual http response msg cookiespecific action access Application Layer 2-70

Keksit: pysyvät muodossaan asiakas serveri ebay 8734 cookie file ebay 8734 amazon 1678 usual http request msg usual http response set-cookie: 1678 Amazon server creates ID 1678 for user create entry backend database usual http request msg cookie: 1678 usual http response msg cookiespecific action access one week later: ebay 8734 amazon 1678 usual http request msg cookie: 1678 usual http response msg cookiespecific action access Application Layer 2-71

Cookies (continued) what cookies can be used for: authorization shopping carts recommendations user session state (Web e-mail) aside cookies and privacy: cookies permit sites to learn a lot about you you may supply name and e-mail to sites how to keep state : protocol endpoints: maintain state at sender/receiver over multiple transactions cookies: http messages carry state Application Layer 2-72

Keksit (jatkuu) mihin keksejä voidaan käyttää: sisäänpääsyyn ostoskoreihin suosituksiin käyttäjän seuraamiseen (web & e-mail) miten pitää muoto : protokollien loppupisteet: säilyttää lähettäjä/vastaanottaja vaiheet useiden toimintojen jälkeen keksit: http-viestit kuljettavat vaiheet aside keksit ja yksityisyys: keksit antavat sivujen oppia sinusta paljon saatat antaa myös nimesi ja osoitteesi sivuille Application Layer 2-73

Web caches (proxy server) goal: satisfy client request without involving origin server user sets browser: Web accesses via cache browser sends all HTTP requests to cache object in cache: cache returns object else cache requests object from origin server, then returns object to client client client proxy server origin server origin server Application Layer 2-74

Verkon välimuistit (välityspalvelin) tavoite: vastata asiakkaan pyyntöön ilman alkuperäistä serveriä käyttäjä asettaa selaimeen: Web-pääsy välimuistin kautta selain lähettää kaikki HTTP-pyynnöt välimuistiin objekti välimuistissa: välimuisti palauttaa objektin välimuisti pyytää alkuperäiseltä serveriltä tiedostot, ja toimittaa ne asiakkaalle client client proxy server origin server origin server Application Layer 2-75

More about Web caching cache acts as both client and server server for original requesting client client to origin server typically cache is installed by ISP (university, company, residential ISP) why Web caching? reduce response time for client request reduce traffic on an institution s access link Internet dense with caches: enables poor content providers to effectively deliver content (so too does P2P file sharing) Application Layer 2-76

Lisää verkon välimuistista välimuisti toimii sekä asiakkaana ja serverinä serveri asiakkaan alkuperäisille pyynnöille asiakas alkuperäiselle serverille yleensä välimuisti on palveluntarjoajaila (yliopisto, yritys, kodin yhteydentarjoaja) miksi välimuisti? vähentää asiakaspyyntöjen vastausaikaa vähentää liikennettä Organisaation pääsylinkeissä Internet tyhmentyy välimuistilla: se mahdollistaa huonoille sisällöntarjoajille sisällön tehokkaan toimituksen (kuten tekee myös P2P tiedostonjako) Application Layer 2-77

Caching example: assumptions: avg object size: 100K bits avg request rate from browsers to origin servers:15/sec avg data rate to browsers: 1.50 Mbps RTT from institutional router to any origin server: 2 sec access link rate: 1.54 Mbps consequences: LAN utilization: 15% problem! access link utilization = 99% total delay = Internet delay + access delay + LAN delay = 2 sec + minutes + usecs institutional network public Internet 1.54 Mbps access link origin servers 1 Gbps LAN Application Layer 2-78

Esimerkki välimuistin käytöstä: oletukset: keskim. objektin koko: 100K bits keskim pyyntötaso selaimilta alkuperäisille servereille: 15/sec keskim. datan siirtotaso selaimille: 1.50 Mbps RTT organisaation reitittimeltä mihin tahansa serverille: 2 sec linkin pääsytaso: 1.54 Mbps seuraukset: problem! LAN käyttö: 15% linkin pääsytason käyttö = 99% viive = Internet viive + pääsyviive + LAN viive = 2 se + minutes + usecs institutional network public Internet 1.54 Mbps access link origin servers 1 Gbps LAN Application Layer 2-79

Välimuistin esim: paksumpi pääsylinkki oletukset: keskim. objektin koko: 100K bits keskim pyyntötaso selaimilta alkuperäisille servereille: 15/sec keskim. datan siirtotaso selaimille: 1.50 Mbps RTT organisaation reitittimeltä mihin tahansa serverille: 2 sec linkin pääsytaso: 1.54 Mbps seuraukset: LAN käyttö: 15% 9.9% linkin pääsytason käyttö = 99% viive = Internet viive + pääsyviive +LAN viive = 2 se + minutes msecs + usecs 1.54 Mbps access link origin servers 154 Mbps 154 Mbps institutional network public Internet Cost: increased access link speed (not cheap!) 1 Gbps LAN Application Layer 2-80

Caching example: install local cache assumptions: avg object size: 100K bits avg request rate from browsers to origin servers:15/sec avg data rate to browsers: 1.50 Mbps RTT from institutional router to any origin server: 2 sec access link rate: 1.54 Mbps consequences: LAN utilization: 15% access link utilization = 100%? total delay = Internet? delay + access delay + LAN delay How to compute link = 2 sec + minutes + usecs utilization, delay? Cost: web cache (cheap!) institutional network public Internet 1.54 Mbps access link origin servers 1 Gbps LAN local web cache Application Layer 2-81

Välimuistin esim: asenna pkvälimuisti oletukset: keskim. objektin koko: 100K bits keskim pyyntötaso selaimilta alkuperäisille servereille: 15/sec keskim. datan siirtotaso selaimille: 1.50 Mbps RTT organisaation reitittimeltä mihin tahansa serverille: 2 sec linkin pääsytaso: 1.54 Mbps consequences: LAN käyttö: 15%? Linkin pääsytason käyttö= 100%? total delay = Internet delay + access delay How + LAN to delay compute link = 2 sec utilization, + minutes + delay? usecs Kulu: välimuisti (halpa!) institutional network public Internet 1.54 Mbps access link origin servers 1 Gbps LAN local web cache Application Layer 2-82

Caching example: install local cache Calculating access link utilization, delay with cache: suppose cache hit rate is 0.4 40% requests satisfied at cache, 60% requests satisfied at origin access link utilization: 60% of requests use access link data rate to browsers over access link = 0.6*1.50 Mbps =.9 Mbps utilization = 0.9/1.54 =.58 total delay = 0.6 * (delay from origin servers) +0.4 * (delay when satisfied at cache) = 0.6 (2.01) + 0.4 (~msecs) = ~ 1.2 secs less than with 154 Mbps link (and cheaper too!) institutional network public Internet 1.54 Mbps access link origin servers 1 Gbps LAN local web cache Application Layer 2-83

Välimuistin esim: asenna pkvälimuisti Lasketaan pääsylinkin käyttö ja viive välimuistilla: oletetaan, että välimuistin taso on 0.4 40% pyynnöistä saadaan toimitettua välimuistilla, 60% pyynnöistä alkuperäisellä serverillä pääsylinkin käyttö: 60% pyynnöistä käyttää pääsylinkkiä datan nopeus selaimille pääsylinkin kautta = 0.6*1.50 Mbps =.9 Mbps käyttö = 0.9/1.54 =.58 viive = 0.6 * (viive alkup. serveriltä) +0.4 * (viive välimuistilta) = 0.6 (2.01) + 0.4 (~msecs) = ~ 1.2 secs Vähemmän kuin 154 Mbps linkki (ja halvempi!) institutional network public Internet 1.54 Mbps access link origin servers 1 Gbps LAN local web cache Application Layer 2-84

Ehdollinen GET Tavoite: älä lähetä objektia, jos välimuistissa on ajantasalla oleva versio ei objektien siirtoviivettä alempi linkkien käyttö välimuisti: tarkenna välimuistin kopion päivä HTTP-pyynnössä If-modified-since: <date> serveri: vastaus ei sisällä objektia jos kopio on ajantasalla: HTTP/1.0 304 Not Modified client HTTP request msg If-modified-since: <date> HTTP response HTTP/1.0 304 Not Modified HTTP request msg If-modified-since: <date> HTTP response HTTP/1.0 200 OK <data> server object not modified before <date> object modified after <date> Application Layer 2-85

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-86

Kappale 2: sisällys 2.1 verkkosovellusten periaatteet sovellusarkkitehtuurit sovellusten vaatimukset 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 Paketointiohjelmointi UDP:llä ja TCP:llä Application Layer 2-87

FTP: the file transfer protocol user at host FTP user interface FTP client local file system file transfer 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-88

FTP: tiedonsiirtoprotokolla user at host FTP user interface FTP client local file system file transfer FTP server remote file system siirtää tiedostoja palvelimelle/-lta asiakas/palvelinmalli asiakas: aloittaa siirron (palvelimelle/-lta) palvelin: etäisäntä ftp: RFC 959 ftp serveri: port 21 Application Layer 2-89

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

FTP: erillinen hallinta ja datayhteydet FTP-asiakaskontakti FTPserverillä portissa 21, käyttää TCP:tä asiakas hyväksytty hallitun yhteyden kautta asiakas selaa etähakemistoa, lähettää pyyntöjä hallintayhteyden yli kun palvelin vastaanottaa tiedonsiirtokäskyn, palvelin avaa 2nd TCP datayhteyden (tiedostolle) asiakkaan suuntaan tidoston siirron jälkeen, server sulkee datayhteyden FTP client TCP control connection, server port 21 TCP data connection, server port 20 FTP server palvelin avaa toisen TCPdatayhteyden siirtääkseen toisen tiedoston yhteydenhallinta: kaista lopussa FTP-serveri säilyttää maintains vaiheensa : nykyinen hakemisto, aiemmin tunnistus Application Layer 2-91

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-92

FTP komennot, vastaukset esimerkkikäskyt: lähetetään ASCII tekstinä hallintakanavan yli USER username PASS password LIST palauttaa listan hakemiston tiedostoista RETR filename palauttaa (hakee) tiedoston STOR filename säilyttää (laittaa) tiedoston etäpalvelimelle Esimerkki palautuskoodit 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-93

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-94

Kappale 2: sisällys 2.1 verkkosovellusten periaatteet sovellusarkkitehtuurit sovellusten vaatimukset 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 Pakettiohjelmointi UDP:llä ja TCP:llä Application Layer 2-95

Electronic mail 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 mail server SMTP mail server user agent user agent SMTP SMTP user agent outgoing message queue mail server user mailbox user agent user agent user agent Application Layer 2-96

Sähköposti Kolme pääosaa: käyttäjät postipalvelimet yksinkertainen postin siirtoprotokolla: SMTP Käyttäjät (agentit) a.k.a. postin lukijat luovat, editoivat, lukevat sähköposteja e.g., Outlook, Thunderbird, iphone sähköpostiohjelma lähtevät, saapuvat viestit säilytetään serverillä mail server SMTP mail server user agent user agent SMTP SMTP user agent outgoing message queue mail server user mailbox user agent user agent user agent Application Layer 2-97

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 mail server SMTP mail server user agent user agent SMTP SMTP user agent mail server user agent user agent user agent Application Layer 2-98

Sähköposti: postipalvelimet postin palvelimet: postilaatikko sisältää käyttäjälle saapuvat viestit viestijono lähtevistä viesteistä (tullaan lähettämään) SMTP-protokolla postipalvelimen ja viestin lähetyksen välillä asiakas: lähettää viestin palvelimelle palvelin : vastaanottaa viestin palvelimella mail server SMTP mail server user agent user agent SMTP SMTP user agent mail server user agent user agent user agent Application Layer 2-99

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-100

Sähköposti: SMTP [RFC 2821] käyttää TCP:tä luotettavaan postin siirtoon asiakkaalta serverille, portti 25 suora siirto: lähettäjän serveri vastaanottajan serverille kolme siirron vaihetta kättely (tervehtiminen) viestien siirto lopetus käsky/vastaus viestintä (like HTTP, FTP) käskyt: ASCII text vastaukset: statustilanne ja lauseet viestien pitää olla 7-bit ASCI Application Layer 2-101

Scenario: Alice sends message to Bob 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 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 user agent mail server 2 3 4 mail server 6 user agent Alice s mail server 5 Bob s mail server Application Layer 2-102

Tilanne: Alice lähettää viestin Bobille 1) Alice käyttää UA:ta kirjoittakseen viestin bob@someschool.edu 2) Alicen UA lähettää viestin hänen meiliserverilleen; viesti on laitettu viestijonoon 3) asiakaspuolen SMTP avaa TCP-yhteyden Bobin meilipalvelimelle 1 user agent mail server 2 3 Alice s mail server 4 4) SMTP asiakas lähettää Alicen viestin TCPyhteyden yli 5) Bobin meilipalvelin sijoittaa viestin Bobin postilaatikkoon 6) Bob avaa sähköpostiohjelman lukeakseen viestin mail server 5 Bob s mail server 6 user agent Application Layer 2-103

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

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

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-106

Kokeile SMTP toimintaa itse: telnet servername 25 ks 220 vastaus serveriltä laita HELO, MAIL FROM, RCPT TO, DATA, QUIT käskyt toiminta yllä antaa sinun lähettä Application Layer 2-107

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-108

SMTP: lopuksi SMTP käyttää jatkuvia yhteyksiä SMTP vaatii viestin olevan (otsikko & teksti) 7-bit ASCII-muodossa SMTP-serveri käyttää CRLF.CRLF määrittääkseen viestin lopun vertailu HTTP:hen: HTTP: vetää SMTP: työntää molemmat käyttävät ASCII käsky/vastaus kommunikointia, statuskoodeja HTTP: jokainen objekti on kapseloitu omaan vastausviestiin SMTP: useita objekteja lähetetään osina Application Layer 2-109

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

Sähköpostin muoto SMTP: protokolla sähköpostin vaihtoon RFC 822: standardi tekstiviestin muodoksi: otsikkorivit, e.g., Vastaanottaja: Lähettäjä: Aihe: erilainen kuin SMTP MAIL FROM, RCPT TO: käskyt Teksti: itse viesti vain ASCII-merkkejä header body blank line Application Layer 2-111

Mail access protocols user agent SMTP SMTP mail access protocol (e.g., POP, IMAP) user agent 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-112

Sähköpostin pääsyprotokollat user agent SMTP SMTP mail access protocol (e.g., POP, IMAP) user agent sender s mail server receiver s mail server SMTP: lähetys/varastointi vastaanottajan serverille Meilin pääsyprotokolla: palautetaan serveriltä POP: Post Office Protocol [RFC 1939]: tunnistus, lataus IMAP: Internet Mail Access Protocol [RFC 1730]: enemmän ominaisuuksia, mm. säilytettävien viestin muokkaus serverillä HTTP: gmail, Hotmail, Yahoo! Mail, etc. Application Layer 2-113

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: +OK POP3 server ready C: user bob S: +OK C: pass hungry S: +OK user successfully logged on C: list S: 1 498 S: 2 912 S:. C: retr 1 S: <message 1 contents> S:. C: dele 1 C: retr 2 S: <message 1 contents> S:. C: dele 2 C: quit S: +OK POP3 server signing off Application Layer 2-114

POP3 protokolla tunnistusvaihe asiakkaan käskyt: user: declare username pass: password palvelimen vastaukset +OK -ERR toimintavaihe, asiakas: list: listaa viestien numerot retr: palauttaa tietyn viestin numeron perusteella dele: delete S: +OK POP3 server ready C: user bob S: +OK C: pass hungry S: +OK user successfully logged on C: list S: 1 498 S: 2 912 S:. C: retr 1 S: <message 1 contents> S:. C: dele 1 C: retr 2 S: <message 1 contents> S:. C: dele 2 C: quit S: +OK POP3 server signing off Application Layer 2-115

POP3 (more) and IMAP more about POP3 previous example uses POP3 download and delete mode Bob cannot re-read e- mail 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-116

POP3 (lisää) ja IMAP Lisää POP3:sta aiemmat esimerkit käyttävät POP3 lataa ja poista moodia Bob ei voi lukea uudelleen postia, jos hän vaihtaa laitetta POP3 lataa ja pidä : viestien kopiot latautuvat eri laitteille POP3 on käyntien välillä vaiheeton IMAP pitää kaikki viestit yhdessä paikassa: serverillä sallii käyttäjien organisoida viestejä kansioihin pitää käyttäjien käyntien vaiheet tallella: kansioiden nimet ja kansioinnit viestien ID-numeroiden ja kansioiden nimet Application Layer 2-117

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-118

Kappale 2: sisällys 2.1 verkkosovellusten periaatteet sovellusarkkitehtuurit sovellusten vaatimukset 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 Pakettiohjelmointi UDP:llä and TCP:llä Application Layer 2-119

DNS: domain name system people: many identifiers: SSN, name, passport # Internet hosts, routers: IP address (32 bit) - used for addressing datagrams name, e.g., www.yahoo.com - used by humans Q: how to map between IP address and name, and vice versa? Domain Name System: distributed database implemented in hierarchy of many name servers application-layer protocol: hosts, name servers communicate to resolve names (address/name translation) note: core Internet function, implemented as applicationlayer protocol complexity at network s edge Application Layer 2-120

DNS: domain name system ihmiset: useita tunnisteita: sotu, nimi, passinro # Internet-isännät, reitittimet: IP-osoitteet (32 bit) - käytetään datagrammien osoittamiseen nimi, e.g., www.yahoo. com - ihmiset käyttävät Q: miten kartoittaa IP-osoite nimeen ja toisinpäin Domain Name System: jaettu tietokanta useiden nimipalvelimien hierarkia sovelluskerroksen protokolla: isännät, nimipalvelimet viestivät selvittääkseen nimet (osoite/nimen käännös) huom: Internetin ydintoiminto, tehty sovelluskerroksen protokollana verkon reunan monimutkaisuus Application Layer 2-121

DNS: services, structure DNS services hostname to IP address translation host aliasing canonical, alias names mail server aliasing load distribution replicated Web servers: many IP addresses correspond to one name why not centralize DNS? single point of failure traffic volume distant centralized database maintenance A: doesn t scale! Application Layer 2-122

DNS: palvelut, rakenne DNS palvelut käännös isäntänimestä IPosoitteeksi isännän nimeäminen kanoniset, aliasnimet email serverin nimeäminen jakelun kuormitus Web-palvelimien monistaminen, useita IP-osoitteita samalle nimelle miksei keskitetä DNS:ää? yksi häiriöpiste liikenteen volyymi etäkeskitetty tietokanta ylläpito A: ei skaalaudu! Application Layer 2-123

DNS: a distributed, hierarchical database Root DNS Servers com DNS servers org DNS servers edu DNS servers yahoo.com DNS servers amazon.com DNS servers pbs.org DNS servers poly.edu umass.edu DNS serversdns servers client wants IP for www.amazon.com; 1 st approx: client queries root server to find com DNS server client queries.com DNS server to get amazon.com DNS server client queries amazon.com DNS server to get IP address for www.amazon.com Application Layer 2-124

DNS: jaettu, hierarkinen tietokanta Root DNS Servers com DNS servers org DNS servers edu DNS servers yahoo.com DNS servers amazon.com DNS servers pbs.org DNS servers poly.edu umass.edu DNS serversdns servers asiakas haluaa IP:n www.amazon.com:lle; 1st noin: asiakas tekee pyynnön queries kantapalvelimelle löytääkseen. com DNS serverin asiakas hakee.com DNS serverin saadakseen amazon.com:in DNS serverin asiakas hakee amazon.com DNS serverin saadakseen IP osoitteen www.amazon.com:ille Application Layer 2-125

DNS: root name servers contacted by local name server that can not resolve name root name server: contacts authoritative name server if name mapping not known gets mapping returns mapping to local name server e. NASA Mt View, CA f. Internet Software C. Palo Alto, CA (and 48 other sites) c. Cogent, Herndon, VA (5 other sites) d. U Maryland College Park, MD h. ARL Aberdeen, MD j. Verisign, Dulles VA (69 other sites ) a. Verisign, Los Angeles CA (5 other sites) b. USC-ISI Marina del Rey, CA l. ICANN Los Angeles, CA (41 other sites) g. US DoD Columbus, OH (5 other sites) k. RIPE London (17 other sites) i. Netnod, Stockholm (37 other sites) m. WIDE Tokyo (5 other sites) 13 root name servers worldwide Application Layer 2-126

DNS: kantanimipalvelimet pk nimipalvelin, joka ei voi selvittää nimeä, ottaa yhteyttä kantanimipalvelin: ottaa yhteyttä viralliseen nimipalvelimeen jos nimien kartoitusta ei tiedetä se kartoitetaan palauttaa kartoituksen pk nimipalvelimelle c. Cogent, Herndon, VA (5 other sites) d. U Maryland College Park, MD h. ARL Aberdeen, MD j. Verisign, Dulles VA (69 other sites ) k. RIPE London (17 other sites) i. Netnod, Stockholm (37 other sites) e. NASA Mt View, CA f. Internet Software C. Palo Alto, CA (and 48 other sites) a. Verisign, Los Angeles CA (5 other sites) b. USC-ISI Marina del Rey, CA l. ICANN Los Angeles, CA (41 other sites) g. US DoD Columbus, OH (5 other sites) m. WIDE Tokyo (5 other sites) 13 root name servers worldwide Application Layer 2-127

TLD, authoritative servers top-level domain (TLD) servers: responsible for com, org, net, edu, aero, jobs, museums, and all top-level country domains, e.g.: uk, fr, ca, jp Network Solutions maintains servers for.com TLD Educause for.edu TLD authoritative DNS servers: organization s own DNS server(s), providing authoritative hostname to IP mappings for organization s named hosts can be maintained by organization or service provider Application Layer 2-128

TLD, viralliset palvelimet ylätason domainpalvelimet (TLD): vastuussa: com, org, net, edu, aero, jobs, museums, ja kaikki maadomainit, e.g.: uk, fr, ca, jp Network Solutions ylläpitää.com TLD:tä Educause ylläpitää.edu TLD:tä viralliset DNS-palvelimet: organisaation omat DNS serveri(t), tuottavat viralliset isäntänimen IP-kartoituksille organisaatioiden nimitetyille isännille voi olla organisaation tai palveluntarjoajan ylläpitämä Application Layer 2-129

Local DNS name server does not strictly belong to hierarchy each ISP (residential ISP, company, university) has one also called default name server when host makes DNS query, query is sent to its local DNS server has local cache of recent name-to-address translation pairs (but may be out of date!) acts as proxy, forwards query into hierarchy Application Layer 2-130

Paikalliset DNS nimipalvelimet ei kuulu suoraan hierarkiaan jokaisella ISP:llä (asumapaikan ISP, yritys, yliopisto) on yksi kutsutaan myös vakionimipalvelimeksi kun isäntä tekee DNS kyselyn, se lähetetään paikalliselle DNS serverille paikallinen välimuisti viimeisimmistä nimiosoitekäännöspareista (voivat olla vanhentuneita) toimii edustajan, välittää kyselyn hierarkiassa eteenpäin Application Layer 2-131

DNS name resolution example root DNS server host at cis.poly.edu wants IP address for gaia.cs.umass.edu 2 3 4 5 TLD DNS server iterated query: contacted server replies with name of server to contact I don t know this name, but ask this server local DNS server dns.poly.edu 1 8 requesting host cis.poly.edu 7 6 authoritative DNS server dns.cs.umass.edu gaia.cs.umass.edu Application Layer 2-132

DNS nimen selvitys - root DNS server esimerkki isäntä cis.poly.edu haluaa IP-osoitteen gaia.cs.umass.edu:lle luodaan kysely: yhdistetään serverille, joka vastaa ilmoittamalla kyseisen serverin nimen En tiedä tätä nimeä, mutta kysy tältä serveriltä local DNS server dns.poly.edu 1 2 8 requesting host cis.poly.edu 3 4 5 7 TLD DNS server 6 authoritative DNS server dns.cs.umass.edu gaia.cs.umass.edu Application Layer 2-133

DNS name resolution example root DNS server recursive query: 2 7 6 3 puts burden of name resolution on contacted name server local DNS server dns.poly.edu 5 4 TLD DNS server heavy load at upper levels of hierarchy? 1 8 requesting host cis.poly.edu authoritative DNS server dns.cs.umass.edu gaia.cs.umass.edu Application Layer 2-134

DNS nimen selvitys -esimerkki root DNS server toistuva haku: kuormittaa nimen jatkuvaa selvitystä ko. nimipalvelimella raskas taakka hierarkian ylemmillä tasoilla local DNS server dns.poly.edu 1 2 8 requesting host cis.poly.edu 7 6 5 3 4 TLD DNS server authoritative DNS server dns.cs.umass.edu gaia.cs.umass.edu Application Layer 2-135

DNS: caching, updating records once (any) name server learns mapping, it caches mapping cache entries timeout (disappear) after some time (TTL) TLD servers typically cached in local name servers thus root name servers not often visited cached entries may be out-of-date (best effort name-to-address translation!) if name host changes IP address, may not be known Internet-wide until all TTLs expire update/notify mechanisms proposed IETF standard RFC 2136 Application Layer 2-136

DNS: haku, tietojen päivitys kun kerran joku nimipalvelimista oppii kartoituksen, se laittaa sen välimuistiin välimuistin sisäänpääsyt poistetaan jonkin ajan kuluttua (TTL) TLD serverit ovat yleensä pk-nimipalvelimien välimuistissa toki kantapalvelimilla ei usein käydä välimuistin merkinnät voivat olla vanhentuneita (paras yritys nimestä osoitteeksi -käännöksessä) jos nimen isäntä vaihtaa IP-osoitteen, se ei päivity nettiin ennen kuin kaikki TTL:t vanhentuvat päivitys/ilmoitus-systeemit ehdotettu IETFstandardissa RFC 2136 Application Layer 2-137

DNS records DNS: distributed db storing resource records (RR) RR format: (name, value, type, ttl) type=a name is hostname value is IP address type=ns name is domain (e.g., foo.com) value is hostname of authoritative name server for this domain type=cname name is alias name for some canonical (the real) name www.ibm.com is really servereast.backup2.ibm.com value is canonical name type=mx value is name of mailserver associated with name Application Layer 2-138

DNS tiedot DNS: jaettu db varasto tallentaa (RR) RR format: (name, value, type, ttl) type=a name is isäntänimi value is IP-osoite type=ns name on domain (e.g., foo.com) value on domainin Virallisen nimipalvelimen isäntänimi type=cname name on aliasnimi, joillekin kanoninen (oikea) nimi www.ibm.com on oikeasti servereast.backup2.ibm.com value is kanoninen nimi type=mx value on postipalvelimen nimi, joka yhdistyy name-tiedon kanssa Application Layer 2-139

DNS protocol, messages query and reply messages, both with same message format 2 bytes 2 bytes msg header identification: 16 bit # for query, reply to query uses same # flags: query or reply recursion desired recursion available reply is authoritative identification flags # questions # answer RRs # authority RRs # additional RRs questions (variable # of questions) answers (variable # of RRs) authority (variable # of RRs) additional info (variable # of RRs) Application Layer 2-140

DNS protokolla, viestit kysely ja vastaus viestit, molemmat samassa viestimuodossa viestin otsikko tunnistus: 16 bit # nro haulle, vastaus kyselyyn käyttää samaa numeroa # liput: kysely tai vastaus halutaan rekursio rekursio on saatavilla vastaus on virallinen 2 bytes 2 bytes identification # questions # authority RRs flags # answer RRs # additional RRs questions (variable # of questions) answers (variable # of RRs) authority (variable # of RRs) additional info (variable # of RRs) Application Layer 2-141

DNS protocol, messages 2 bytes 2 bytes identification # questions flags # answer RRs name, type fields for a query RRs in response to query records for authoritative servers additional helpful info that may be used # authority RRs # additional RRs questions (variable # of questions) answers (variable # of RRs) authority (variable # of RRs) additional info (variable # of RRs) Application Layer 2-142

DNS protokolla, viestit 2 bytes 2 bytes identification # questions flags # answer RRs Nimi, kyselyn kirjoituskentät RR:ä kyselyn vastaukseen allentaa virallisille palvelimille Lisänä avustava tieto, Jota voidaan käyttää # authority RRs # additional RRs questions (variable # of questions) answers (variable # of RRs) authority (variable # of RRs) additional info (variable # of RRs) Application Layer 2-143

Inserting records into DNS example: new startup Network Utopia register name networkuptopia.com at DNS registrar (e.g., Network Solutions) provide names, IP addresses of authoritative name server (primary and secondary) registrar inserts two RRs into.com TLD server: (networkutopia.com, dns1.networkutopia.com, NS) (dns1.networkutopia.com, 212.212.212.1, A) create authoritative server type A record for www.networkuptopia.com; type MX record for networkutopia.com Application Layer 2-144

Tietojen syöttö DNS:ään esim: uusi startup Network Utopia rekisteröi nimen networkuptopia.com DNS rekisteriin (e.g., Network Solutions) tarjoaa nimet, IP-osoitteet viralliselle nimipalvelimelle (ensi- ja toissijaisen) rekisteröijä syöttää kaksi RR:ää.com TLD serverille: (networkutopia.com, dns1.networkutopia.com, NS) (dns1.networkutopia.com, 212.212.212.1, A) luo virallisen palvelintyyppi A:n tiedot www. networkuptopia.com:lle; tyypin MX tiedot networkutopia.com:lle Application Layer 2-145

Hyökkäykset DNS:ään DDoS hyökkäykset Pommittaa kantapalvelimia liikenteellä Ei onnistunutta Liikenteen filtteröinti Pk-nimipalvelimet tallentavat IP:t välimuistiin, sallien kantapalvelimen ohituksen Pommitus TLD palvelimille Vaarallisempaa Hyökkäysten uudelleenohjaus Joku välissä Keskeyttää haut DNS-myrkytys Lähettää vääriä tietoja to DNS-serverille, jotka jäävät välimuistiin Hyödyntää DNS:ää DDoS:iin Lähetä kyselyjä väärennetyllä osoitteella: kohde IP Vaatii vahvistuksen Application Layer 2-146

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-147

Kappale 2: sisällys 2.1 verkkosovellusten periaatteet sovellusarkkitehtuurit sovellusten vaatimukset 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 Pakettiohjelmointi UDP:llä ja TCP:llä Application Layer 2-148

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-149

Puhdas P2P arkkitehtuuri ei jatkuvaa yhteyttä serveriin mielivaltaiset loppujärjestelmät viestivät keskenään koneet ovat ajoittain yhteydessä keskenään, vaihtavia IP-osoiteita esim: tiedostojen jako (BitTorrent) streaming (KanKan) VoIP (Skype) Application Layer 2-150

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-151

Tiedostojen jako: asiakas-serveri vs. P2P kysymys: Kauanko aikaa kestää jakaa tiedosto (koko F) yhdeltä serveriltä N -määrän koneille? loppukoneiden serverille/-ltä latauskapasiteetti on rajallinen 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-152

File distribution time: client-server server transmission: must sequentially send (upload) N file copies: F u s time to send one copy: F/u s network d i time to send N copies: NF/u s u i client: each client must download file copy d min = min client download rate min client download time: F/d min 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-153

File distribution time: client-server serverille lähetys: lähetetään (ladataan) peräkkäin N kopiota tiedostosta: aika yhdelle lähetykselle: F/us aika N lähetykselle: NF/us asiakas: jokaisen asiakkaan täytyy ladata kopio dmin = min asiakkaan latausnopeus min asiakkaan latausaika: F/dmin F u s network d i u i Aika jakeluun F N asiakkaalle Asiakas-server tavalla D c-s > max{nf/u s,,f/d min } increases linearly in N Application Layer 2-154

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

Tiedostojen jatkoaika: P2P serverille lähetys: täytyy ladata ainakin yksi kopio aika yhdelle lähetykselle: F/us asiakas: joka asiakas lataa kopion min asiakkaan latausaika: F/dmin asiakkaat: yhdessä täytyy ladata NF bits maks. latausnopeus (rajoittaa) on us + Σui F u s network d i u i aika mikä kuluu F:n jakamiseen Nmäärälle asiakkaita P2P-tavalla D P2P > max{f/u s,,f/d min,,nf/(u s + Su i )} increases linearly in N but so does this, as each peer brings service capacity Application Layer 2-156

Client-server vs. P2P: example client upload rate = u, F/u = 1 hour, u s = 10u, d min u s Minimum Distribution Time 3.5 3 2.5 2 1.5 1 0.5 0 P2P Client-Server 0 5 10 15 20 25 30 35 N Application Layer 2-157

Asiakas-serveri vs. P2P: esimerkki Asiakkaan lataustaso = u, F/u = 1 hour, u s = 10u, d min u s Minimum Distribution Time 3.5 3 2.5 2 1.5 1 0.5 0 P2P Client-Server 0 5 10 15 20 25 30 35 N Application Layer 2-158

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-159

P2P tiedostojenjako: BitTorrent tiedosto jaetaan 256Kb paloihin koneet/linkit torrentissa lähettävät/vastaanottavat palat seuranta: seuraa torrentiin osallistuvia linkkejä/ koneita torrent: linkkien ryhmittymä vaihtaa tiedoston paloja Alice saapuu saa listan linkeistä Ja seurannasta ja alkaa vaihtaa tiedoston Paloja muiden linkkien kanssa Application Layer 2-160

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-161

P2P tiedostonjako: BitTorrent linkki liittyy torrentiin: ei omaa paloja, mutta kerää niitä ajan mittaan muilta linkeiltä rekisteröityy seurantaan saadakseen listan linkeistä, ja yhdistää linkkien osajoukon ( naapurit ) ladatessa tiedostoja, linkki välittää tiedoston paloja muille linkeille käyttäjä vaihtaa voi paloja välittävien koneiden kanssa linkkejä kirnu: linkit tulevat ja menevät kun linkillä on koko tiedosto, se voi (itsekkäästi) lähteä, tai (epäitsekkäästi) pysyä torrentissa Application Layer 2-162

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-163

BitTorrent: tiedoston palojen pyytäminen ja lähettäminen palojen pyytäminen: jatkuvasti muuttuen, eri linkeillä on eri tiedostovalikoima kausittain, Alice pyytää jokaiseltä linkiltä listaa paloista, mitä heillä on Alice pyytää puuttuvat palat linkeiltä, harvinaisimmat ensin palojen lähetys: samalla mitalla takaisin Alice lähettää paloja neljälle linkille, jotka lähettävät hänelle paloja korkeimmalla nopeudella muut linkit ovat Alicelle vihaisia (älkää vastaanottako paloja häneltä) uudelleenarvio top 4 joka kymmenes sekunti joka 30. sekunti: valitaan umpimähkään uusi linkki, aletaan lähettää paloja optimistinen toiminta tällä linkillä uusin valittu linkki voi liittyä top 4: ään Application Layer 2-164

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-165

BitTorrent: samalla mitalla takaisin (1) Alice optimistisesti vapauttaa Bobin (2) Alicesta tulee yksi Bobin top-4 jakelijasta; Bob vastaa (3) Bobista tulee yksi Alicen top-4 jakelijasta korkeampi latausnopeus: löydä parempia vaihtokumppaneita, ja saat tiedoston nopeammin! Application Layer 2-166

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

Distributed hajautustaulu(dht) Hajautustaulu DHT paradigm DHT kehässä ja peittävät verkot Linkkien arviointi

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

Yksinkertainen tietokanta Yksinkertainen tietokanta arvoilla (key, value): key: ihmisen nimi; value: sotu # 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: elokuvan otsikko; value: 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

Hajautustaulu Mukavampi varastoida ja etsiä tietoja numeroilla esitettynä 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

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)

Jaettu hajautustaulu (DHT) Jakaa (key, value) pareja miljoonien linkkien kautta linkit jakelevat tietoja tasapuolisesti Mikä tahansa linkki voi tehdä haun tietokannasta keyinfolla tietokanta palauttaa key:n arvon selvittääkseen haun, linkit vaihtavat keskenään muutamia viestejä Joka linkki tietää vain pienen määrän muita linkkejä Kestävä jatkuvasti vaihtuville linkeille

Aseta key-value-parit linkeille sääntö: aseta key-value-pari linkille, jolla on lähin ID-numero. sopimus: lähin on key-arvon välitön seuraaja e.g., ID-tila {0,1,2,3,,63} oletettavasti on 8 linkkiä: 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 60 48 40 32 12 25 13 overlay network

DHT ringissä joka linkki on tietoinen vain välittömästä seuraajasta ja edeltäjästä 1 60 48 40 32 12 25 13 päällekkäinen verkko

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

Kyselyn selvittäminen arvo 1 12 Mikä on key 53:lle asetettu arvo? 60 13 48 O(N) viestiä kyselyn Selvittämiseksi, kun on N linkkiä 40 32 25

Circular DHT with shortcuts 60 value 1 12 What is the value for key 53 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

Kiertävä DHT oikoteillä 60 arvo 1 12 Mikä on key 53:n arvo? 13 48 25 40 joka linkki kirjaa ylös edeltävän ja seuraavan IP-osoitteet ja oikotiet. vähentyy kuudesta viestistä kolmeen on mahdollista suunnitella oikoteitä O(log N) naapureiden kesken, O(log N) viestit kyselyssä 32

Peer churn 15 12 1 10 8 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

Linkkien kirnu 1 15 3 4 12 5 10 8 Esim.: linkki 5 yhtäkkiä lähtee linkkikirnun käsittely: linkit voi tulla ja mennä (kirnuun) jokainen linkki tietää sen seuraajiensa osoitteet jokainen linkki signaloi seuraajilleen tietyin väliajoin tarkistaakseen elossaolon jos välitön seuraaja lähtee, sitä seuraavasta seuraajasta tulee uusi välitön seuraaja

Peer churn 15 12 10 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 if immediate successor leaves, choose next successor as new immediate successor 8 example: peer 5 abruptly leaves 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.

Linkkien kirnu linkkikirnun käsittely: 1 linkit voi tulla ja mennä (kirnuun) jokainen linkki tietää sen 3 seuraajiensa osoitteet 15 jokainen linkki signaloi 4 seuraajilleen tietyin väliajoin tarkistaakseen elossaolon 12 jos välitön seuraaja lähtee, sitä seuraavasta seuraajasta tulee 10 8 uusi välitön seuraaja esim.: linkki 5 yhtäkkiä lähtee linkki 4 huomaa, että linkki 5 on lähtenyt; se tekee 8:sta välittömän sueraajansa 4 kysyy 8:lta, kuka sen välitön seuraaja on; se tekee kasin välittömästä seuraajasta toisen seuraajansa.

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-186

Kappale 2: sisällys 2.1 verkkosovellusten periaatteet sovellusarkkitehtuurit sovellusten vaatimukset 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 Pakettiohjelmointi UDP:llä ja TCP:llä Application Layer 2-187

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

Pakettiohjelmointi tavoite: oppia, miten rakentaa asiakas/serveri sovelluksia, jotka viestivät pakettien avulla paketti: ovi sovelluksen prosessin ja loppupisteiden kuljetusprotokollan välillä application process socket application process controlled by app developer transport transport network link Internet network link controlled by OS physical physical Application Layer 2-189

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-190

Pakettiohjelmointi Kaksi pakettityyppiä kahdelle kuljetuspalvelulle: UDP: epäluotettava datagrammi TCP: luotettava, tavu-virta-orientoitunut Sovellusesimerkki: 1. Asiakas lukee merkkiriviä (dataa) näppäimistöltään ja lähetttää datan palvelimelleen. 2. Serveri vastaanottaa dataa ja muuntaa merkit isoiksi kirjaimiksi. 3. Serveri lähettää muokatun datan asiakkaalle. 4. Asiakas vastaanottaa muokatun datan ja näyttää rivin näytöllä. Application Layer 2-191

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-192

Pakettiohjelmointi UDP:llä UDP: ei yhteyttää asiakkaan & serverin välillä ei kättelyä ennen datan lähetystä lähettäjä nimenomaan liittää kohteen IP osoitteen ja porttinumeron jokaiseen pakettiin rcvr erottaa lähettäjän IP osoitteen ja porttinumeron vastaanotetusta paketista UDP: lähetetty data voidaan menettää tai vastaanottaa epäjärjestyksessä Sovelluksen näkökulmasta: UDP tarjoaa epäluotettavan siirron asiakkaalta serverille Application Layer 2-193

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 client 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-194

Asiakas/serveri-pakettiviestintä: UDP serveri (käyttö serverin IP:llä) Luo paketti, portti= x: serversocket = socket(af_inet,sock_dgram) lue datagrammi serversocket:ista clien Luo paketti: clientsocket = socket(af_inet,sock_dgram) Luo datagrammi serverin IP:llä ja portti=x; lähetä datagrammi clientsocket Kirjoita vastaus serversocket:lle Tarkentaen asiakkaan osoite ja porttinumero lue datagrammi clientsocket:lta sulje clientsocket Application 2-195

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

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

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 address (client IP and port) send upper case string back 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() serversocket.sendto(modifiedmessage, clientaddress) Application Layer 2-198

Esim. sovellus: UDP asiakas 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 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() serversocket.sendto(modifiedmessage, clientaddress) Application Layer 2-199

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-200

Pakettiohjelmointi TCP:llä asiakkaan täytyy ottaa yhteys serveriin serveriprosessi pitää käynnistää ensin serverin pitää luoda ensin paketti (ovi), mikä ottaa vastaan asiakkaan yhteystiedot asiakas ottaa yhteyttä serveriin: Luomalla TCP-paketin, tarkentamalla IP-osoitteen, porttinumeron serveriprosessille kun asiakas luo paketin: asiakkaan TCP luo yhteyden serverin TCP:hen kun asiakas ottaa yhteyttä, serverin TCP luo uuden paketin serveriprosessille viestiäkseen juuri tämän asiakkaan kanssa sallii serverin jutella useiden asiakkaiden kanssa lähteen porttinumerot karkottivat ennen asiakkaita (enemmän kappaleessa 3) Sovelluksen näkökulmasta: TCP tuottaa luotettavan, järjestelmällisen tavu-virtasiirron ( putki )asiakkaan ja serverin välille Application Layer 2-201

Client/server socket interaction: TCP server (running on hostid) client create socket, port=x, for incoming request: serversocket = socket() 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-202

Asiakas/serveri pakettiviestintä: TCP serveri (toimii hosted:llä) asiakas create socket, port=x, for incoming request: serversocket = socket() 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-203

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

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

Example app: TCP server Python TCPServer create TCP welcoming socket server begins listening for incoming TCP requests loop forever server waits on 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) 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-206

Esimerkkisovellus: TCP asiakas Python TCPServer create TCP welcoming socket server begins listening for incoming TCP requests loop forever server waits on 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) 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-207

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-208

Kappale 2: tiivistelmä Verkkosovellusten opiskelu on tehty! sovellusarkkitehtuurit asiakas-serveri P2P Sovellusten palveluvaatimukset: luotettavuus, kaistanleveys, viive Internet-kuljetus-palvelumalli yhteys-orientoitunut, luotettava: TCP epäluotettava, datagrammit: UDP tietyt protokollat: HTTP FTP SMTP, POP, IMAP DNS P2P: BitTorrent, DHT pakettiohjelmointi: TCP, UDP paketit Application Layer 2-209

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-210

Kappale 2: tiivistelmä tärkeintä: opimme protokollista! tyypillinen pyyntö/ vastaus viestinvaihto: asiakas pyytää tietoa tai palvelua serveri vastaa datalla, statuksella viestin muodot: otsikot: kentät antavat tietoa datasta data: tieto siirretään tärkeät teemat: kontrolli vs. data viestit kaistalla, ei-kaistalla keskitetty vs. ei-keskitetty vaiheeton vs. vaiheellinen luotettava vs. epäluotettava viestin siirto monimutkaisuus verkon reunalla Application Layer 2-211

Chapter 1 Additional Slides Introduction 1-212

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