Network Applications: DNS, UDP Socket 1/24/2012. 2 Outline Recap r DNS r Network application...

Post on 17-Jan-2016

233 views 0 download

Tags:

Transcript of Network Applications: DNS, UDP Socket 1/24/2012. 2 Outline Recap r DNS r Network application...

Network Applications:DNS, UDP Socket

1/24/2012

2

Outline

Recap DNS Network application programming: UDP

3

Recap: The Big Picture of the Internet Hosts and routers:

>850 mil. hosts (2011) organized roughly hierarchical backbone links 10~40Gbps

Software: datagram switching with virtual

circuit support at backbone layered network architecture

• use end-to-end arguments to determine the servicesprovided by each layer

the hourglass architecture of the Internet

IP

Ethernet Cable/DSLWireless

TCP UDP

TelnetEmail FTPWWWSSL

4

Protocol Formats

5

Recap: Client-Server Paradigm

application

transportnetworkdata linkphysical

application

transportnetworkdata linkphysical

request

reply

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

6

Recap: Email App

mailserver

useragent

useragent

useragent

mailserver

useragent

useragent

mailserver

useragent

SMTP

SMTP

SMTP

POP3 orIMAPSMTP

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

Scalability/Robustness

High scalability and robustness fundamentally require multiple email servers to serve the same email address

7

clientneed a email

server IP address

mailserver

mailserver mail

server

yale.edu

yale.eduyale.edu

130.132.50.7130.132.50.8 130.132.50.9

mapping

8

Mapping Functions Design Alternatives

Map from an email address server name to IP address of email server

mapping

name (e.g., yale.edu)

1 IP

mapping

multiple IPs

mapping

multiple IPs

name (e.g., yale.edu)

9

Mapping Functions Design Alternatives

load balancer

switch

mapping

name (e.g., yale.edu)

1 IP

mapping

name (e.g., yale.edu)

1 IP

10

DNS: Domain Name System

Function map between (domain

name, service) to value, e.g.,

• (www.cs.yale.edu, Addr) -> 128.36.229.30

• (cs.yale.edu, Email) -> netra.cs.yale.edu

Many benefits of introducing the mapping

routers

DNS

Hostname, Service

Address

servers

clients

11

Dummy 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

Internetre

gis

ter

<n

am

e>

resolve <name>

OK

/use

d a

lready

IP address

12

DNS: 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

called a zone

13

Email Architecture + DNS

mailserver

useragent

useragent

useragent

mailserver

useragent

useragent

mailserver

useragent

SMTP

SMTP

SMTP

POP3 orIMAPSMTP

DNS

14

Root 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

15

Linking 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?

16

DNS 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 don’t know this name, but ask this server”

17

Two Extreme DNS Message Flows

client

cicada.cs.yale.edu

root name server

12

3

authoritative name server

56

TLD name server

4

client

cicada.cs.yale.edu

root name server

16

2

authoritative name server

4 3

TLD name server5

Issues of the two approaches?

18

Typical DNS Message Flow: The Hybrid Case

requesting hostcyndra.cs.yale.edu

gaia.cs.umass.edu

root name server

1

23

4

authoritative name serverdns.cs.umass.edu

56

TLD name server

7

8

iterated query

local name server130.132.1.9

• 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

19

Typical DNS Message Flow: The Hybrid Case

requesting hostcyndra.cs.yale.edu

gaia.cs.umass.edu

root name server

1

23

4

authoritative name serverdns.cs.umass.edu

56

TLD name server

7

8

iterated query

local name server130.132.1.9

• 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

20

DNS Records

DNS: distributed db storing resource records (RR)

Type=NS name is domain (e.g.

yale.edu) value is the name of

the authoritative name server for this domain

RR format: (name, type, value, ttl)

Type=A name is hostname value is IP address

Type=CNAME name is an alias name

for some “canonical” (the real) name

value is canonical name

Type=MX value is hostname of mail

server associated with name Type=SRV

general extension

21

DNS 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

22

Observing DNS

Use the command dig: force iterated query to see the trace:%dig +trace www.cnn.com

• see the manual for more details

Capture the messages DNS server is at port 53

23

Evaluation of DNS

Key questions to ask about a C-S application

- extensible?- scalable?- robust? - security?

24

What DNS did Right?

Hierarchical delegation avoids central control, improving manageability and scalability

