Notes
Slide Show
Outline
1
Application-layer Protocols
  • Based on Notes by D. Hollinger
  • Based on UNIX Network Programming, Stevens, Chapter 9
  • Also Java Network Programming and Distributed Computing, Chapter 3,8
  • Also Online Java Tutorial, Sun.


2
Topics
  • Issues in Protocol Design


  • Sample Application-layer Protocols
    • TELNET
    • FTP
    • DNS
3
Application Protocol Design
  • Think of different people/teams, working on the client and server programs.
    • Different programming languages.
    • Diverse hardware, operating systems.
  • Be unambiguous, precise.
    • Consider potential error conditions.
  • Allow for future extensions.
    • Leave room for additional data, meta-data.
  • Do not replicate services provided by lower-layer protocols
    • e.g., checksum
4
In Summary
  • Strive for:


    • Interoperability
    • Precision
    • Extensibility
    • Efficiency
    • Minimality


5
Learn by Example
  • Many existing protocols are the result of long term collaborations.


  • Look at existing Request for Comments (RFC) documents, specifying protocols:
    • See http://www.rfc-editor.org/rfc.html
6
Knock-Knock Protocol
  • Server: “Knock knock!”
  • Client: “Who's there?”
  • Server: “Dexter.”
  • Client: “Dexter who?”
  • Server: “Dexter halls with boughs of holly.”
  • Client: “Groan.”
7
Java Implementation
  • Client class
    • KnockKnockClient.java

  • Server class
    • KnockKnockServer.java

  • Protocol class
    • KnockKnockProtocol.java
8
Supporting multiple clients

  • Main listener code
    • KKMultiServer.java


  • Protocol service thread code
    • KKMultiServerThread.java
9
The TELNET Protocol
  • Reference: RFC 854
10
TELNET vs. telnet
  • TELNET is a protocol that provides “a general, bi-directional, eight-bit byte oriented communications facility”.
  • telnet is a program that supports the TELNET protocol over TCP.
  • Many application protocols are built upon the TELNET protocol.
11
The TELNET Protocol
  • TCP connection
  • data and control over the same connection.
  • Network Virtual Terminal
  • negotiated options
12
Network Virtual Terminal
  • intermediate representation of a generic terminal.
  • provides a standard language for communication of terminal control functions.
13
Network Virtual Terminal
14
Negotiated Options
  • All NVTs support a minimal set of capabilities.
  • Some terminals have more capabilities than the minimal set.
  • The 2 endpoints negotiate a set of mutually acceptable options (character set, echo mode, etc).
15
Negotiated Options
  • The protocol for requesting optional features is well defined and includes rules for eliminating possible negotiation “loops”.
  • The set of options is not part of the TELNET protocol, so that new terminal features can be incorporated without changing the TELNET protocol.
16
Option examples
  • Line mode vs. character mode
  • echo modes
  • character set (EBCDIC vs. ASCII)
17
Control Functions
  • TELNET includes support for a series of control functions commonly supported by servers.


  • This provides a uniform mechanism for communication of (the supported) control functions.
18
Control Functions
  • Interrupt Process (IP)
    • suspend/abort process.
  • Abort Output (AO)
    • process can complete, but send no more output to user’s terminal.
  • Are You There (AYT)
    • check to see if system is still running.
19
More Control Functions
  • Erase Character (EC)
    • delete last character sent
    • typically used to edit keyboard input.


  • Erase Line (EL)
    • delete all input in current line.
20
Command Structure
  • All TELNET commands and data flow through the same TCP connection.
  • Commands start with a special character called the  Interpret as Command escape character (IAC).
  • The IAC code is 255.
  • If a 255 is sent as data - it must be followed by another 255.
21
Looking for Commands
  • Each receiver must look at each byte that arrives and look for IAC.
  • If IAC is found and the next byte is IAC - a single byte is presented to the application/terminal (a 255).
  • If IAC is followed by any other code - the TELNET layer interprets this as a command.
22
Command Codes
  • IP 243
  • AO 244
  • AYT 245
  • EC 246
  • EL 247
23
Playing with TELNET
  • You can use the telnet program to play with the TELNET protocol.
  • telnet is a generic TCP client.
    • Sends whatever you type to the TCP socket.
    • Prints whatever comes back through the TCP socket.
    • Useful for testing TCP servers (ASCII based protocols).
24
Some TCP Servers you can play with
  • Many Unix systems have these servers running (by default):
    • echo port 7
    • discard port 9
    • daytime port 13
    • chargen port 19
25
telnet hostname port
  • > telnet rcs.rpi.edu 7
  • Trying 128.113.113.33...
  • Connected to cortez.sss.rpi.edu (128.113.113.33).
  • Escape character is '^]'.
  • Hi dave
  • Hi dave
  • stop it
  • stop it
  • ^]
  • telnet> quit
  • Connection closed.
