Beruflich Dokumente
Kultur Dokumente
2: Application Layer
programming network
peer-to-peer paradigm
applications
socket API
2: Application Layer
Chapter 2 outline
2.1 Principles of app layer protocols
2: Application Layer
Network applications
Applications -> Software What exactly running in a computer ?
2: Application Layer
processes communicate using interprocess communication (defined by OS). processes running in different hosts communicate with an application-layer protocol
2: Application Layer
Application-layer protocols
e.g., e-mail, Web, P2P file sharing, instant messaging running in end systems (hosts) exchange messages to implement application
one piece of an app define messages exchanged by apps and actions taken use communication services provided by lower layer protocols (TCP, UDP)
2: Application Layer
exchanged, e.g., request & response messages Syntax of message types: what fields in messages & how fields are delineated Semantics of the fields, i.e., meaning of information in fields Rules for when and how processes send & respond to messages
Public-domain protocols: defined in RFCs allows for interoperability eg, HTTP, SMTP Proprietary protocols: eg, Skype BitTorrent (?)
2: Application Layer
Client-server paradigm
Typical network app has two pieces: client and server Client:
initiates contact with server
application transport network data link physical
request
(speaks first) typically requests service from server, Web: client implemented in browser; e-mail: in mail reader
reply
application transport network data link physical
Server:
provides requested service to client e.g., Web server sends requested Web
2: Application Layer
Programming - Socket
process sends/receives
host or server
process
process
socket socket sending process shoves TCP/UDP TCP/UDP message out door Internet with with buffers, buffers, sending process assumes variables variables transport infrastructure on other side of door which controlled brings message to socket by OS at receiving process API: Application Programmers Interface (1) choose transport protocol; (2) set parameters (You might have learnt it; or you can study it in 471)
2: Application Layer 9
tolerate some loss other apps (e.g., file transfer, telnet) require 100% reliable data transfer
Timing some apps (e.g., Internet telephony, interactive games) require low delay to be effective
Bandwidth some apps (e.g., multimedia) require minimum amount of bandwidth to be effective other apps (elastic apps) make use of whatever bandwidth they get
2: Application Layer
10
elastic elastic elastic audio: 5kbps-1Mbps video:10kbps-5Mbps same as above few kbps up elastic
2: Application Layer
11
typically UDP
2: Application Layer
12
Chapter 2 outline
2.1 Principles of app layer protocols
2: Application Layer
13
host name
path name
2: Application Layer 14
HTTP overview
HTTP: hypertext transfer protocol
Webs application layer
protocol client/server model client: browser that requests, receives, displays Web objects server: Web server sends objects in response to requests HTTP 1.0: RFC 1945 HTTP 1.1: RFC 2068
PC running Explorer
2: Application Layer
15
2: Application Layer
16
You have sent this minimal (but complete) GET request to HTTP server And you have received HTML objects !
2: Application Layer 17
Anymore ?
2: Application Layer
18
HTTP is stateless
server maintains no
connection (creates socket) to server, port 80 server accepts TCP connection from client HTTP messages (applicationlayer protocol messages) exchanged between browser (HTTP client) and Web server (HTTP server) TCP connection closed
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
2: Application Layer
aside
19
request, response
GET /somedir/page.html HTTP/1.1 Host: www.someschool.edu User-agent: Mozilla/4.0 header Connection: close lines Accept-language:fr (extra carriage return, line feed)
2: Application Layer
20
2: Application Layer
21
www.somesite.com/animalsearch?monkeys&banana
2: Application Layer
22
Method types
HTTP/1.0 GET POST HEAD
2: Application Layer
23
2: Application Layer
24
200 OK
request succeeded, requested object later in this message requested object moved, new location specified later in this message (Location:) request message not understood by server requested document not found on this server
2: Application Layer
HTTP connections
Nonpersistent HTTP At most one object is sent over a TCP connection. HTTP/1.0 uses nonpersistent HTTP Persistent HTTP Multiple objects can be sent over single TCP connection between client and server. HTTP/1.1 uses persistent connections in default mode
2: Application Layer
26
Nonpersistent HTTP
(contains text, Suppose user enters URL references to 10 www.someSchool.edu/someDepartment/home.index jpeg images)
www.someSchool.edu waiting for TCP connection at port 80. accepts connection, notifying client
time
2: Application Layer 27
2: Application Layer
28
initiate TCP connection RTT request file RTT file received time time time to transmit file
2: Application Layer
29
to fetch referenced objects but OS must work and allocate host resources for each TCP connection
2: Application Layer
30
Persistent HTTP
response subsequent HTTP messages between same client/server are sent over connection Persistent without pipelining: client issues new request only when previous response has been received one RTT for each referenced object Persistent with pipelining: default in HTTP/1.1 client sends requests as soon as it encounters a referenced object as little as one RTT for all the referenced objects
2: Application Layer 31
time
32
2: Application Layer
You access Internet always from same PC You visit a specific ecommerce site for first time When initial HTTP requests arrives at site, site creates a unique ID and creates an entry in backend database for ID
2: Application Layer
33
server
server creates ID 1678 for user cookiespecific action cookiespectific action
2: Application Layer 35
Set-cookie: 1678
usual http request msg
cookie: 1678
usual http response msg
cookie: 1678
usual http response msg
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 & cookies to learn yet more advertising companies obtain info across sites
2: Application Layer 36
aside
Cookies: Enable/Disable
2: Application Layer
37
Cookies: Delelte
2: Application Layer
38
Chapter 2 outline
2.1 Principles of app layer protocols
2: Application Layer
39
file transfer
FTP server
remote file system
user at host
remote) server: remote host ftp: RFC 959 ftp server: port 21
2: Application Layer
40
server at port 21, specifying TCP as transport protocol Client obtains authorization over control connection Client browses remote directory by sending commands over control connection. When server receives a command for a file transfer, the server opens a TCP data connection to client After transferring one file, server closes connection.
FTP client
FTP server
data connection to transfer another file. Control connection: out of band FTP server maintains state: current directory, earlier authentication
2: Application Layer 41
in HTTP) 331 Username OK, password required 125 data connection already open; transfer starting 425 Cant open data connection 452 Error writing file
2: Application Layer
42
2: Application Layer
43
Port 21 ?
2: Application Layer
44
ssh never trusts the net; somebody hostile who has taken over the network can only force ssh to disconnect, but cannot decrypted or play back the traffic, or hijack the connection.
2: Application Layer 45
SSH
2: Application Layer
46
2: Application Layer
47
Chapter 2 outline
2.1 Principles of app layer protocols
2: Application Layer
48
Electronic Mail
Three major components:
user agents
mail servers mail transfer protocol
mail server user agent
User Agent a.k.a. mail reader composing, editing, reading mail messages e.g., Eudora, Outlook, elm, Netscape Messenger outgoing, incoming messages stored on server
user agent
user agent
user agent
2: Application Layer
49
?
mail server
user agent
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 SMTP
mail server
SMTP
user agent
user agent
user agent
2: Application Layer
50
to 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
2: Application Layer
51
1 user agent 2
mail server 3
mail server 4 5 6
user agent
2: Application Layer
52
2: Application Layer
54
(mailgate.sfu.ca 465
info.html
http://www.sfu.ca/itservices/sfuconnect/getstarted/accessmethods/ssl_background_
SSLv2
) see 220 reply from server enter HELO, MAIL FROM, RCPT TO, DATA, QUIT commands above lets you send email without using email client (reader) -- note: SFU IT service has upgraded their system and now supports only SSL connections
2: Application Layer 55
encoded data
2: Application Layer
56
MIME types
Content-Type: type/subtype; parameters Text Video
html
quicktime
Image
gif
Application
other data that must be
Audio
2: Application Layer
57
Multipart Type
From: alice@crepes.fr To: bob@hamburger.edu Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=StartOfNextPart --StartOfNextPart Dear Bob, Please find a picture of a crepe. --StartOfNextPart Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data ..... ......................... ......base64 encoded data --StartOfNextPart Do you want the recipe?
2: Application Layer
58
MIME types
Content-Type: type/subtype; parameters
An Example: MailEncodingExample.txt
------=_NextPart_000_0010_8CEC7DC6.92E25D8C Content-Type: application/octet-stream; name="readme.scr" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="readme.scr"
TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUEUA AEwBAwAAAAAAAAAAAAAAAADgAA8BCwEHAABQAAAAEAAAAGAAAGC+AAAAcAAAAMAAAAAASgAAEAAA AAIAAAQAAAAAAAAABAAAAAAAAAAA0AAAABAAAAAAAAACAAAAAAAQAAAQAAAAABAAABAAAAAAAAAQ AAAAAAAAAAAAAADowQAAMAEAAADAAADoAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAABVUFgwAAAAAABgAAAAEAAAAAAAAAAEAAAAAAAAAAAAAAAAAACAAADg VVBYMQAAAAAAUAAAAHAAAABQAAAABAAAAAAAAAAAAAAAAAAAQAAA4C5yc3JjAAAAABAAAADAAAAA BAAAAFQAAAAAAAAAAAAAAAAAAEAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
2: Application Layer
59
2: Application Layer
60
ASCII Table
Beyond 7 bit?
2: Application Layer
61
2: Application Layer
62
2: Application Layer
63
SMTP
user agent
2: Application Layer
64
SMTP
SMTP
access protocol
user agent
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.
2: Application Layer 65
WebMail
Hotmail/Gmail
SFU Webmail:
webmail.sfu.ca (old)/connect.sfu.ca
2: Application Layer
66
POP3 protocol
authorization phase
client commands:
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
2: Application Layer
on
67
names of folders and mappings between message IDs and folder name
Allows user to
Chapter 2 outline
2.1 Principles of app layer protocols
2: Application Layer
69
Name vs. ID
People: many identifiers: name, passport #, driving license ID, SIN Example:
Please tell me you driving license ID. -- from Visa card service
2: Application Layer
70
distributed database
application-layer protocol
host, routers, name servers to communicate to resolve names (address/name translation) note: core Internet function, implemented as application-layer protocol complexity at networks edge
2: Application Layer 71
2: Application Layer
73
each ISP, company has local (default) name server host DNS query first goes to local name server for a host: stores that hosts IP address, name can perform name/address translation for that hosts name
2: Application Layer
74
contacts authoritative name server if name mapping not known gets mapping returns mapping to local name server
a NSI Herndon, VA c PSInet Herndon, VA d U Maryland College Park, MD g DISA Vienna, VA h ARL Aberdeen, MD
j NSI (TBD) Herndon, VA
2: Application Layer
75
4 5 3
1. contacts its local DNS server, dns.eurecom.fr 2. dns.eurecom.fr contacts local name server dns.eurecom.fr root name server, if necessary 1 6 3. root name server contacts authoritative name server, dns.umass.edu, if requesting host necessary
surf.eurecom.fr
gaia.cs.umass.edu
2: Application Layer
76
DNS example
Root name server:
may not know
2 7 3
requesting host
surf.eurecom.fr
gaia.cs.umass.edu
2: Application Layer 77
iterated query:
contacted server
replies with name of server to contact I dont know this name, but ask this server
requesting host
surf.eurecom.fr
gaia.cs.umass.edu
2: Application Layer 78
mapping cache entries timeout (disappear) after some time update/notify mechanisms under design by IETF
caches
RFC 2136
http://www.ietf.org/html.charters/dnsind-charter.html
2: Application Layer
79
DNS records
DNS: distributed db storing resource records (RR) RR format: (name,
Type=A name is hostname value is IP address
value, type,ttl)
Type=NS servereast.backup2.ibm.com name is domain (e.g. value is canonical name foo.com) value is IP address of Type=MX authoritative name value is name of mailserver server for this domain associated with name
2: Application Layer 80
Type=CNAME name is alias name for some canonical (the real) name www.ibm.com is really
msg header
identification: 16 bit #
for query, reply to query uses same # flags: query or reply recursion desired recursion available reply is authoritative
2: Application Layer
81
2: Application Layer
82