compsci 356: computer network architectures lecture 23: application layer protocols chapter 9.1...

47
CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang [email protected]

Upload: blanche-skinner

Post on 23-Dec-2015

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

CompSci 356: Computer Network Architectures

Lecture 23: Application Layer

ProtocolsChapter 9.1Xiaowei Yang

[email protected]

Page 2: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Overview• Application-layer protocols

– Applications vs. application-layer protocols– Tailoring the protocol to the application

• Electronic mail– E-mail messages, and multipurpose Internet Mail extensions

(MIME)– E-mail addresses, and the role of DNS– E-mail servers and user agents

• Electronic mail protocols– Transferring e-mail messages between servers

• Simple Mail Transfer Protocol (SMTP)– Retrieving e-mail messages (POP, IMAP, and HTTP)

• Client-side protocols

Page 3: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Application-Layer Protocols• Network applications run on end systems

– They depend on the network to provide a service– … but cannot run software on the network elements

• Network applications run on multiple machines– Different end systems communicate with each other– Software is often written by multiple parties

• Leading to a need to explicitly define a protocol– Types of messages (e.g., requests and responses)– Message syntax (e.g., fields, and how to delineate)– Semantics of the fields (i.e., meaning of the information)– Rules for when and how a process sends messages– Platform and programming language independent

Page 4: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Application Programs vs. Protocols

• Application-layer protocol is just one piece– Defining how the end hosts communicate

• Example: World Wide Web– HyperText Transfer Protocol is the protocol– But the Web includes other components, such as document formats

(HTML), Web browsers, servers, …

• Example: electronic mail– Simple Mail Transfer Protocol (SMTP) is the protocol– But e-mail includes other components, such as mail servers, user

mailboxes, mail readers

• Open standards vs. vertical integration– Firefox vs. HTTP, Thunderbird vs. SMTP

Page 5: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

The structure of a content-rich application-layer protocol

1. A companion protocol that specifies the data format

2. A protocol that describes the interactions between two end systems

• Examples– HTTP and HTML– SMTP and RFC 2822 (Internet Text Messages), and Multipurpose

Internet Mail Extensions (MIME)

• Simpler protocols may specify both data format and interactions in one protocol– Eg. DNS

• Request/response• The record has a simple format

– Telnet– FTP

Page 6: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Protocols Tailored to the Application

• SMTP: sending e-mail to a remote mail server– Sending mail server transmits an e-mail message to a mail

server running on a remote machine– Each server in the path adds its identifier to the message– Single TCP connection for control and data– SMTP replaced the earlier use of FTP for e-mail

• HTTP: satisfying requests based on a global URL– Client sends a request with method, URL, and meta-data– … and the server applies the request to the resource and

returns the response, including meta-data– Single TCP connection for control and data

Page 7: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Protocols Tailored to the Application

• Telnet: interacting with account on remote machine– Client simply relays user keystrokes to the server– … and server simply relays any output to the client– TCP connection persists for duration of the login session– Network Virtual Terminal (NVT) format for transmitting

ASCII data, and control information (e.g., End-of-Line delimiter)

• FTP: copying files between accounts– Client connects to remote machine, “logs in, and issues

commands for transferring files to/from the account– … and server responds to commands and transfers files– Separate TCP connections for control and data– Control connection uses the same NVT format as Telnet

Page 8: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Comparing the Protocols• Commands and replies

– Telnet sends commands in binary, whereas the other protocols are text based

– Many of the protocols have similar request methods and response codes

• Data types– Telnet, FTP, and SMTP transmit text data in standard U.S.

7-bit ASCII– FTP also supports transfer of data in binary form– SMTP uses MIME standard for sending non-text data – HTTP incorporates some key aspects of MIME (e.g.,

classification of data formats)

Page 9: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Comparing the Protocols (Continued)

• Transport– Telnet, FTP, SMTP, and HTTP all depend on reliable

transport protocol– Telnet, SMTP, and HTTP use a single TCP connection– … but FTP has separate control and data connections

• State– In Telnet, FTP, and SMTP, the server retains information