Redundant servers improve robustness see

http://www.internetnews.com/dev-news/article.php/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

25

Problems 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

Outline

Recap Email DNS Network application programming

26

27

Socket Programming

Socket API introduced in

BSD4.1 UNIX, 1981

Two types of sockets Connectionless

(UDP) connection-

oriented (TCP)

an interface (a “door”) into which one

application process can both send and

receive messages to/from another (remote

or local) application

process

socket

28

Services Provided by Transport

Transmission control protocol (TCP)

multiplexing/demultiplexing reliable data transfer rate control: flow controland congestion control

User data protocol (UDP) multiplexing/demultiplexing

Host A

Hello

Host B

I am ready

DATA

ACK

29

Big Picture: Socket

buffers,states

buffers,states

30

UDP Java API

buffers,states

buffers,states

31

DatagramSocket(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.

close() closes this datagram socket.

Connectionless UDP: Big Picture (Java version)

closeclientSocket

Server (running on hostid)

read reply fromclientSocket

create socket,clientSocket = DatagramSocket()

Client

Create datagram using (servhost, x) as (dest addr. port),send request using clientSocket

create socket,port=x, forincoming request:serverSocket = DatagramSocket( x )

read request fromserverSocket

write reply toserverSocket

generate reply, create datagram using clienthost address, port number

Create socket with port number:DatagramSocket sSock = new DatagramSocket(9876);

If no port number is specified, the OS will pick one

33

Example: UDPClient.java

A simple UDP client which reads input from keyboard, sends the input to server, and reads the reply back from the server.

34

Example: 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 byte[1024];

sendData = sentence.getBytes();

DatagramSocket clientSocket = new DatagramSocket(); InetAddress sIPAddress = InetAddress.getByName(“servname");

Createinput stream

Create client socket

Translate hostname to IP

address using DNS

35

Example: Java client (UDP), cont.

DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, sIPAddress, 9876); clientSocket.send(sendPacket); byte[] receiveData = new byte[1024]; DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); clientSocket.receive(receivePacket); String modifiedSentence = new String(receivePacket.getData()); System.out.println("FROM SERVER:" + modifiedSentence); clientSocket.close(); }

}

Create datagram with data-to-send,

length, IP addr, port

Send datagramto server

Read datagramfrom server

36

Example: UDPServer.java A simple UDP server which changes any received

sentence to upper case.

37

Example: 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 byte[1024]; byte[] sendData = new byte[1024]; while(true) { DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);

serverSocket.receive(receivePacket);

String sentence = new String(receivePacket.getData()); sendData = capitalizedSentence.getBytes();

Createdatagram socket

at port 9876

Create space forreceived datagram

Receivedatagra

m

38

UDP Connectionless Demux

DatagramSocket serverSocket = new DatagramSocket(9876);

ClientIP:B

P2

client IP: A

P1P1P3

serverIP: S

SP: 9876

DP: 9157

SP: 9157

DP: 9876

SP: 9876

DP: 5775

SP: 5775

DP: 9876

Source Port (SP) provides “return address”

39

Example: 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 addrport #, of

sender

Write out datagramto socket

End of while loop,loop back and wait foranother datagram

Create datagramto send to client

Discussion

Are there any problems with the program?

40

Discussion

What are challenges in implementing DNS using UDP?

41

Discussion

Are there any problems with the program?

42

Backup Slides

44

UDP Provides Multiplexing/Demultiplexing

server clientUDP socket space

address: {*:9876}snd/recv buf:

128.36.232.5128.36.230.2

address: {128.36.232.5:53}snd/recv buf:

UDP socket space

address: {198.69.10.10:1500}snd/recv buf:

address: {198.69.10.10:4343}snd/recv buf:

198.69.10.10

Packet demutiplexing is based on (dst address, dst port) at dst%netstat –u –n -a

local addresslocal port

45

UDP Port Provides Multiplexing/Demultiplexing

server clientUDP socket space

address: {*:9876}snd/recv buf:

128.36.232.5128.36.230.2

address: {128.36.232.5:53}snd/recv buf:

UDP socket space

address: {*:1500}snd/recv buf:

address: {198.69.10.10:4343}snd/recv buf:

198.69.10.10

Packet demutiplexing is based on (dst address, dst port) at dst%netstat --udp –n -a

local addresslocal port