Applications - UW Courses Web Server

advertisement
CSS432 Applications
Textbook Ch 9.1
Instructor: Joe McCarthy
(based on Prof. Fukuda’s slides)
CSS432: Applications
1
Applications

Client – Server Paradigm



Client: initiates contact with server
Server: provides client with a
response
Applications use their corresponding
protocols

Defined in RFC by Internet
Engineering Task Force
 Implemented on top of TCP or UDP

Client
Server
outlook
browser
mail/web
server
SMTP, HTTP, FTP
SMTP, HTTP, FTP
socket
socket
TCP with
buffers,
variables
TCP with
buffers,
variables
Other documents define formats

E.g., MIME, HTML
Applications
Protocol
RFC
Port
Name service
DNS
1035
53
Email
SMTP
IMAP
821
3501
25
143
Web
HTTP
2616
80
File transfer
FTP
959
21
Remote terminal
access
telnet
854
23
CSS432: Applications
Internet
2
Email
Electronic Mail (SMTP, MIME, IMAP)


user agents (client)
 a.k.a. “mail reader”
 composing, editing, reading mail messages
 e.g., Eudora, Outlook, elm, Thunderbird
mail servers (server)
 outgoing, incoming messages stored on server
SMTP
IMAP
user
agent
user
agent
user
agent
mail server
mail server
mail server
outgoing
mail queue
outgoing
mail queue
outgoing
mail queue
User mailbox
user
agent
user
agent
User mailbox
SMTP/TCP
SMTP/TCP
CSS432: Applications
user
agent
3
Email
SMTP



Simple Mail Transfer Protocol
TCP port 25 – Persistent connection
Email sending protocol
From user agent to his/her local mail server
 From a local to an intermediate/destination mail server (direct
transfer)
 From an intermediate server to a destination server (relay)
Three phases of transfer
 Handshaking: HELO (ELHO when authentication required)
 Transfer of messages: MAIL FROM, RCPT TO, and DATA
 Closure: QUIT
Command/response interaction
 Commands: ASCII text
 Response: status code and phrase



CSS432: Applications
4
Email
SMTP Example
[mfukuda@uw1-320-20]$ telnet smtp.washington.edu 25
Trying 140.142.33.9…
Connected to smpt.washington.edu (140.142.33.9).
Escape character is ‘^]’.
220 smtp.washington.edu ESMTP Sendmail 8.12.11+UW04.02/8.12.11+UW04.02; Sat, 21
Feb 2004 20:00:56 -0800
HELO mfukuda
250 smtp.washington.edu Hello UW1-320-20.bothell.washington.edu [216.186.75.195]
, pleased to meet you
MAIL FROM:mfukuda@u.washington.edu
250 2.1.0 <mfukuda@u.washington.edu>... Sender ok
Note: now requires
RCPT TO:MunehiroFukuda@yahoo.net
authentication
250 2.1.5 MunehiroFukuda@yahoo.net... Recipient ok
DATA
354 Enter mail, end with “.” on a line by itself
Blah blah blah…
…etc. etc. etc.
.
250 2.0.0 i1M40uc3013699 Message accepted for delivery
QUIT
221 2.0.0 smtp.washington.edu closing connection
Connection closed by foreign host.
[mfukuda@uw1-320-20]$ _
CSS432: Applications
5
Email
RFC 822 Message Format
Header



Header
 A series of lines, each
terminated by <CRLF>
Body
 ASCII characters only.
Then, what about
multimedia information?
To:
Subject:
Date:
From:
Received:
CSS432: Applications
A blank line
Body
6
Email
MIME


MIME: multimedia mail extension, RFC 2045, 2056
Additional lines in msg header declare MIME content type
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=“-------417CA6E2DE4ABCAFBC5”
From: mfukuda@u.washington.edu
To: css432a_au04@u.washington.edu Carry more than one data type
Subject: promised material
Date: Mon, 01 Apr 2004 12:34:56 -0800
-------417CA6E2DE4ABCAFBC5
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Type of the data
How the data is encoded
Dear CSS432 students,
Here is the jpeg image and draft report I promised.
-- Fukuda
Definitions for content types
-------417CA6E2DE4ABCAFBC5
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
3 bytes = 3 * 8 bits = 24 bits
 4 * 6-bit chars,
