Bài giảng Mạng máy tính - Chapter 2: Application Layer (Part II) - Hồ Phương Đắc
DNS: Domain Name System
People: many identifiers: Domain Name System:
SSN, name, Passport #
distributed database
implemented in hierarchy of
many name servers
application-layer protocol
host, routers, name servers to
communicate to resolve names
(address/name translation)
Internet hosts, routers:
IP address (32 bit) -
used for addressing
datagrams
“name”, e.g.,
gaia.cs.umass.edu - used
by humans
note: core Internet
function implemented as
application-layer protocol
Q: map between IP
addresses and name ?
complexity at network’s
“edge”
2: Application Layer
1
DNS name servers
no server has all name-
Why not centralize DNS?
single point of failure
traffic volume
to-IP address mappings
local name servers:
each ISP, company has
distant centralized
local (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
wants IP address of
2
4
3
5
gaia.cs.umass.edu
1. Contacts its local DNS
server, dns.eurecom.fr
2. dns.eurecom.frcontacts
authorititive name server
local name server
root name server, if
dns.umass.edu
dns.eurecom.fr
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
root name server
DNS example
Root name server:
may not know
authoratiative name
server
6
2
3
7
may know
intermediate name
server: who to
contact to find
authoritative name
server
intermediate name server
local name server
dns.umass.edu
dns.eurecom.fr
5
4
1
8
authoritative name server
dns.cs.umass.edu
requesting host
surf.eurecom.fr
gaia.cs.umass.edu
2: Application Layer
5
root name server
DNS: iterated queries
iterated query
recursive query:
2
puts burden of name
resolution on
3
4
contacted name
server
7
heavy load?
intermediate name server
local name server
dns.umass.edu
dns.eurecom.fr
iterated query:
contacted server
replies with name of
server to contact
5
6
1
8
authoritative name server
dns.cs.umass.edu
“I don’t know this
name, but ask this
server”
requesting host
surf.eurecom.fr
gaia.cs.umass.edu
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
2: Application Layer
7
DNS records
DNS: distributed db storing resource records (RR)
RR format: (name, value, type,ttl)
Type=CNAME
Type=A
nameis an alias name
for some “cannonical”
(the real) name
nameis hostname
valueis IP address
Type=NS
valueis cannonical
nameis domain (e.g.
name
foo.com)
Type=MX
valueis IP address of
valueis hostname of
mailserver associated with
name
authoritative name
server for this domain
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
Name, type fields
for a query
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
Socket API
socket
a host-local, application-
created/owned,
OS-controlled interface
(a “door”) into which
application process can
both send and
receive messages to/from
another (remote or
local) application process
introduced in BSD4.1 UNIX,
1981
explicitly created, used,
released by apps
client/server paradigm
two types of transport
service via socket API:
unreliable datagram
reliable, byte stream-
oriented
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
application
developer
process
process
application
developer
socket
TCP with
buffers,
variables
socket
TCP with
buffers,
variables
controlled by
operating
system
controlled by
operating
system
internet
host or
server
host or
server
2: Application Layer
12
Socket programming with TCP
Client must contact server
When client creates socket:
client TCP establishes
server process must first
connection to server TCP
be running
When contacted by client,
server must have created
server TCP creates new
socket (door) that
socket for server process to
communicate with client
welcomes client’s contact
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
Example client-server app:
Input stream: sequence of
bytes into process
client reads line from
standard input (inFromUser
stream) , sends to server via
socket (outToServer
stream)
Output stream: sequence of
bytes out of process
server reads line from socket
server converts line to
uppercase, sends back to
client
client reads, prints modified
line from socket
(inFromServerstream)
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()
TCP
connection setup
create socket,
wait for incoming
connection request
connectionSocket =
connect to hostid, port=x
clientSocket =
Socket()
welcomeSocket.accept()
send request using
clientSocket
read request from
connectionSocket
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 {
public static void main(String argv[]) throws Exception
{
String sentence;
String modifiedSentence;
Create
BufferedReader inFromUser =
input stream
new BufferedReader(new InputStreamReader(System.in));
Create
client socket,
connect to server
Socket clientSocket = new Socket("hostname", 6789);
DataOutputStream outToServer =
Create
output stream
attached to socket
new DataOutputStream(clientSocket.getOutputStream());
2: Application Layer
16
Example: Java client (TCP), cont.
Create
input stream
attached to socket
BufferedReader inFromServer =
new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));
sentence = inFromUser.readLine();
Send line
to server
outToServer.writeBytes(sentence + '\n');
modifiedSentence = inFromServer.readLine();
System.out.println("FROM SERVER: " + modifiedSentence);
clientSocket.close();
Read line
from server
}
}
2: Application Layer
17
Example: Java server (TCP)
import java.io.*;
import java.net.*;
class TCPServer {
public static void main(String argv[]) throws Exception
{
String clientSentence;
String capitalizedSentence;
Create
welcoming socket
ServerSocket welcomeSocket = new ServerSocket(6789);
at port 6789
while(true) {
Wait, on welcoming
socket for contact
Socket connectionSocket = welcomeSocket.accept();
by client
BufferedReader inFromClient =
Create input
stream, attached
to socket
new BufferedReader(new
InputStreamReader(connectionSocket.getInputStream()));
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();
capitalizedSentence = clientSentence.toUpperCase() + '\n';
Write out line
outToClient.writeBytes(capitalizedSentence);
to socket
}
}
}
End of while loop,
loop back and wait for
another client connection
2: Application Layer
19
Socket programming with UDP
UDP: no “connection” between
client and server
no handshaking
sender explicitly attaches
IP address and port of
destination
server must extract IP
address, port of sender
from received datagram
application viewpoint
UDP provides unreliable transfer
of groups of bytes (“datagrams”)
between client and server
UDP: transmitted data may be
received out of order, or
lost
2: Application Layer
20
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Mạng máy tính - Chapter 2: Application Layer (Part II) - Hồ Phương Đắc", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bai_giang_mang_may_tinh_chapter_2_application_layer_part_ii.ppt

