Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications app architectures ...

41
Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications app architectures app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic mail SMTP, POP3, IMAP 2.5 DNS 2.6 P2P applications 2.7 socket programming with UDP and TCP

Transcript of Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications app architectures ...

Page 1: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-1

Chapter 2: outline

2.1 principles of network applications app architectures app

requirements2.2 Web and HTTP2.3 FTP 2.4 electronic mail

SMTP, POP3, IMAP

2.5 DNS

2.6 P2P applications2.7 socket

programming with UDP and TCP

Page 2: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-2

FTP: the file transfer protocolfile transfer

FTPserver

FTPuser

interface

FTPclient

local filesystem

remote filesystem

user at host

transfer file to/from remote host client/server model

client: side that initiates transfer (either to/from remote)

server: remote host ftp: RFC 959 ftp server: port 21

Page 3: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-3

FTP: separate control, data connections FTP client contacts FTP

server at port 21, using TCP

client authorized over control connection

client browses remote directory, sends commands over control connection

when server receives file transfer command, server opens 2nd TCP data connection (for file) to client

after transferring one file, server closes data connection

FTPclient

FTPserver

TCP control connection,server port 21

TCP data connection,server port 20

server opens another TCP data connection to transfer another file

control connection: “out of band”

FTP server maintains “state”: current directory, earlier authentication

Page 4: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-4

FTP commands, responses

sample commands: sent as ASCII text

over control channel USER username PASS password LIST return list of

file in current directory

RETR filename retrieves (gets) file

STOR filename stores (puts) file onto remote host

sample return codes status code and

phrase (as in HTTP) 331 Username OK, password required

125 data connection already open; transfer starting

425 Can’t open data connection

452 Error writing file

Page 5: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-5

Chapter 2: outline

2.1 principles of network applications app architectures app

requirements2.2 Web and HTTP2.3 FTP 2.4 electronic mail

SMTP, POP3, IMAP

2.5 DNS

2.6 P2P applications2.7 socket

programming with UDP and TCP

Page 6: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-6

Electronic mailThree major

components: user agents mail servers simple mail transfer

protocol: SMTP

User Agent a.k.a. “mail reader” composing, editing,

reading mail messages e.g., Outlook, Thunderbird,

iPhone mail client outgoing, incoming

messages stored on server

user mailbox

outgoing message queue

mailserver

mailserver

mailserver

SMTP

SMTP

SMTP

useragent

useragent

useragent

useragent

useragent

useragent

Page 7: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-7

Electronic mail: mail servers

mail servers: mailbox contains

incoming 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

mailserver

mailserver

mailserver

SMTP

SMTP

SMTP

useragent

useragent

useragent

useragent

useragent

useragent

Page 8: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-8

Electronic Mail: SMTP [RFC 2821] uses TCP to reliably transfer email

message from client to server, port 25 three phases of transfer

handshaking (greeting) transfer of messages closure

command/response interaction (like HTTP, FTP) commands: ASCII text response: status code and phrase

messages must be in 7-bit ASCI

Page 9: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-9

useragent

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

mailserver

mailserver

1

2 3 4

5

6

Alice’s mail server Bob’s mail server

useragent

Page 10: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-10

SMTP: final words

SMTP uses persistent connections

SMTP requires message (header & body) to be in 7-bit ASCII

=> MIME (multi-purpose internet mail extension) is developed to send non-ASCII code

comparison with HTTP:

HTTP: pull SMTP: push

Page 11: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-11

Mail message format

SMTP: protocol for exchanging email msgs

RFC 822: standard for text message format:

header lines, e.g., To: From: Subject:

Body: the “message” ASCII characters only

header

body

blankline

Page 12: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-12

Mail access protocols

SMTP: delivery/storage to receiver’s server mail access protocol: retrieval from server

POP: Post Office Protocol [RFC 1939]: authorization, download

IMAP: Internet Mail Access Protocol [RFC 1730]: more features, including manipulation of stored msgs on server

HTTP: gmail, Hotmail, Yahoo! Mail, etc.

sender’s mail server

SMTP SMTPmail

accessprotocol