about the session with the client– E.g., FTP server remembers client’s current directory– In contrast, HTTP servers are stateless

• Request/response• Cookies add state

Page 10: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Reflecting on Application-Layer Protocols

• Protocols are tailored to the applications– Each protocol is customized to a specific need

• Protocols have many key similarities– Each new protocol was influenced by the previous ones– New protocols commonly borrow from the older ones

• Protocols depend on the same underlying substrate– Ordered reliable stream of bytes (i.e., TCP)– Domain Name System (DNS)

• Relevance of the protocol standards process– Important for interoperability across implementations– Yet, not necessary if same party writes all of the software– …which is increasingly common (e.g., P2P software)

Page 11: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Electronic Mail

Page 12: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

E-Mail Message• E-mail messages have two parts

– A header, in 7-bit U.S. ASCII text– A body, also represented in 7-bit U.S. ASCII text

• Header– Lines with “type: value”– “To: [email protected]”– “Subject: Hello!”

• Body– The text message– No particular structure

or meaning

header

body

blankline

Page 13: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

E-Mail Message Format (RFC 822)• E-mail messages have two parts

– A header, in 7-bit U.S. ASCII text– A body, also represented in 7-bit U.S. ASCII text

• Header– Series of lines ending in carriage return and line feed– Each line contains a type and value, separated by “:”– E.g., “To: [email protected]” and “Subject: Hello”– Additional blank line before the body begins

• Body– Series of text lines with no additional structure/meaning– Conventions arose over time (e.g., e-mail signatures)

Page 14: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Limitation: Sending Non-Text Data• E-mail body is 7-bit U.S. ASCII

– What about non-English text?– What about binary files (e.g., images and executables)?

• Solution: convert non-ASCII data to ASCII– Base64 encoding: map each group of three bytes into four printable U.S.-ASCII characters– Uuencode (Unix-to-Unix Encoding) was widely used

• Output an encoded text file• Begin and ending line shows the encoding algorithm

– 1st:: uuencode –m cat.txt < lecture.ppt; -m: MIME Base64

– 2nd: uuencode cat.txt < lecture.ppt.; historical algorithm

– Uudecode produces cat.txt

begin-base64 644 cat.txt #AC/0

====

begin 644 cat.txt MT,\X

end

Page 15: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Limitation: Sending Multiple Items

• Users often want to send multiple pieces of data– Multiple images, powerpoint files, or e-mail messages– Yet, e-mail body is a single, uninterpreted data chunk

• Example: e-mail digests– Encapsulating several e-mail messages into one aggregate

messages (i.e., a digest)– Commonly used on high-volume mailing lists

• Conventions arose for how to delimit the parts– E.g., well-known separator strings between the parts– Yet, having a standard way to handle this is better

Page 16: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Multipurpose Internet Mail Extensions

• Additional headers to describe the message body– MIME-Version: the version of MIME being used– Content-Type: the type of data contained in the message– Content-Transfer-Encoding: how the data are encoded

• Definitions for a set of content types and subtypes– E.g., image with subtypes gif and jpeg– E.g., text with subtypes plain, html, and richtext– E.g., application with subtypes postscript and msword– E.g., multipart for messages with multiple data types

• A way to encode the data in ASCII format– Base64 encoding, as in uuencode/uudecode

Page 17: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

MIME-Version: 1.0Subject: picture of my dogFrom: Xiaowei Yang <[email protected]>To: Xiaowei Yang <[email protected]>Content-Type: multipart/mixed; boundary=00151759359af49a3e04a1271622

--00151759359af49a3e04a1271622Content-Type: text/plain; charset=ISO-8859-1

Hi,

This is a picture of my dog.

Cheers,

Xiaowei

--00151759359af49a3e04a1271622Content-Type: image/jpeg; name="Neo-Run.jpg"Content-Disposition: attachment; filename="Neo-Run.jpg"Content-Transfer-Encoding: base64X-Attachment-Id: f_gmmpmaoi0

