Download - chuong2 bai4
-
8/6/2019 chuong2 bai4
1/45
2: Tng ng dng 1
DNS : H thng Tn minCon ngi : c th nhn dng
bng nhiu cch:
o S Chng Minh Th
o Tn, Bit danh
o S h chiu
My tnh v Router trn Interneto a ch IP (32 bit) - s dng
nh a ch cho ccdatagram
o Tn, v d nhgaia.cs.umass.edu
Q: nh x gia a ch IP v Tn?
Domain Name System:
L H c s d liu phn tnci t bi nhiu name serversphn cp
Giao thc tng ng dng :
host, routers yu cu name servers gii m tn (nh x a ch tn)
o Ch : Chc nng c bn ca
Internet hot ng nh giaothc tng ng dng
o Phc tp t ra
-
8/6/2019 chuong2 bai4
2/45
2: Tng ng dng 2
DNS: H thng tn min Chc nng
o nh x (Tn min, dch v)n mt gi tr no (www.cs.yale.edu, Addr)
-> 128.36.229.30
(cs.yale.edu, Email)-> netra.cs.yale.edu
(netra.cs.yale.edu, Addr)-> 128.36.229.21
Ti sao khng s dng achIP trc tip ?
routers
DNSHostname, Service
Address
servers
clients
-
8/6/2019 chuong2 bai4
3/45
2: Tng ng dng 3
DNS : Name Server (My ch Tn) Khng c server no c th lu ton
b c tn min v a ch IP tng
ng local name servers:
o Mi ISP, cng ty c local name
server (ngm nh)o Cu hi truy vn ca host v DNSs c chuyn ti local nameserver
Chc nng ca name server:o i vi host: lu a ch IP v tn
min tng ng ca host
o C th tm tn min ng vi ach IP v ngc li
Ti sao to ra mt DNSServer tp trung ?
im hng duy nht - nuname-server cht th cmng Internet s chttheo.
Khi lng giao dch tiim tp trung ln. C s d liu tp trung
xa vi nhiu ni
Bo tr d hn.
KhngM RNG c !
-
8/6/2019 chuong2 bai4
4/45
2: Tng ng dng 4
DNS: t tn nh th no ? C ch t tn
o Khng gian tn (phn cp) c chia thnh cc Vng (zone)
o Mi vng c th c coi l Nhnh cacy tng qut
called a zone
-
8/6/2019 chuong2 bai4
5/45
-
8/6/2019 chuong2 bai4
6/45
2: Tng ng dng 6
DNS : Root Name Server Local name server s hi Root name server khi khng xc nh c
nh x.
Root name server:o Hi authoritative name server nu khng tr li c
o Nhn cu tr li t authoritative name server
o Tr li local name server
b USC-ISI Marina del Rey, CAl ICANN Marina del Rey, CA
e NASA Mt View, CAf Internet Software C. Palo Alto,CA
i NORDUnet Stockholmk RIPE London
m WIDE Tokyo
a NSI Herndon, VA
c PSInet Herndon, VAd U Maryland College Park, MDg DISA Vienna, VAh ARL Aberdeen, MDj NSI (TBD) Herndon, VA
13 root name serverstrn Th gii
-
8/6/2019 chuong2 bai4
7/45
2: Tng ng dng 7
DNS : V d n ginhost surf.eurecom.fr mun bit
a ch IP cagaia.cs.umass.edu
1. Hi local DNS server(dns.eurecom.fr)
2. dns.eurecom.fr hi rootname server nu cn thit
3. root name server hiauthoritative name server,dns.umass.edu nu cn
thit.requesting hostsurf.eurecom.fr
gaia.cs.umass.edu
root name server
authorititive name serverdns.umass.edulocal name serverdns.eurecom.fr
1
2
3
4
5
6
-
8/6/2019 chuong2 bai4
8/45
2: Tng ng dng 8
Name Server Trung gianRoot name server:
C th khng bitauthoritative nameserver
Ch bit Name Servertrung gian, qua mitm c authoritativename server
requesting hostsurf.eurecom.fr
gaia.cs.umass.edu
root name server
local name serverdns.eurecom.fr
1
23
4 5
6
authoritative name serverdns.cs.umass.edu
intermediate name serverdns.umass.edu
7
8
-
8/6/2019 chuong2 bai4
9/45
2: Tng ng dng 9
DNS: cc loi truy vn
Truy vn quy : Name server l ni gii m
a ch/tn. Nu khng t
mnh gii m c s gi yucu n name server khc. Root name server liu c b
qu ti ?
Truy vn tng tc: Nu khng phn gii c
a ch IP, gi thng ipTi khng bit, hy hi bn
ti l A. A l a ch IP caname server k tip. requesting hostsurf.eurecom.fr
gaia.cs.umass.edu
root name server
local name serverdns.eurecom.fr
1
23
4
5 6
authoritative name serverdns.cs.umass.edu
name server trung gian
dns.umass.edu
7
8
iterated query
-
8/6/2019 chuong2 bai4
10/45
2: Tng ng dng 10
DNS: Lu tm v Cp nht bn ghi Khi hc c thm mt nh x, name server s ghi nh
nh x ny
o Sau mt khong thi gian, nu thnh phn no trong cachekhng c s dng th s b xa b.
C ch Cp nht v Thng bo do IETF thit k:
o RFC 2136
o http://www.ietf.org/html.charters/dnsind-charter.html
-
8/6/2019 chuong2 bai4
11/45
2: Tng ng dng 11
Bn ghi DNSDNS: c s d liu phn tn lu cc Bn ghi Ti nguyn (RR)
Type=NS
o name : domain (v d
foo.com)o value : a ch IP caauthoritative name serverng vi min
nh dng RR : (name, value, type, TTL)
Type=A
o name : hostname
o value : IP address
Type=CNAME
o name : tn b danh cho mt tn
thc no : v dwww.ibm.com l tn b danhca
servereast.backup2.ibm.com
o value : tn thc
Type=MX
o value : tn ca mailserver
-
8/6/2019 chuong2 bai4
12/45
2: Tng ng dng 12
Giao thc v Thng ip ca DNSGiao thc DNS : Thng ip truy vn v tr liu c chung mt
nh dng
Tiu Thng ip
identification: 16 bit.Thng ip tr li v truy
vn c cng nh danh. C:
o C query hay reply
o C mong mun quyo C chp nhn quy
o C authoritative
-
8/6/2019 chuong2 bai4
13/45
2: Tng ng dng 13
DNSDNSGiaoGiao ththcc vv ThngThng iipp
Trng tn v
Kiu truy vn
Thng ip tr li
Cc bn ghi caauthoritative server
Nhng thng tin ngoi lc th hu dng
-
8/6/2019 chuong2 bai4
14/45
2: Tng ng dng 14
Quan st DNS S dng lnh dig (Hoc nslookup):
o Yu cu Hi bng cu hi tng tc:%dig +trace www.cnn.com
Bt thng ip bng Etherealo DNS server lng nghe port 53
-
8/6/2019 chuong2 bai4
15/45
2: Tng ng dng 15
DNS u im ? Phn cp : nng cao nng lc qun l v tng cng kh
nng m rng
Nhiu server : tng kh nng phng chng lio Xem http://www.internetnews.com/dev-news/article.php/1486981
thy Tn cng t chi Dch v (DDoS) vo h thng root servervo thng 10/2002 (9 trong 13 root server b nh tr, nhng mngch b chm i khng ng k)
o Xem http://www.cymru.com/DNS/index.html thy hiu sut
c gim st nh th no
Caching lm gim ti v gim thi gian phn hi
-
8/6/2019 chuong2 bai4
16/45
-
8/6/2019 chuong2 bai4
17/45
2: Tng ng dng 17
Gii php Phn gii Tn kiu Linda
Nhiu xut da trn Khng gian lm vic
Phn tn (Linda) do David Gelernter a rao Intentional Naming System (INS),o Internet Indirect Infrastructure (I3)
Nt vit cc cc tuples (mt dng vector khngkiu) vo cc khng gian dng chung
Nt c cc tuple ph hp t khng gian dngchung
-
8/6/2019 chuong2 bai4
18/45
2: Tng ng dng 18
Lp trnh Socket
Socket API BSD4.1 UNIX, 1981 ng dng To, S dng v ng
socket mt cch tng minh. S dng theo m hnh Client/Server Hai kiu dch v ng dng s dng
socket API:
o Truyn khng tin cyo Tin cy, hng ni, ng th t.
L giao din nm trn mytnh, do ng dng to ra vqun l, nhng HH kimsot(l ca) thng qua tin trnh va gi vnhn thng ip t cc tin
trnh ng dng khc ( trnmy tnh khc)
socket
Mc ch :Nghin cu cch xy dng ng dng client/servergiao tip qua socket
-
8/6/2019 chuong2 bai4
19/45
2: Tng ng dng 19
Lp trnh Socket TCPSocket: L ca gia tin trnh ng dng v giao thc giao
vn u cui (UCP/TCP)
TCP: Dch v truyn byte tin cy t tin trnh ny sang tintrnh khc.
process
TCP with
buffers,variables
socket
Lp trnh vinkim sot
H iu Hnhkim sot
My tnh
process
TCP withbuffers,variables
socket
Lp trnh vinkim sot
My tnh
Internet
H iu Hnh
kim sot
-
8/6/2019 chuong2 bai4
20/45
2: Tng ng dng 20
Lp trnh TCP SocketClient phi lin lc vi server
Tin trnh trn server phi chy
trc. Server phi to sn socket (door)
tip nhn yu cu t client.
Client trao i vi server bngcch:
To socket TCP pha client
Xc nh a ch IP, s hiu cng
ca tin trnh server.
Khi client to socket: clientTCP thit lp kt ni ti
server TCP. Khi nhn c yu cu t
client, server TCP to socketmi cho tin trnh trn server
trao i d liu vi cliento Cho php server c th
p ng yu cu ca nhiuclient.
Quan im Lp trnh ng dngTCP cung cp dch v truyn d liu tin cy
theo byte gia Client v Server
-
8/6/2019 chuong2 bai4
21/45
2: Tng ng dng 21
Hng ni TCP
-
8/6/2019 chuong2 bai4
22/45
2: Tng ng dng 22
Lp trnh Socket TCPV d ng dng client-server:
Client c mt dng k t t inputchun (inFromUser stream), gi tiserver qua socket (outToServer)
server c dng k t t socket server bin i dng k t (ch
thng thnh ch hoa) v gi tr vcho client.
client c dng k t bin i tsocket, in ra (inFromServer)
outToServer
to network from network
inFromServer
inFromUs
er
keyboard monitor
Process
clientSocket
input
stream
inputstream
output
stream
TCP
socket
Input stream:
sequence of bytes
into processoutput stream:sequence of bytes
out of process
Client
process
client TCPsocket
-
8/6/2019 chuong2 bai4
23/45
2: Tng ng dng 23
Tng tc Socket Client/server : TCP
wait for incomingconnection requestconnectionSocket =welcomeSocket.accept()
create socket,port=x, forincoming request:welcomeSocket =
ServerSocket()
create socket,connect to hostid, port=x
clientSocket =Socket()
closeconnectionSocket
read reply fromclientSocket
close
clientSocket
Server Client
send request usingclientSocketread request from
connectionSocket
write reply toconnectionSocket
TCPconnection setup
-
8/6/2019 chuong2 bai4
24/45
2: Tng ng dng 24
ServerSocket
ServerSocket()o To r a mt socket lng nghe kt ni t client
ServerSocket(int port)o To r a mt socket lng nghe kt ni t client ti cng
Port
ServerSocket(int port, int backlog) ServerSocket(int port, int backlog,
InetAddress bindAddr)
bind(SocketAddress endpoint) bind(SocketAddress endpoint, int backlog)
Socket accept()
-
8/6/2019 chuong2 bai4
25/45
2: Tng ng dng 25
Socket Socket(InetAddress address, int port)
Socket(InetAddress address, int port,InetAddress localAddr, int localPort)
Socket(String host, int port)
bind(SocketAddress bindpoint)
connect(SocketAddress endpoint) connect(SocketAddress endpoint, int timeout)
InputStream get InputStream() OutputStream getOutputStream()
close()
-
8/6/2019 chuong2 bai4
26/45
2: Tng ng dng 26
V d Java Client (TCP)import java.io.*;import java.net.*;class TCPClient {
public static void main(String argv[]) throws Exception{
String sentence;
String modifiedSentence;
BufferedReader inFromUser =new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket ("hostname", 6789);
DataOutputStream outToServer =new DataOutputStream(clientSocket.getOutputStream());
To input stream
To client socket,
kt ni ti server
To output stream,nh km vo socket
-
8/6/2019 chuong2 bai4
27/45
2: Tng ng dng 27
V d v Java Client (TCP)
BufferedReader inFromServer =
new BufferedReader(newInputStreamReader(clientSocket.getInputStream()));
sentence = inFromUser.readLine();
outToServer.writeBytes(sentence + '\n');
modifiedSentence = inFromServer.readLine();
System.out.println("FROM SERVER: " + modifiedSentence);
clientSocket.close();
}}
To input stream,
nh km vo socket
Gi dng k t
n serverc dng k t
( bin i) do servergi v
-
8/6/2019 chuong2 bai4
28/45
2: Tng ng dng 28
V d v Java Server (TCP)import java.io.*;import java.net.*;
class TCPServer {
public static void main(String argv[]) throws Exception{String clientSentence;String capitalizedSentence;
ServerSocket welcomeSocket = new ServerSocket(6789);
while(true) {
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient =new BufferedReader(newInputStreamReader(connectionSocket.getInputStream()));
To Socket i cng 6789
i n khi c sockett client gi n
To input stream,nh km vo socket
-
8/6/2019 chuong2 bai4
29/45
2: Tng ng dng 29
V d v Java Server (TCP)
DataOutputStream outToClient =new DataOutputStream(connectionSocket.getOutputStream());
clientSentence = inFromClient.readLine();
capitalizedSentence = clientSentence.toUpperCase() + '\n';
outToClient.writeBytes(capitalizedSentence);}
}
}
c dng k ttrong socket
To output stream,nh km vo
socket
Ghi dng k t bin i vo socket
Kt thc vng lp while,quay tr v vng lp chnh,i kt ni khc
-
8/6/2019 chuong2 bai4
30/45
2: Tng ng dng 30
Phn knh trong Hng ni TCP socket c xc nh bi 4 thnh phn:
o a ch IP gi
o Cng tin trnh gi
o a ch IP nhn
o Cng tin trnh nhn
My tnh pha nhn s s dng c 4 thnh phn ny chuyn segment n socket ph hp
o Server c th ng thi h tr nhiu socket. Cc kt ni khc nhauc t ng chuyn cho cc socket tng ng
-
8/6/2019 chuong2 bai4
31/45
2: Tng ng dng 31
Hng ni : Phn knh (tip)
Web clienthost A
Webserver S
Web clienthost B
Source IP: BDest IP: S
source port: xdest. port: 80
Source IP: BDest IP: S
source port: ydest. port: 80
Web server
Source IP: A
Dest IP: Ssource port: xdest. port: 80
-
8/6/2019 chuong2 bai4
32/45
2: Tng ng dng 32
TCP s
lm nh th
noserver clientTCP socket space
state: listeningaddress: {*:6789, *:*}completed connection queue:sendbuf:recvbuf:
128.36.232.5128.36.230.2
TCP socket space
state: listening
address: {*:25, *:*}completed connection queue:sendbuf:recvbuf:
198.69.10.10
state: listeningaddress: {*:25, *:*}completed connection queue:sendbuf:recvbuf:
state: startingaddress: {198.69.10.10:1500, *:*}sendbuf:recvbuf:
local addr
local port
remote addr
remote port
%netstat -tcp a l -n
-
8/6/2019 chuong2 bai4
33/45
2: Tng ng dng 33
V du : Client khi to Kt niserver client
TCP socket space
state: listeningaddress: {*:6789, *.*}completed connection queue:sendbuf:recvbuf:
128.36.232.5128.36.230.2
TCP socket space
state: listeningaddress: {*.25, *.*}completed connection queue:sendbuf:recvbuf:
198.69.10.10
state: listeningaddress: {*.25, *.*}completed connection queue:sendbuf:recvbuf:
state: connectingaddress: {198.69.10.10:1500, 128.36.232.5:6789}sendbuf:recvbuf:
-
8/6/2019 chuong2 bai4
34/45
2: Tng ng dng 34
Kt ni TCP thnh cngserver client
TCP socket space
state: listeningaddress: {*:6789, *:*}completed connection queue:{128.36.232.5.6789, 198.69.10.10.1500}
sendbuf:recvbuf:
128.36.232.5128.36.230.2
TCP socket space
state: listeningaddress: {*:25, *:*}completed connection queue:sendbuf:recvbuf:
198.69.10.10
state: listeningaddress: {*:25, *:*}completed connection queue:sendbuf:recvbuf:
state: connectedaddress: {198.69.10.10:1500, 128.36.232.5:6789}sendbuf:recvbuf:
-
8/6/2019 chuong2 bai4
35/45
2: Tng ng dng 35
V d Server chp nhn kt ni accept()server client
TCP socket space
state: listeningaddress: {*.6789, *:*}completed connection queue:sendbuf:recvbuf:
128.36.232.5128.36.230.2
TCP socket space
state: listening
address: {*.25, *:*}completed connection queue:sendbuf:recvbuf:
198.69.10.10
state: listening
address: {*.25, *:*}completed connection queue:sendbuf:recvbuf:
state: connected
address: {198.69.10.10.1500, 128.36.232.5:6789}sendbuf:recvbuf:
state: establishedaddress: {128.36.232.5:6789, 198.69.10.10.1500}
sendbuf:recvbuf:
Packet c gi cho socket ph hp nht!Phn knh cho gi tin da trn (IP gi, port gi, IP nhn, port nhn)
-
8/6/2019 chuong2 bai4
36/45
2: Tng ng dng 36
Lp trnh Socket UDP
UDP: khng thit lp kt nigia client v server
Khng bt tay. Bn gi phi xc nh chnh
xc a ch IP v cng ca
tin trnh nhn. Server xc nh a ch IP v
cng ca bn gi t UDPdatagram nhn c.
UDP : d liu truyn i c thn ch khng theo ngth t hay mt mt.
Vi Lp trnh ngdng
UDP cung cp dch v truyn d
liu theo tng nhm byte(datagram) khng tin cy
-
8/6/2019 chuong2 bai4
37/45
2: Tng ng dng 37
Tng tc Socket Client/Server : UDP
closeclientSocket
Server
read reply from
clientSocket
create socket,clientSocket =DatagramSocket()
Client
Create, address (hostid, port=x,send datagram request
using clientSocket
create socket,
port=x, forincoming request:serverSocket =DatagramSocket()
read request fromserverSocket
write reply toserverSocket
specifying clienthost address,port umber
-
8/6/2019 chuong2 bai4
38/45
2: Tng ng dng 38
Example: UDPClient.java
UDP client n gin cinput tbn phm, gi
qua server v i servertr kt qu v.
-
8/6/2019 chuong2 bai4
39/45
2: Tng ng dng 39
V d 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));
DatagramSocket clientSocket = new DatagramSocket();
InetAddress IPAddress = InetAddress.getByName("hostname");
byte[] sendData = new byte[1024];byte[] receiveData = new byte[1024];
String sentence = inFromUser.readLine();
sendData = sentence.getBytes();
To input stream
To client socket
Chuyn hostnamesang a ch IP
s dng DNS
-
8/6/2019 chuong2 bai4
40/45
2: Tng ng dng 40
V d Java Client (UDP)
DatagramPacket sendPacket =new DatagramPacket(sendData, sendData.length, IPAddress, 9876);
clientSocket.send(sendPacket);
DatagramPacket receivePacket =new DatagramPacket(receiveData, receiveData.length);
clientSocket.receive(receivePacket);
String modifiedSentence =new String(receivePacket.getData());
System.out.println("FROM SERVER:" + modifiedSentence);clientSocket.close();}
}
To datagram cngvi d liu, di,
a ch IP, cng
Gi datagramti server
c datagramgi v t server
-
8/6/2019 chuong2 bai4
41/45
2: Tng ng dng 41
V d 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);
To datagram socket cng 9876
To datagram
Nhndatagram
-
8/6/2019 chuong2 bai4
42/45
2: Tng ng dng 42
V d v Java Server (UDP)
String sentence = new String(receivePacket.getData());
InetAddress IPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
String capitalizedSentence = sentence.toUpperCase();
sendData = capitalizedSentence.getBytes();
DatagramPacket sendPacket =new DatagramPacket(sendData, sendData.length, IPAddress,
port);
serverSocket.send(sendPacket);}}
}
Nhn a ch IP v
cng ca bn Gi
nh datagram
vo socket
Kt thc vng lp while,Quay tr v vng lp chnh,
i datagram khc n
To datagram gi ti client
-
8/6/2019 chuong2 bai4
43/45
2: Tng ng dng 43
Lp trnh Socket : Tham kho
C-language tutorial (audio/slides): Unix Network Programming (J. Kurose),
HTTP://manic.cs.umass.edu/~amldemo/courseware/intro.
Java-tutorials: All About Sockets (Sun tutorial),
HTTP://www.javaworld.com/javaworld/jw-12-1996/jw-12-sockets.html
Socket Programming in Java: a tutorial,HTTP://www.javaworld.com/javaworld/jw-12-1996/jw-12-sockets.html
-
8/6/2019 chuong2 bai4
44/45
2: Tng ng dng 44
Phn 2 : TNG KT
Cc yu cu ca Dch vtng ng dng:
o S tin cy, Bng thng, tr.
M hnh Client - Server. Cc m hnh dch v ca
tng giao vn trn Internet
o Hng kt ni, tin cy:
TCPo Khng tin cy, datagram:
UDP
Cc Giao thc c trng:o HTTP
o FTP
o SMTP, POP3
o DNS
Lp trnh Socket
o Giao tip client/servero S dng TCP, UDP socket
hc xong tng NG DNG !
-
8/6/2019 chuong2 bai4
45/45
2: Tng ng dng 45
Phn 2 : TNG KT
Ch yu trao i thngip Request/Reply:
o Client yu cu thng tinhoc dch v.
o Server tr li d liucng m trng thi.
nh dng Thng ip:
o Tiu : cc trng lugi thng tin v d liu.
o D liu: thng tin ctrao i.
Trong chng ny, ch trng v GIAO THC !
Nhiu Dch v tri ngc : Thng ip mang iu khin
vs. thng ip mang d liu.
o in-based, out-of-band
Tp trung v Phn tn.
Khng trng thi v Lu trngthi.
Truyn thng ip Tin cy vKhng tin cy.
An ninh : Kim chng.