receiver’s mail server

(e.g., POP, IMAP)

useragent

useragent

Page 13: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-13

POP3 (more) and IMAPmore about POP3 POP3 is “download

and delete” mode Bob cannot re-

read e-mail if he changes client

IMAP keeps all messages

in one place: at server

allows user to organize messages in folders

Page 14: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-14

Chapter 2: outline

2.1 principles of network applications app architectures app

requirements2.2 Web and HTTP2.3 FTP 2.4 electronic mail

SMTP, POP3, IMAP

2.5 DNS

2.6 P2P applications2.7 socket

programming with UDP and TCP

Page 15: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-15

DNS: domain name system

people: many identifiers: SSN, name,

passport #Internet hosts, routers:

IP address (32 bit) - used for addressing datagrams

“name”, e.g., www.yahoo.com - used by humans

Q: how to map between IP address and name, and vice versa ?

Domain Name System: distributed database

implemented in hierarchy of many name servers

application-layer protocol: hosts, name servers communicate to resolve names (address/name translation) note: core Internet

function, implemented as application-layer protocol

complexity at network’s “edge”

Page 16: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-16

DNS: services, structure why not centralize DNS? single point of failure traffic volume distant centralized

database maintenance

DNS services hostname to IP

address translation

A: doesn’t scale!

Page 17: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-17

Root DNS Servers

com DNS servers org DNS servers edu DNS servers

poly.eduDNS servers

umass.eduDNS servers

yahoo.comDNS servers

amazon.comDNS servers

pbs.orgDNS servers

DNS: a distributed, hierarchical database

client wants IP for www.amazon.com; 1st approx: client queries root server to find com DNS server client queries .com DNS server to get amazon.com

DNS server client queries amazon.com DNS server to get IP

address for www.amazon.com

… …

Page 18: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-18

DNS: root name servers contacted by local name server that can not

resolve name root name server:

contacts authoritative name server if name mapping not known

gets mapping returns mapping to local name server

13 root name “servers” worldwide

a. Verisign, Los Angeles CA (5 other sites)b. USC-ISI Marina del Rey, CAl. ICANN Los Angeles, CA (41 other sites)

e. NASA Mt View, CAf. Internet Software C.Palo Alto, CA (and 48 other sites)

i. Netnod, Stockholm (37 other sites)

k. RIPE London (17 other sites)

m. WIDE Tokyo(5 other sites)

c. Cogent, Herndon, VA (5 other sites)d. U Maryland College Park, MDh. ARL Aberdeen, MDj. Verisign, Dulles VA (69 other sites )

g. US DoD Columbus, OH (5 other sites)

Page 19: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-19

TLD, authoritative servers

top-level domain (TLD) servers: responsible for com, org, net, edu, gov, and all

top-level country domains, e.g.: uk, fr, ca, kr, mn

authoritative DNS servers: organization’s own DNS server(s), providing

authoritative hostname to IP mappings for organization’s named hosts

can be maintained by organization or service provider

Page 20: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-20

Local DNS name server

does not strictly belong to hierarchy each ISP (residential ISP, company,

university) has one also called “default name server”

when host makes DNS query, query is sent to its local DNS server has local cache of recent name-to-address

translation pairs (but may be out of date!) acts as proxy, forwards query into hierarchy

Page 21: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-21

requesting hostcis.poly.edu

gaia.cs.umass.edu

root DNS server

local DNS serverdns.poly.edu

1

23

4

5

6

authoritative DNS serverdns.cs.umass.edu

78

TLD DNS server

DNS name resolution example

host at cis.poly.edu wants IP address for gaia.cs.umass.edu

contacted server replies with name of server to contact

“I don’t know this name, but ask this server”

Page 22: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-22

DNS: caching, updating records once (any) name server learns mapping,

it caches mapping cache entries timeout (disappear) after some

time (TTL) TLD servers typically cached in local name

servers• thus root name servers not often visited

cached entries may be out-of-date if name host changes IP address, may not be

known Internet-wide until all TTLs expire update/notify mechanisms proposed IETF

standard RFC 2136

Page 23: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-23

Chapter 2: outline