/9j/4AAQSkZJRgABAQEAYABgAAD/4SJ5RXhpZgAASUkqAAgAAAAIAA8BAgAHAAAAbgAAABABAgAM…

MIME version

type and subtype

type and subtype

Encoded data

Ex: Email Msg using MIME

Page 18: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Distribution of Content Types• Content types in my own e-mail archive

– Searched on “Content-Type”, not case sensitive– Extracted the value field, and counted unique types– At UNIX command line: grep -i Content-Type * | cut -d" " -f2 | sort | uniq -c | sort –nr

• Out of 44343 matches– 25531: text/plain– 7470: multipart to send attachments– 4230: text/html– 759: application/pdf– 680: application/msword– 479: application/octet-stream– 292: image (mostly jpeg, and some gif, tiff, and bmp)

Page 19: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

E-Mail Addresses• Components of an e-mail address

– Local mailbox (e.g., xwy or bob.flower)– Domain name (e.g., cs.duke.edu)

• Domain name is not necessarily the mail server– Mail server may have longer/cryptic name

• E.g., cs.duke.edu vs. one.cs.duke.edu

– Multiple servers may exist to tolerate failures• E.g., duke.edu vs. authdns{1,2,3,4}.netcom.duke.edu

• Identifying the mail server for a domain– DNS query asking for MX records (Mail eXchange)

• E.g., nslookup –q=mx duke.edu, dig MX duke.edu– Then, a regular DNS query to learn the IP address

Page 20: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Mail Servers and User Agents

• Mail servers– Always on and always accessible– Transferring e-mail to and from other servers

• User agents– Sometimes on and sometimes accessible– Intuitive interface for the user

useragent

mail server

useragent

mail serveruseragent

useragent

Page 21: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

SMTP Store-and-Forward Protocol

• Messages sent through a series of servers– A server stores incoming messages in a queue– … to await attempts to transmit them to the next hop

• If the next hop is not reachable– The server stores the message and tries again later

• Each hop adds its identity to the message– By adding a “Received” header with its identity– Helpful for diagnosing problems with e-mail

useragent

mail server

useragent

mail server

