+ All Categories
Home > Documents > computernetworkingkurosech2-091011001808-phpapp02

computernetworkingkurosech2-091011001808-phpapp02

Date post: 04-Jun-2018
Category:
Upload: mailstonaik
View: 219 times
Download: 0 times
Share this document with a friend

of 107

Transcript
  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    1/107

    2: Application Layer 1

    Chapter 2

    Application Layer

    Computer Networking:A Top Down ApproachFeaturing the Internet,

    3rdedition.Jim Kurose, Keith RossAddison-Wesley, July2004.

    A note on the use of these ppt slides:Were making these slides freely available to all (faculty, students, readers).

    Theyre in PowerPoint form so you can add, modify, and delete slides

    (including this one) and slide content to suit your needs. They obviously

    represent a lotof work on our part. In return for use, we only ask the

    following:

    If you use these slides (e.g., in a class) in substantially unaltered form,that you mention their source (after all, wed like people to use our book!)

    If you post any slides in substantially unaltered form on a www site, that

    you note that they are adapted from (or perhaps identical to) our slides, and

    note our copyright of this material.

    Thanks and enjoy! JFK/KWR

    All material copyright 1996-2004

    J.F Kurose and K.W. Ross, All Rights Reserved

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    2/107

    2: Application Layer 2

    Chapter 2: Application layer

    2.1 Principles ofnetwork applications

    2.2 Web and HTTP

    2.3 FTP 2.4 Electronic Mail

    SMTP, POP3, IMAP

    2.5 DNS

    2.6 P2P file sharing

    2.7 Socket programmingwith TCP

    2.8 Socket programmingwith UDP

    2.9 Building a Webserver

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    3/107

    2: Application Layer 3

    Chapter 2: Application Layer

    Our goals: conceptual,

    implementationaspects of network

    application protocols transport-layer

    service models

    client-server

    paradigm peer-to-peer

    paradigm

    learn about protocolsby examining popularapplication-levelprotocols

    HTTP FTP

    SMTP / POP3 / IMAP

    DNS

    programming networkapplications socket API

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    4/107

    2: Application Layer 4

    Some network apps

    E-mail

    Web

    Instant messaging

    Remote login P2P file sharing

    Multi-user networkgames

    Streaming storedvideo clips

    Internet telephone

    Real-time videoconference

    Massive parallelcomputing

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    5/107

    2: Application Layer 5

    Creating a network app

    Write programs that run on different end

    systems and

    communicate over anetwork.

    e.g., Web: Web serversoftware communicateswith browser software

    No software written for

    devices in network core Network core devices do

    not function at app layer

    This design allows forrapid app development

    applicationtransportnetworkdata linkphysical

    applicationtransport

    networkdata linkphysical

    application

    transportnetworkdata linkphysical

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    6/107

    2: Application Layer 6

    Chapter 2: Application layer

    2.1 Principles ofnetwork applications

    2.2 Web and HTTP

    2.3 FTP 2.4 Electronic Mail

    SMTP, POP3, IMAP

    2.5 DNS

    2.6 P2P file sharing

    2.7 Socket programmingwith TCP

    2.8 Socket programmingwith UDP

    2.9 Building a Webserver

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    7/107

    2: Application Layer 7

    Application architectures

    Client-server

    Peer-to-peer (P2P)

    Hybrid of client-server and P2P

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    8/107

    2: Application Layer 8

    Client-server archicture

    server: always-on host permanent IP address server farms for scaling

    clients: communicate with

    server may be intermittently

    connected may have dynamic IP

    addresses do not communicate

    directly with each other

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    9/107

    2: Application Layer 9

    Pure P2P architecture

    no always on server

    arbitrary end systemsdirectly communicate

    peers are intermittentlyconnected and change IPaddresses

    example: Gnutella

    Highly scalable

    But difficult to manage

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    10/107

    2: Application Layer 10

    Hybrid of client-server and P2P

    Napster File transfer P2P File search centralized:

    Peers register content at central server Peers query same central server to locate content

    Instant messaging Chatting between two users is P2P Presence detection/location centralized:

    User registers its IP address with central serverwhen it comes online

    User contacts central server to find IP addresses ofbuddies

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    11/107

    2: Application Layer 11

    Processes communicating

    Process:program runningwithin a host.

    within same host, twoprocesses communicate

    using inter-processcommunication(definedby OS).

    processes in different

    hosts communicate byexchanging messages

    Client process:processthat initiatescommunication

    Server process:process

    that waits to becontacted

    Note: applications with

    P2P architectures haveclient processes &server processes

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    12/107

    2: Application Layer 12

    Sockets

    process sends/receivesmessages to/from itssocket

    socket analogous to door sending process shoves

    message out door

    sending process relies ontransport infrastructureon other side of door whichbrings message to socketat receiving process

    process

    TCP with

    buffers,

    variables

    socket

    host orserver

    process

    TCP with

    buffers,

    variables

    socket

    host orserver

    Internet

    controlledby OS

    controlled by

    app developer

    API: (1) choice of transport protocol; (2) ability to fixa few parameters (lots more on this later)

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    13/107

    2: Application Layer 13

    Addressing processes

    For a process toreceive messages, itmust have an identifier

    A host has a unique32-bit IP address

    Q:does the IP addressof the host on whichthe process runssuffice for identifying

    the process? Answer:No, many

    processes can berunning on same host

    Identifier includesboth the IP addressand port numbersassociated with theprocess on the host.

    Example port numbers: HTTP server: 80

    Mail server: 25

    More on this later

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    14/107

    2: Application Layer 14

    App-layer protocol defines

    Types of messagesexchanged, eg, request& response messages

    Syntax of messagetypes: what fields inmessages & how fieldsare delineated

    Semantics of the

    fields, ie, meaning ofinformation in fields

    Rules for when andhow processes send &

    respond to messages

    Public-domain protocols:

    defined in RFCs

    allows for

    interoperability eg, HTTP, SMTP

    Proprietary protocols:

    eg, KaZaA

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    15/107

    2: Application Layer 15

    What transport service does an app need?

    Data loss some apps (e.g., audio) can

    tolerate some loss other apps (e.g., file

    transfer, telnet) require100% reliable datatransfer

    Timing some apps (e.g.,

    Internet telephony,interactive games)require low delay to beeffective

    Bandwidth some apps (e.g.,

    multimedia) requireminimum amount of

    bandwidth to beeffective

    other apps (elasticapps) make use of

    whatever bandwidththey get

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    16/107

    2: Application Layer 16

    Transport service requirements of common apps

    Application

    file transfer

    e-mail

    Web documentsreal-time audio/video

    stored audio/video

    interactive games

    instant messaging

    Data loss

    no loss

    no loss

    no lossloss-tolerant

    loss-tolerant

    loss-tolerant

    no loss

    Bandwidth

    elastic

    elastic

    elasticaudio: 5kbps-1Mbps

    video:10kbps-5Mbps

    same as above

    few kbps up

    elastic

    Time Sensitive

    no

    no

    noyes, 100s msec

    yes, few secs

    yes, 100s msec

    yes and no

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    17/107

    2: Application Layer 17

    Internet transport protocols services

    TCP service: connection-oriented:setup

    required between client andserver processes

    reliable transport betweensending and receiving process

    flow control:sender wontoverwhelm receiver

    congestion control:throttle

    sender when networkoverloaded

    does not provide:timing,minimum bandwidthguarantees

    UDP service: unreliable data transfer

    between sending andreceiving process

    does not provide:connection setup,reliability, flow control,congestion control, timing,or bandwidth guarantee

    Q:why bother? Why isthere a UDP?

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    18/107

    2: Application Layer 18

    Internet apps: application, transport protocols

    Application

    e-mail

    remote terminal access

    Webfile transfer

    streaming multimedia

    Internet telephony

    Applicationlayer protocol

    SMTP [RFC 2821]

    Telnet [RFC 854]

    HTTP [RFC 2616]FTP [RFC 959]

    proprietary

    (e.g. RealNetworks)

    proprietary

    (e.g., Dialpad)

    Underlyingtransport protocol

    TCP

    TCP

    TCPTCP

    TCP or UDP

    typically UDP

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    19/107

    2: Application Layer 19

    Chapter 2: Application layer

    2.1 Principles ofnetwork applications app architectures

    app requirements

    2.2 Web and HTTP

    2.4 Electronic Mail SMTP, POP3, IMAP

    2.5 DNS

    2.6 P2P file sharing

    2.7 Socket programmingwith TCP

    2.8 Socket programmingwith UDP

    2.9 Building a Webserver

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    20/107

    2: Application Layer 20

    Web and HTTP

    First some jargon

    Web pageconsists of objects

    Object can be HTML file, JPEG image, Java

    applet, audio file, Web page consists of base HTML-filewhich

    includes several referenced objects

    Each object is addressable by a URL

    Example URL:www.someschool.edu/someDept/pic.gif

    host name path name

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    21/107

    2: Application Layer 21

    HTTP overview

    HTTP: hypertexttransfer protocol

    Webs application layerprotocol

    client/server model client:browser that

    requests, receives,displays Web objects

    server:Web server

    sends objects inresponse to requests

    HTTP 1.0: RFC 1945

    HTTP 1.1: RFC 2068

    PC runningExplorer

    Serverrunning

    Apache Web

    server

    Mac runningNavigator

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    22/107

    2: Application Layer 22

    HTTP overview (continued)

    Uses TCP: client initiates TCP

    connection (creates socket)to server, port 80

    server accepts TCPconnection from client

    HTTP messages (application-layer protocol messages)exchanged between browser

    (HTTP client) and Webserver (HTTP server)

    TCP connection closed

    HTTP is stateless server maintains no

    information aboutpast client requests

    Protocols that maintainstate are complex!

    past history (state) mustbe maintained

    if server/client crashes,their views of state maybe inconsistent, must bereconciled

    aside

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    23/107

    2: Application Layer 23

    HTTP connections

    Nonpersistent HTTP

    At most one object issent over a TCPconnection.

    HTTP/1.0 usesnonpersistent HTTP

    Persistent HTTP

    Multiple objects canbe sent over singleTCP connectionbetween client andserver.

    HTTP/1.1 usespersistent connections

    in default mode

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    24/107

    2: Application Layer 24

    Nonpersistent HTTPSuppose user enters URL

    www.someSchool.edu/someDepartment/home.index

    1a.HTTP client initiates TCPconnection to HTTP server(process) at

    www.someSchool.edu on port 80

    2.HTTPclient sends HTTPrequest message(containingURL) into TCP connection

    socket. Message indicatesthat client wants objectsomeDepartment/home.index

    1b.HTTPserver at hostwww.someSchool.edu waiting

    for TCP connection at port 80.accepts connection, notifyingclient

    3.HTTPserver receives request

    message, forms responsemessagecontaining requestedobject, and sends messageinto its socket

    time

    (contains text,

    references to 10

    jpeg images)

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    25/107

    2: Application Layer 25

    Nonpersistent HTTP (cont.)

    5.HTTP client receives responsemessage containing html file,displays html. Parsing htmlfile, finds 10 referenced jpegobjects

    6.Steps 1-5 repeated for eachof 10 jpeg objects

    4.HTTPserver closes TCPconnection.

    time

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    26/107

    2: Application Layer 26

    Response time modeling

    Definition of RRT:time tosend a small packet totravel from client toserver and back.

    Response time:

    one RTT to initiate TCPconnection

    one RTT for HTTPrequest and first fewbytes of HTTP responseto return

    file transmission time

    total = 2RTT+transmit time

    time to

    transmit

    file

    initiate TCP

    connection

    RTT

    request

    file

    RTT

    file

    received

    time time

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    27/107

    2: Application Layer 27

    Persistent HTTP

    Nonpersistent HTTP issues: requires 2 RTTs per object

    OS must work and allocatehost resources for each TCPconnection

    but browsers often openparallel TCP connections tofetch referenced objects

    Persistent HTTP

    server leaves connectionopen after sending response

    subsequent HTTP messagesbetween same client/serverare sent over connection

    Persistent without pipelining: client issues new request

    only when previousresponse has been received

    one RTT for each

    referenced objectPersistent with pipelining:

    default in HTTP/1.1

    client sends requests assoon as it encounters areferenced object

    as little as one RTT for allthe referenced objects

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    28/107

    2: Application Layer 28

    HTTP request message

    two types of HTTP messages: request, response

    HTTP request message: ASCII (human-readable format)

    GET /somedir/page.html HTTP/1.1

    Host: www.someschool.edu

    User-agent: Mozilla/4.0

    Connection: close

    Accept-language:fr

    (extra carriage return, line feed)

    request line(GET, POST,

    HEAD commands)

    header

    lines

    Carriage return,line feed

    indicates end

    of message

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    29/107

    2: Application Layer 29

    HTTP request message: general format

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    30/107

    2: Application Layer 30

    Uploading form input

    Post method:

    Web page oftenincludes form input

    Input is uploaded toserver in entity body

    URL method:

    Uses GET method

    Input is uploaded inURL field of requestline:

    www.somesite.com/animalsearch?monkeys&banana

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    31/107

    2: Application Layer 31

    Method types

    HTTP/1.0

    GET

    POST

    HEAD asks server to leave

    requested object out ofresponse

    HTTP/1.1

    GET, POST, HEAD

    PUT uploads file in entity

    body to path specifiedin URL field

    DELETE deletes file specified in

    the URL field

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    32/107

    2: Application Layer 32

    HTTP response message

    HTTP/1.1 200 OK

    Connection close

    Date: Thu, 06 Aug 1998 12:00:15 GMT

    Server: Apache/1.3.0 (Unix)

    Last-Modified: Mon, 22 Jun 1998 ...

    Content-Length: 6821

    Content-Type: text/html

    data data data data data ...

    status line(protocolstatus code

    status phrase)

    headerlines

    data, e.g.,

    requestedHTML file

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    33/107

    2: Application Layer 33

    HTTP response status codes

    200 OK request succeeded, requested object later in this message

    301 Moved Permanently requested object moved, new location specified later in

    this message (Location:)

    400 Bad Request

    request message not understood by server404 Not Found

    requested document not found on this server

    505 HTTP Version Not Supported

    In first line in server->client response message.A few sample codes:

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    34/107

    2: Application Layer 34

    Trying out HTTP (client side) for yourself

    1. Telnet to your favorite Web server:

    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

    telnet cis.poly.edu 80

    2. Type in a GET HTTP request:

    GET /~ross/ HTTP/1.1

    Host: cis.poly.edu

    By typing this in (hit carriagereturn twice), you send

    this minimal (but complete)GET request to HTTP server

    3. Look at response message sent by HTTP server!

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    35/107

    2: Application Layer 35

    User-server state: cookies

    Many major Web sitesuse cookies

    Four components:1) cookie header line in

    the HTTP responsemessage

    2) cookie header line inHTTP request message

    3) cookie file kept onusers host and managedby users browser

    4) back-end database atWeb site

    Example: Susan access Internet

    always from same PC

    She visits a specific e-

    commerce site for firsttime

    When initial HTTPrequests arrives at site,site creates a unique ID

    and creates an entry inbackend database forID

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    36/107

    2: Application Layer 36

    Cookies: keeping state (cont.)

    client serverusual http request msg

    usual http response +Set-cookie: 1678

    usual http request msgcookie: 1678

    usual http response msg

    usual http request msgcookie: 1678

    usual http response msg

    cookie-specificaction

    cookie-spectific

    action

    servercreates ID

    1678 for user

    Cookie file

    amazon: 1678

    ebay: 8734

    Cookie file

    ebay: 8734

    Cookie file

    amazon: 1678

    ebay: 8734

    one week later:

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    37/107

    2: Application Layer 37

    Cookies (continued)

    What cookies can bring: authorization

    shopping carts

    recommendations

    user session state(Web e-mail)

    Cookies and privacy: cookies permit sites to

    learn a lot about you

    you may supply name

    and e-mail to sites search engines use

    redirection & cookiesto learn yet more

    advertising companiesobtain info acrosssites

    aside

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    38/107

    2: Application Layer 38

    Web caches (proxy server)

    user sets browser: Webaccesses via cache

    browser sends all HTTP

    requests to cache object in cache: cache

    returns object

    else cache requestsobject from origin

    server, then returnsobject to client

    Goal:satisfy client request without involving origin server

    client

    Proxy

    server

    clientoriginserver

    originserver

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    39/107

    2: Application Layer 39

    More about Web caching

    Cache acts as both clientand server

    Typically cache is installedby ISP (university,company, residential ISP)

    Why Web caching? Reduce response time for

    client request.

    Reduce traffic on an

    institutions access link. Internet dense with caches

    enables poor contentproviders to effectivelydeliver content (but so

    does P2P file sharing)

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    40/107

    2: Application Layer 40

    Caching example

    Assumptions average object size = 100,000

    bits

    avg. request rate frominstitutions browsers to origin

    servers = 15/sec delay from institutional router

    to any origin server and backto router = 2 sec

    Consequences

    utilization on LAN = 15% utilization on access link = 100%

    total delay = Internet delay +access delay + LAN delay

    = 2 sec + minutes + milliseconds

    origin

    servers

    publicInternet

    institutionalnetwork 10 Mbps LAN

    1.5 Mbpsaccess link

    institutionalcache

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    41/107

    2: Application Layer 41

    Caching example (cont)

    Possible solution increase bandwidth of access

    link to, say, 10 Mbps

    Consequences utilization on LAN = 15%

    utilization on access link = 15% Total delay = Internet delay +

    access delay + LAN delay

    = 2 sec + msecs + msecs

    often a costly upgrade

    origin

    servers

    publicInternet

    institutionalnetwork 10 Mbps LAN

    10 Mbpsaccess link

    institutionalcache

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    42/107

    2: Application Layer 42

    Caching example (cont)

    Install cache suppose hit rate is .4

    Consequence 40% requests will be

    satisfied almost immediately

    60% requests satisfied byorigin server

    utilization of access linkreduced to 60%, resulting innegligible delays (say 10msec)

    total avg delay = Internetdelay + access delay + LANdelay = .6*(2.01) secs +milliseconds < 1.4 secs

    origin

    servers

    publicInternet

    institutionalnetwork 10 Mbps LAN

    1.5 Mbpsaccess link

    institutionalcache

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    43/107

    2: Application Layer 43

    Conditional GET

    Goal:dont send object ifcache has up-to-date cachedversion

    cache: specify date ofcached copy in HTTP requestIf-modified-since:

    server: response contains noobject if cached copy is up-to-date:HTTP/1.0 304 Not

    Modified

    cache serverHTTP request msgIf-modified-since:

    HTTP responseHTTP/1.0

    304 Not Modified

    objectnot

    modified

    HTTP request msgIf-modified-since:

    HTTP responseHTTP/1.0 200 OK

    objectmodified

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    44/107

    2: Application Layer 44

    Chapter 2: Application layer

    2.1 Principles ofnetwork applications

    2.2 Web and HTTP

    2.3 FTP

    2.4 Electronic Mail SMTP, POP3, IMAP

    2.5 DNS

    2.6 P2P file sharing

    2.7 Socket programmingwith TCP

    2.8 Socket programmingwith UDP

    2.9 Building a Webserver

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    45/107

    2: Application Layer 45

    FTP: the file transfer protocol

    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

    file transferFTP

    server

    FTPuser

    interface

    FTPclient

    local file

    system

    remote file

    system

    userat host

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    46/107

    2: Application Layer 46

    FTP: separate control, data connections

    FTP client contacts FTPserver at port 21, specifyingTCP as transport protocol

    Client obtains authorizationover control connection

    Client browses remotedirectory by sendingcommands over controlconnection.

    When server receives acommand for a file transfer,the server opens a TCP dataconnection to client

    After transferring one file,server closes connection.

    FTPclient

    FTPserver

    TCP control connectionport 21

    TCP data connectionport 20

    Server opens a second TCPdata connection to transferanother file.

    Control connection: out of

    band FTP server maintains state:

    current directory, earlierauthentication

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    47/107

    2: Application Layer 47

    FTP commands, responses

    Sample commands: sent as ASCII text over

    control channel

    USER username

    PASS password LISTreturn list of file in

    current directory

    RETR filenameretrieves

    (gets) file STOR filenamestores

    (puts) file onto remotehost

    Sample return codes status code and phrase (as

    in HTTP) 331 Username OK,

    password required 125 data connection

    already open;

    transfer starting

    425 Cant open data

    connection 452 Error writing

    file

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    48/107

    2: Application Layer 48

    Chapter 2: Application layer

    2.1 Principles ofnetwork applications

    2.2 Web and HTTP

    2.3 FTP

    2.4 Electronic Mail SMTP, POP3, IMAP

    2.5 DNS

    2.6 P2P file sharing

    2.7 Socket programmingwith TCP

    2.8 Socket programmingwith UDP

    2.9 Building a Webserver

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    49/107

    2: Application Layer 49

    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., Eudora, Outlook, elm,

    Netscape Messenger

    outgoing, incoming messagesstored on server

    user mailbox

    outgoingmessage queue

    mail

    server

    useragent

    useragent

    useragent

    mailserver

    useragent

    useragent

    mailserver

    useragent

    SMTP

    SMTP

    SMTP

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    50/107

    2: Application Layer 50

    Electronic Mail: mail servers

    Mail Servers mailboxcontains incoming

    messages for user

    messagequeueof outgoing

    (to be sent) mail messages SMTP protocolbetween mail

    servers to send emailmessages

    client: sending mail

    server server: receiving mail

    server

    mailserver

    useragent

    useragent

    useragent

    mail

    server

    useragent

    useragent

    mailserver

    useragent

    SMTP

    SMTP

    SMTP

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    51/107

    2: Application Layer 51

    Electronic Mail: SMTP [RFC 2821]

    uses TCP to reliably transfer email message from clientto server, port 25

    direct transfer: sending server to receiving server

    three phases of transfer

    handshaking (greeting) transfer of messages

    closure

    command/response interaction

    commands:ASCII text

    response:status code and phrase

    messages must be in 7-bit ASCII

    S i Ali d t B b

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    52/107

    2: Application Layer 52

    Scenario: Alice sends message to Bob

    1) Alice uses UA to compose

    message and [email protected]

    2) Alices UA sends messageto her mail server; messageplaced in message queue

    3) Client side of SMTP opensTCP connection with Bobsmail server

    4) SMTP client sends Alices

    message over the TCPconnection

    5) Bobs mail server places themessage in Bobs mailbox

    6) Bob invokes his user agent

    to read message

    useragent

    mailserver

    mailserver user

    agent

    1

    2 3 4 56

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    53/107

    2: Application Layer 53

    Sample SMTP interactionS: 220 hamburger.edu

    C: HELO crepes.frS: 250 Hello crepes.fr, pleased to meet you

    C: MAIL FROM:

    S: 250 [email protected]... Sender ok

    C: RCPT TO:

    S: 250 [email protected] ... Recipient okC: 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

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    54/107

    2: Application Layer 54

    Try SMTP interaction for yourself:

    telnet servername 25

    see 220 reply from server

    enter HELO, MAIL FROM, RCPT TO, DATA, QUIT

    commandsabove lets you send email without using email client(reader)

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    55/107

    2: Application Layer 55

    SMTP: final words

    SMTP uses persistentconnections

    SMTP requires message(header & body) to be in 7-bit ASCII

    SMTP server usesCRLF.CRLFto determineend of message

    Comparison with HTTP:

    HTTP: pull

    SMTP: push

    both have ASCIIcommand/responseinteraction, status codes

    HTTP: each objectencapsulated in its own

    response msg SMTP: multiple objects

    sent in multipart msg

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    56/107

    2: Application Layer 56

    Mail message format

    SMTP: protocol forexchanging email msgs

    RFC 822: standard for textmessage format:

    header lines, e.g., To:

    From:

    Subject:

    differentfrom SMTPcommands!

    body the message, ASCII

    characters only

    header

    body

    blankline

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    57/107

    2: Application Layer 57

    Message format: multimedia extensions

    MIME: multimedia mail extension, RFC 2045, 2056 additional lines in msg header declare MIME content

    type

    From: [email protected]

    To: [email protected]: Picture of yummy crepe.

    MIME-Version: 1.0

    Content-Transfer-Encoding: base64

    Content-Type: image/jpeg

    base64 encoded data ..............................

    ......base64 encoded data

    multimedia data

    type, subtype,parameter declaration

    method usedto encode data

    MIME version

    encoded data

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    58/107

    2: Application Layer 58

    Mail access protocols

    SMTP: delivery/storage to receivers server Mail access protocol: retrieval from server

    POP: Post Office Protocol [RFC 1939]

    authorization (agent server) and download

    IMAP: Internet Mail Access Protocol [RFC 1730] more features (more complex)

    manipulation of stored msgs on server

    HTTP: Hotmail , Yahoo! Mail, etc.

    useragent

    senders mailserver

    useragent

    SMTP SMTP accessprotocol

    receivers mailserver

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    59/107

    2: Application Layer 59

    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 bynumber

    dele:delete

    quit

    C: list

    S: 1 498

    S: 2 912

    S: .C: retr 1

    S:

    S: .

    C: dele 1

    C: retr 2

    S:

    S: .

    C: dele 2

    C: quit

    S: +OK POP3 server signing off

    S: +OK POP3 server ready

    C: user bob

    S: +OK

    C: pass hungry

    S: +OKuser successfully logged on

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    60/107

    2: Application Layer 60

    POP3 (more) and IMAP

    More about POP3 Previous example uses

    download and deletemode.

    Bob cannot re-read e-mail if he changesclient

    Download-and-keep:copies of messages ondifferent clients

    POP3 is statelessacross sessions

    IMAP Keep all messages in

    one place: the server

    Allows user to

    organize messages infolders

    IMAP keeps user stateacross sessions:

    names of folders andmappings betweenmessage IDs and foldername

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    61/107

    2: Application Layer 61

    Chapter 2: Application layer

    2.1 Principles ofnetwork applications

    2.2 Web and HTTP

    2.3 FTP

    2.4 Electronic Mail SMTP, POP3, IMAP

    2.5 DNS

    2.6 P2P file sharing 2.7 Socket programming

    with TCP

    2.8 Socket programmingwith UDP

    2.9 Building a Webserver

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    62/107

    2: Application Layer 62

    DNS: Domain Name System

    People:many identifiers: SSN, name, passport #

    Internet hosts, routers: IP address (32 bit) -

    used for addressingdatagrams

    name, e.g.,ww.yahoo.com - used byhumans

    Q:map between IPaddresses and name ?

    Domain Name System: distributed database

    implemented in hierarchy ofmany name servers

    application-layer protocolhost, routers, name servers tocommunicate to resolvenames(address/name translation)

    note: core Internet

    function, implemented asapplication-layer protocol

    complexity at networksedge

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    63/107

    2: Application Layer 63

    DNS

    Why not centralize DNS? single point of failure

    traffic volume

    distant centralized

    database maintenance

    doesnt scale!

    DNS services Hostname to IP

    address translation

    Host aliasing Canonical and alias

    names

    Mail server aliasing

    Load distribution

    Replicated Webservers: set of IPaddresses for onecanonical name

    Distributed Hierarchical Database

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    64/107

    2: Application Layer 64

    Root DNS Servers

    com DNS servers org DNS servers edu DNS servers

    poly.edu

    DNS servers

    umass.edu

    DNS serversyahoo.com

    DNS servers

    amazon.com

    DNS servers

    pbs.org

    DNS servers

    Distributed, Hierarchical Database

    Client wants IP for www.amazon.com; 1stapprox: Client queries a root server to find com DNS

    server

    Client queries com DNS server to get amazon.comDNS server

    Client queries amazon.com DNS server to get IPaddress for www.amazon.com

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    65/107

    2: Application Layer 65

    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

    13 root nameservers worldwide

    b USC-ISI Marina del Rey, CA

    l ICANN Los Angeles, CA

    e NASA Mt View, CA

    f Internet Software C. PaloAlto,

    CA (and 17 other locations)

    i Autonomica, Stockholm (plus 3

    other locations)

    k RIPE London (also Amsterdam,

    Frankfurt)

    m WIDE Tokyo

    a Verisign, Dulles, VA

    c Cogent, Herndon, VA (also Los Angeles)

    d U Maryland College Park, MD

    g US DoD Vienna, VA

    h ARL Aberdeen, MDj Verisign, ( 11 locations)

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    66/107

    2: Application Layer 66

    TLD and Authoritative Servers

    Top-level domain (TLD) servers:responsiblefor com, org, net, edu, etc, and all top-levelcountry domains uk, fr, ca, jp.Network solutions maintains servers for com TLD Educause for edu TLD

    Authoritative DNS servers:organizationsDNS servers, providing authoritativehostname to IP mappings for organizationsservers (e.g., Web and mail). Can be maintained by organization or service

    provider

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    67/107

    2: Application Layer 67

    Local Name Server

    Does not strictly belong to hierarchy Each ISP (residential ISP, company,

    university) has one.

    Also called default name serverWhen a host makes a DNS query, query is

    sent to its local DNS server Acts as a proxy, forwards query into hierarchy.

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    68/107

    2: Application Layer 68

    requesting hostcis.poly.edu

    gaia.cs.umass.edu

    root DNS server

    local DNS serverdns.poly.edu

    1

    2 3

    4

    5

    6

    authoritative DNS serverdns.cs.umass.edu

    78

    TLD DNS server

    Example

    Host at cis.poly.eduwants IP address forgaia.cs.umass.edu

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    69/107

    2: Application Layer 69

    requesting hostcis.poly.edu

    gaia.cs.umass.edu

    root DNS server

    local DNS serverdns.poly.edu

    1

    2

    45

    6

    authoritative DNS serverdns.cs.umass.edu

    7

    8

    TLD DNS serv

    3

    Recursive queries

    recursive query: puts burden of name

    resolution oncontacted nameserver

    heavy load?

    iterated query: contacted server

    replies with name of

    server to contact I dont know this

    name, but ask thisserver

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    70/107

    2: Application Layer 70

    DNS: caching and updating records

    once (any) name server learns mapping, it cachesmapping

    cache entries timeout (disappear) after sometime

    TLD servers typically cached in local nameservers Thus root name servers not often visited

    update/notify mechanisms under design by IETF

    RFC 2136 http://www.ietf.org/html.charters/dnsind-charter.html

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    71/107

    2: Application Layer 71

    DNS records

    DNS:distributed db storing resource records (RR)

    Type=NS nameis domain (e.g.

    foo.com) valueis IP address of

    authoritative nameserver for this domain

    RR format: (name, value, type, ttl)

    Type=A

    nameis hostname valueis IP address

    Type=CNAME

    nameis alias name for somecannonical (the real) name

    www.ibm.com is reallyservereast.backup2.ibm.com

    valueis cannonical name

    Type=MX valueis name of mailserver

    associated with name

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    72/107

    2: Application Layer 72

    DNS protocol, messages

    DNS protocol :queryand replymessages, both withsame message format

    msg header identification:16 bit #

    for query, reply to queryuses same #

    flags:

    query or reply

    recursion desired

    recursion available reply is authoritative

    l

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    73/107

    2: Application Layer 73

    DNS protocol, messages

    Name, type fieldsfor a query

    RRs in reponse

    to query

    records forauthoritative servers

    additional helpfulinfo that may be used

    I i d i DNS

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    74/107

    2: Application Layer 74

    Inserting records into DNS

    Example: just created startup Network Utopia Register name networkuptopia.com at a registrar

    (e.g., Network Solutions) Need to provide registrar with names and IP addresses of

    your authoritative name server (primary and secondary)

    Registrar inserts two RRs into the com TLD server:

    (networkutopia.com, dns1.networkutopia.com, NS)

    (dns1.networkutopia.com, 212.212.212.1, A)

    Put in authoritative server Type A record forwww.networkuptopia.com and Type MX record fornetworkutopia.com

    How do people get the IP address of your Web site?

    Ch 2 A li i l

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    75/107

    2: Application Layer 75

    Chapter 2: Application layer

    2.1 Principles ofnetwork applications app architectures

    app requirements

    2.2 Web and HTTP 2.4 Electronic Mail

    SMTP, POP3, IMAP

    2.5 DNS

    2.6 P2P file sharing 2.7 Socket programming

    with TCP

    2.8 Socket programming

    with UDP 2.9 Building a Web

    server

    P2P fil h i

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    76/107

    2: Application Layer 76

    P2P file sharing

    Example Alice runs P2P client

    application on hernotebook computer

    Intermittentlyconnects to Internet;gets new IP addressfor each connection

    Asks for Hey Jude Application displays

    other peers that havecopy of Hey Jude.

    Alice chooses one of

    the peers, Bob. File is copied from

    Bobs PC to Alicesnotebook: HTTP

    While Alice downloads,other users uploadingfrom Alice.

    Alices peer is both a

    Web client and atransient Web server.

    All peers are servers =highly scalable!

    P2P t li d di t

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    77/107

    2: Application Layer 77

    P2P: centralized directory

    original Napster design1) when peer connects, it

    informs central server: IP address

    content2) Alice queries for Hey

    Jude

    3) Alice requests file from

    Bob

    centralizeddirectory server

    peers

    Alice

    Bob

    1

    1

    1

    12

    3

    P2P bl i h li d di

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    78/107

    2: Application Layer 78

    P2P: problems with centralized directory

    Single point of failure Performance

    bottleneck

    Copyright

    infringement

    file transfer isdecentralized, butlocating content ishighly decentralized

    Q fl di G t ll

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    79/107

    2: Application Layer 79

    Query flooding: Gnutella

    fully distributed no central server

    public domain protocol many Gnutella clients

    implementing protocol

    overlay network: graph edge between peer X

    and Y if theres a TCPconnection

    all active peers andedges is overlay net Edge is not a physical

    link Given peer will

    typically be connectedwith < 10 overlayneighbors

    Gnutella: protocol

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    80/107

    2: Application Layer 80

    Gnutella: protocol

    Query

    QueryHit

    Query

    QueryHit

    File transfer:

    HTTPQuery message

    sent over existing TCPconnections

    peers forwardQuery message

    QueryHitsent overreversepath

    Scalability:

    limited scopeflooding

    G t ll P j i i

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    81/107

    2: Application Layer 81

    Gnutella: Peer joining

    1. Joining peer X must find some other peer inGnutella network: use list of candidate peers

    2. X sequentially attempts to make TCP with peerson list until connection setup with Y

    3. X sends Ping message to Y; Y forwards Pingmessage.

    4. All peers receiving Ping message respond withPong message

    5. X receives many Pong messages. It can thensetup additional TCP connections

    Peer leaving: see homework problem!

    E l iti h t it K Z A

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    82/107

    2: Application Layer 82

    Exploiting heterogeneity: KaZaA

    Each peer is either agroup leader or assignedto a group leader. TCP connection between

    peer and its group leader. TCP connections between

    some pairs of groupleaders.

    Group leader tracks the

    content in all itschildren.

    ordinary peer

    group-leader peer

    neighoring relationships

    in overlay network

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    83/107

    K t i ks

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    84/107

    2: Application Layer 84

    Kazaa tricks

    Limitations on simultaneous uploads Request queuing

    Incentive priorities

    Parallel downloading

    Ch pt 2: Appli ti n l

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    85/107

    2: Application Layer 85

    Chapter 2: Application layer

    2.1 Principles ofnetwork applications

    2.2 Web and HTTP

    2.3 FTP

    2.4 Electronic Mail SMTP, POP3, IMAP

    2.5 DNS

    2.6 P2P file sharing 2.7 Socket programming

    with TCP

    2.8 Socket programming

    with UDP 2.9 Building a Web

    server

    Socket programming

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    86/107

    2: Application Layer 86

    Socket programming

    Socket API introduced in BSD4.1 UNIX,

    1981 explicitly created, used,

    released by apps

    client/server paradigm

    two types of transport

    service via socket API: unreliable datagram

    reliable, byte stream-oriented

    a host-local,

    application-created,OS-controlledinterface

    (a door) into whichapplication process can

    both send and

    receivemessages to/fromanother applicationprocess

    socket

    Goal:learn how to build client/server application thatcommunicate using sockets

    Socket pro rammin usin TCP

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    87/107

    2: Application Layer 87

    Socket-programming using TCP

    Socket:a door between application process and end-end-transport protocol (UCP or TCP)

    TCP service:reliable transfer of bytesfrom oneprocess to another

    process

    TCP with

    buffers,variables

    socket

    controlled byapplicationdeveloper

    controlled by

    operatingsystem

    host orserver

    process

    TCP with

    buffers,variables

    socket

    controlled byapplicationdeveloper

    controlled byoperatingsystem

    host orserver

    internet

    Socket programming with TCP

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    88/107

    2: Application Layer 88

    Socket programming with TCP

    Client must contact server

    server process must firstbe running

    server must have createdsocket (door) thatwelcomes clients contact

    Client contacts server by:

    creating client-local TCPsocket

    specifying IP address, port

    number of server process When client creates

    socket: client TCPestablishes connection toserver TCP

    When contacted by client,server TCP creates newsocketfor server process tocommunicate with client

    allows server to talk withmultiple clients

    source port numbersused to distinguishclients (more in Chap 3)

    TCP provides reliable, in-ordertransfer of bytes (pipe)between client and server

    application viewpoint

    Stream jargon

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    89/107

    2: Application Layer 89

    Stream jargon

    A streamis a sequence ofcharacters that flow intoor out of a process.

    An input streamisattached to some input

    source for the process, eg,keyboard or socket.

    An output streamisattached to an outputsource, eg, monitor or

    socket.

    Socket programming with TCP

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    90/107

    2: Application Layer 90

    Socket programming with TCP

    Example client-server app:1) client reads line from

    standard input (inFromUserstream) , sends to server viasocket (outToServer

    stream)2) server reads line from socket

    3) server converts line touppercase, sends back toclient

    4) client reads, prints modifiedline from socket(inFromServerstream)

    o

    utToServer

    to network from network

    in

    FromServer

    inFromUser

    keyboard monitor

    Process

    clientSocket

    input

    stream

    input

    stream

    output

    stream

    TCP

    socket

    Client

    process

    client TCPsocket

    Client/server socket interaction: TCP

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    91/107

    2: Application Layer 91

    Client/server socket interaction: TCP

    wait for incomingconnection requestconnectionSocket =

    welcomeSocket.accept()

    create socket,port=x, for

    incoming request:welcomeSocket =

    ServerSocket()

    create socket,connect to hostid, port=xclientSocket =

    Socket()

    close

    connectionSocket

    read reply from

    clientSocket

    close

    clientSocket

    Server (running on hostid) Client

    send request using

    clientSocketread request from

    connectionSocket

    write reply to

    connectionSocket

    TCPconnection setup

    Example: Java client (TCP)

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    92/107

    2: Application Layer 92

    Example: Java client (TCP)

    import java.io.*;import java.net.*;

    class TCPClient {

    public static void main(String argv[]) throws Exception

    {

    String sentence;String modifiedSentence;

    BufferedReader inFromUser =

    new BufferedReader(new InputStreamReader(System.in));

    Socket clientSocket = new Socket("hostname", 6789);

    DataOutputStream outToServer =

    new DataOutputStream(clientSocket.getOutputStream());

    Createinput stream

    Create

    client socket,connect to server

    Createoutput stream

    attached to socket

    Example: Java client (TCP) cont

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    93/107

    2: Application Layer 93

    Example: Java client (TCP), cont.

    BufferedReader inFromServer =

    new BufferedReader(new

    InputStreamReader(clientSocket.getInputStream()));

    sentence = inFromUser.readLine();

    outToServer.writeBytes(sentence + '\n');

    modifiedSentence = inFromServer.readLine();

    System.out.println("FROM SERVER: " + modifiedSentence);

    clientSocket.close();

    }

    }

    Createinput stream

    attached to socket

    Send lineto server

    Read linefrom server

    Example: Java server (TCP)

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    94/107

    2: Application Layer 94

    Example: Java server (TCP)import java.io.*;

    import java.net.*;

    class TCPServer {

    public static void main(String argv[]) throws Exception

    {

    String clientSentence;

    String capitalizedSentence;

    ServerSocket welcomeSocket = new ServerSocket(6789);

    while(true) {

    Socket connectionSocket = welcomeSocket.accept();

    BufferedReader inFromClient =

    new BufferedReader(new

    InputStreamReader(connectionSocket.getInputStream()));

    Createwelcoming socket

    at port 6789

    Wait, on welcomingsocket for contact

    by client

    Create inputstream, attached

    to socket

    Example: Java server (TCP) cont

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    95/107

    2: Application Layer 95

    Example: Java server (TCP), cont

    DataOutputStream outToClient =

    new DataOutputStream(connectionSocket.getOutputStream());

    clientSentence = inFromClient.readLine();

    capitalizedSentence = clientSentence.toUpperCase() + '\n';

    outToClient.writeBytes(capitalizedSentence);

    }

    }

    }

    Read in linefrom socket

    Create outputstream, attached

    to socket

    Write out lineto socket

    End of while loop,loop back and wait foranother client connection

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    96/107

    Socket programming with UDP

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    97/107

    2: Application Layer 97

    Socket programming with UDP

    UDP: no connection betweenclient and server

    no handshaking

    sender explicitly attachesIP address and port of

    destination to each packet server must extract IP

    address, port of senderfrom received packet

    UDP: transmitted data may bereceived out of order, orlost

    application viewpoint

    UDP provides unreliable transferof groups of bytes (datagrams)between client and server

    Client/server socket interaction: UDP

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    98/107

    2: Application Layer 98

    Client/server socket interaction: UDP

    close

    clientSocket

    Server (running on hostid)

    read reply fromclientSocket

    create socket,

    clientSocket =

    DatagramSocket()

    Client

    Create, address (hostid, port=x,send datagram request

    using clientSocket

    create socket,port=x, for

    incoming request:serverSocket =

    DatagramSocket()

    read request from

    serverSocket

    write reply to

    serverSocket

    specifying clienthost address,

    port number

    Example: Java client (UDP)

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    99/107

    2: Application Layer 99

    Example: Java client (UDP)

    sendPacket

    to network from network

    receivePacket

    inFromUser

    keyboard monitor

    Process

    clientSocket

    UDPpacket

    inputstream

    UDPpacket

    UDPsocket

    Output: sendspacket (TCP sentbyte stream)

    Input: receivespacket (TCPreceived bytestream)

    Client

    process

    client UDPsocket

    Example: Java client (UDP)

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    100/107

    2: Application Layer 100

    Example: Java client (UDP)

    import java.io.*;import java.net.*;

    class UDPClient {

    public static void main(String args[]) throws Exception

    {

    BufferedReader inFromUser =new BufferedReader(new InputStreamReader(System.in));

    DatagramSocket clientSocket = new DatagramSocket();

    InetAddress IPAddress = InetAddress.getByName("hostname");

    byte[] sendData = new byte[1024];

    byte[] receiveData = new byte[1024];

    String sentence = inFromUser.readLine();

    sendData = sentence.getBytes();

    Create

    input streamCreate

    client socket

    Translatehostname to IP

    address using DNS

    Example: Java client (UDP) cont

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    101/107

    2: Application Layer 101

    Example: Java client (UDP), cont.

    DatagramPacket sendPacket =

    new DatagramPacket(sendData, sendData.length, IPAddress, 9876);

    clientSocket.send(sendPacket);

    DatagramPacket receivePacket =

    new DatagramPacket(receiveData, receiveData.length);

    clientSocket.receive(receivePacket);

    String modifiedSentence =

    new String(receivePacket.getData());

    System.out.println("FROM SERVER:" + modifiedSentence);

    clientSocket.close();

    }

    }

    Create datagramwith data-to-send,

    length, IP addr, port

    Send datagramto server

    Read datagramfrom server

    Example: Java server (UDP)

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    102/107

    2: Application Layer 102

    Example: Java server (UDP)

    import java.io.*;import java.net.*;

    class UDPServer {

    public static void main(String args[]) throws Exception

    {

    DatagramSocket serverSocket = new DatagramSocket(9876);

    byte[] receiveData = new byte[1024];

    byte[] sendData = new byte[1024];

    while(true)

    {

    DatagramPacket receivePacket =

    new DatagramPacket(receiveData, receiveData.length);

    serverSocket.receive(receivePacket);

    Create

    datagram socketat port 9876

    Create space forreceived datagram

    Receivedatagram

    Example: Java server (UDP) cont

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    103/107

    2: Application Layer 103

    Example: Java server (UDP), cont

    String sentence = new String(receivePacket.getData());

    InetAddress IPAddress = receivePacket.getAddress();

    int port = receivePacket.getPort();

    String capitalizedSentence = sentence.toUpperCase();

    sendData = capitalizedSentence.getBytes();

    DatagramPacket sendPacket =

    new DatagramPacket(sendData, sendData.length, IPAddress,

    port);

    serverSocket.send(sendPacket);}

    }

    }

    Get IP addrport #, of

    sender

    Write out

    datagramto socket

    End of while loop,loop back and wait foranother datagram

    Create datagramto send to client

    Chapter 2: Application layer

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    104/107

    2: Application Layer 104

    Chapter 2: Application layer

    2.1 Principles ofnetwork applications app architectures

    app requirements

    2.2 Web and HTTP 2.4 Electronic Mail

    SMTP, POP3, IMAP

    2.5 DNS

    2.6 P2P file sharing 2.7 Socket programming

    with TCP

    2.8 Socket programming

    with UDP 2.9 Building a Web

    server

    Building a simple Web server

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    105/107

    2: Application Layer 105

    Building a simple Web server

    handles one HTTPrequest

    accepts the request

    parses header

    obtains requested filefrom servers filesystem

    creates HTTP response

    message: header lines + file

    sends response to client

    after creating server,you can request fileusing a browser (eg IEexplorer)

    see text for details

    Chapter 2: Summary

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    106/107

    2: Application Layer 106

    Application architectures client-server

    P2P

    hybrid

    application servicerequirements: reliability, bandwidth,

    delay

    Internet transportservice model connection-oriented,

    reliable: TCP

    unreliable, datagrams: UDP

    Our study of network apps now complete!

    specific protocols: HTTP

    FTP

    SMTP, POP, IMAP

    DNS socket programming

    Chapter 2: Summary

  • 8/13/2019 computernetworkingkurosech2-091011001808-phpapp02

    107/107

    Chapter 2: Summary

    typical request/replymessage exchange: client requests info or

    service server responds with

    data, status code

    message formats:

    headers: fields givinginfo about data

    data: info beingcommunicated

    Most importantly: learned aboutprotocols

    control vs. data msgs

    in-band, out-of-band

    centralized vs. decentralized stateless vs. stateful

    reliable vs. unreliable msgtransfer

    complexity at network

    edge


Recommended