290 likes | 303 Views
Application layer protocols. CSE 524: Lecture 6. Where we’re at…. Internet architecture and history Internet protocols in practice Application layer Overview and functions Network programming interface Specific application protocols HTTP DNS, SMTP/POP, FTP, P2P Transport layer
E N D
Application layer protocols CSE 524: Lecture 6
Where we’re at… • Internet architecture and history • Internet protocols in practice • Application layer • Overview and functions • Network programming interface • Specific application protocols • HTTP • DNS, SMTP/POP, FTP, P2P • Transport layer • Network layer • Data-link layer • Physical layer
DNS lookup methods • Recursive queries • Server goes out and searches for more info on behalf of the client (recursive) • Only returns final answer or “not found” • Iterative • Server responds with as much as it knows (i.e. name of server to contact next) • Client iteratively queries additional servers
root & edu DNS server www.cse.ogi.edu www.cse.ogi.edu NS ogi.edu ogi.edu DNS server Local DNS server NS cse.ogi.edu Client cse.ogi.edu DNS server www=IPaddr AL: DNS Lookup Caching Example
cse.ogi.edu entry cached root & edu DNS server ftp.cse.ogi.edu ogi.edu DNS server Local DNS server Client ftp.cse.ogi.edu cse.ogi.edu DNS server ftp=IPaddr AL: Subsequent Lookup Example
AL: A word about iterated queries and caching • Recall • Recursive query to local DNS server • Iterative query from local DNS server on • Why not do iterative queries from host? • Win2k client • Does iterative queries from host • Caching implications?
AL: DNS dig example • Real example using dig and named • Shows iterative queries, recursive queries, and caching • dig • cat /etc/resolv.conf • dig +norecurse www.thefengs.com. • dig @M.GTLD-SERVERS.NET. +norecurse www.thefengs.com. • dig @dns1.register.com. +norecurse www.thefengs.com. • dig +norecurse www.thefengs.com. • dig +recurse www.thefengs.com. • dig +norecurse www.thefengs.com.
msg header • identification: 16 bit # for query, reply to query uses same # • flags: • query or reply • recursion desired • recursion available • reply is authoritative AL: DNS protocol, messages DNS protocol :queryand repy messages, both with same message format
Name, type fields for a query RRs in reponse to query records for authoritative servers additional “helpful” info that may be used AL: DNS protocol, messages
AL: DNS issues • Poor static configuration (root server list) • Lack of exponential backoff • No centralized caching per site • Each machine runs on caching local server • UDP used for queries • Need reliability -> Why not TCP? • Vulnerability of 13 TLD servers • Jon Postel and his mobility “experiment” • Attacks on TLD have occurred
outgoing message queue user mailbox user agent mail server user agent SMTP mail server user agent SMTP SMTP user agent mail server user agent user agent AL: Electronic Mail Three major components: • user agents (i.e. mail readers) • Mozilla, Eudora, pine • compose, edit, read, send • mail servers • Message storage and transfer • Sendmail, postfix, etc. • Can sometimes be co-located with user agents • Transfer protocol • SMTP • simple mail transfer protocol
user agent mail server user agent SMTP mail server user agent SMTP SMTP user agent mail server user agent user agent AL: Mail servers • Stores mailbox which contains incoming messages for user • Stores message queue of outgoing mail messages • Storage for messages where destination is temporarily unavailable • Uses SMTP to send email messages to other mail servers • Mail servers are both clients and servers to each other
AL: Electronic Mail: smtp [RFC 821] • Uses TCP to reliably transfer email message from client to server, port 25 • direct transfer: sending server to receiving server • relay: intermediate server transfer • three phases of transfer • handshaking (greeting) • transfer of messages • closure • command/response interaction • commands: ASCII text • response: status code and phrase
S: 220 hamburger.edu C: HELO crepes.fr S: 250 Hello crepes.fr, pleased to meet you C: MAIL FROM: <alice@crepes.fr> S: 250 alice@crepes.fr... Sender ok C: RCPT TO: <bob@hamburger.edu> S: 250 bob@hamburger.edu ... 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 AL: Sample smtp interaction
AL: try smtp interaction for yourself: • telnet servername 25 • see 220 reply from server • enter HELO, MAIL FROM, RCPT TO, DATA, QUIT commands above lets you send email without using email client (reader)
Comparison with http http: pull email: push both have ASCII command/response interaction, status codes AL: smtp: final words • SMTP • uses persistent connections • requires that message (header & body) be in 7-bit ascii • certain character strings are not permitted in message (e.g., CRLF.CRLF). Thus message has to be encoded (usually into either base-64 or quoted printable) • smtp server uses CRLF.CRLF to determine end of message
header blank line body AL: Mail message format smtp: protocol for exchanging email msgs RFC 822: standard for text message format: • header lines, e.g., • To: • From: • Subject: differentfrom smtp commands! • body • the “message”, ASCII characters only • HTTP->html as SMTP->e-mail
MIME version method used to encode data multimedia data type, subtype, parameter declaration encoded data AL: Message format: multimedia extensions • MIME: multimedia mail extension, RFC 2045, 2056 • additional lines in msg header declare MIME content type From: alice@crepes.fr To: bob@hamburger.edu Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data ..... ......................... ......base64 encoded data
Video example subtypes: mpeg, quicktime Application other data that must be processed by reader before “viewable” example subtypes: msword, octet-stream AL: MIME typesContent-Type: type/subtype; parameters Text • example subtypes: plain, html Image • example subtypes: jpeg, gif Audio • exampe subtypes: basic (8-bit mu-law encoded), 32kadpcm (32 kbps coding)
AL: Multipart Type From: alice@crepes.fr To: bob@hamburger.edu Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=98766789 --98766789 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain Dear Bob, Please find a picture of a crepe. --98766789 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data ..... ......................... ......base64 encoded data --98766789--
SMTP SMTP POP3 or IMAP user agent user agent sender’s mail server receiver’s mail server POP3 or IMAP SMTP web server web server HTTP HTTP user agent user agent AL: Mail access protocols • Mail delivery/transfer protocol • SMTP • Mail access protocol: retrieval from server • POP: Post Office Protocol [RFC 1939] • authorization (agent <-->server) and download • IMAP: Internet Mail Access Protocol [RFC 1730] • more features (more complex) • manipulation of stored msgs on server • HTTP: Hotmail , Yahoo! Mail, Horde/IMP etc.
S: +OK POP3 server ready C: user alice S: +OK C: pass hungry S: +OK user successfully logged on 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 AL: POP3 protocol authorization phase • client commands: • user: declare username • pass: password • server responses • +OK • -ERR transaction phase • client commands: • list: list message numbers • top: get head of message • retr: retrieve message by number • dele: delete • quit
FTP user interface FTP client FTP server AL: ftp: the file transfer protocol • 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 file transfer user at host remote file system local file system
TCP control connection port 21 TCP data connection port 20 FTP client FTP server AL: ftp: separate control, data connections • Client contacts server at port 21 using TCP • “Control connection” for exchanging commands and responses • Out-of-band signalling between end-points • Server maintains “state”: current directory, earlier authentication • Note the difference to HTTP authentication • When files need to be transferred • Request goes through control connection • A new TCP connection for data transfer is negotiated and created • Negotiation determines end-points of transfer and ports to use for new connection • Protocol allows one ftp client to initiate a transfer between two ftp servers
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 AL: ftp commands, responses Sample commands: • sent as ASCII text over control channel • USER username • PASS password • LISTreturn list of file in current directory • RETR filenameretrieves (gets) file • STOR filenamestores (puts) file onto remote host
AL: ftp, NAT and the PORT command • Normal FTP mode • Server has port 20, 21 reserved • Client initiates control connection by connecting to port 21 on server • Client allocates port X for data connection • Client passes the data connection port (X) and its IP address in a PORT command to server • Server parses PORT command and initiates connection from its own port 20 to the client on port X • What if client is behind a NAT device? • NAT must capture outgoing connections destined for port 21 and look to translate X within payload • What if NAT doesn’t parse PORT command correctly? • What if ftp server is running on a different port than 21? • http://www.practicallynetworked.com/support/linksys_ftp_port.htm
AL: ftp, NAT, and the PORT command • Passive (PASV) mode • Client initiates control connection by connecting to port 21 on server • Client enables “Passive” mode • Server responds with PORT command giving client the IP address and port to use for subsequent data connection (usually port 20, but can be bypassed) • Client initiates data connection by connecting to specified port on server • Most web browsers do PASV-mode ftp • What if server is behind a NAT device? • See client issues • What if both client and server are behind NAT devices? • Problem • Similar to P2P xfers