Title: Network Applications: DNS, UDP Socket
1Network ApplicationsDNS, UDP Socket
1/24/2012
2Outline
- Recap
- DNS
- Network application programming UDP
3Recap The Big Picture of the Internet
- Hosts and routers
- gt850 mil. hosts (2011)
- organized roughly hierarchical
- backbone links 1040Gbps
- Software
- datagram switching with virtualcircuit support
at backbone - layered network architecture
- use end-to-end arguments to determine the
servicesprovided by each layer - the hourglass architecture of the Internet
SSL
TCP
UDP
IP
Ethernet
Cable/DSL
Wireless
4Protocol Formats
5Recap Client-Server Paradigm
- The basic paradigmof network applications is
the client-server(C-S) paradigm - a client/server is a process at a port number
of a host - Key design questionsof a C-S application
- protocol extensibility
- scalability
- robustness
- security
6Recap Email App
- Some nice protocol extensibility design features
- separate protocols for different functions
- simple/basic (smtp) requests to implement basic
control fine-grain control through ASCII header
and message body - status code in response makes message easy to
parse
7Scalability/Robustness
- High scalability and robustness fundamentally
require multiple email servers to serve the same
email address
need a email server IP address
8Mapping Functions Design Alternatives
- Map from an email address server name to IP
address of email server
9Mapping Functions Design Alternatives
load balancer
switch
10DNS Domain Name System
- Function
- map between (domain name, service) to value,
e.g., - (www.cs.yale.edu, Addr) -gt 128.36.229.30
- (cs.yale.edu, Email) -gt netra.cs.yale.edu
- Many benefits of introducing the mapping
clients
DNS
routers
servers
11Dummy Design
- DNS itself can be considered as a client-server
system as well - How about a dummy design introducing one super
Internet DNS server?
THE DNS server of the Internet
IP address
resolve ltnamegt
OK/used already
12DNS Distributed Management of the Domain Name
Space
- A distributed database managed by authoritative
name servers - divided into zones, where each zone is a sub-tree
of the global tree - each zone has its own authoritative name servers
- an authoritative name server of a zone may
delegate a subset (i.e. a sub-tree) of its zone
to another name server
13Email Architecture DNS
DNS
14Root Zone and Root Servers
- The root zone is managed by the root name servers
- 13 root name servers worldwide
See http//root-servers.org/ for more details
15Linking the Name Servers
- Each name server knows the addresses of the root
servers - Each name server knows the addresses of its
immediate children (i.e., those it delegates)
Top level domain(TLD)
Q how to query a hierarchy?
16DNS Message Flow Two Types of Queries
- Recursive query
- Puts burden of name resolution on contacted name
server - the contacted name server resolves the name
completely - Iterated query
- Contacted server replies with name of server to
contact - I dont know this name, but ask this server
17Two Extreme DNS Message Flows
root name server
root name server
TLD name server
client
TLD name server
client
authoritative name server
authoritative name server
Issues of the two approaches?
cicada.cs.yale.edu
cicada.cs.yale.edu
18Typical DNS Message Flow The Hybrid Case
root name server
- Host knows only local name server
- Local name server is learned from DHCP, or
configured, e.g. /etc/resolv.conf - Local DNS server helps clients resolve DNS names
authoritative name server dns.cs.umass.edu
requesting host cyndra.cs.yale.edu
gaia.cs.umass.edu
19Typical DNS Message Flow The Hybrid Case
root name server
- Host knows only local name server
- Local name server is learned from DHCP, or
configured, e.g. /etc/resolv.conf - Local DNS server helps clients resolve DNS names
- Benefits of local name servers
- simplifies client
- caches results
authoritative name server dns.cs.umass.edu
requesting host cyndra.cs.yale.edu
gaia.cs.umass.edu
20DNS Records
- DNS distributed db storing resource records (RR)
- TypeCNAME
- name is an alias name for some canonical (the
real) name - value is canonical name
- TypeA
- name is hostname
- value is IP address
- TypeNS
- name is domain (e.g. yale.edu)
- value is the name of the authoritative name
server for this domain
- TypeMX
- value is hostname of mail server associated with
name
- TypeSRV
- general extension
21DNS Protocol, Messages
- DNS protocol typically over UDP (can use TCP)
query and reply messages, both with the same
message format
- DNS Msg header
- identification 16 bit for query, the reply to
a query uses the same - flags
- query or reply
- recursion desired
- recursion available
- reply is authoritative
22Observing DNS
- Use the command dig
- force iterated query to see the tracedig
trace www.cnn.com - see the manual for more details
- Capture the messages
- DNS server is at port 53
23Evaluation of DNS
Key questions to ask about a C-S application -
extensible? - scalable? - robust? - security?
24What DNS did Right?
- Hierarchical delegation avoids central control,
improving manageability and scalability - Redundant servers improve robustness
- see http//www.internetnews.com/dev-news/article.p
hp/1486981 for DDoS attack on root servers in
Oct. 2002 (9 of the 13 root servers were
crippled, but only slowed the network) - Caching reduces workload and improve robustness
25Problems of DNS
- Domain names may not be the best way to name
other resources, e.g. files - Relatively static resource types make it hard to
introduce new services or handle mobility - Although theoretically you can update the values
of the records, it is rarely enabled - Simple query model makes it hard to implement
advanced query - Early binding (separation of DNS query from
application query) does not work well in mobile,
dynamic environments - e.g., load balancing, locate the nearest printer
26Outline
- Recap
- Email
- DNS
- Network application programming
27Socket Programming
- Socket API
- introduced in BSD4.1 UNIX, 1981
- Two types of sockets
- Connectionless (UDP)
- connection-oriented (TCP)
28Services Provided by Transport
- Transmission control protocol (TCP)
- multiplexing/demultiplexing
- reliable data transfer
- rate control flow control
- and congestion control
- User data protocol (UDP)
- multiplexing/demultiplexing
Host B
Host A
Hello
I am ready
DATA
ACK
29Big Picture Socket
buffers, states
buffers, states
30UDP Java API
buffers, states
buffers, states
31DatagramSocket(Java)
- DatagramSocket()
- constructs a datagram socket and binds it to any
available port on the local host - DatagramSocket(int lport)
- constructs a datagram socket and binds it to the
specified port on the local host machine. - DatagramSocket(int lport, InetAddress laddr)
- creates a datagram socket and binds to the
specified local port and laddress. - DatagramSocket(SocketAddress bindaddr)
- creates a datagram socket and binds to the
specified local socket address. - DatagramPacket(byte buf, int length)
- constructs a DatagramPacket for receiving packets
of length length. - DatagramPacket(byte buf, int length,
InetAddress address, int port) - constructs a datagram packet for sending packets
of length length to the specified port number on
the specified host. - receive(DatagramPacket p)
- receives a datagram packet from this socket.
- send(DatagramPacket p)
- sends a datagram packet from this socket.
32Connectionless UDP Big Picture (Java version)
Client
Server (running on hostid)
create socket, portx, for incoming request
serverSocket DatagramSocket( x )
Create datagram using (servhost, x) as (dest
addr. port),send request using clientSocket
read request from serverSocket
generate reply, create datagram using client host
address, port number
write reply to serverSocket
read reply from clientSocket
close clientSocket
- Create socket with port number
- DatagramSocket sSock new DatagramSocket(9876)
- If no port number is specified, the OS will pick
one
33Example UDPClient.java
- A simple UDP client which reads input from
keyboard, sends the input to server, and reads
the reply back from the server.
34Example Java client (UDP)
import java.io. import java.net. class
UDPClient public static void main(String
args) throws Exception
BufferedReader inFromUser new
BufferedReader(new InputStreamReader(System.in))
String sentence inFromUser.readLine()
byte sendData new byte1024
sendData sentence.getBytes()
DatagramSocket clientSocket new
DatagramSocket() InetAddress
sIPAddress InetAddress.getByName(servname")
Create input stream
Create client socket
Translate hostname to IP address using DNS
35Example Java client (UDP), cont.
Create datagram with data-to-send, length, IP
addr, port
DatagramPacket sendPacket new
DatagramPacket(sendData, sendData.length,
sIPAddress, 9876) clientSocket.send(sen
dPacket) byte receiveData new
byte1024 DatagramPacket receivePacket
new DatagramPacket(receiveData,
receiveData.length) clientSocket.receiv
e(receivePacket) String
modifiedSentence new
String(receivePacket.getData())
System.out.println("FROM SERVER"
modifiedSentence) clientSocket.close()
Send datagram to server
Read datagram from server
36Example UDPServer.java
- A simple UDP server which changes any received
sentence to upper case.
37Example Java Server (UDP)
import java.io. import java.net. class
UDPServer public static void main(String
args) throws Exception
DatagramSocket serverSocket new
DatagramSocket(9876) byte
receiveData new byte1024 byte
sendData new byte1024 while(true)
DatagramPacket
receivePacket new
DatagramPacket(receiveData, receiveData.length)
serverSocket.receive(receivePacket)
String sentence new
String(receivePacket.getData())
sendData capitalizedSentence.getBytes()
Create datagram socket at port 9876
Create space for received datagram
Receive datagram
38UDP Connectionless Demux
- DatagramSocket serverSocket new
DatagramSocket(9876)
Source Port (SP) provides return address
39Example Java server (UDP), cont
InetAddress IPAddress
receivePacket.getAddress() int
port receivePacket.getPort()
DatagramPacket sendPacket
new DatagramPacket(sendData, sendData.length,
IPAddress,
port) serverSocket.send(sendPacket)
Get IP addr port , of sender
Create datagram to send to client
Write out datagram to socket
End of while loop, loop back and wait for another
datagram
40Discussion
- Are there any problems with the program?
41Discussion
- What are challenges in implementing DNS using UDP?
42Discussion
- Are there any problems with the program?
43Backup Slides
44UDP Provides Multiplexing/Demultiplexing
server
client
128.36.232.5128.36.230.2
198.69.10.10
UDP socket space
UDP socket space
address 198.69.10.101500 snd/recv buf
address 9876 snd/recv buf
local port
local address
address 128.36.232.553 snd/recv buf
address 198.69.10.104343 snd/recv buf
Packet demutiplexing is based on (dst address,
dst port) at dst netstat u n -a
45UDP Port Provides Multiplexing/Demultiplexing
server
client
128.36.232.5128.36.230.2
198.69.10.10
UDP socket space
UDP socket space
address 1500 snd/recv buf
address 9876 snd/recv buf
local port
local address
address 128.36.232.553 snd/recv buf
address 198.69.10.104343 snd/recv buf
Packet demutiplexing is based on (dst address,
dst port) at dst netstat --udp n -a