Chapter2 4th Ed Oct 1 2007

  • Upload
    sunigm

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    1/115

    2: Application Layer 1

    Chapter 2

    Application Layer

    Computer Networking:A Top Down Approach,4thedition.Jim Kurose, Keith RossAddison-Wesley, July2007.

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

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

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    2/115

    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 applications

    2.7 Socket programmingwith TCP

    2.8 Socket programmingwith UDP

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    3/115

    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/12/2019 Chapter2 4th Ed Oct 1 2007

    4/115

    2: Application Layer 4

    Some network apps

    e-mail

    web

    instant messaging

    remote login P2P file sharing

    multi-user networkgames

    streaming stored videoclips

    voice over IP

    real-time videoconferencing

    grid computing

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    5/115

    2: Application Layer 5

    Creating a network app

    write programs that run on (different) end

    systems

    communicate over network

    e.g., web server softwarecommunicates with browsersoftware

    No need to write softwarefor network-core devices Network-core devices do

    not run user applications

    applications on end systemsallows for rapid appdevelopment, propagation

    applicationtransportnetworkdata link

    physical

    applicationtransportnetwork

    data linkphysical

    applicationtransportnetworkdata linkphysical

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    6/115

    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 applications

    2.7 Socket programmingwith TCP

    2.8 Socket programmingwith UDP

    2.9 Building a Webserver

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    7/115

    2: Application Layer 7

    Application architectures

    Client-server

    Peer-to-peer (P2P)

    Hybrid of client-server and P2P

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    8/115

    2: Application Layer 8

    Client-server architecture

    server: always-on host

    permanent IP address

    server farms forscaling

    clients: communicate with server

    may be intermittently

    connected may have dynamic IP

    addresses

    do not communicatedirectly with each other

    client/server

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    9/115

    2: Application Layer 9

    Pure P2P architecture

    noalways-on server

    arbitrary end systemsdirectly communicate

    peers are intermittentlyconnected and change IPaddresses

    Highly scalable butdifficult to manage

    peer-peer

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    10/115

    2: Application Layer 10

    Hybrid of client-server and P2P

    Skype voice-over-IP P2P application centralized server: finding address of remote

    party: client-client connection: direct (not through

    server)Instant messaging

    chatting between two users is P2P centralized service: client presence

    detection/location user registers its IP address with central

    server when it comes online user contacts central server to find IP

    addresses of buddies

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    11/115

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    12/115

    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/12/2019 Chapter2 4th Ed Oct 1 2007

    13/115

    2: Application Layer 13

    Addressing processes

    to receive messages,process must haveidentifier

    host device has unique32-bit IP address

    Q:does IP address ofhost suffice foridentifying the process?

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    14/115

    2: Application Layer 14

    Addressing processes

    to receive messages,process must haveidentifier

    host device has unique32-bit IP address

    Q:does IP address ofhost on which processruns suffice foridentifying the

    process? A:No, many

    processes can berunning on same host

    identifierincludes bothIP addressand portnumbersassociated withprocess on host.

    Example port numbers: HTTP server: 80

    Mail server: 25

    to send HTTP messageto gaia.cs.umass.edu web

    server: IP address:128.119.245.12

    Port number:80

    more shortly

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    15/115

    2: Application Layer 15

    App-layer protocol defines

    Types of messagesexchanged, 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

    Public-domain protocols:

    defined in RFCs

    allows for

    interoperability e.g., HTTP, SMTP

    Proprietary protocols:

    e.g., Skype

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    16/115

    2: Application Layer 16

    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) require

    100% reliable datatransferTiming some apps (e.g.,

    Internet telephony,interactive games)require low delay to beeffective

    Throughput

    some apps (e.g.,multimedia) requireminimum amount ofthroughput to be

    effective other apps (elastic apps)

    make use of whateverthroughput they get

    Security Encryption, data

    integrity,

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    17/115

    2: Application Layer 17

    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

    Throughput

    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/12/2019 Chapter2 4th Ed Oct 1 2007

    18/115

    2: Application Layer 18

    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 throughputguarantees, security

    UDP service: unreliable data transfer

    between sending andreceiving process

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

    security

    Q:why bother? Why isthere a UDP?

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    19/115

    2: Application Layer 19

    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]

    HTTP (eg Youtube),

    RTP [RFC 1889]

    SIP, RTP, proprietary

    (e.g., Skype)

    Underlyingtransport protocol

    TCP

    TCP

    TCPTCP

    TCP or UDP

    typically UDP

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    20/115

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    21/115

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    22/115

    2: Application Layer 22

    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

    PC runningExplorer

    Serverrunning

    Apache Web

    server

    Mac runningNavigator

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    23/115

    2: Application Layer 23

    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/12/2019 Chapter2 4th Ed Oct 1 2007

    24/115

    2: Application Layer 24

    HTTP connections

    Nonpersistent HTTP

    At most one object issent over a TCPconnection.

    Persistent HTTP

    Multiple objects canbe sent over singleTCP connectionbetween client andserver.

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    25/115

    2: Application Layer 25

    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/12/2019 Chapter2 4th Ed Oct 1 2007

    26/115

    2: Application Layer 26

    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/12/2019 Chapter2 4th Ed Oct 1 2007

    27/115

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    28/115

    2: Application Layer 28

    Persistent HTTP

    Nonpersistent HTTP issues: requires 2 RTTs per object

    OS overhead for eachTCPconnection

    browsers often open parallel

    TCP connections to fetchreferenced objects

    Persistent HTTP server leaves connection

    open after sendingresponse

    subsequent HTTP messages

    between sameclient/server sent overopen connection

    client sends requests assoon as it encounters a

    referenced object as little as one RTT for all

    the referenced objects

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    29/115

    2: Application Layer 29

    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/12/2019 Chapter2 4th Ed Oct 1 2007

    30/115

    2: Application Layer 30

    HTTP request message: general format

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    31/115

    2: Application Layer 31

    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/12/2019 Chapter2 4th Ed Oct 1 2007

    32/115

    2: Application Layer 32

    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/12/2019 Chapter2 4th Ed Oct 1 2007

    33/115

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    34/115

    2: Application Layer 34

    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/12/2019 Chapter2 4th Ed Oct 1 2007

    35/115

    2: Application Layer 35

    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/12/2019 Chapter2 4th Ed Oct 1 2007

    36/115

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    37/115

    2: Application Layer 37

    Cookies: keeping state (cont.)

    client

    server

    usual http response msg

    usual http response msg

    cookie file

    one week later:

    usual http request msgcookie: 1678 cookie-

    specificaction

    access

    ebay 8734usual http request msg Amazon server

    creates ID1678 for usercreate

    entry

    usual http responseSet-cookie: 1678

    ebay 8734amazon 1678

    usual http request msgcookie: 1678 cookie-

    spectificaction

    accessebay 8734

    amazon 1678

    backenddatabase

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    38/115

    2: Application Layer 38

    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

    aside

    How to keep state:

    protocol endpoints: maintain stateat sender/receiver over multipletransactions

    cookies: http messages carry state

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    39/115

    2: Application Layer 39

    Web caches (proxy server)

    user sets browser:Web accesses viacache

    browser sends allHTTP requests tocache object in cache: cache

    returns object else cache requests

    object from originserver, then returnsobject to client

    Goal:satisfy client request without involving origin server

    client

    Proxy

    server

    clientoriginserver

    originserver

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    40/115

    2: Application Layer 40

    More about Web caching

    cache acts as bothclient and server

    typically cache isinstalled by ISP

    (university, company,residential ISP)

    Why Web caching?

    reduce response timefor client request

    reduce traffic on aninstitutions accesslink.

    Internet dense withcaches: enables poor

    content providers toeffectively delivercontent (but so doesP2P file sharing)

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    41/115

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    42/115

    2: Application Layer 42

    Caching example (cont)

    possible solution increase bandwidth of access

    link to, say, 10 Mbps

    consequence 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/12/2019 Chapter2 4th Ed Oct 1 2007

    43/115

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    44/115

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    45/115

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    46/115

    2: Application Layer 46

    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 filesystem

    remote file

    system

    userat host

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    47/115

    2: Application Layer 47

    FTP: separate control, data connections

    FTP client contacts FTP serverat port 21, TCP is transportprotocol

    client authorized over controlconnection

    client browses remotedirectory by sending commandsover control connection.

    when server receives file

    transfer command, serveropens 2ndTCP connection (forfile) to client

    after transferring one file,server closes data connection.

    FTPclient

    FTPserver

    TCP control connectionport 21

    TCP data connectionport 20

    server opens another TCPdata connection to transferanother file.

    control connection: out of

    band FTP server maintains state:

    current directory, earlierauthentication

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    48/115

    2: Application Layer 48

    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/12/2019 Chapter2 4th Ed Oct 1 2007

    49/115

    2: Application Layer 49

    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 applications

    2.7 Socket programmingwith TCP

    2.8 Socket programmingwith UDP

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    50/115

    2: Application Layer 50

    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,

    Mozilla Thunderbird

    outgoing, incoming messagesstored on server

    user mailbox

    outgoingmessage queue

    mail

    server

    useragent

    useragent

    useragent

    mailserver

    useragent

    useragent

    mailserver

    useragent

    SMTP

    SMTP

    SMTP

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    51/115

    2: Application Layer 51

    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/12/2019 Chapter2 4th Ed Oct 1 2007

    52/115

    2: Application Layer 52

    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/12/2019 Chapter2 4th Ed Oct 1 2007

    53/115

    2: Application Layer 53

    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/12/2019 Chapter2 4th Ed Oct 1 2007

    54/115

    2: Application Layer 54

    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/12/2019 Chapter2 4th Ed Oct 1 2007

    55/115

    2: Application Layer 55

    Try SMTP interaction for yourself:

    telnet servername 25 see 220 reply from server

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

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

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    56/115

    2: Application Layer 56

    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/12/2019 Chapter2 4th Ed Oct 1 2007

    57/115

    2: Application Layer 57

    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/12/2019 Chapter2 4th Ed Oct 1 2007

    58/115

    2: Application Layer 58

    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/12/2019 Chapter2 4th Ed Oct 1 2007

    59/115

    2: Application Layer 59

    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: gmail, Hotmail, Yahoo! Mail, etc.

    useragent

    senders mailserver

    useragent

    SMTP SMTP accessprotocol

    receivers mailserver

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    60/115

    2: Application Layer 60

    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/12/2019 Chapter2 4th Ed Oct 1 2007

    61/115

    2: Application Layer 61

    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/12/2019 Chapter2 4th Ed Oct 1 2007

    62/115

    2: Application Layer 62

    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 applications 2.7 Socket programming

    with TCP

    2.8 Socket programmingwith UDP

    2.9 Building a Webserver

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    63/115

    2: Application Layer 63

    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/12/2019 Chapter2 4th Ed Oct 1 2007

    64/115

    2: Application Layer 64

    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, alias names

    mail server aliasing

    load distribution replicated Web

    servers: set of IPaddresses for onecanonical name

    Distributed Hierarchical Database

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    65/115

    2: Application Layer 65

    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/12/2019 Chapter2 4th Ed Oct 1 2007

    66/115

    2: Application Layer 66

    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 36 other locations)

    i Autonomica, Stockholm (plus

    28 other locations)

    k RIPE London (also 16 other locations)

    m WIDE Tokyo (also Seoul,

    Paris, SF)

    a Verisign, Dulles, VA

    c Cogent, Herndon, VA (also LA)

    d U Maryland College Park, MD

    g US DoD Vienna, VA

    h ARL Aberdeen, MDj Verisign, ( 21 locations)

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    67/115

    2: Application Layer 67

    TLD and Authoritative Servers

    Top-level domain (TLD) servers: responsible for com, org, net, edu, etc, and all

    top-level country domains uk, fr, ca, jp. Network Solutions maintains servers for com TLD

    Educause for edu TLDAuthoritative DNS servers:

    organizations DNS servers, providingauthoritative hostname to IP mappings for

    organizations servers (e.g., Web, mail). can be maintained by organization or service

    provider

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    68/115

    2: Application Layer 68

    Local Name Server

    does not strictly belong to hierarchy each ISP (residential ISP, company,

    university) has one.

    also called default name serverwhen host makes DNS query, query is sent

    to its local DNS server acts as proxy, forwards query into hierarchy

    DNDNS name

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    69/115

    2: Application Layer 69

    requesting hostcis.poly.edu

    gaia.cs.umass.edu

    root DNS server

    local DNS serverdns.poly.edu

    1

    2 3

    4

    5

    6

    authoritative DNS server

    dns.cs.umass.edu

    78

    TLD DNS server

    DNS nameresolution example

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

    iterated query: contacted server

    replies with name ofserver to contact

    I dont know this

    name, but ask thisserver

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    70/115

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    71/115

    2: Application Layer 71

    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/12/2019 Chapter2 4th Ed Oct 1 2007

    72/115

    2: Application Layer 72

    DNS records

    DNS:distributed db storing resource records (RR)

    Type=NS nameis domain (e.g.

    foo.com) valueis hostname 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 somecanonical (the real) name

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

    valueis canonical name

    Type=MX valueis name of mailserver

    associated with name

    l

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    73/115

    2: Application Layer 73

    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

    DN l

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    74/115

    2: Application Layer 74

    DNS protocol, messages

    Name, type fieldsfor a query

    RRs in response

    to query

    records forauthoritative servers

    additional helpfulinfo that may be used

    I i d i DNS

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    75/115

    2: Application Layer 75

    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 forwww.networkuptopia.com; Type MX record fornetworkutopia.com

    How do people get IP address of your Web site?

    Ch t 2 A li ti l

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    76/115

    2: Application Layer 76

    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 applications 2.7 Socket programming

    with TCP

    2.8 Socket programming

    with UDP

    P P2P hit t

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    77/115

    2: Application Layer 77

    Pure P2P architecture

    noalways-on server arbitrary end systems

    directly communicate

    peers are intermittently

    connected and change IPaddresses

    Three topics: File distribution

    Searching for information

    Case Study: Skype

    peer-peer

    Fil Di t ib ti S Cli t P2P

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    78/115

    2: Application Layer 78

    File Distribution: Server-Client vs P2P

    Question: How much time to distribute filefrom one server to N peers?

    us

    u2d1d2

    u1

    uN

    dN

    Server

    Network (withabundant bandwidth)

    File, size F

    us:server upload

    bandwidth

    ui

    :

    peer i uploadbandwidth

    di:peer i download

    bandwidth

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    79/115

    Fil di t ib ti ti P2P

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    80/115

    2: Application Layer 80

    File distribution time: P2P

    us

    u2d1 d2u1

    uN

    dN

    Server

    Network (withabundant bandwidth)

    F server must send one

    copy: F/ustime

    client i takes F/di timeto download

    NF bits must bedownloaded (aggregate) fastest possible upload rate: us+ Sui

    dP2P= max {F/us, F/min(di), NF/(us+ Sui)}i

    S li t P2P l

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    81/115

    2: Application Layer 81

    0

    0.5

    1

    1.5

    2

    2.5

    3

    3.5

    0 5 10 15 20 25 30 35

    N

    MinimumD

    istributionTime P2P

    Client-Server

    Server-client vs. P2P: example

    Client upload rate = u, F/u = 1 hour, us= 10u, dmin us

    Fil di t ib ti BitT t

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    82/115

    2: Application Layer 82

    File distribution: BitTorrent

    tracker:tracks peersparticipating in torrent

    torrent:group ofpeers exchangingchunks of a file

    obtain listof peers

    trading

    chunks

    peer

    P2P file distribution

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    83/115

    2: Application Layer 83

    BitTorrent (1)

    file divided into 256KB chunks.

    peer joining torrent:

    has no chunks, but will accumulate them over time registers with tracker to get list of peers,

    connects to subset of peers (neighbors)

    while downloading, peer uploads chunks to other

    peers. peers may come and go

    once peer has entire file, it may (selfishly) leave or(altruistically) remain

    BitT t (2)

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    84/115

    2: Application Layer 84

    BitTorrent (2)

    Pulling Chunks at any given time,

    different peers havedifferent subsets of

    file chunks periodically, a peer

    (Alice) asks eachneighbor for list ofchunks that they have.

    Alice sends requestsfor her missing chunks

    rarest first

    Sending Chunks: tit-for-tat

    Alice sends chunks to fourneighbors currentlysending her chunks at thehighest rate

    re-evaluate top 4 every

    10 secs every 30 secs: randomly

    select another peer,starts sending chunks

    newly chosen peer mayjoin top 4

    optimistically unchoke

    BitT t Tit f t t

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    85/115

    2: Application Layer 85

    BitTorrent: Tit-for-tat(1) Alice optimistically unchokes Bob

    (2) Alice becomes one of Bobs top-four providers; Bob reciprocates(3) Bob becomes one of Alices top-four providers

    With higher upload rate,can find better tradingpartners & get file faster!

    P2P: searching for information

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    86/115

    2: Application Layer 86

    P2P searching for information

    File sharing (eg e-mule)

    Index dynamicallytracks the locations of

    files that peers share. Peers need to tell

    index what they have.

    Peers search index to

    determine where filescan be found

    Instant messaging

    Index maps usernames to locations.

    When user starts IMapplication, it needs toinform index of itslocation

    Peers search index todetermine IP addressof user.

    Index in P2P system: maps information to peer location

    (location = IP address & port number).

    P2P: centralized index

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    87/115

    2: Application Layer 87

    P2P: centralized index

    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: problems with centralized directory

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    88/115

    2: Application Layer 88

    P2P: problems with centralized directory

    single point of failure performance bottleneck

    copyright infringement:target of lawsuit is

    obvious

    file transfer isdecentralized, butlocating content ishighly centralized

    Query flooding

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    89/115

    2: Application Layer 89

    Query flooding

    fully distributed no central server

    used by Gnutella Each peer indexes the

    files it makes availablefor sharing (and noother files)

    overlay network: graph edge between peer X

    and Y if theres a TCPconnection

    all active peers andedges form overlay net

    edge: virtual (notphysical) link

    given peer typicallyconnected with < 10overlay neighbors

    Query flooding

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    90/115

    2: Application Layer 90

    Query flood ng

    Query

    QueryHit

    Query

    QueryHit

    File transfer:

    HTTPQuery message

    sent over existing TCPconnections

    peers forwardQuery message

    QueryHitsent overreversepath

    Scalability:

    limited scopeflooding

    Gnutella: Peer joining

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    91/115

    2: Application Layer 91

    Gnutella: Peer joining

    1. joining peer Alice must find another peer inGnutella network: use list of candidate peers

    2. Alice sequentially attempts TCP connections withcandidate peers until connection setup with Bob

    3. Flooding:Alice sends Ping message to Bob; Bobforwards Ping message to his overlay neighbors(who then forward to their neighbors.) peers receiving Ping message respond to Alice

    with Pong message

    4. Alice receives many Pong messages, and can thensetup additional TCP connections

    Peer leaving: see homework problem!

    Hierarchical Overlay

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    92/115

    2: Application Layer 92

    Hierarchical Overlay

    between centralizedindex, query floodingapproaches

    each peer is either a

    super nodeor assigned toa super node TCP connection between

    peer and its super node.

    TCP connections betweensome pairs of super nodes.

    Super node tracks contentin its children

    ordinary peer

    group-leader peer

    neighoring relationships

    in overlay network

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    93/115

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    94/115

    Chapter 2: Application layer

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    95/115

    2: Application Layer 95

    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 applications 2.7 Socket programming

    with TCP

    2.8 Socket programming

    with UDP

    Socket programming

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    96/115

    2: Application Layer 96

    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 which

    application process canboth send and

    receivemessages to/fromanother applicationprocess

    socket

    Goal:learn how to build client/server application that

    communicate using sockets

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    97/115

    Socket programming with TCP

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    98/115

    2: Application Layer 98

    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

    Client/server socket interaction: TCP

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    99/115

    2: Application Layer 99

    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

    Stream jargon

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    100/115

    2: Application Layer 100

    outToServer

    to network from network

    inFromServer

    inFromUser

    keyboard monitor

    Process

    clientSocket

    input

    stream

    input

    stream

    output

    stream

    TCP

    socket

    Client

    process

    client TCPsocket

    Stream jargon

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

    An input streamisattached to some input

    source for the process,e.g., keyboard or socket.

    An output streamisattached to an outputsource, e.g., monitor or

    socket.

    Socket programming with TCP

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    101/115

    2: Application Layer 101

    Socket programming with TCP

    Example client-server app:1) client reads line fromstandard 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)

    Example: Java client (TCP)

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    102/115

    2: Application Layer 102

    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/12/2019 Chapter2 4th Ed Oct 1 2007

    103/115

    2: Application Layer 103

    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

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    104/115

    Example: Java server (TCP) cont

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    105/115

    2: Application Layer 105

    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

    Chapter 2: Application layer

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    106/115

    2: Application Layer 106

    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 applications 2.7 Socket programming

    with TCP

    2.8 Socket programming

    with UDP

    Socket programming with UDP

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    107/115

    2: Application Layer 107

    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/12/2019 Chapter2 4th Ed Oct 1 2007

    108/115

    2: Application Layer 108

    Client/server socket interaction: UDP

    Server (running on hostid)

    close

    clientSocket

    read datagram from

    clientSocket

    create socket,

    clientSocket =

    DatagramSocket()

    Client

    Create datagram with server IP andport=x; send datagram via

    clientSocket

    create socket,

    port= x.

    serverSocket =

    DatagramSocket()

    read datagram from

    serverSocket

    write reply to

    serverSocket

    specifyingclient address,

    port number

    Example: Java client (UDP)

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    109/115

    2: Application Layer 109

    Example: Java client (UDP)

    sendPacket

    to network from network

    receivePacket

    inFromUser

    keyboard monito r

    Process

    clientSocket

    UDPpacket

    inputstream

    UDPpacket

    UDPsocket

    Output: sendspacket (recall

    that TCP sentbyte stream)

    Input: receivespacket (recall

    thatTCP receivedbyte stream)

    Client

    process

    client UDPsocket

    Example: Java client (UDP)

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    110/115

    2: Application Layer 110

    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/12/2019 Chapter2 4th Ed Oct 1 2007

    111/115

    2: Application Layer 111

    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/12/2019 Chapter2 4th Ed Oct 1 2007

    112/115

    2: Application Layer 112

    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);

    Createdatagram socket

    at port 9876

    Create space forreceived datagram

    Receivedatagram

    Example: Java server (UDP), cont

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    113/115

    2: Application Layer 113

    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: Summary

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    114/115

    2: Application Layer 114

    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 P2P: BitTorrent, Skype

    socket programming

    Chapter 2: Summary

  • 8/12/2019 Chapter2 4th Ed Oct 1 2007

    115/115

    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 beingmm ni t d

    Most importantly: learned aboutprotocolsImportant themes:

    control vs. data msgs

    in-band, out-of-band centralized vs.

    decentralized

    stateless vs. stateful

    reliable vs. unreliablemsg transfer

    complexity at network