26
telnet vs. TCP
  • Not all TCP servers talk TELNET (most don't)


  • You can use the telnet program to play with these servers, but the fancy commands won't do anything.
    • type ^], then "help" for a list of fancy TELNET stuff you can do in telnet.

  • See GenericClient.java
27
FTP
File Transfer Protocol
  • Reference:
  • RFC 959
28
FTP Objectives
(from RFC 959)
  • promote sharing of files
  • encourage indirect use of remote computers
  • shield user from variations in file storage
  • transfer data reliably and efficiently
  • “FTP, although usable directly by a user at a terminal, is designed mainly for use by programs”
29
The FTP Model
30
Control and Data Connections
  • Control functions (commands) and reply codes are transferred over the control connection.
  • All data transfer takes place over the data connection.
  • The control connection must be “up” while data transfer takes place.
31
Control Connection
  • The control connection is the “well known” service.
  • The control connection uses the TELNET protocol.
  • Commands and replies are all line oriented text (default is ASCII).
32
Standard Connection Model
33
Alternative Connection Model
34
Access Control Commands
  • USER specify user
  • PASS specify password
  • CWD change directory
  • CDUP change directory to parent
  • QUIT logout
35
Transfer Parameter Commands
  • PORT     publish local data port
  • PASV server should listen
  • TYPE establish data representation
  • MODE establish transfer mode
  • STRU establish file structure
36
Service Commands
  • RETR retrieve file
  • STOR send file
  • STOU send file and save as unique
  • APPE send file and append
  • ABOR abort prev. service command
  • PWD print working directory
  • LIST transfer list of files over data link
37
FTP Replies
  • All replies are sent over control connection.
  • Replies are a single line containing
    • 3 digit status code (sent as 3 numeric chars).
    • text  message.
  • The FTP spec. includes support for multiline text replies.
38
FTP Reply Status Code
  • First digit of status code indicates type of reply:
    • ‘1’:  Positive Preliminary Reply  (got it, but wait).
    • ‘2’:  Positive Completion Reply (success).
    • ‘3’:  Positive Intermediate Reply (waiting for more information).
    • ‘4’:  Transient Negative Completion (error - try again).
    • ‘5’:  Permanent Negative Reply (error - can’t do).
39
FTP Reply Status Code
  • 2nd digit indicates function groupings.
    • ‘0’: Syntax (problem with command syntax).
    • ‘1’: Information  (reply to help or status cmds).
    • ‘2’: Connections (problem with a connection).
    • ‘3’: Authentication (problem with login).
    • ‘4’: Unspecified.
    • ‘5’: File system (related to file system).
  • 3rd digit indicates specific problem within  function group.
40
Data Transfer Modes
  • STREAM: file is transmitted as a  stream of bytes.
  • BLOCK: file is transmitted as a series of blocks preceded by headers containing count and descriptor code (EOF, EOR, restart marker).
  • COMPRESSED: uses a simple compression scheme - compressed blocks are transmitted.
41
RFC 959
  • The RFC includes lots more information and many details including:
    • parameters for commands
    • lists of reply status codes
    • protocol state diagrams
    • support for a variety of file structures
    • sample sessions
42
Address Conversion Functions and
The Domain Name System
  • Based on Notes by D. Hollinger
  • Refs: UNIX Network Programming, Stevens, Chapter 9
  • RFC 1034
  • RFC 1035
  • Also based on Java Network Programming and Distributed Computing, Chapter 3
43
Hostnames
  • IP Addresses are great for computers
    • IP address includes information used for routing.
  • IP addresses are tough for humans to remember.
  • IP addresses are impossible to guess.
    • ever guessed at the name of a WWW site?
44
The Domain Name System
  • The domain name system is usually used to translate a host name into an IP address .


  • Domain names comprise a hierarchy so that names are unique, yet easy to remember.


45
DNS Hierarchy
46
Host name structure
  • Each host name is made up of a sequence of labels separated by periods.
    • Each label can be up to 63 characters
    • The total name can be at most 255 characters.
  • Examples:
    • whitehouse.gov
    • barney.the.purple.dinosaur.com
    • monica.cs.rpi.edu
47
Domain Name
  • The domain name for a host is the sequence of labels that lead from the host (leaf node in the naming tree) to the top of the worldwide naming tree.


  • A domain is a subtree of the worldwide naming tree.
48
Top level domains
  • edu, gov, com, net, org, mil, …
  • Countries each have a top level domain (2 letter domain name).
  • New top level domains include:
    • .aero  .biz  .coop  .info  .name  .pro