2.1 principles of network applications app architectures app

requirements2.2 Web and HTTP2.3 FTP 2.4 electronic mail

SMTP, POP3, IMAP

2.5 DNS

2.6 P2P applications2.7 socket

programming with UDP and TCP

Page 24: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-24

P2P file distribution: BitTorrent

tracker: tracks peers participating in torrent

torrent: group of peers exchanging chunks of a file

Alice arrives …

file divided into 256Kb chunks peers in torrent send/receive file chunks

… obtains listof peers from tracker… and begins exchanging file chunks with peers in torrent

Page 25: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-25

peer joining torrent: has no chunks, but will

accumulate them over time from other peers

registers with tracker to get list of peers, connects to subset of peers (“neighbors”)

P2P file distribution: BitTorrent

while downloading, peer uploads chunks to other peers

peer may change peers with whom it exchanges chunks

peers may come and go once peer has entire file, it may (selfishly) leave

or remain in torrent

Page 26: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-26

BitTorrent: requesting, sending file chunks

requesting chunks: at any given time,

different peers have different subsets of file chunks

periodically, Alice asks each peer for list of chunks that they have

Alice requests missing chunks from peers, rarest first

sending chunks: tit-for-tat

Alice sends chunks to those four peers currently sending her chunks at highest rate other peers are choked by

Alice (do not receive chunks from her)

re-evaluate top 4 every10 secs

every 30 secs: randomly select another peer, starts sending chunks “optimistically unchoke” this

peer newly chosen peer may join

top 4

Page 27: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-27

BitTorrent: tit-for-tat(1) Alice “optimistically unchokes” Bob

(2) Alice becomes one of Bob’s top-four providers; Bob reciprocates(3) Bob becomes one of Alice’s top-four providers

higher upload rate: find better trading partners, get file faster !

Page 28: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-28

Chapter 2: outline

2.1 principles of network applications app architectures app requirements

2.2 Web and HTTP2.3 FTP 2.4 electronic mail

SMTP, POP3, IMAP

2.5 DNS

2.6 P2P applications2.7 socket

programming with UDP and TCP

Page 29: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-29

Socket programming

goal: learn how to build client/server applications that communicate using sockets

socket: door between application process and end-end-transport protocol

Internet

controlledby OS

controlled byapp developer

transport

application

physical

link

network

process

transport

application

physical

link

network

processsocket

Page 30: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-30

Socket programming

Two socket types for two transport services: UDP: unreliable datagram TCP: reliable, byte stream-oriented

Application Example:1. Client reads a line of characters (data)

from its keyboard and sends the data to the server.

2. The server receives the data and converts characters to uppercase.

3. The server sends the modified data to the client.

4. The client receives the modified data and displays the line on its screen.

Page 31: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-31

Socket programming with UDPUDP: no “connection” between client &

server no handshaking before sending data sender explicitly attaches IP destination

address and port # to each packet rcvr extracts sender IP address and port# from

received packet

UDP: transmitted data may be lost or received out-of-order

Application viewpoint: UDP provides unreliable transfer of groups of

bytes (“datagrams”) between client and server

Page 32: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Client/server socket interaction: UDP

closeclientSocket

read datagram fromclientSocket

create socket:clientSocket =socket(AF_INET,SOCK_DGRAM)

Create datagram with server IP andport=x; send datagram viaclientSocket

create socket, port= x:serverSocket =socket(AF_INET,SOCK_DGRAM)

read datagram fromserverSocket

write reply toserverSocketspecifying client address,port number

Application 2-32

server (running on serverIP) client

Page 33: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-33

Example app: UDP client

from socket import *

serverName = ‘hostname’

serverPort = 12000

clientSocket = socket(socket.AF_INET,

socket.SOCK_DGRAM)

message = raw_input(’Input lowercase sentence:’)

clientSocket.sendto(message,(serverName, serverPort))

modifiedMessage, serverAddress =

clientSocket.recvfrom(2048)

print modifiedMessage

clientSocket.close()

Python UDPClientinclude Python’s socket library

create UDP socket for server

get user keyboardinput

