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 đủ
ppt 27 trang myanh 23200 Free
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:

  • pptbai_giang_mang_may_tinh_chapter_2_application_layer_part_ii.ppt