each mapped onto one of 26 = 64
ASCII chars (A~Z,a~z,0~9,+,/)
… Unreadable encoding of a jpeg figure
-------417CA6E2DE4ABCAFBC5
Content-Type: application/postscript; name=“draft.ps”
Content-Transfer-Encoding: 7bit
… Readable encoding of a postscript document
CSS432: Applications
7
Base64
A quote from Thomas Hobbes' Leviathan:
Man is distinguished, not only by his reason, but by this singular passion from other animals,
which is a lust of the mind, that by a perseverance of delight in the continued and
indefatigable generation of knowledge, exceeds the short vehemence of any carnal
pleasure.
represented as a byte sequence of 8-bit-padded ASCII characters is encoded in MIME's
Base64 scheme as follows:
TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieS
B0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx
1c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCB
pbiB0aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd
2xlZGdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwb
GVhc3VyZS4=
http://en.wikipedia.org/wiki/Base64
CSS432: Applications
8
MIME headers (RFC 822)
Received:
via tmail-2007b.22 (invoked by user joemcc) for joemcc; Tue, 22 May 2012 15:03:48 -0700 (PDT)
Received:
from mxout13.cac.washington.edu (mxout13.cac.washington.edu [140.142.32.202]) by
cg81.u.washington.edu (8.14.4+UW11.03/8.14.4+UW12.03) with ESMTP id q4MM3YvT005956 for
<joemcc@cg81.u.washington.edu>; Tue, 22 May 2012 15:03:34 -0700
Received:
from mailman1.u.washington.edu (mailman1.u.washington.edu [140.142.17.220]) by
mxout13.cac.washington.edu (8.14.4+UW11.03/8.14.4+UW12.03) with ESMTP id q4MM3PGq019938
(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 22 May 2012 15:03:25 -0700
Received:
from mailman1.u.washington.edu (localhost [127.0.0.1]) by mailman1.u.washington.edu
(8.14.4+UW11.03/8.14.4+UW11.03) with ESMTP id q4MM3PkL000522; Tue, 22 May 2012 15:03:25 -0700
Received:
from mx2.cac.washington.edu (mx2.cac.washington.edu [140.142.33.18]) by mailman1.u.washington.edu
(8.14.4+UW11.03/8.14.4+UW11.03) with ESMTP id q4MM3OcS000490; Tue, 22 May 2012 15:03:24 -0700
Received:
from mxout12.cac.washington.edu (mxout12.cac.washington.edu [140.142.33.31]) by
mx2.cac.washington.edu (8.14.4+UW11.03/8.14.4+UW12.05) with ESMTP id q4MM37FI005160
(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 22 May 2012 15:03:07 -0700
Received:
from smtp.washington.edu (smtp.washington.edu [140.142.32.205] (may be forged)) by
mxout12.cac.washington.edu (8.14.4+UW11.03/8.14.4+UW12.03) with ESMTP id q4MM24HX002038
(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 22 May 2012 15:02:04 -0700
X-Auth-Received:
from d-69-91-211-215.dhcp4.washington.edu (D-69-91-211-215.dhcp4.washington.edu
[69.91.211.215]) (authenticated authid=joemcc@uw.edu) by smtp.washington.edu (8.14.4+UW11.03/8.14.4+UW12.03)
with ESMTP id q4MM22j8014843 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Tue,
22 May 2012 15:02:03 -0700
CSS432: Applications
9
Message-ID: <4FBC0CCF.7050006@uw.edu>
Date:
Tue, 22 May 2012 15:01:51 -0700
From:
joe McCarthy <joemcc@uw.edu>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:12.0) Gecko/20120428 Thunderbird/12.0.1
MIME-Version:
1.0
To:
css432a_sp12@uw.edu, css490b_sp12@uw.edu
Content-Type:
text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding:
7bit
X-PMX-Version:
6.0.0.2142326, Antispam-Engine: 2.7.2.2107409, Antispam-Data: 2012.5.22.215414
X-PMX-Server:
mxout13.cac.washington.edu
X-Uwash-Spam:
Gauge=IIIIIIII, Probability=8%, Report=' HTML_00_01 0.05, HTML_00_10 0.05,
BODYTEXTP_SIZE_3000_LESS 0, BODY_SIZE_1000_LESS 0, BODY_SIZE_2000_LESS 0,
BODY_SIZE_5000_LESS 0, BODY_SIZE_7000_LESS 0, BODY_SIZE_700_799 0, DATE_TZ_NA 0,
FROM_EDU_TLD 0, __ANY_URI 0, __CP_URI_IN_BODY 0, __CT 0, __CTE 0, __CT_TEXT_PLAIN 0,
__HAS_LIST_HEADER 0, __HAS_LIST_HELP 0, __HAS_LIST_SUBSCRIBE 0, __HAS_LIST_UNSUBSCRIBE 0,
__HAS_MSGID 0, __MIME_TEXT_ONLY 0, __MIME_VERSION 0, __MOZILLA_MSGID 0,
__PHISH_SPEAR_STRUCTURE_1 0, __SANE_MSGID 0, __TO_MALFORMED_2 0, __TO_NO_NAME 0,
__URI_NO_MAILTO 0, __URI_NO_WWW 0, __URI_NS , __USER_AGENT 0'
Cc:
Subject:
[Css432a_sp12] TuTh office hours: 7:45-8:15pm UW1-221
X-BeenThere:
css432a_sp12@u.washington.edu
X-Mailman-Version:
2.1.5
Precedence: list
List-Id:
Class Discussion List <css432a_sp12.u.washington.edu>
List-Unsubscribe:
<http://mailman1.u.washington.edu/mailman/listinfo/css432a_sp12>, <mailto:css432a_sp12request@mailman1.u.washington.edu?subject=unsubscribe>
List-Archive: <https://mailman1.u.washington.edu/mailman/private/css432a_sp12>
List-Post:
<mailto:css432a_sp12@u.washington.edu>
List-Help:
<mailto:css432a_sp12-request@mailman1.u.washington.edu?subject=help>
List-Subscribe:
<http://mailman1.u.washington.edu/mailman/listinfo/css432a_sp12>, <mailto:css432a_sp12request@mailman1.u.washington.edu?subject=subscribe>
Sender:
css432a_sp12-bounces@mailman1.u.washington.edu
Errors-To:
css432a_sp12-bounces@mailman1.u.washington.edu
10
CSS432: Applications
Email
Mail Reader - IMAP
TCP to 143
Connection established
Server greeting
Server: OK
Server: PREAUTH
Server: BYE
Not authenticated
Client LOGOUT
Client: LOGIN or AUTHENTICATE
Authenticated
Client LOGOUT
Client: CLOSE
Client SELECT or EXAMINE
Selected
Client: FETCH, STORE,
DELETE, EXPUNGE
Client LOGOUT
Flags:
•Seen
•Answered
•Deleted
•Recent
Logout
Both sides close the connection
CSS432: Applications
11
FTP
File Transfer Protocol (FTP)
FTP
FTP
user
client
interface
TCP port 21 for control (persistent)
TCP port 20 for data transfer
(not persistent)
local
file
system



FTP
server
remote
file
system
Transfer file to/from remote host
Client/server model
 Client: initiates a control TCP connection to a server on port 21.
 Client: sends a user ID and password as part of FTP commands.
 Server: authorizes the client
 Client: opens a data TCP connection to a server on port 20.
 Server: maintains state: current directory, earlier authentication.
An ftp client is allowed to initiate a transfer between two ftp servers.
CSS432: Applications
12
FTP
FTP Commands


<CRLF> delimits each command (and reply).
Commands consist of four uppercase ASCII characters, some with
optional arguments:







USER username : send a user identification to the server.
PASS password : send the user password to the server.
PASV: request the server to send back the IP & port on which it will listen
for a data TCP connection from the user.
LIST : ask the server to send back its current directory contents through
the data connection.
RETR filename : retrieve a file from the current remote directory.
STOR filename : store a file into the current remote directory.
Commands prompt replies from the server (ending with <CRLF>)

331 Username OK, password required
 125 Data connection already open; transfer starting
 425 Can't open data connection
 452 Error writing file
CSS432: Applications
13
FTP
FTP Example
[mfukuda@uw1-320-20]$ telnet ftp.tripod.com 21
Trying 209.202.240.80…
Connected to ftp.tripod.com (209.202.240.80).
Escape character is ‘^]’.
220 Welcome to Tripod FTP.
USER css432
331 Username set to css432. Now enter your password.
PASS ********
230 User ‘css432’ logged on.
LIST
425 Can’t open data connection for LIST.
PASV
227 Entering Passiv Mode (209,202,240,80,195,210)
// Open another xterm and telnet 209.202.240.80 50130 (=195*256+210)
// Trying 209.202.240.80…
// Connected to ftp.tripod.com (209.202.240.80).
// Escape character is ‘^]’.
// drwxr-xr-x
1 css432
Tripod
0 Sep 15 21:22 cgi-bin
// -rw-r--r-1 css432
Tripod
26169 Sep 16 18:28 ttcp.c
// -rw-r--r-1 css432
Tripod
8236 Sep 15 21:22 index.htm
// drwxr-xr-x
1 css432
Tripod
0 Sep 16 18:33 project
// Connection closed by foreign host.
LIST
150 Opening ASCII mode data connection for LIST.
226 Transfer complete.
QUIT
221 Goodbye
Connection closed by foreign host.
[mfukuda@uw1-320-20]$ _
CSS432: Applications
14
FTP passive mode
TCP port 21 for control (persistent)
Client request: connect( ), USER, PASS, LIST
FTP
client
Server Reply: 220 server ready, 331 send password, 230 login ok,
425 connection timeout
FTP
server
TCP port 20 for data transfer (one time)
TCP port 21 for control (persistent)
Client request: connect( ), USER, PASS, PASV, LIST
FTP
client
Server Reply: 220 server ready, 331 send password, 230 login ok,
227 Entering Passive Mode (140,142,12,173,195,54), 226 complete
FTP
server
TCP port 195*256 + 54 = 49974 for data transfer (one time)
data
CSS432: Applications
15
FTP proxy command
(3’) 227 Entering Passive Mode
(140,142,12,173,195,54)
FTP
client
(1) USER, PASS, SYST
(2) USER, PASS, SYST
(3) TYPE I, PASV
(4) TYPE I, PORT (140,142,12,173,195,54),
STOR file
(5) RETR file
ftp> open server1
ftp> proxy open server2
ftp> proxy get file
FTP
Server
1
…(1)
…(2)
…(3)~(5)
TCP port 195*256 + 54 = 49974 for data transfer (one time)
FTP
Server
2
data
CSS432: Applications
16
Web
World Wide Web - HTTP
Netscape
TCP port 80 (one-time connection)
HTTP request
HTTP response
HTTP
server
/public_html
IE



Hypertext Transfer Protocol:
one-time TCP port 80
connection for each
request/response
client: Browser requests,
receives & displays Web objects
server: Web server sends
objects in response
to requests
CSS432: Applications
17
Web
HTTP Commands

Client
 Initiates a TCP connection to a server on port 80.
 Sends an HTTP request over this TCP connection






OPTIONS:
request information about available options
GET:
retrieve document identified in URL
HEAD:
retrieve document meta-information in URL
POST:
give information to server
PUT:
store document under specified URL
DELETE, TRACE, CONNECT


Receives an HTTP response
Server
 Accepts a TCP connection from a client on port 80.
 Receives an HTTP request
 Returns an HTTP response and terminates the TCP connection.





1xx: Informational
2xx: success
3xx: Redirection
4xx: Client error
5xx: Server error
CSS432: Applications
18
Web
HTTP Example
[mfukuda@uw1-320-20]$ telnet www.washington.edu 80
Trying 140.142.11.167...
Connected to www.washington.edu (140.142.11.167).
Escape character is '^]'.
GET
HTTP/1.1 200 OK
Date: Sun, 22 Feb 2004 09:06:17 GMT
Server: Apache/1.3.28 (Unix) PHP/4.3.3 mod_perl/1.29 mod_backhand/1.2.2
Connection: close
Content-type: text/html
<!doctype html public “-//W3C/DTD HTML 4.0 Transitional//EN”>
<html><head> … </body></html>
Connection closed by foreign host.
[mfukuda@uw1-320-20]$ _
CSS432: Applications
19
Web
Performance Improvement in Web


Persistent TCP connections

Advantages

Disadvantages
Caching

Recently access pages can be cached at browsers and ISPs
Advantages

Disadvantages

CSS432: Applications
20
Web
Performance Improvement in Web

Persistent TCP connections

Advantages



Disadvantages


Eliminate the connection setup overhead
Eliminate repetitions of slow start phase
Need to know the time period of connection – server times out the
connection.
Caching


Recently access pages can be cached at browsers and ISPs
Advantages


Disadvantages

CSS432: Applications
21
Web
Performance Improvement in Web

Persistent TCP connections

Advantages



Disadvantages


Eliminate the connection setup overhead
Eliminate repetitions of slow start phase
Need to know the time period of connection – server times out the
connection.
Caching


Recently access pages can be cached at browsers and ISPs
Advantages


Reduce the number of HTTP accesses
Disadvantages

Need to purge out-of-date version of pages – use expiration date
and cache directives to cache or not to cache a given page
CSS432: Applications
22

Reviews
 RFC
 Naming
service: DNS
 Email: SMTP, MIME, and IMAP
 File transfer: FTP
 WWW: HTTP

Exercises: try the following examples by yourself.
 Slide
p8 (DNS)
 Slide p12 (SMTP)
 Slide p18 (FTP)
 Slide p21 (HTTP)
CSS432: Applications
23
Download