Date post: | 04-Jun-2018 |
Category: |
Documents |
Upload: | mailstonaik |
View: | 219 times |
Download: | 0 times |
of 107
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
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
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
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
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
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
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