DNS: Domain Name System: Many Identifiers
DNS: Domain Name System: Many Identifiers
2: Application Layer 1
DNS name servers
Why not centralize DNS? no server has all name-to-
single point of failure IP address mappings
traffic volume local name servers:
each ISP, company has local
distant centralized
(default) name server
database host DNS query first goes
maintenance to local name server
authoritative name server:
for a host: stores that
doesn’t scale!
host’s IP address, name
can perform name/address
translation for that host’s
name
2: Application Layer 2
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
~ dozen root name
servers worldwide
2: Application Layer 3
Simple DNS example root name server
host surf.eurecom.fr
2 4
wants IP address of 3
5
gaia.cs.umass.edu
1. Contacts its local DNS
server, dns.eurecom.fr
2. dns.eurecom.fr contacts local name server authorititive name server
root name server, if dns.eurecom.fr dns.umass.edu
necessary
1 6
3. root name server contacts
authoritative name server,
dns.umass.edu, if
necessary requesting host gaia.cs.umass.edu
surf.eurecom.fr
2: Application Layer 4
DNS example root name server
gaia.cs.umass.edu
2: Application Layer 5
DNS: iterated queries root name server
2: Application Layer 6
DNS: caching and updating records
once (any) name server learns mapping, it caches
mapping
cache entries timeout (disappear) after some
time
update/notify mechanisms under design by IETF
RFC 2136
http://www.ietf.org/html.charters/dnsind-charter.html
2: Application Layer 7
DNS records
DNS: distributed db storing resource records (RR)
RR format: (name, value, type,ttl)
Type=A Type=CNAME
name is hostname name is an alias name
value is IP address for some “cannonical”
(the real) name
Type=NS
value is cannonical
name is domain (e.g. foo.com)
name
value is IP address of
authoritative name server Type=MX
for this domain value is hostname of
mailserver associated with
name
2: Application Layer 8
DNS protocol, messages
DNS protocol : query and repy messages, both with same message format
msg header
identification: 16 bit # for
query, repy to query uses
same #
flags:
query or reply
recursion desired
recursion available
reply is authoritative
2: Application Layer 9
DNS protocol, messages
RRs in reponse
to query
records for
authoritative servers
additional “helpful”
info that may be used
2: Application Layer 10
Socket programming
Goal: learn how to build client/server application that
communicate using sockets
2: Application Layer 11
Socket-programming using TCP
Socket: a door between application process and end-end-
transport protocol (UCP or TCP)
TCP service: reliable transfer of bytes from one process
to another
controlled by
controlled by process application
application process
developer
developer socket socket
controlled by TCP with TCP with controlled by
buffers, operating
operating buffers, internet system
system variables variables
host or host or
server server
2: Application Layer 12
Socket programming with TCP
Client must contact server When client creates socket:
server process must first client TCP establishes
be running connection to server TCP
server must have created When contacted by client,
socket (door) that server TCP creates new
welcomes client’s contact socket for server process to
communicate with client
Client contacts server by:
allows server to talk with
creating client-local TCP
multiple clients
socket
specifying IP address, port
application viewpoint
number of server process
TCP provides reliable, in-order
transfer of bytes (“pipe”)
between client and server
2: Application Layer 13
Socket programming with TCP
iinFromServer
outToServer
server reads line from socket
server converts line to
uppercase, sends back to
client
inFromUser
client reads, prints modified
line from socket
(inFromServer stream) client socket
2: Application Layer 14
Client/server socket interaction: TCP
Server (running on hostid) Client
create socket,
port=x, for
incoming request:
welcomeSocket =
ServerSocket()
write reply to
connectionSocket read reply from
clientSocket
close
connectionSocket close
clientSocket
2: Application Layer 15
Example: Java client (TCP)
import java.io.*;
import java.net.*;
class TCPClient {
sentence = inFromUser.readLine();
Send line
to server outToServer.writeBytes(sentence + '\n');
clientSocket.close();
}
}
2: Application Layer 17
Example: Java server (TCP)
import java.io.*;
import java.net.*;
class TCPServer {
2: Application Layer 18
Example: Java server (TCP), cont
Create output
stream, attached DataOutputStream outToClient =
to socket new DataOutputStream(connectionSocket.getOutputStream());
Read in line
from socket clientSentence = inFromClient.readLine();
2: Application Layer 19
Socket programming with UDP
2: Application Layer 20
Client/server socket interaction: UDP
Server (running on hostid) Client
create socket,
port=x, for create socket,
clientSocket =
incoming request: DatagramSocket()
serverSocket =
DatagramSocket()
Create, address (hostid, port=x,
send datagram request
using clientSocket
read request from
serverSocket
write reply to
serverSocket
specifying client read reply from
host address, clientSocket
port umber close
clientSocket
2: Application Layer 21
Example: Java client (UDP)
import java.io.*;
import java.net.*;
class UDPClient {
public static void main(String args[]) throws Exception
{
Create
input stream BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
Create
client socket DatagramSocket clientSocket = new DatagramSocket();
Translate
InetAddress IPAddress = InetAddress.getByName("hostname");
hostname to IP
address using DNS byte[] sendData = new byte[1024];
byte[] receiveData = new byte[1024];
2: Application Layer 23
Example: Java server (UDP)
import java.io.*;
import java.net.*;
class UDPServer {
public static void main(String args[]) throws Exception
Create {
datagram socket
DatagramSocket serverSocket = new DatagramSocket(9876);
at port 9876
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];
while(true)
{
Create space for
DatagramPacket receivePacket =
received datagram
new DatagramPacket(receiveData, receiveData.length);
Receive serverSocket.receive(receivePacket);
datagram
2: Application Layer 24
Example: Java server (UDP), cont
String sentence = new String(receivePacket.getData());
Get IP addr
InetAddress IPAddress = receivePacket.getAddress();
port #, of
sender int port = receivePacket.getPort();
sendData = capitalizedSentence.getBytes();
Create datagram
DatagramPacket sendPacket =
to send to client new DatagramPacket(sendData, sendData.length, IPAddress,
port);
Write out
datagram serverSocket.send(sendPacket);
to socket }
}
} End of while loop,
loop back and wait for
another datagram
2: Application Layer 25
Chapter 2: Summary
Our study of network apps now complete!
application service
specific protocols:
requirements: http
reliability, bandwidth,
ftp
delay
smtp, pop3
client-server paradigm
dns
Internet transport
service model socket programming
connection-oriented, client/server
reliable: TCP implementation
unreliable, datagrams: UDP using tcp, udp sockets
2: Application Layer 26
Chapter 2: Summary
Most importantly: learned about protocols
typical request/reply
control vs. data msgs
message exchange:
client requests info or
in-based, out-of-band
service centralized vs. decentralized
server responds with data, stateless vs. stateful
status code reliable vs. unreliable msg
message formats: transfer
headers: fields giving info “complexity at network
about data edge”
data: info being
security: authentication
communicated
2: Application Layer 27