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