Page 22: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Example With Received HeaderDelivered-To: [email protected] Received: by 10.140.135.17 with SMTP id i17cs431026rvd; Wed, 14 Apr 2010 10:23:53 -0700 (PDT) Received: by 10.141.108.3 with SMTP id k3mr495928rvm.141.1271265832656; Wed, 14 Apr 2010 10:23:52 -0700 (PDT) Return-Path: <[email protected]> Received: from one.cs.duke.edu (one.cs.duke.edu [152.3.140.161]) by mx.google.com with ESMTP id bh13si1413883ibb.64.2010.04.14.10.23.51; Wed, 14 Apr 2010 10:23:51 -0700 (PDT) Received-SPF: pass (google.com: domain of [email protected] designates 152.3.140.161 as permitted sender) client-ip=152.3.140.161; Authentication-Results: mx.google.com; spf=pass (google.com: domain of [email protected] designates 152.3.140.161 as permitted sender) [email protected]; dkim=pass (test mode) [email protected] Received: from one.cs.duke.edu (localhost [127.0.0.1]) by one.cs.duke.edu (8.14.2/8.14.2) with ESMTP id o3EHNoWw023327 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for <[email protected]>; Wed, 14 Apr 2010 13:23:50 -0400 (EDT) X-DKIM: Sendmail DKIM Filter v2.8.3 one.cs.duke.edu o3EHNoWw023327 Authentication-Results: cs.duke.edu; dkim=pass (1024-bit key) [email protected]; x-dkim-adsp=none Received: (from xwy@localhost) by one.cs.duke.edu (8.14.2/8.14.2/Submit) id o3EHNoVQ023326 for [email protected]; Wed, 14 Apr 2010 13:23:50 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on one.cs.duke.eduX-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=AWL,DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DK_SIGNED,FREEMAIL_FROM,HTML_MESSAGE,SPF_PASS shortcircuit=no autolearn=ham version=3.3.1X-Spam-CMAE-Analysis: v=1.1 cv=Pto2NXHwdLBwzRB8+vd5Qd2kiNuFoxIMnIFOeK+fhJM= c=1 sm=0 a=aut-g5bx_9gA:10 a=e5d5pRNFdwYY0VJDlD0A:9 a=qoy35m6o3OoPNk0ReNInnvtYc2AA:4 a=wPNLvfGTeEIA:10 a=nlx8PpsGfoIU8a_ktGoA:9 a=n0XNdzWZCnTTayHvvAlEaa-HHpcA:4 a=HpAAvcLHHh0Zw7uRqdWCyQ==:117 Received: from mail-wy0-f175.google.com (mail-wy0-f175.google.com [74.125.82.175]) by one.cs.duke.edu (8.14.2/8.14.2) with ESMTP id o3EHNmL0023285 for <[email protected]>; Wed, 14 Apr 2010 13:23:48 -0400 (EDT)X-DKIM: Sendmail DKIM Filter v2.8.3 one.cs.duke.edu o3EHNmL0023285 Received: by wyf23 with SMTP id 23so172877wyf.6 for <[email protected]>; Wed, 14 Apr 2010 10:23:42 -0700 (PDT)DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:received:message-id :subject:from:to:content-type; bh=Xd14scK+5arOf0viCr7Xq/aCwNDuNRwZBCvFd/VF6jA=; b=iS7Cz75uCioxhPwiCCYexDG42vvUSD9/cpSDHQvXpxMOY1cL4RL3/IvOEvbEcit/j1 JoULkJzawiPY4dZ1W/mbU747gdG+1WYjLCGTR7+LTS+N2xy7CY74hcJvz52Ehq+zNbBj pyOzZRJFFlHp2ub7wUos56T4dvMyxwDPHgYjk= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=qcC9huJFV2OjVf2/s3zD6ytA7w2YGCjaneLhX9VQG0/kjD32sRYknnLIGYmTpu7qNo pzmjuI85dkDWu42xVRpLb0TpVNdvwGQNqEFONLT6IkYxUUjqo97hbFEoJ1fecmAYCBfR pF2/GPy0znxe+cjahQGKzIHfI3O/55N10/HoE= MIME-Version: 1.0 Received: by 10.216.85.21 with HTTP; Wed, 14 Apr 2010 10:23:42 -0700 (PDT) Date: Wed, 14 Apr 2010 13:23:42 -0400 Received: by 10.216.86.209 with SMTP id w59mr4894770wee.186.1271265822165; Wed, 14 Apr 2010 10:23:42 -0700 (PDT) Message-ID: <[email protected]> Subject: discussion list From: Xin Wu <[email protected]> To: Xiaowei Yang <[email protected]> Content-Type: multipart/alternative; boundary=0016e6d644c9becd43048435a332 X-Loop: [email protected]

Page 23: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Multiple Server Hops

• Typically at least two mail servers– Sending and receiving sides

• May be more– Separate servers for key functions

• Spam filtering• Virus scanning

– Servers that redirect the message• From [email protected] to [email protected]• Messages to cs.duke.edu go through extra hops

– Electronic mailing lists• Mail delivered to the mailing list’s server• … and then the list is expanded to each recipient

Page 24: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Electronic Mailing Lists• Community of users reachable by one address

– Allows groups of people to receive the messages• Exploders

– Explode a single e-mail message into multiple messages– One copy of the message per recipient

• Handling bounced messages– Mail may bounce for several reasons– E.g., recipient mailbox does not exist; resource limits

• E-mail digests– Sending a group of mailing-list messages at once– Messages delimited by boundary strings– … or transmitted using multiple/digest format

Page 25: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Simple Mail Transfer Protocol

• Client-server protocol– Client is the sending mail server– Server is the receiving mail server

• Reliable data transfer– Built on top of TCP (on port 25)

• Push protocol– Sending server pushes the file to the receiving server– … rather than waiting for the receiver to request it

useragent

mail server

useragent

mail server

SMTP SMTPaccessprotocol

Page 26: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Simple Mail Transfer Protocol (Cont.)

