Transcript CECS470
Application Layer Protocols
• Network Applications Requirements
• Application Layer Protocol Functions.
• Sample Internet Applications & Protocols:
– File Transfer Protocol (FTP).
– Sending E-Mail: SMTP.
– HyperText Transfer Protocol (HTTP).
• Domain Name System (DNS)
EECC694 - Shaaban
#1 lec #15 Spring2000 5-2-2000
Network Applications &
Application Layer Protocols
• The development of numerous network applications and
the associated application-layer protocols has been a major
driving force for computer network advancements over the
past 30 years.
• The range of such diverse applications include:
– Text-based applications such as telnet, electronic mail, file
transfer, newsgroups, most popular in the 70’s-80’s.
– More recent graphics- and multimedia-based applications
such as the World Wide Web (the Internet’s killer-app),
Internet telephony, video conferencing, and streaming
audio/video on demand, and interactive games.
EECC694 - Shaaban
#2 lec #15 Spring2000 5-2-2000
Common Network Applications Requirements
Application Type
Data Loss
Bandwidth Requirements
Latency sensitivity
File transfer
No loss
Variable
none
Web documents
No loss
Variable
none
Real-time audio/video
Loss-tolerant
Audio: few Kbps to 1Mbpsyes
Video: 10's Kbps to 5 Mbps
Stored audio/video
Loss-tolerant
Same as interactive audio/video
few seconds
Interactive games
Loss-tolerant
Few Kbps to 10's Kbps
100's msecs
Financial applications
No loss
Variable
100's of msec
Application-dependent
EECC694 - Shaaban
#3 lec #15 Spring2000 5-2-2000
Application Layer Protocols
•
•
An application layer protocol defines how an application processes (clients
and servers) , running on different end systems, pass messages to each
other.
In particular, an application layer protocol defines:
– The types of messages, e.g., request messages and response messages.
– The syntax of the various message types, i.e., the fields in the message and
how the fields are delineated.
– The semantics of the fields, i.e., the meaning of the information that the
field is supposed to contain;
– Rules for determining when and how a process sends messages and
responds to messages.
•
Many Internet application-layer protocols are fully specified in Request
For Comments documents (RFCs) and are therefore in the public domain.
– For example, the HTTP 1.1 specification is included in RFC 2068, which was
finalized and made public January 1997.
– If a browser (HTTP client) developer follows the rules of the HTTP 1.1 RFC,
the browser will be able to retrieve Web pages from any Web server that has
also has followed the rules of the HTTP 1.1 RFC.
EECC694 - Shaaban
#4 lec #15 Spring2000 5-2-2000
Structure of Internet Applications
Using TCP & The Sockets API
Server
Client
One or more
TCP connections
Request or Command
Server Reply or Response
EECC694 - Shaaban
#5 lec #15 Spring2000 5-2-2000
Sample Internet Applications
Application Type
Electronic mail
Remote terminal access
World Wide Web (WWW)
Application-layer protocol
Transport Protocol Used/Port
Send: Simple Mail Transfer Protocol
SMTP [RFC 821]
Receive: Post Office Protocol v3
POP3 [RCF 1939]
TCP 25
TCP 110
Telnet [RFC 854]
TCP 23
HyperText Transfer Protocol 1.1
TCP 80
HTTP 1.1 [RFC 2068]
File Transfer
File Transfer Protocol
FTP [RFC 959]
Trivial File Transfer Protocol
TFTP [RFC 1350]
Remote file server
Streaming multimedia
Internet telephony
NFS [McKusik 1996]
Proprietary (e.g., Real Networks)
Proprietary (e.g., Vocaltec)
TCP 21
UDP 69
UDP or TCP
UDP or TCP
Usually UDP
EECC694 - Shaaban
#6 lec #15 Spring2000 5-2-2000
Common Network/System Services & Ports
Port Number
1
5
7
9
11
13
17
19
20
21
23
25
27
29
31
33
35
37
39
41
42
43
49
53
67
68
Process Name
TCPMUX
RJE
ECHO
DISCARD
USERS
DAYTIME
Quote
CHARGEN
FTP-DATA
FTP
TELNET
SMTP
NSW-FE
MSG-ICP
MSG-AUTH
DSP
TIME
RLP
GRAPHICS
NAMESERV
NICNAME
LOGIN
DOMAIN
BOOTPS
BOOTPC
Description
TCP Port Service Multiplexer
Remote Job Entry
Echo
Discard
Active Users
Daytime
Quotation of the Day
Character generator
File Transfer Protocol - Data
File Transfer Protocol - Control
Telnet
Simple Mail Transfer Protocol
NSW User System Front End
MSG-ICP
MSG Authentication
Display Support Protocol
Private Print Servers
Time
Resource Location Protocol
Graphics
Host Name Server
Who Is
Login Host Protocol
Domain Name Server
Bootstrap Protocol Server
Bootstrap Protocol Client
EECC694 - Shaaban
#7 lec #15 Spring2000 5-2-2000
Common Network/System Services & Ports
Port Number
69
79
80
101
102
103
104
105
109
110
111
119
137
138
139
146
147
150
153
156
160
161
162
163
164
165
179
Process Name
TFTP
FINGER
HTTP
HOSTNAME
ISO-TSAP
X400
X400SND
CSNET-NS
POP2
POP3
RPC
NNTP
NETBIOS-NS
NETBIOS-DG
NETBIOS-SS
ISO-TP0
ISO-IP
SQL-NET
SGMP
SQLSRV
SGMP-TRAPS
SNMP
SNMPTRAP
CMIP-MANAGE
CMIP-AGENT
XNS-Courier
BGP
Description
Trivial File Transfer Protocol
Finger
HyperText Transfer Protocol
NIC Host Name Server
ISO TSAP
X.400
X.400 SND
CSNET Mailbox Name Server
Post Office Protocol v2
Post Office Protocol v3
Sun RPC Portmap
Network News Transfer Protocol
NETBIOS Name Server
NETBIOS Datagram Service
NETBIOS Session Service
ISO TP0
ISO IP
SQL NET
SGMP
SQL Service
SGMP TRAPS
Simple Network Management Protocol
SNMPTRAP
CMIP/TCP Manager
CMIP/TCP Agent
Xerox
Border Gateway Protocol
EECC694 - Shaaban
#8 lec #15 Spring2000 5-2-2000
File Transfer Protocol (FTP), RFC 595
• A protocol dating back to 1971 used for transferring files between hosts.
• In a typical FTP session:
– The user first provides the hostname of the remote host.
– The FTP client process in the local host establishes a control TCP connection
with the FTP server process in the remote host on port 21.
– The user then provides the user identification and password, which get sent over
this TCP connection as part of the FTP commands.
– Once the server has authorized the user, for each file to be transferred, FTP
opens a data TCP connection on server port 20 which is used to transfer the file
and is closed once the transfer is completed.
EECC694 - Shaaban
#9 lec #15 Spring2000 5-2-2000
Common FTP Commands and Replies
•
•
•
•
•
•
•
FTP commands, from client to server, and replies, from server to client, are sent across the
control TCP connection encoded in 7-bit ASCII.
In order to delineate successive commands, a carriage return and a line feed end each
command (and reply).
Commands consist of four uppercase ASCII characters, some with optional arguments.
Some of the more common commands are given below (with options in italics):
– USER username : Used to send the user identification to server.
– PASS password : Used to send the user password to the server.
– LIST : Used to ask the server to send back a list of all the files in the current remote
directory. The list of files is sent over a (new and non-persistent) data TCP connection
and not over the control TCP connection.
– RETR filename : Used to get a file from the current directory of the remote host.
– STOR filename : Used to store a file into the current directory of the remote host.
There is typically a one-to-one correspondence between the commands the user issues and
the FTP command sent across the TCP control connection.
Each command is followed by a reply, sent from server to client. Replies are three-digit
numbers, with an optional message following the number. message;
Typical replies along with possible messages are as follows:
– 331 Username OK, password required
– 125 Data connection already open; transfer starting
– 425 Can't open data connection
– 452 Error writing file
EECC694 - Shaaban
#10 lec #15 Spring2000 5-2-2000
Sending Electronic Mail:
Simple Mail Transfer Protocol (SMTP), RFC 821
•
•
•
SMTP transfers messages from senders' mail servers to the recipients' mail
servers using TCP connections.
SMPT existed long before it was fully specified by RFC 821 in 1982.
Following the client/server model:
•
The process of sending a message:
– SMTP has two sides: a client side which executes on a sender's mail server, and
server side which executes on recipient's mail server.
– Both the client and server sides of SMTP run on every mail server.
– When a mail server sends mail (to other mail servers), it acts as an SMTP client.
When a mail server receives mail (from other mail servers) it acts as an SMTP
server.
– A user agent (mail reader) is used to create a message to be sent.
– The user agent directs the message to the outgoing message queue in the user's
local mail server (acting as an SMTP client).
– The local mail server (SMTP client) opens a TCP connection directly to the remote
destination SMTP mail server.
– After initial SMTP handshaking, the SMTP client sends the 7-bit ASCII encoded
message into the TCP connection.
– The remote SMTP server receives the message over the TCP connection,
closes the connection and places the message in the receipt's mailbox.
EECC694 - Shaaban
#11 lec #15 Spring2000 5-2-2000
The Internet Mail System
All messages must be 7-bit ASCII Encoded
EECC694 - Shaaban
#12 lec #15 Spring2000 5-2-2000
Example Transaction Between
An SMTP Client & Server
Once the SMTP
client (sender)
established a TCP
connection to
the remote receiving
SMTP server,
the following is sent
into the connection:
Server: 220 receive.edu
Client: HELO send.edu
Server: 250 Hello send.edu, pleased to meet you
Client: MAIL FROM: <[email protected]>
Server: 250 [email protected]... Sender ok
Client: RCPT TO: <[email protected]>
Server: 250 [email protected] ... Recipient ok
Client: DATA
Server: 354 Enter mail, end with "." on a line by itself
Client: First line of message in seven-bit ASCII
Client: Second and last line of example message.
Client: .
Server : 250 Message accepted for delivery
Client: QUIT
Server: 221 receive.edu closing connection
EECC694 - Shaaban
#13 lec #15 Spring2000 5-2-2000
Multipurpose Internet Mail Extensions (MIME)
•
•
SMTP can only handle ASCII-encoded messages, hence binary data is first
encoded to ASCII in such a way that certain ASCII characters (including
".") are not used, using base64 encoding for example.
If binary data is included in a message MIME headers are used to inform
the receiving mail agent:
– Content-Transfer-Encoding: header. Alerts the receiving user agent
that the message body has been ASCII encoded and the type of
encoding used.
– Content-Type: header. Informs the receiving mail agent about the type
of data included in the message.
• Example message header when
a base64-encoded JPEG image is
included in the body of
the message:
From: [email protected]
To: [email protected]
Subject: A picture.
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
base64 encoded data .....
.........................
......base64 encoded data
EECC694 - Shaaban
#14 lec #15 Spring2000 5-2-2000
MIME Document Types/Subtypes
Examples
File
The content type of
a document is described in the
MIME Content-Type: header
using a standard list of
document types and subtypes.
A few are shown here.
MIME Type/Sub-type
text
text/plain
html
text/html
Jpeg
image/jpeg
Wav
audio/x-wav
MPEG
video/mpeg
pdf
VRML
application/pdf
x-world/x-vrml
EECC694 - Shaaban
#15 lec #15 Spring2000 5-2-2000
The World Wide Web (WWW):
HyperText Transfer Protocol (HTTP)
•
•
•
•
•
•
•
The WWW was practically invented at CERN by Tim Berners-Lee and
associates in 1989-1991 when initial versions of HTML, HTTP, a Web server and
a crude text-based browser (Web client) were developed.
Marc Andreeseen, who helped to develop the popular GUI browser Mosaic for X
at The National Center for Supercomputing Applications (NCSA), released an
alpha version of his browser in 1993, and in 1994 formed Mosaic
Communications which later became Netscape.
The Hypertext Transfer Protocol (HTTP) the Web's main application-layer
protocol although current browsers can access other types of servers.
As are most application-layer protocols, HTTP is implemented in two programs:
a client program: Web browser and server program: Web server that talk to each
other by exchanging HTTP messages.
HTTP defines the structure of these messages and how the client and server
exchange the messages.
HTTP utilizes TCP connections to send client requests and server replies.
Current HTTP version: HTTP 1.1 (RFC 2068) January 97, adds among other
enhancements persistent connections to transfer several objects per connection.
EECC694 - Shaaban
#16 lec #15 Spring2000 5-2-2000
HTML
Document
HTTP
HTML
Web Servers
Web Clients
Web
Clients
Web
Server
e.g. jasmine.isc.rit.edu:8000
Web server running on
non-standard port
Components
of The Web
Model
EECC694 - Shaaban
#17 lec #15 Spring2000 5-2-2000
Common
HTML
Tags
EECC694 - Shaaban
#18 lec #15 Spring2000 5-2-2000
Uniform Resource Locators (URLs)
• Web browsers may utilize several high level protocols to request
data from a variety of servers in addition to HTTP servers.
• A uniform source locator (URL) specifies the following:
–
–
–
–
–
Protocol used.
Host name, alias, or IP address.
Port number (if different from the default protocol port).
Path to data requested.
Resource requested (usually a file name).
• A few types of URLs:
http http://hostname:port/path/resource
e.g. http://jasmine.isc.rit.edu:8000/eecc694-spring2000/694-5-2-2000.ppt
FTP ftp://hostname:port/path/file
e.g. ftp://beast.isc.rit.edu:25
Local file file:///path/file
e.g. file:///my_files/file1.txt
Telnet
telnet://hostname:port
e.g. telnet:// jasmine.isc.rit.edu
gopher
gopher://hostname/path/
news
news://hostname:port
EECC694 - Shaaban
#19 lec #15 Spring2000 5-2-2000
Steps of Transferring A Web Page From Server To
Client Using Non-Persistent TCP Connections
http://www.rit.edu/~meseec/eecc694-spring2000/index.html
1. The HTTP client initiates a TCP connection to the server www.rit.edu.
2. The HTTP client sends a HTTP request message into the TCP connection. The
request message either includes the entire URL or simply the path name
/~meseec/eecc694-spring2000/index.html .
3. The HTTP server receives the request message, retrieves the object
/~meseec/eecc694-spring2000/index.html from its storage, encapsulates the object
in a HTTP response message, and sends the response message into the TCP
connection.
4. The HTTP server tells TCP to close the TCP connection. (TCP doesn't terminate
the connection until the client has received the response message)
5. The HTTP client receives the response message. The message indicates that the
encapsulated object is an HTML file. The client extracts the file from the
response message, parses the HTML file and finds references to a number of
JPEG and GIF objects.
6. The first four steps are then repeated for each of the referenced JPEG and GIF
objects.
EECC694 - Shaaban
#20 lec #15 Spring2000 5-2-2000
HTTP Message Examples
• Typical Request Message From A Client:
GET /eecc694-spring2000/index.html HTTP/1.0
Connection: close
User-agent: Mozilla/4.72 [en] (Win98; I)
Accept: text/html, image/gif, image/jpeg
Accept-language:en
(extra carriage return, line feed)
• Typical Response Message From A Server:
HTTP/1.0 200 OK
Connection: close
Date: Wed, 05 April 2000 12:00:15 GMT
Server: NCSA/1.5.2
Last-Modified: Tue, 25 April 2000 11:23:24 GMT
Content-Length: 20419
Content-Type: text/html
data data and more data ...
EECC694 - Shaaban
#21 lec #15 Spring2000 5-2-2000
HTTP Message Formats:
General Format of A Request Message
Messages encoded in standard ASCII text.
Method: GET, POST, and HEAD. The great majority of HTTP request messages use the GET method.
The GET method is used when the browser requests an object, with the object identified in the URL.
POST is used when the client user fills out a form.
URL: No need to include server hostname since the TCP connection is already connected to the server.
Version: HTTP version number used. (e.g. HTTP/1.0 or HTTP/1.1)
Entity Body: Not used in the GET method, form data included in POST method.
Space
Line feed
Connection: close, to request
non-persistent TCP connections.
User-agent: Browser used.
Accept: type of objects the browser
is prepared to accept
Carriage
Return
Accept-language:
EECC694 - Shaaban
#22 lec #15 Spring2000 5-2-2000
HTTP Message Formats:
General Format of A Response Message
Version: HTTP version number used (e.g. HTTP/1.0 or HTTP/1.1).
Status code and associated phrase indicate the result of the request. Some example status codes and
associated phrases include:
200 OK: Request succeeded and the information is returned in the response.
301 Moved Permanently: Requested object has been permanently moved; new URL is specified in
Location: header of the response message. The client software will automatically retrieve the new URL.
400 Bad Request: A generic error code indicating that the request could not be understood by the server.
404 Not Found: The requested document does not exist
505 HTTP Version Not Supported: The request HTTP protocol version is not supported by the server.
Entity Body: The requested object if the response is successful.
Connection: close for non-persistent
TCP connections.
Date: Current GMT date
Server: Server type used
Last-Modified: of object
Content-Length: of object
Content-Type: MIME Type/sub-type
of object
EECC694 - Shaaban
#23 lec #15 Spring2000 5-2-2000
Domain Name System (DNS)
•
•
•
•
•
•
•
•
DNS is a hierarchical system, based on a distributed database, that uses
a hierarchy of Name Servers to resolve Internet host names into the
corresponding IP addresses required for packet routing by issuing a DNS
query to a name server.
Name servers are usually Unix machines running the Berkeley Internet
Name Domain (BIND) software.
On many Unix-based machines using the sockets-API, gethostbyname() is
the library routine that an application calls in order to issue a DNS query.
Resource record: Associated with each host on the Internet, includes IP
address, domain name, domain name server, etc.
When resolving a host name, DNS returns the associated resource record of
the host.
Internet domain names are divided into generic top-level domains (edu,
com, gov, mil) which include all US domains and country domains.
The DNS space is divided into non-overlapping zones.
Resource records of all hosts in a sub-domain are kept as a DNS database
stored at the domain name server responsible for that sub-domain or zone.
EECC694 - Shaaban
#24 lec #15 Spring2000 5-2-2000
Principal DNS Resource
Record Types
EECC694 - Shaaban
#25 lec #15 Spring2000 5-2-2000
A Partial
DNS
Database
EECC694 - Shaaban
#26 lec #15 Spring2000 5-2-2000
Zone Division of DNS Name Space
EECC694 - Shaaban
#27 lec #15 Spring2000 5-2-2000
EECC694 - Shaaban
#28 lec #15 Spring2000 5-2-2000
Recursive DNS Queries Example
A two-level name server hierarchy
is shown here as an example.
In reality, several levels
of name servers may be
queried recursively.
Hostname to be resolved
A network application
running on beast.isc.rit.edu
issues a DNS query using
gethostbyname()to resolve
hostname halcyon.usc.edu
Returns DNS Resource
recordfor halcyon.usc.edu
including IP address(s)
EECC694 - Shaaban
#29 lec #15 Spring2000 5-2-2000