49
DNS Organization
  • Distributed Database
    • The organization that owns a domain name is responsible for running  a DNS server that can provide the mapping between hostnames within the domain to IP addresses.
    • So - some machine run by RPI is responsible for everything within the rpi.edu domain.
50
DNS Distributed Database
  • There is one primary server for a domain, and typically a number of secondary servers containing replicated databases.


51
DNS Clients
  • A DNS client is called a resolver.


  • A call to getByName(host)is handled by a resolver (typically part of the client).


  • Most Unix workstations have the file /etc/resolv.conf that contains the local domain and the addresses of DNS servers for that domain.
52
/etc/resolv.conf
  • domain rpi.edu
  • 128.113.1.5
  • 128.113.1.3
53
nslookup
  • nslookup is an interactive resolver that allows the user to communicate directly with a DNS server.


  • nslookup is usually available on Unix workstations.
54
"$ nslookup"
  • $ nslookup
  • Default Server:  oldtotter.cs.rpi.edu
  • Address:  128.213.8.12


  • > rpi.edu
  • Server:  oldtotter.cs.rpi.edu
  • Address:  128.213.8.12


  • Non-authoritative answer:
  • Name:    rpi.edu
  • Addresses:  128.113.26.42, 128.113.26.41
55
DNS Servers
  • Servers handle requests for their domain directly.
  • Servers handle requests for other domains by contacting remote DNS server(s).
  • Servers cache external mappings.
56
Server - Server Communication
  • If a server is asked to provide the mapping for a host outside it’s domain (and the mapping is not in the server cache):
    • The server finds a nameserver for the target domain.
    • The server asks the nameserver to provide the host name to IP translation.
  • To find the right nameserver, use DNS!


57
DNS Data
  • DNS databases contain more than just hostname-to-address records:
    • Name server records NS
    • Hostname aliases CNAME
    • Mail Exchangers MX
    • Host Information HINFO
58
The Root DNS Server
  • The root server needs to know the address of 1st (and many 2nd) level domain nameservers.
59
Server Operation
  • If a server has no clue about where to find the address for a hostname, ask the root server.
  • The root server will tell you what nameserver to contact.
  • A request may get forwarded a few times.
60
DNS Message Format
  • HEADER
  • QUERIES
  • Response RESOURCE RECORDS
  • Response AUTHORITY RECORDS
  • Response ADDITIONAL INFORMATION
61
DNS Message Header
  • query identifier
  • flags
  • # of questions
  • # of RRs
  • # of authority RRs
  • # of additional RRs
62
Message Flags
  • QR: Query=0, Response=1
  • AA: Authoritative Answer
  • TC: response truncated (> 512 bytes)
  • RD: recursion desired
  • RA: recursion available
  • rcode: return code
63
Recursion
  • A request can indicate that recursion is desired - this tells the server to find out the answer (possibly by contacting other servers).
  • If recursion is not requested - the response may be a list of other name servers to contact.
64
Question Format
  • Name: domain name (or IP address)


  • Query type (A, NS, MX, …)


  • Query class (1 for IP)



65
Response Resource Record
  • Domain Name
  • Response type
  • Class (IP)
  • Time to live (in seconds)
  • Length of resource data
  • Resource data
66
UDP & TCP
  • Both UDP and TCP are used:
    • TCP for transfers of entire database to secondary servers (replication).
    • UDP for lookups
    • If more than 512 bytes in response - requestor resubmits request using TCP.
67
Lots more
  • This is not a complete description !
  • If interested - look at:
    • RFC 1034: DNS  concepts and facilities.
    • RFC 1035: DNS implementation and protocol specification.
    • play with nslookup.
    • Look at code for BIND (DNS server code).
68
Internet Addresses in Java
  • java.net.InetAddress class


  • You get an address by using static methods:


    • ad = InetAddress.getByName(hostname);


    • myAddress = InetAddress.getLocalHost();
69
Printing Internet Addresses
  • You get information from an InetAddress by using methods:


    • ad.getHostName();
    • ad.getHostAddress();


  • Both return Strings representing the host name, and the IP address in dotted decimal format.
70
Additional InetAddress methods
  • getAddress() returns the IP address.
    •  in byte array format (network byte order), with highest byte at bytearray[0].


  • getAllByName(hostname) returns an array of InetAddress instances for the given host name.
    • One host name may be mapped to multiple machines.
    • One host name can map to multiple addresses in the same machine (virtual addresses).
71
Additional InetAddress methods
  • isMulticastAddress() returns a boolean representing whether it is a Class D address.


  • getAllByName(hostname) returns an array of InetAddress instances for the given host name.
    • One host name may be mapped to multiple machines.
    • One host name can map to multiple addresses in the same machine (virtual addresses).