• Command/response interaction– Commands: ASCII text– Response: three-digit status code and phrase

• Synchronous– Sender awaits response from a command– … before issuing the next command– Though pipelining of commands was added later

• Three phases of transfer– Handshaking (greeting)– Transfer of messages– Closure

Page 27: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Scenario: Alice Sends Message to Bob1) Alice uses UA to compose

message “to” [email protected]

2) Alice’s UA sends message to her mail server; message placed in message queue

3) Client side of SMTP opens TCP connection with Bob’s mail server

4) SMTP client sends Alice’s message over the TCP connection

5) Bob’s mail server places the message in Bob’s mailbox

6) Bob invokes his user agent to read message

useragent

mailserver

mailserver user

agent

1

2 3 4 56

Page 28: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Sample SMTP interaction

• Show an example via telnet• Use dig to find the mail server

– dig MX gmail.com

• telnet mailserver 25

Page 29: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Sample SMTP interaction

S: 220 hamburger.edu C: HELO crepes.fr S: 250 Hello crepes.fr, pleased to meet you C: MAIL FROM: <[email protected]> S: 250 [email protected]... Sender ok C: RCPT TO: <[email protected]> S: 250 [email protected] ... Recipient ok C: DATA S: 354 Enter mail, end with "." on a line by itself C: Do you like ketchup? C: How about pickles? C: . S: 250 Message accepted for delivery C: QUIT S: 221 hamburger.edu closing connection

Page 30: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Try SMTP For Yourself

• Running SMTP– Run “telnet servername 25” at UNIX prompt– See 220 reply from server– Enter HELO, MAIL FROM, RCPT TO, DATA commands

• Thinking about spoofing?– Very easy– Just forge the argument of the “FROM” command– … leading to all sorts of problems with spam

• Spammers can be even more clever– E.g., using open SMTP servers to send e-mail– E.g., forging the “Received” header

Page 31: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Retrieving E-Mail From the Server

• Server stores incoming e-mail by mailbox– Based on the “From” field in the message

• Users need to retrieve e-mail– Asynchronous from when the message was sent– With a way to view the message and reply– With a way to organize and store the messages

• In the old days…– User logged on to the machine where mail was delivered– Users received e-mail on their main work machine

Page 32: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Influence of PCs on E-Mail Retrieval

• Separate machine for personal use– Users did not want to log in to remote machines

• Resource limitations– Most PCs did not have enough resources to act as a full-

fledged e-mail server

• Intermittent connectivity– PCs only sporadically connected to the network– … due to dial-up connections, and shutting down of PC– Too unwieldy to have sending server keep trying

• Led to the creation of Post Office Protocol (POP)

Page 33: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Post Office Protocol (POP)

• POP goals– Support users with intermittent network connectivity– Allow them to retrieve e-mail messages when connected– … and view/manipulate messages when disconnected

• Typical user-agent interaction with a POP server– Connect to the server– Retrieve all e-mail messages– Store messages on the user’s PCs as new messages– Delete the messages from the server– Disconnect from the server

• User agent still uses SMTP to send messages

Page 34: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

POP3 Protocol

Authorization phase• Client commands:

– user: declare username– pass: password

• Server responses– +OK– -ERR

Transaction phase, client:• list: list message numbers• retr: retrieve message by

number• dele: delete• quit

C: list S: 1 498 S: 2 912 S: . C: retr 1 S: <message 1 contents> S: . C: dele 1 C: retr 2 S: <message 1 contents> S: . C: dele 2 C: quit S: +OK POP3 server signing off

S: +OK POP3 server ready C: user bob S: +OK C: pass hungry S: +OK user successfully logged on

Page 35: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Limitations of POP

• Does not handle multiple mailboxes easily– Designed to put user’s incoming e-mail in one folder

• Not designed to keep messages on the server– Instead, designed to download messages to the client

• Poor handling of multiple-client access to mailbox– Increasingly important as users have home PC, work PC,

laptop, cyber café computer, friend’s machine, etc.• High network bandwidth overhead

– Transfers all of the e-mail messages, often well before they are read (and they might not be read at all!)

