Bài giảng Mạng máy tính - Chương 2: Lớp Application

Tóm tắt Bài giảng Mạng máy tính - Chương 2: Lớp Application: ...), bạn đã gửi yêu cầu GET tối thiểu (nhưng đầy đủ) đến HTTP server GET /~ross/ HTTP/1.1 Host: cis.poly.edu 3. Xem thông điệp đáp ứng gửi từ HTTP server! Lớp Application 35 Khảo sát hành động của HTTP ˆ telnet ˆ Ethereal Lớp Application 36 Trạng thái User-server: các cookie Nhiều Web...t (reader) Lớp Application 56 SMTP ˆ SMTP dùng các kết nối bền vững ˆ SMTP yêu cầu các thông điệp (header & body) phải ở dạng thức 7-bit ASCII ˆ SMTP server dùng CRLF.CRLF xác định kết thúc thông điệp So sánh với HTTP: ˆ HTTP: kéo ˆ SMTP: đẩy ˆ tất cả đều có tương tác lệnh/đáp ứ... 1 trong những peer, là Bob. ˆ File được sao chép từ máy tính của Bob: HTTP ˆ Trong khi Alice tải xuống, các user khác tải lên từ Alice. ˆ Alice là 1 peer đóng cả vai trò Web client và Web server tạm thời. Tất cả peer là server = độ linh hoạt cao! Lớp Application 78 P2P: directory ...

