Application Layer: Computer Networking: A Top Down Approach
Application Layer: Computer Networking: A Top Down Approach
Chapter 2: outline
2.1 principles of network applications 2.2 Web and HTTP 2.3 FTP 2.4 electronic mail
SMTP, POP3, IMAP
2.6 P2P applications 2.7 socket programming with UDP and TCP
2.5 DNS
e-mail web text messaging remote login P2P file sharing multi-user network games streaming stored video (YouTube, Hulu, Netflix)
voice over IP (e.g., Skype) real-time video conferencing social networking search
Application architectures
possible structure of applications: client-server peer-to-peer (P2P)
Client-server architecture
server:
clients:
client/server
communicate with server may be intermittently connected may have dynamic IP addresses do not communicate directly with each other
Application Layer 2-7
P2P architecture
no always-on server arbitrary end systems directly communicate peers request service from other peers, provide service in return to other peers self scalability new peers bring new service capacity, as well as new service demands peers are intermittently connected and change IP addresses complex management
peer-peer
Processes communicating
process: program running within a host
within same host, two processes communicate using inter-process communication (defined by OS) processes in different hosts communicate by exchanging messages
aside: applications with P2P architectures have client processes & server processes
Sockets
process sends/receives messages to/from its socket socket analogous to door sending process shoves message out door sending process relies on transport infrastructure on other side of door to deliver message to socket at receiving process
application
process
transport network link physical
socket
application
process
transport network
Internet
link
physical
controlled by OS
Addressing processes
to receive messages, process must have identifier host device has unique 32-bit IP address Q: does IP address of host on which process runs suffice for identifying the A: no, many process? processes can be running on same host
identifier includes both IP address and port numbers associated with process on host. example port numbers:
HTTP server: 80 mail server: 25
more shortly
types of messages exchanged, e.g., request, response message syntax: what fields in messages & how fields are delineated message semantics meaning of information in fields rules for when and how processes send & respond to messages
open protocols: defined in RFCs allows for interoperability e.g., HTTP, SMTP proprietary protocols: e.g., Skype
throughput some apps (e.g., multimedia) require minimum amount of throughput to be effective other apps (elastic apps) make use of whatever throughput they get security encryption, data integrity,
Application Layer 2-13
elastic no elastic no elastic no audio: 5kbps-1Mbps yes, 100s video:10kbps-5Mbps msec same as above few kbps up yes, few secs elastic yes, 100s msec yes and no
UDP service:
reliable transport between sending and receiving process flow control: sender wont overwhelm receiver congestion control: throttle sender when network overloaded does not provide: timing, minimum throughput guarantee, security connection-oriented: setup required between client and server processes
unreliable data transfer between sending and receiving process does not provide: reliability, flow control, congestion control, timing, throughput guarantee, security, orconnection setup,
TCP or UDP
Securing TCP
TCP & UDP no encryption cleartext passwds sent into socket traverse Internet in cleartext SSL provides encrypted TCP connection data integrity end-point authentication SSL is at app layer Apps use SSL libraries, which talk to TCP SSL socket API cleartext passwds sent into socket traverse Internet encrypted See Chapter 7
Chapter 2: outline
2.1 principles of network applications
app architectures app requirements
2.6 P2P applications 2.7 socket programming with UDP and TCP
2.5 DNS
Application Layer 2-18
web page consists of objects object can be HTML file, JPEG image, Java applet, audio file, web page consists of base HTML-file which includes several referenced objects each object is addressable by a URL, e.g.,
www.someschool.edu/someDept/pic.gif host name path name
HTTP overview
HTTP: hypertext transfer protocol
Webs application layer protocol client/server model client: browser that requests, receives, (using HTTP protocol) and displays Web objects server: Web server sends (using HTTP protocol) objects in response to requests
client initiates TCP connection (creates socket) to server, port 80 server accepts TCP connection from client HTTP messages (application-layer protocol messages) exchanged between browser (HTTP client) and Web server (HTTP server) TCP connection closed
HTTP is stateless
server maintains no information about past client requests aside protocols that maintain state are complex!
past history (state) must be maintained if server/client crashes, their views of state may be inconsistent, must be reconciled
Application Layer 2-21
HTTP connections
non-persistent HTTP at most one object sent over TCP connection connection then closed downloading multiple objects required multiple connections persistent HTTP multiple objects can be sent over single TCP connection between client, server
Non-persistent HTTP
suppose user enters URL:
www.someSchool.edu/someDepartment/home.index
(contains text, references to 10 jpeg images)
1a. HTTP client initiates TCP connection to HTTP server (process) at www.someSchool.edu on port 80 2. HTTP client sends HTTP request message (containing URL) into TCP connection socket. Message indicates that client wants object someDepartment/home.inde x time
1b. HTTP server at host www.someSchool.edu waiting for TCP connection at port 80. accepts connection, notifying client 3. HTTP server receives request message, forms response message containing requested object, and sends message into its socket
Application Layer 2-23
time
RTT
request file RTT file received time time to transmit file
time
Persistent HTTP
non-persistent HTTP issues:
persistent HTTP:
requires 2 RTTs per object OS overhead for each TCP connection browsers often open parallel TCP connections to fetch referenced objects
server leaves connection open after sending response subsequent HTTP messages between same client/server sent over open connection client sends requests as soon as it encounters a referenced object as little as one RTT for all the referenced objects
Application Layer 2-26
request line (GET, POST, HEAD commands) header lines carriage return, line feed at start of line indicates end of header lines
GET /index.html HTTP/1.1\r\n Host: www-net.cs.umass.edu\r\n User-Agent: Firefox/3.6.10\r\n Accept: text/html,application/xhtml+xml\r\n Accept-Language: en-us,en;q=0.5\r\n Accept-Encoding: gzip,deflate\r\n Accept-Charset: ISO-8859-1,utf-8;q=0.7\r\n Keep-Alive: 115\r\n Connection: keep-alive\r\n \r\n
~ ~
body
web page often includes form input input is uploaded to server in entity body
URL method:
www.somesite.com/animalsearch?monkeys&banana
Method types
HTTP/1.0:
HTTP/1.1:
GET POST HEAD asks server to leave requested object out of response
GET, POST, HEAD PUT uploads file in entity body to path specified in URL field DELETE deletes file specified in the URL field
header lines
200 OK
request succeeded, requested object later in this msg
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
server
usual http request msg usual http response
cookie file
ebay 8734 amazon 1678
set-cookie: 1678
usual http request msg
Amazon server creates ID 1678 for user create backend entry database
cookie: 1678
usual http response msg one week later:
ebay 8734 amazon 1678
cookiespecific action
access
access
cookie: 1678
usual http response msg
cookiespecific action
Application Layer 2-35
Cookies (continued)
what cookies can be used for:
aside cookies and privacy: cookies permit sites to learn a lot about you you may supply name and e-mail to sites
protocol endpoints: maintain state at sender/receiver over multiple transactions cookies: http messages carry state
Application Layer 2-36
accesses via cache browser sends all HTTP requests to cache object in cache: cache returns object else cache requests object from origin server, then returns object to client
proxy server
client
origin server
client
origin server
why Web caching? reduce response time for client request reduce traffic on an institutions access link Internet dense with caches: enables poor content providers to effectively deliver content (so too does P2P file sharing)
Application Layer 2-38
Caching example:
assumptions:
avg object size: 100K bits avg request rate from browsers to origin servers:15/sec avg data rate to browsers: 1.50 Mbps RTT from institutional router to any origin server: 2 sec access link rate: 1.54 Mbps
problem!
origin servers
public Internet
consequences:
LAN utilization: 15% access link utilization = 99% total delay = Internet delay + access delay + LAN delay = 2 sec + minutes + usecs
1 Gbps LAN
consequences:
avg object size: 100K bits avg request rate from browsers to origin servers:15/sec avg data rate to browsers: 1.50 Mbps RTT from institutional router to any origin server: 2 sec 154 access link rate: 1.54 Mbps Mbps
institutional network
origin servers
public Internet
LAN utilization: 15% 9.9% access link utilization = 99% total delay = Internet delay + access delay + LAN delay = 2 sec + minutes msecs + usecs
1 Gbps LAN
avg object size: 100K bits avg request rate from browsers to origin servers:15/sec avg data rate to browsers: 1.50 Mbps RTT from institutional router to any origin server: 2 sec access link rate: 1.54 Mbps
LAN utilization: 15% ? access link utilization = 100% ? total delay = Internet delay + access How to delay delay + LANcompute link utilization, + usecs = 2 sec + minutes delay?
institutional network
origin servers
public Internet
consequences:
1 Gbps LAN
origin servers
public Internet
40% requests satisfied at cache, 60% link utilization: accessrequests satisfied at origin
60% of requests use access link
total
delay
= 0.6 * (delay from origin servers) +0.4 * (delay when satisfied at cache) = 0.6 (2.01) + 0.4 (~msecs) = ~ 1.2 secs less than with 154 Mbps link (and cheaper too!)
1 Gbps LAN
Conditional GET
client
server
HTTP response
HTTP/1.0 304 Not Modified
HTTP response
HTTP/1.0 200 OK
<data>
Application Layer 2-43
Chapter 2: outline
2.1 principles of network applications
app architectures app requirements
2.6 P2P applications 2.7 socket programming with UDP and TCP
2.5 DNS
Application Layer 2-44
file transfer
FTP client FTP server remote file system
FTP client contacts FTP server at port 21, using TCP client authorized over control connection client browses remote directory, sends commands over control connection when server receives file transfer command, server opens 2nd TCP data connection (for file) to client after transferring one file, server closes data connection
FTP client
FTP server
server opens another TCP data connection to transfer another file control connection: out of band FTP server maintains state: current directory, earlier authentication
Application Layer 2-46
sent as ASCII text over control channel USER username PASS password LIST return list of file in current directory RETR filename retrieves (gets) file STOR filename stores (puts) file onto remote host
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
Application Layer 2-47
Chapter 2: outline
2.1 principles of network applications
app architectures app requirements
2.6 P2P applications 2.7 socket programming with UDP and TCP
2.5 DNS
Application Layer 2-48
Electronic mail
Three major components:
outgoing message queue user mailbox user agent mail server user agent
SMTP
mail server
user agent
SMTP
User Agent
SMTP
mail server user agent user agent
a.k.a. mail reader composing, editing, reading mail messages e.g., Outlook, Thunderbird, iPhone mail client outgoing, incoming
user agent
mailbox contains incoming messages for user message queue of outgoing (to be sent) mail messages SMTP protocol between mail servers to send email messages client: sending mail server server: receiving mail server
SMTP
mail server
user agent
SMTP
SMTP
mail server user agent user agent user agent
uses TCP to reliably transfer email message from client to server, port 25 direct transfer: sending server to receiving server three phases of transfer
handshaking (greeting) transfer of messages closure
4) SMTP client sends Alices message over the TCP connection 5) Bobs mail server places the message in Bobs mailbox 6) Bob invokes his user agent to read message
user agent
telnet servername 25 see 220 reply from server enter HELO, MAIL FROM, RCPT TO, DATA, QUIT commands
above lets you send email without using email client (reader)
SMTP uses persistent connections SMTP requires message (header & body) to be in 7-bit ASCII SMTP server uses CRLF.CRLF to determine end of message
HTTP: pull SMTP: push both have ASCII command/response interaction, status codes HTTP: each object encapsulated in its own response msg SMTP: multiple objects sent in multipart msg
header
blank line
body
SMTP
SMTP
user agent
SMTP: delivery/storage to receivers server mail access protocol: retrieval from server
POP: Post Office Protocol [RFC 1939]: authorization, download IMAP: Internet Mail Access Protocol [RFC 1730]: more features, including manipulation of stored msgs on server HTTP: gmail, Hotmail, Yahoo! Mail, etc.
Application Layer 2-57
POP3 protocol
authorization phase
client commands: user: declare username pass: password server responses +OK -ERR
S: C: S: C: S: C: S: S: S: C: S: S: C: C: S: S: C: C: S:
+OK POP3 server ready user bob +OK pass hungry +OK user successfully logged list 1 498 2 912 . retr 1 <message 1 contents> . dele 1 retr 2 <message 1 contents> . dele 2 quit +OK POP3 server signing off
on
transaction phase,
client:
list: list message numbers retr: retrieve message by number dele: delete quit
IMAP
previous example uses POP3 download and delete mode Bob cannot re-read e-mail if he changes client POP3 download-andkeep: copies of messages on different clients POP3 is stateless across sessions
keeps all messages in one place: at server allows user to organize messages in folders keeps user state across sessions: names of folders and mappings between message IDs and folder name
Chapter 2: outline
2.1 principles of network applications
app architectures app requirements
2.6 P2P applications 2.7 socket programming with UDP and TCP
2.5 DNS
Application Layer 2-60
distributed database implemented in hierarchy of many name servers application-layer protocol: hosts, name servers communicate to resolve names (address/name translation)
note: core Internet function, implemented as application-layer protocol complexity at networks edge
Application Layer 2-61
mail server aliasing load distribution replicated Web servers: many IP addresses correspond to one name
A: doesnt scale!
client queries root server to find com DNS server client queries .com DNS server to get amazon.com DNS server client queries amazon.com DNS server to get IP address for www.amazon.com
Application Layer 2-63
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
c. Cogent, Herndon, VA (5 other sites) d. U Maryland College Park, MD h. ARL Aberdeen, MD j. Verisign, Dulles VA (69 other sites ) k. RIPE London (17 other sites) i. Netnod, Stockholm (37 other sites) m. WIDE Tokyo (5 other sites)
e. NASA Mt View, CA f. Internet Software C. Palo Alto, CA (and 48 other sites) a. Verisign, Los Angeles CA (5 other sites) b. USC-ISI Marina del Rey, CA l. ICANN Los Angeles, CA (41 other sites) g. US DoD Columbus, OH (5 other sites)
does not strictly belong to hierarchy each ISP (residential ISP, company, university) has one
also called default name server
when host makes DNS query, query is sent to its local DNS server
has local cache of recent name-to-address translation pairs (but may be out of date!) acts as proxy, forwards query into hierarchy
3 4 5
iterated query:
contacted server replies with name of server to contact I dont know this name, but ask this server
requesting host
cis.poly.edu gaia.cs.umass.edu
Application Layer 2-67
puts burden of name resolution on contacted name server heavy load at upper levels of hierarchy?
8
authoritative DNS server dns.cs.umass.edu
requesting host
cis.poly.edu gaia.cs.umass.edu
Application Layer 2-68
DNS records
DNS: distributed db storing resource records (RR)
RR format: (name,
value, type, ttl)
type=A
name is hostname value is IP address
type=CNAME
name is alias name for some canonical (the real) name www.ibm.com is really
servereast.backup2.ibm.com
type=NS
name is domain (e.g., foo.com) value is hostname of authoritative name server for this domain
type=MX
value is name of mailserver associated with name
Application Layer 2-70
query and reply messages, both with same message format 2 bytes 2 bytes
identification # questions # authority RRs flags # answer RRs # additional RRs
msg header
identification: 16 bit # for query, reply to query uses same # flags: query or reply recursion desired recursion available reply is authoritative
questions (variable # of questions) answers (variable # of RRs) authority (variable # of RRs) additional info (variable # of RRs)
Application Layer 2-71
name, type fields for a query RRs in response to query records for authoritative servers additional helpful info that may be used
questions (variable # of questions) answers (variable # of RRs) authority (variable # of RRs) additional info (variable # of RRs)
Application Layer 2-72
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:
create authoritative server type A record for www.networkuptopia.com; type MX record for networkutopia.com
Attacking DNS
DDoS attacks Bombard root servers with traffic
Not successful to date Traffic Filtering Local DNS servers cache IPs of TLD servers, allowing root server bypass
DNS poisoning
Send bogus relies to DNS server, which caches
Exploit DNS for DDoS Send queries with spoofed source address: target IP Requires amplification Application Layer 2-74
Chapter 2: outline
2.1 principles of network applications
app architectures app requirements
2.6 P2P applications 2.7 socket programming with UDP and TCP
2.5 DNS
Application Layer 2-75
no always-on server arbitrary end systems directly communicate peers are intermittently connected and change IP addresses
file distribution (BitTorrent) Streaming (KanKan) VoIP (Skype)
examples:
file, size F
server
us
u1
d1
u2
d2
uN
dN
us di network
ui
> max{NF/us,,F/dmin}
increases linearly in N
Application Layer 2-78
us di network
ui
increases linearly in N but so does this, as each peer brings service capacity
Application Layer 2-79
10
15
20
25
30
35
N
Application Layer 2-80
Alice arrives obtains list of peers from tracker and begins exchanging file chunks with peers in torrent
Application Layer 2-81
peer joining torrent: has no chunks, but will accumulate them over time from other peers registers with tracker to get list of peers, connects to subset of peers (neighbors) while downloading, peer uploads chunks to other peers peer may change peers with whom it exchanges chunks churn: peers may come and go once peer has entire file, it may (selfishly) leave or (altruistically) remain in torrent
Application Layer 2-82
at any given time, different peers have different subsets of file chunks periodically, Alice asks each peer for list of chunks that they have Alice requests missing chunks from peers, rarest first
Alice sends chunks to those four peers currently sending her chunks at highest rate
other peers are choked by Alice (do not receive chunks from her) re-evaluate top 4 every10 secs
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
higher upload rate: find better trading partners, get file faster !
Application Layer 2-84
the (key, value) pairs over the (millions of peers) a peer queries DHT with key
DHT returns values that match the key
peers
Application 2-85
issue:
idea:
convert each key to an integer Assign integer to each peer put (key,value) pair in the peer that is closest to the key
Application 2-86
DHT identifiers
assign
require
assign key to the peer that has the closest ID. convention in lecture: closest is the immediate successor of the key. e.g., n=4; peers: 1,3,4,5,8,10,12,14;
key = 13, then successor peer = 14 key = 15, then successor peer = 1
Application 2-88
5
8
each peer only aware of immediate successor and predecessor. overlay network
Application 2-89
0001 0011
0100
1110
1110
1100 0101
Define closest as closest successor
1110
1010
1000
Application 2-90
3
15
4
12 10
5 8
each peer keeps track of IP addresses of predecessor, successor, short cuts. reduced from 6 to 2 messages. possible to design shortcuts so O(log N) neighbors, O(log N) messages in query
Application 2-91
Peer churn
1
(churn) 3 each peer knows address of 15 its two successors each peer periodically pings 4 its 12 two successors to check 5 aliveness 10 if immediate successor 8 leaves, example: peer 5 abruptly leaves choose next successor as new immediate successor
peer
4 detects peer 5 departure; makes 8 its immediate successor; asks 8 who its immediate successor is; makes 8s immediate successor its second successor. what if peer 13 wants to join? Application 2-92
Chapter 2: outline
2.1 principles of network applications
app architectures app requirements
2.6 P2P applications 2.7 socket programming with UDP and TCP
2.5 DNS
Application Layer 2-93
Socket programming
goal: learn how to build client/server applications that communicate using sockets socket: door between application process and end-end-transport protocol
application
process
transport network link physical
socket
application
process
transport network link physical
Internet
controlled by OS
Socket programming
Two socket types for two transport services: UDP: unreliable datagram TCP: reliable, byte stream-oriented
Application Example: 1. Client reads a line of characters (data) from its keyboard and sends the data to the server. 2. The server receives the data and converts characters to uppercase. 3. The server sends the modified data to the client. 4. The client receives the modified data and displays the line on its screen. Application Layer 2-95
no handshaking before sending data sender explicitly attaches IP destination address and port # to each packet rcvr extracts sender IP address and port# from received packet
client
create socket: clientSocket = socket(AF_INET,SOCK_DGRAM) Create datagram with server IP and port=x; send datagram via clientSocket
read datagram from serverSocket write reply to serverSocket specifying client address, port number
serverPort = 12000
create UDP socket for server get user keyboard input Attach server name, port to message; send into socket read reply characters from socket into string print out received string and close socket
clientSocket = socket(socket.AF_INET, socket.SOCK_DGRAM) message = raw_input(Input lowercase sentence:) clientSocket.sendto(message,(serverName, serverPort)) modifiedMessage, serverAddress = clientSocket.recvfrom(2048)
print modifiedMessage
clientSocket.close()
Application Layer 2-98
loop forever Read from UDP socket into message, getting clients address (client IP and port) send upper case string back to this client
server process must first be running server must have created socket (door) that welcomes clients contact Creating TCP socket, specifying IP address, port number of server process when client creates socket: client TCP establishes connection to server TCP
when contacted by client, server TCP creates new socket for server process to communicate with that particular client allows server to talk with multiple clients source port numbers used to distinguish clients (more in Chap 3)
application viewpoint: TCP provides reliable, in-order byte-stream transfer (pipe) between client and server
Application Layer 2-100
client
wait for incoming TCP connection request connectionSocket = connection serverSocket.accept() read request from connectionSocket write reply to connectionSocket close connectionSocket
setup
create socket, connect to hostid, port=x clientSocket = socket() send request using clientSocket
serverPort = 12000
clientSocket = socket(AF_INET, SOCK_STREAM) clientSocket.connect((serverName,serverPort)) sentence = raw_input(Input lowercase sentence:)
clientSocket.close()
from socket import * serverPort = 12000 serverSocket = socket(AF_INET,SOCK_STREAM) serverSocket.bind((,serverPort)) serverSocket.listen(1) print The server is ready to receive while 1: connectionSocket, addr = serverSocket.accept() sentence = connectionSocket.recv(1024) capitalizedSentence = sentence.upper() connectionSocket.send(capitalizedSentence) connectionSocket.close()
Application Layer 2-103
Chapter 2: summary
our study of network apps now complete!
application architectures client-server P2P application service requirements: reliability, bandwidth, delay Internet transport service model connection-oriented, reliable: TCP unreliable, datagrams: UDP
specific protocols: HTTP FTP SMTP, POP, IMAP DNS P2P: BitTorrent, DHT socket programming: TCP, UDP sockets
Chapter 2: summary
most importantly: learned about protocols!
typical request/reply message exchange: client requests info or service server responds with data, status code message formats: headers: fields giving info about data data: info being communicated
important themes:
control vs. data msgs in-band, out-of-band centralized vs. decentralized stateless vs. stateful reliable vs. unreliable msg transfer complexity at network edge
Application Layer 2-105