Page 36: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Interactive Mail Access Protocol (IMAP)• Supports connected and disconnected operation

– Users can download message contents on demand

• Multiple clients can connect to mailbox at once– Detects changes made to the mailbox by other clients– Server keeps state about message (e.g., read, replied to)

• Access to MIME parts of messages & partial fetch– Clients can retrieve individual parts separately– E.g., text of a message without downloading attachments

• Multiple mailboxes on the server– Client can create, rename, and delete mailboxes– Client can move messages from one folder to another

• Server-side searches– Search on server before downloading messages

Page 37: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu
Page 38: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Web-Based E-Mail• User agent is an ordinary Web browser

– User communicates with server via HTTP– E.g., Gmail, Yahoo mail, and Hotmail

• Reading e-mail– Web pages display the contents of folders– … and allow users to download and view messages– “GET” request to retrieve the various Web pages

• Sending e-mail– User types the text into a form and submits to the server– “POST” request to upload data to the server– Server uses SMTP to deliver message to other servers

• Easy to send anonymous e-mail (e.g., spam)

Page 39: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Conclusion• Application-layer protocols

– Applications vs. application-layer protocols– Tailoring the protocol to the application

• Electronic mail– E-mail messages, and multipurpose Internet Mail extensions

(MIME)– E-mail addresses, and role of DNS– E-mail servers and user agents

• Electronic mail protocols– Transferring e-mail messages between servers

• Simple Mail Transfer Protocol (SMTP)– Retrieving e-mail messages (POP, IMAP, and HTTP)

• Client-side protocols

Page 40: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

CPS 114 Lab1 Reliable Transport

Page 41: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Objective

• A reliable data connection between two processes on top of UDP which is unreliable– Handle Packet drop, reordering, corruption– Provide flow control

• Sliding Window (Both sender and receiver)• Two independent data links each connection:

Process A Process B

Link 1

Link 2

Page 42: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

What can the program do

xwy@linux21$./reliable 6666 linux22:5555

[listening on UDP port 6666]

Hello!

On machine linux21, run:

On machine linux22, run:

xwy@linux22$./reliable 5555 linux21:6666

[listening on UDP port 5555]

Hello!

Page 43: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Implementation

• reliable.c: functions you need to fill in• rlib.c & rlib.h:

– the library supporting code– Just need to know which functions you should call

• reference: a solution program for relable• tester: Use it to debug (-v option) and grade your

program

xwy@linux22> ./tester ./reliable

Page 44: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Data Flow

conn_input()

Sent out into network

Reliable

STDIN

Library Functions

STDOUT

Receive from network

conn_output()

Library Functions

Reliable

You cannot use printf() in your program, because it would be considered as data receive from the sender. Use fprintf(stderr, “…”, …) instead

Page 45: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

reliable.c• reliable_state (also defined as rel_t)

– A data structure to maintain the connection state for one reliable connection

– Should include two slide window (one for sending and one for receiving)

– Add as much things as you need for the connection

• rel_create(), rel_destroy(), rel_recvpkt(), rel_read(), rel_output(), rel_timer()– Six functions you need to implement– Refer to the lab1 tutorial for details

Page 46: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

Some Hints• The original code actually support two running mode: single

connection mode and server/client mode. Only the first one is required

• Only when two data links both terminated with EOF from STDIN (Ctrl+D in Linux) should the connection be destroyed. Remember to report EOF to conn_output.

• To handle the big/little-endian. Use htonl()/htons() to write a header and ntohl()/ntohs() to read a header.

Page 47: CompSci 356: Computer Network Architectures Lecture 23: Application Layer Protocols Chapter 9.1 Xiaowei Yang xwy@cs.duke.edu

More Hints• Use while loop in the rel_read(). If conn_input() returns -1,

handle the EOF packet and break from the loop. If conn_input() returns 0, simply break from the loop. If the sender’s window is full, break from the loop even if there is still more data from conn_input().

• Call rel_read() to ask for more data after you received some ack packets and some slots in sender’s window become vacant again.