Attach server name, port to message; send into socket

print out received string and close socket

read reply characters from

socket into string

Page 34: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-34

Example app: UDP server

from socket import *

serverPort = 12000

serverSocket = socket(AF_INET, SOCK_DGRAM)

serverSocket.bind(('', serverPort))

print “The server is ready to receive”

while 1:

message, clientAddress = serverSocket.recvfrom(2048)

modifiedMessage = message.upper()

serverSocket.sendto(modifiedMessage, clientAddress)

Python UDPServer

create UDP socket

bind socket to local port number 12000

loop forever

Read from UDP socket into message, getting client’s address (client IP and port)

send upper case string back to this client

Page 35: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-35

Socket programming with TCPclient must contact server server process must first

be running server must have created

socket (door) that welcomes client’s contact

client contacts server by: Creating TCP socket,

specifying IP address, port number of server process

when client creates socket: client TCP establishes connection to server TCP

when contacted by client, server TCP creates new socket for server process to communicate with that particular client allows server to talk

with multiple clients source port numbers

used to distinguish clients (more in Chap 3)

TCP provides reliable, in-orderbyte-stream transfer (“pipe”) between client and server

application viewpoint:

Page 36: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-36

Client/server socket interaction: TCP

wait for incomingconnection requestconnectionSocket =serverSocket.accept()

create socket,port=x, for incoming request:serverSocket = socket()

create socket,connect to hostid, port=xclientSocket = socket()

server (running on hostid) client

send request usingclientSocketread request from

connectionSocket

write reply toconnectionSocket

TCP connection setup

closeconnectionSocket

read reply fromclientSocket

closeclientSocket

Page 37: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-37

Example app: TCP client

from socket import *

serverName = ’servername’

serverPort = 12000

clientSocket = socket(AF_INET, SOCK_STREAM)

clientSocket.connect((serverName,serverPort))

sentence = raw_input(‘Input lowercase sentence:’)

clientSocket.send(sentence)

modifiedSentence = clientSocket.recv(1024)

print ‘From Server:’, modifiedSentence

clientSocket.close()

Python TCPClient

create TCP socket for server, remote port 12000

No need to attach server name, port

Page 38: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-38

Example app: TCP server

from socket import *

serverPort = 12000

serverSocket = socket(AF_INET,SOCK_STREAM)

serverSocket.bind((‘’,serverPort))

serverSocket.listen(1)

print ‘The server is ready to receive’

while 1:

connectionSocket, addr = serverSocket.accept()

sentence = connectionSocket.recv(1024)

capitalizedSentence = sentence.upper()

connectionSocket.send(capitalizedSentence)

connectionSocket.close()

Python TCPServer

create TCP welcoming

socket

server begins listening for incoming TCP requests

loop forever

server waits on accept()for incoming requests, new socket created on return

read bytes from socket (but not address as in UDP)

close connection to this client (but not welcoming socket)

Page 39: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-39

Chapter 2: summary

application architectures client-server P2P

application service requirements: reliability, bandwidth,

delay Internet transport service

model connection-oriented,

reliable: TCP unreliable, datagrams: UDP

our study of network apps now complete!

specific protocols: HTTP FTP SMTP, POP, IMAP DNS P2P: BitTorrent,

DHT socket programming:

TCP, UDP sockets

Page 40: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Application Layer 2-40

typical request/reply message exchange: client requests info

or service server responds with

data, status code message formats:

headers: fields giving info about data

data: info being communicated

important themes: control vs. data msgs

in-band, out-of-band centralized vs.

decentralized stateless vs. stateful reliable vs. unreliable

msg transfer “complexity at network

edge”

Chapter 2: summarymost importantly: learned about

protocols!

Page 41: Application Layer 2-1 Chapter 2: outline 2.1 principles of network applications  app architectures  app requirements 2.2 Web and HTTP 2.3 FTP 2.4 electronic.

Homework

Application Layer 2-41

1. Read RFC 959 for FTP. List all of the client commands that are supported by the RFC.

2. Print out the header of an e-mail message you have recently received. How many “Received:” header lines are there? Analyze each of the header lines in the message.