pdf108 trang | Chia sẻ: havih72 | Lượt xem: 300 | Lượt tải: 0download
Nội dung tài liệu Bài giảng Mạng máy tính - Chương 2: Lớp Application, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
au
ˆ POP3 không giữ trạng 
thái của các phiên làm 
việc
IMAP
ˆ Giữ tất cả thông điệp 
tại 1 vị trí: server
ˆ Cho phép user tổ chức 
các thông điệp theo 
dạng thư mục
ˆ IMAP giữ trạng thái 
xuyên suốt các phiên 
làm việc:
™ các tên của thư mục và
ánh xạ giữa ID của 
thông điệp và tên thư 
mục
2.5 DNS
Lớp Application 62
Lớp Application 63
DNS: Domain Name System
Con người: nhiều cách 
nhận dạng:
™ SSN, tên, #hộ chiếu
Internet hosts, routers:
™ địa chỉ IP (32 bit) dùng 
cho các gói định địa chỉ
™ “tên”, ví dụ: 
www.yahoo.com – dùng 
bởi con người
Ánh xạ giữa địa chỉ IP và
tên?
Domain Name System:
ˆ cơ sở dữ liệu phân bố hiện thực 
theo tổ chức phân cấp của 
nhiều servers tên
ˆ giao thức lớp application host, 
routers, name servers để
truyền thông với các tên phân 
giải (địa chỉ/dịch ra tên)
™ lưu ý: chức năng lõi 
Internet, hiện thực như 
giao thức lớp application
™ phức tạp ở “biên” mạng
Lớp Application 64
DNS 
Tại sao không tập trung hóa 
DNS?
ˆ một điểm chịu lỗi
ˆ lưu lượng
ˆ khoảng cách cơ sở dữ liệu 
tập trung
ˆ bảo trì
không linh hoạt!
Các dịch vụ DNS
ˆ Tên Host chuyển thành 
địa chỉ IP
ˆ Bí danh Host
™ các tên đúng chuẩn và bí
danh
ˆ Bí danh Mail server
ˆ Tải phân bố
™ Các Web server bản 
sao: tập các địa chỉ IP 
cho 1 tên đúng chuẩn 
Lớp Application 65
DNS Servers gốc
com DNS servers org DNS servers edu DNS servers
poly.edu
DNS servers
umass.edu
DNS serversyahoo.comDNS servers
amazon.com
DNS servers
pbs.org
DNS servers
Cơ sở dữ liệu cấu trúc, phân bố
Client muốn IP cho www.amazon.com:
ˆ Client hỏi một server gốc (root) để tìm com DNS 
server
ˆ Client hỏi com DNS server để lấy amazon.com DNS 
server
ˆ Client hỏi amazon.com DNS server để lấy địa chỉ IP 
của www.amazon.com
Lớp Application 66
DNS: các server tên gốc
ˆ tiếp xúc qua server tên cục bộ nào không thể phân giải tên
ˆ server tên gốc:
™ tiếp xúc server tên có thẩm quyền nếu ánh xạ tên không xác định
™ lấy ánh xạ
™ trả về ánh xạ đến server tên cục bộ
13 name servers 
gốc trên toàn cầu
b USC-ISI Marina del Rey, CA
l ICANN Los Angeles, CA
e NASA Mt View, CA
f Internet Software C. Palo Alto, 
CA (and 17 other locations)
i Autonomica, Stockholm (plus 3 
other locations)
k RIPE London (also Amsterdam, 
Frankfurt)
m WIDE Tokyo
a Verisign, Dulles, VA
c Cogent, Herndon, VA (also Los Angeles)
d U Maryland College Park, MD
g US DoD Vienna, VA
h ARL Aberdeen, MD
j Verisign, ( 11 locations)
Lớp Application 67
TLD và Server có thẩm quyền
ˆ Các server Top-level domain (TLD) : chịu 
trách nhiệm cho tên miền com, org, net, edu,
và các tên miền quốc gia như uk, fr, ca, jp.
™ Lĩnh vực giáo dục cho edu TLD
ˆ Các DNS server có thẩm quyền: DNS server 
của tổ chức, cung cấp các tên host có thẩm 
quyền để ánh xạ IP cho server (ví dụ: Web và
mail).
™ Không thể duy trì bởi tổ chức hoặc người cung cấp 
dịch vụ
Lớp Application 68
Server tên cục bộ
ˆ Không hoàn toàn theo cấu trúc phân cấp
ˆMỗi ISP (ISP cá nhân, công ty, trường học) 
có một server cục bộ như vậy.
™ cũng gọi là “server tên mặc nhiên”
ˆ Khi một host tạo một truy vấn DNS, truy 
vấn đó được gửi tới DNS server cục bộ của 
nó
™ Hoạt động như một proxy, chuyển truy vấn vào 
cho tổ chức phân cấp
Lớp Application 69
host yêu cầu
cis.poly.edu
gaia.cs.umass.edu
DNS server gốc
DNS server cục bộ
dns.poly.edu
2
3
4
5
6
1
DNS server có thẩm quyền
dns.cs.umass.edu
78
TLD DNS server
Ví dụ
ˆ Host tại cis.poly.edu 
muốn địa chỉ IP của 
gaia.cs.umass.edu
Lớp Application 70
host yêu cầu
cis.poly.edu
gaia.cs.umass.edu
DNS server gốc
DNS server cục bộ
dns.poly.edu
1
2
45
6
DNS server có thẩm quyền
dns.cs.umass.edu
7
8
TLD DNS server
3
Các truy vấn đệ
quy
truy vấn đệ quy:
ˆ đẩy trách nhiệm phân 
giải tên cho server 
tên đã tiếp xúc được
ˆ tải quá nặng?
truy vấn tuần tự:
ˆ tên đã tiếp xúc được 
trả lời với tên của 
server 
ˆ “Tôi không biết tên 
đó, nhưng có thể hỏi 
server này”
Lớp Application 71
DNS: caching và cập nhật các 
record
ˆ một khi server tên học cách ánh xạ, nó cache ánh 
xạ
™ điểm đăng nhập cache sẽ thoát ra (biến mất) 
sau một vài lần
™ TLD servers điển hình sẽ được cache trong các 
server tên cục bộ
• Do đó server tên gốc sẽ không thường xuyên được 
truy cập
ˆ cơ chế cập nhật/thông báo bên dưới được thiết kế
bởi IETF
™ RFC 2136
™ 
Lớp Application 72
Các DNS record
DNS: cơ sở dữ liệu phân bố lưu trữ các record tài nguyên (RR)
ˆ Type=NS
™ name là tên miền (vd: 
foo.com)
™ value là tên host của 
server tên có thẩm quyền 
cho tên miền này
dạng thức RR: (name, value, type, ttl)
ˆ Type=A
™ name là tên host
™ value là địa chỉ IP
ˆ Type=CNAME
™ name là bí danh của tên 
“chuẩn” (tên thực)
www.ibm.com là tên thực
servereast.backup2.ibm.com
™ value là tên chuẩn
ˆ Type=MX
™ value là tên của email 
server liên kết với name
Lớp Application 73
Giao thức và các thông điệp DNS
Giao thức DNS: các thông điệp truy vấn và trả lời, đều 
có cùng dạng thức thông điệp 
header thông điệp 
ˆ identification: 16 bit # 
cho truy vấn, trả lời cho 
truy vấn dùng cùng #
ˆ flags:
™ truy vấn hoặc trả lời 
đệ quy mong chờ
™ đệ quy sẵn sàng
™ trả lời được cấp phép
Lớp Application 74
Giao thức và các thông điệp DNS
các trường Name, 
type cho 1 truy vấn
các RR trong đáp 
ứng cho truy vấn
các record cho các 
server có thẩm quyền
thông tin “hữu ích” bổ
sung có thể sẽ dùng
Lớp Application 75
Chèn các record vào DNS
ˆ Ví dụ: mới tạo “Network Utopia”
ˆ Đăng ký tên miền networkuptopia.com tại một 
registrar (ví dụ: Network Solutions)
™ Cần cung cấp cho registrar tên và địa chỉ IP của server tên 
có thẩm quyền (primary và secondary) của bạn
™ Registrar chèn 2 RR vào trong com TLD server:
(networkutopia.com, dns1.networkutopia.com, NS)
(dns1.networkutopia.com, 212.212.212.1, A)
ˆ Đưa vào trong server có thẩm quyền record Type A 
cho www.networkuptopia.com và bản ghi Type MX cho 
networkutopia.com
ˆ Làm sao người khác có thể biết được địa chỉ IP Web 
site của bạn?
2.6 Chia sẻ file P2P
Lớp Application 76
Lớp Application
Chia sẻ file P2P
77
Ví dụ
ˆ Alice chạy ứng dụng 
P2P client trên máy 
tính xách tay của cô
ˆ Kết nối không liên tục 
vào Internet; lấy địa 
chỉ IP cho mỗi kết nối
ˆ Hỏi về “Hey Jude”
ˆ Ứng dụng sẽ hiển thị
những peer khác có bản 
sao của Hey Jude.
ˆ Alice chọn 1 trong 
những peer, là Bob.
ˆ File được sao chép từ
máy tính của Bob: 
HTTP
ˆ Trong khi Alice tải 
xuống, các user khác 
tải lên từ Alice.
ˆ Alice là 1 peer đóng cả
vai trò Web client và
Web server tạm thời.
Tất cả peer là server = độ
linh hoạt cao!
Lớp Application 78
P2P: directory tập trung
đầu tiên do “Napster” thiết 
kế
1) khi peer kết nối, nó
thông báo cho server 
trung tâm:
™ địa chỉ IP
™ nội dung
2) Alice truy vấn “Hey 
Jude”
3) Alice yêu cầu file từ Bob
directory server 
trung tâm
peers
Alice
Bob
1
1
1
12
3
Lớp Application 79
P2P: các vấn đề với directory tập trung
ˆ Một điểm chịu lỗi
ˆ Hiện tượng tắc nghẽn 
“cổ chai”
ˆ Xâm phạm bản quyền
truyền file không tập 
trung nhưng tìm kiếm 
nội dung thì tập trung 
cao độ
Lớp Application 80
Tràn ngập truy vấn: Gnutella
ˆ hoàn toàn phân bố
™ không có server tập 
trung
ˆ giao thức tên miền 
chung
ˆ nhiều Gnutella client 
hiện thực giao thức
overlay network: đồ thị
ˆ có cạnh giữa peer X và
Y nếu có 1 kết nối TCP
ˆ tất cả các peer đang 
hoạt động và các cạnh 
là mạng overlay 
network
ˆ cạnh không phải là một 
liên kết vật lý
ˆ peer sẽ kết nối với < 10 
peer lân cận
Lớp Application 81
Gnutella: giao thức
Truy vấn
QueryHit
Truy vấn
Truy vấn
QueryHit
T r u
y v
ấ n
Truy vấn
Q u
e r y
H i t
Truyền File:
HTTPˆTruy vấn thông 
điệp gửi trên các kết 
nối TCP đang có
ˆ peer chuyển thông 
điệp truy vấn
ˆ QueryHit 
gửi trên đường 
ngược chiều
Độ linh hoạt:
hạn chế tràn ngập 
theo phạm vi
Lớp Application 82
Gnutella: hội tụ Peer
1. Hội tụ peer X phải tìm một số peer khác trong 
Gnutella network: dùng một danh sách các peer 
dự tuyển
2. X lần lượt thử tạo TCP với các peer trên danh sách 
cho đến khi kết nối thiết lập được với Y
3. X gửi thông điệp Ping đến Y; Y chuyển thông điệp 
Ping. 
4. Tất cả các peer nhận thông điệp Ping sẽ trả lời 
bằng thông điệp Pong
5. X nhận được nhiều thông điệp Pong. Nó sau đó có
thể thiết lập thêm các kết nối TCP.
Peer leaving: xem một số vấn đề mạng gia đình!
Lớp Application 83
KaZaA
ˆ Mỗi peer là một hoặc 
được gán thành chỉ huy 
nhóm
™ TCP kết nối giữa peer và
nhóm chỉ huy của nó
™ TCP kết nối giữa một số
cặp nhóm chỉ huy.
ˆ Nhóm chỉ huy theo dõi 
nội dung trong tất cả
thành viên bên trong ordinary peer
group-leader peer
neighoring relationships
in overlay network
Lớp Application 84
KaZaA: Truy vấn
ˆMỗi file có một băm (hash) hoặc một mô tả
ˆ Client gửi từ khóa truy vấn đến nhóm chỉ huy 
của nó
ˆNhóm chỉ huy đáp ứng với truy vấn của 
nhóm: 
™ ứng với mỗi so trùng: metadata, hash, địa chỉ IP
ˆNếu nhóm chỉ huy chuyển truy vấn cho nhóm 
khác, chúng phản hồi thích hợp
ˆ Client sau đó chọn các file để download
™ Các yêu cầu HTTP dùng hash như một nhân dạng 
gửi đến cho peer quản lý file mong muốn
Lớp Application 85
KaZaA: các thủ thuật
ˆHạn chế khi tải lên đồng thời
ˆXếp hàng yêu cầu
ˆ Khích lệ ưu tiên
ˆ tải xuống song song
Tìm hiểu thêm thông tin ở:
ˆ J. Liang, R. Kumar, K. Ross, “Understanding KaZaA,”
(Web site: cis.poly.edu/~ross)
2.7 Lập trình socket vớiTCP
Lớp Application 86
(xem thêm slide Lập trình 
socket)
Lớp Application 87
Lập trình socket
Socket API
ˆ đã được giới thiệu trong 
BSD4.1 UNIX, 1981
ˆ rõ ràng tại, sử dụng và giải 
phóng bởi ứng dụng
ˆ mô hình client/server
ˆ 2 kiểu dịch vụ lưu thông qua 
socket API: 
™ datagram không tin cậy
™ tin cậy, truyền byte theo 
streaming 
một giao diện host-cục bộ, 
tạo bởi ứng dụng, 
điều khiển bởi hệ điều hành
interface (một “cửa”) 
trong đó tiến trình ứng 
dụng có thể gửi và nhận 
các thông điệp đến/từ các 
tiến trình khác
socket
Mục tiêu: nghiên cứu cách xây dựng ứng dụng truyền 
thông client/server dùng sockets
Lớp Application 88
Lập trình socket dùng TCP
Socket: một cánh cửa giữa tiến trình ứng dụng và giao 
thức transport (UCP hoặc TCP)
Dịch vụ TCP: truyền tin cậy các bytes từ một tiến 
trình đến tiến trình khác
tiến trình
TCP với 
bộ đệm,
các biến
socket
điều khiển bởi
người phát triển
ứng dụng
điều khiển bởi
hệ điều hành
host hoặc 
server
tiến trình
TCP với 
bộ đệm,
các biến
socket
điều khiển bởi
người phát triển
ứng dụng
điều khiển bởi
hệ điều hành
host hoặc
server
internet
Lớp Application 89
Lập trình socket với TCP
Client phải tiếp xúc với server
ˆ tiến trình server phải chạy 
trước
ˆ server phải tạo socket (cửa) 
mời client đến tiếp xúc
Client tiếp xúc server bằng:
ˆ tạo socketTCP client cục bộ
ˆ xác định địa chỉ IP, số port 
của tiến trình server
ˆ Khi client tạo socket: client 
TCP thiết lập kết nối với 
server TCP
ˆ Khi đã được tiếp xúc bởi 
client, server TCP tạo socket 
mới cho tiến trình server để
truyền thông với client
™ cho phép server “nói 
chuyện” với nhiều client
™ số port dùng để phân biệt 
các client (xem tiếp trong 
chương 3)
TCP cung cấp việc truyền các byte
tin cậy và theo thứ tự
giữa client và server
Nhìn dưới góc độ ứng dụng
Lớp Application 90
Giao tiếp socket Client/server: TCP
wait for incoming
connection request
connectionSocket =
welcomeSocket.accept()
create socket,
port=x, for
incoming request:
welcomeSocket = 
ServerSocket()
create socket,
connect to hostid, port=x
clientSocket = 
Socket()
close
connectionSocket
read reply from
clientSocket
close
clientSocket
Server (chạy trên hostid) Client
send request using
clientSocketread request from
connectionSocket
write reply to
connectionSocket
TCP 
connection setup
Lớp Application 91
o
u
t
T
o
S
e
r
v
e
r
to network from network
i
n
F
r
o
m
S
e
r
v
e
r
i
n
F
r
o
m
U
s
e
r
keyboard monitor
Process
clientSocket
input
stream
input
stream
output
stream
TCP
socket
tiến 
trình 
Client
client TCP 
socket
Thuật ngữ Stream
ˆ Một stream là một chuỗi 
các ký tự được “chảy” vào 
hoặc ra khỏi một tiến trình
ˆ Một input stream để chỉ
nguồn vào của một tiến 
trình, vd: bàn phím hoặc 
socket.
ˆ Một output stream để chỉ
nguồn ra của một tiến trình, 
vd: màn hình hoặc socket.
Lớp Application 92
Lập trình socket dùng TCP
Ví dụ ứng dụng client-server :
1) client đọc các dòng từ input chuẩn (inFromUser stream) , gửi 
đến server thông qua socket (outToServer stream)
2) server đọc các dòng từ socket
3) server chuyển các dòng thành chữ hoa, gửi ngược trở lại cho 
client
4) client đọc, in các dòng đã sửa đổi từ socket (inFromServer
stream)
Lớp Application 93
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());
tạo
input stream
tạo
client socket, 
kết nối vào server
tạo
output stream
gắn vào socket
Lớp Application 94
Ví dụ: Java client (TCP)
BufferedReader inFromServer = 
new BufferedReader(new
InputStreamReader(clientSocket.getInputStream())); 
sentence = inFromUser.readLine(); 
outToServer.writeBytes(sentence + '\n'); 
modifiedSentence = inFromServer.readLine(); 
System.out.println("FROM SERVER: " + modifiedSentence); 
clientSocket.close(); 
} 
}
tạo
input stream
gắn vào socket
Gửi dòng
đến server
đọc dòng
từ server
Lớp Application 95
Ví dụ: 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(new
InputStreamReader(connectionSocket.getInputStream())); 
tạo
socket mời tiếp xúc
tại port 6789
Chờ, client
tiếp cận với
server
Tạo input
stream, gắn vào
socket
Lớp Application 96
Ví dụ: Java server (TCP)
DataOutputStream outToClient = 
new DataOutputStream(connectionSocket.getOutputStream());
clientSentence = inFromClient.readLine(); 
capitalizedSentence = clientSentence.toUpperCase() + '\n'; 
outToClient.writeBytes(capitalizedSentence); 
} 
} 
}
Đọc dòng
từ socket
Tạo output
stream, gắn vào
socket
Viết dòng ra
từ socket
kết thúc vòng lặp while
quay lại và chờ cho
kết nối của client khác
2.8 Lập trình socket với UDP
Lớp Application 97
(xem thêm slide Lập trình 
socket)
Lớp Application 98
Lập trình socket với UDP
UDP: không “kết nối” giữa 
client và server
ˆ không bắt tay
ˆ người gửi rõ ràng gắn địa chỉ
IP và port của đích vào mỗi 
gói
ˆ phải trích địa chỉ IP, port 
của người gửi từ gói đã nhận
UDP: dữ liệu truyền có thể
không theo thứ tự, hoặc bị
mất mát
góc nhìn ứng dụng
UDP cung cấp việc truyền không 
tin cậy
một nhóm các byte (“datagrams”)
giữa client và server
Lớp Application 99
Giao tiếp socket Client/server: UDP
close
clientSocket
Server (chạy trên hostid)
read reply from
clientSocket
create socket,
clientSocket = 
DatagramSocket()
Client
Create, address (hostid, port=x,
send datagram request 
using clientSocket
create socket,
port=x, for
incoming request:
serverSocket = 
DatagramSocket()
read request from
serverSocket
write reply to
serverSocket
specifying client
host address,
port number
Lớp Application 100
Ví dụ: Java client (UDP)
s
e
n
d
P
a
c
k
e
t
to network from network
r
e
c
e
i
v
e
P
a
c
k
e
t
i
n
F
r
o
m
U
s
e
r
keyboard monitor
Process
clientSocket
UDP
packet
input
stream
UDP
packet
UDP
socket
Output: gửi gói 
(còn gọi là TCP 
gửi “dòng byte”)
Input: nhận gói 
(còn gọi là TCP 
nhận “dòng byte”)
Client
process
client UDP 
socket
Lớp Application 101
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();
tạo
input stream
tạo
client socket
dịch
hostname thành
địa chỉ IP dùng DNS
Lớp Application 102
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(); 
} 
}
tạo datagram với
dữ liệu để gửi,
độ dài, địa chỉ IP, port
gửi datagram
đến server
đọc datagram
từ server
Lớp Application 103
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);
Tạo
datagram socket
tại port 9876
Tạo không gian để
nhận datagram
nhận
datagram
Lớp Application 104
Ví dụ: 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); 
} 
} 
}
lấy địa chỉ IP
port #, của
người gửi
viết
datagram
vào socket
kết thúc vòng lặp while,
quay lại và chờ
datagram khác
tạo datagram
để gửi tới client
2.9 Xây dựng một Web server
Lớp Application 105
Lớp Application 106
Xây dựng 1 Web server đơn giản
ˆ quản lý 1 yêu cầu HTTP
ˆ chấp nhận yêu cầu 
ˆ phân tích cú pháp 
header
ˆ lấy file được yêu cầu từ
hệ thống file của server 
ˆ tạo thông điệp đáp ứng 
HTTP:
™ các dòng header + file
ˆ gửi đáp ứng đến client
ˆ sau khi tạo server, bạn 
có thể yêu cầu file 
dùng trình duyệt (ví dụ: 
IE)
ˆ xem giáo trình để biết 
thêm chi tiết
Lớp Application 107
Chương 2: Tổng kết
ˆ Các kiến trúc ứng dụng
™ client-server
™ P2P
™ lai
ˆ các yêu cầu dịch vụ:
™ tin cậy, bandwidth, trễ
ˆ mô hình dịch vụ Internet 
transport
™ connection-oriented, tin 
cậy: TCP
™ không tin cậy, datagrams: 
UDP
Tổng quan một số vấn đề về ứng dụng mạng!
ˆ các giao thức đặc biệt:
™ HTTP
™ FTP
™ SMTP, POP, IMAP
™ DNS
ˆ lập trình socket
Lớp Application 108
Chương 2: Tổng kết
ˆ trao đổi thông điệp yêu 
cầu/trả lời điển hình:
™ client yêu cầu thông tin 
hoặc dịch vụ service
™ server đáp ứng với dữ
liệu, mã trạng thái
ˆ các dạng thông điệp:
™ headers: các trường cho 
biết thông tin về dữ liệu 
™ dữ liệu: thông tin để
truyền thông
Phần quan trọng: nghiên cứu về các giao thức
ˆ điều khiển với các thông điệp 
dữ liệu 
™ in-band, out-of-band
ˆ tập trung và không tập trung
ˆ không trạng thái và có trạng 
thái
ˆ truyền thông điệp tin cậy và
không tin cậy
ˆ “sự phức tạp của các vấn đề 
liên quan đến mạng”

File đính kèm:

  • pdfbai_giang_mang_may_tinh_chuong_2_lop_application.pdf