Bài giảng Nhập môn mạng máy tính - Chương 2: Tầng Application

2.1 Các nguyên lý của

các ứng dụng mạng

2.2 Web và HTTP

2.3 FTP

2.4 E-Mail

§  SMTP, POP3,IMAP

2.5 DNS

2.6 Các ứng dụng P2P

2.7 Lập trình socket

với UDP và TCP

pdf 106 trang yennguyen 2520
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Nhập môn mạng máy tính - Chương 2: Tầng Application", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Nhập môn mạng máy tính - Chương 2: Tầng Application

Bài giảng Nhập môn mạng máy tính - Chương 2: Tầng Application
Tầng Application 2-1 
Chương 2 
Tầng Application 
Computer 
Networking: A Top 
Down Approach 
6th edition 
Jim Kurose, Keith Ross 
Addison-Wesley 
March 2012 
A note on the use of these ppt slides: 
We’re making these slides freely available to all (faculty, students, readers). 
They’re in PowerPoint form so you see the animations; and can add, modify, 
and delete slides (including this one) and slide content to suit your needs. 
They obviously represent a lot of work on our part. In return for use, we only 
ask the following: 
v  If you use these slides (e.g., in a class) that you mention their source 
(after all, we’d like people to use our book!) 
v  If you post any slides on a www site, that you note that they are adapted 
from (or perhaps identical to) our slides, and note our copyright of this 
material. 
Thanks and enjoy! JFK/KWR 
 All material copyright 1996-2012 
 J.F Kurose and K.W. Ross, All Rights Reserved 
Tầng Application 2-2 
Chương 2: Nội dung 
2.1 Các nguyên lý của 
các ứng dụng mạng 
2.2 Web và HTTP 
2.3 FTP 
2.4 E-Mail 
§  SMTP, POP3,IMAP 
2.5 DNS 
2.6 Các ứng dụng P2P 
2.7 Lập trình socket 
với UDP và TCP 
Tầng Application 2-3 
Chương 2: tầng application 
Mục tiêu: 
v  Khái niệm và các khía 
cạnh thực hiện của 
các giao thức ở ứng 
dụng mạng 
§  Mô hình client-
server 
§  Mô hình peer-to-
peer 
v  Tìm hiểu các giao 
thức phổ biến của 
tầng application 
§  HTTP 
§  FTP 
§  SMTP / POP3 / IMAP 
§  DNS 
v  Lập trình ứng dụng 
mạng 
§  socket API 
Tầng Application 2-4 
Một số ứng dụng mạng 
v  E-mail 
v  Web 
v  Remote access 
v  Chia sẽ file P2P 
v  Trò chơi nhiều người 
trên mạng 
v  Stream ing s tored 
video (YouTube, Hulu, 
Netflix) 
v  Thoại trên nền IP (e.g., 
Skype) 
v  Hội thảo video thời 
gian thực 
v  Mạng xã hội 
v  Mạng tìm kiếm 
v   
v   
Tầng Application 2-5 
Tạo một ứng dụng mạng 
Viết chương trình để: 
v  Chạy trên các hệ thống đầu 
cuối khác nhau 
v  Truyền thông qua mạng 
v  Ví du: phần mềm web 
server giao tiếp với trình 
duyệt 
Không cần viết phần mềm cho 
các thiết bị mạng lõi 
v  Các thiết bị mạng lõi không 
chạy các ứng dụng của 
người dùng 
v  Các ứng dụng trên các hệ 
thống đầu cuối cho phép 
quảng bá và phát triển ứng 
dụng nhanh chóng 
application 
transport 
network 
data link 
physical 
application 
transport 
network 
data link 
physical 
application 
transport 
network 
data link 
physical 
Tầng Application 2-6 
Các kiến trúc ứng dụng 
Cấu trúc có thể của các ứng dụng: 
v  Client-Server 
v  peer-to-peer (P2P) (Mạng ngang hàng) 
v  Lai giữa Client-Server và P2P 
Tầng Application 2-7 
Kiến trúc Client-server 
server: 
v  Luôn luôn hoạt động 
v  Địa chỉ IP cố định 
v  Trung tâm phục vụ và lưu 
trữ dữ liệu 
clients: 
v  Giao tiếp với server 
v  Có thể kết nối không liên 
tục 
v  Có thể dùng địa chỉ IP 
động 
v  Không giao tiếp trực tiếp 
với các client khác 
client/server 
Tầng Application 2-8 
Kiến trúc P2P (ngang hàng) 
v  Không có server 
v  Các hệ thống đầu cuối bất kỳ 
truyền thông trực tiếp với 
nhau 
v  Các peer yêu cầu dịch vụ từ 
các peer khác và cung cấp 
dịch vụ ngược lại cho các 
peer khác 
§  Có khả năng tự mở rộng – 
các peer mới mang lại 
năng lực dịch vụ mới, cũng 
như các nhu cầu về dịch 
vụ mới 
v  Các peer được kết nối không 
liên tục và có thể thay đổi 
địa chỉ IP 
§  Quản lý phức tạp 
peer-peer 
Tầng Application 2-9 
Các tiến trình liên lạc 
Tiến trình (process): 
chương trình chạy 
trong một host. 
v  Trong cùng một host, 
hai tiến trình giao tiếp 
với nhau bằng cách sử 
dụng truyền thông liên 
t iế n t r ì n h ( i n t e r -
process communication) 
được định nghĩa bởi hệ 
điều hành. 
v  Các tiến trình trong các 
host khác nhau truyền 
thông với nhau bởi trao 
đổ i các thông đ iệp 
(message) 
Tiến trình client: tiến 
t r ì n h k h ở i t ạ o 
truyền thông 
Tiến trình server: tiến 
trình chờ đợi để 
được liên lạc 
v  Chú ý: các ứng dụng với 
kiến trúc P2P có cả các 
tiến trình client và 
server 
clients, servers 
Tầng Application 2-10 
Sockets 
v  Tiến trình gửi/nhận thông điệp đến/ từ socket của nó 
v  Socket tương tự như cổng ra vào 
§  Tiến trình gởi đẩy thông điệp ra khỏi cửa 
§  Tiến trình gởi dựa trên cổng của hạ tầng truyền 
thông bên kia để phân phối thông điệp đến socket 
tại tiến trình nhận 
Internet 
Được điều khiển 
bởi hệ điều hành 
Được kiểm soát 
Bởi nhà phát triển 
ứng dụng 
transport 
application 
physical 
link 
network 
process 
transport 
application 
physical 
link 
network 
process 
socket 
Tầng Application 2-11 
Tiến trình định địa chỉ 
v  Để nhận thông điệp, tiến 
trình phải có định danh 
v  Thiết bị host device có địa 
chỉ IP 32-bit duy nhất 
v  Q: dựa vào địa chỉ IP của 
host mà tiến trình đang 
chạy trên đó thì có đủ để 
xác định tiến trình đó hay 
không? 
v  Đinh danh (identifier) 
bao gồm cả địa chỉ IP và 
số cổng (port numbers) 
được liên kết với tiến 
trình trên host. 
v  Ví dụ về số port: 
§  HTTP server: 80 
§  mail server: 25 
v  Để gởi thông điệp HTTP 
đ ế n w e b s e r v e r 
gaia.cs.umass.edu : 
§  IP address: 128.119.245.12 
§  port number: 80 
v  Còn nữa 
§  A: không, có nhiều 
tiến trình có thể 
đang được chạy trên 
cùng một host 
Tầng Application 2-12 
Định nghĩa giao thức tầng 
Application 
v  Các loại thông điệp được 
trao đổi 
§  e.g., yêu cầu (request), 
đáp ứng (response) 
v  Cú pháp thông điệp: 
§  Các trường trong thông 
điệp và cách mà các 
trường được định nghĩa 
v  Ngữ nghĩa của thông điệp 
§  Ý nghĩa của thông tin 
trong các trường 
v  Các quy tắc (rules) khi nào 
và cách nào mà các tiến 
trình gởi và đáp ứng các 
thông điệp 
Các giao thức mở: 
v  Được định nghĩa trong 
RFCs 
v  Cho phép khả năng 
tương tác 
v  e.g., HTTP, SMTP 
Các giao thức độc quyền: 
v  e.g., Skype 
Tầng Application 2-13 
Dịch vụ vận chuyển nào mà ứng dụng 
cần? 
Khả năng mất mát dữ liệu 
(data loss) 
v  Một số ứng dụng (ví dụ 
t r u y ề n f i l e , w e b 
transactions) yêu cầu độ 
tin cậy 100% khi truyền 
dữ liệu. 
v  Các ứng dụng khác (ví dụ 
audio) có thể chịu được 
một số mất mát. 
Thời gian (timing) 
v  Một số ứng dụng (ví 
dụ, thoại Internet, 
game tương tác) yêu 
cầu độ trễ thấp để đạt 
được “hiệu quả” 
Thông lượng (throughput) 
v  Một số ứng dụng (như 
là, đa phương tiện) yêu 
cầu số lượng thông 
lượng tối thiếu để đạt 
được “hiệu quả” 
v  Các ứng dụng khác 
(“ứng dụng mềm dẻo”) 
có thể dùng bất kỳ 
thông lượng nào cũng 
được 
An ninh 
v  Mã hóa, toàn vẹn dữ 
liệu,  
Tầng Application 2-14 
Các yêu cầu dịch vụ vận chuyển: các ứng dụng 
phổ biến 
ứng dụng 
Truyền file 
e-mail 
Web documents 
audio/video 
thời gian thực 
audio/video đã lưu 
Game tương tác 
text messaging 
mất dữ liệu 
không 
không 
không 
chịu lỗi 
chịu lỗi 
chịu lỗi 
không 
thông lượng 
mềm dẻo 
mềm dẻo 
mềm dẻo 
audio: 5kbps-1Mbps 
video:10kbps-5Mbps 
như trên 
Trên một vài kbps 
mềm dẻo 
time sensitive 
không 
không 
không 
có, 100’s msec 
có, vài giây 
Có , 100’s msec 
Có và không 
Tầng Application 2-15 
Các dịch vụ giao thức Transport 
Internet 
Dịch vụ TCP: 
v  reliable transport giữa 
tiến trình gởi và nhận 
v  flow control: người gởi 
sẽ không áp đảo người 
nhận 
v  congestion control: điều 
tiết người gởi khi mạng 
quá tải 
v  connection-oriented: 
thiết lập được yêu cầu 
giữa tiến trình client và 
server 
Dịch vụ UDP: 
v  Truyền dữ liệu không 
tin cậy giữa tiến trình 
gởi và nhận 
v  Không hổ trợ: độ tin 
cậy, điều khiển luồng, 
điều khiển tắt nghẽn, 
bảo đảm thông lượng, 
bảo mật, và thiết lập 
kết nối. 
Q: tại sao phải quan 
tâm? Tại sao có UDP? 
Tầng Application 2-16 
Ứng dụng Internet: Các giao thức tầng 
application, transport 
application 
e-mail 
remote terminal access 
Web 
Truyền file 
streaming multimedia 
Thoại Internet 
Giao thức tầng 
application 
SMTP [RFC 2821] 
Telnet [RFC 854] 
HTTP [RFC 2616] 
FTP [RFC 959] 
HTTP (e.g., YouTube), 
RTP [RFC 1889] 
SIP, RTP, độc quyền 
(e.g., Skype) 
Giao thức dưới tầng 
transport 
TCP 
TCP 
TCP 
TCP 
TCP or UDP 
TCP or UDP 
Bảo mật TCP 
TCP & UDP 
v  Không mã hóa 
v  Mật mã chưa mã hóa 
được gởi đến socket 
để đi qua Internet 
trong dạng nguyên bản 
SSL 
v  Hổ trợ kết nối TCP 
được mã hóa 
v  Toàn vẹn dữ liệu 
v  Chứng thực điểm cuối 
SSL là giao thức ở 
tầng Application 
v  Các ứng dụng dùng 
thư viện SSL, cái 
mà “nói chuyên” với 
TCP 
SSL socket API 
v  Mật mã dạng 
cleartext được gởi 
vào trong socket đi 
qua Internet được 
mã hóa 
v  Xem chương 7 
Tầng Application 2-17 
Tầng Application 2-18 
Chương 2: Nội dung 
2.1 Các nguyên lý của 
các ứng dụng mạng 
2.2 Web và HTTP 
2.3 FTP 
2.4 thư điện tử 
§  SMTP, POP3, 
IMAP 
2.5 DNS 
2.6 các ứng dụng P2P 
2.7 lập trình socket 
với UDP và TCP 
Tầng Application 2-19 
Web và HTTP 
Ôn lại 
v  web page bao gồm các đối tượng (objects) 
v  Đối tượng có thể là file HTML, hình ảnh 
JPEG, Java applet, file audio, 
v  Web page bao gồm file HTML cơ bản cái 
mà bao gồm một số đối tượng được tham 
chiếu 
v  Mỗi đối tượng có thể được định địa chỉ bởi 
một URL, ví dụ 
 www.someschool.edu/someDept/pic.gif 
host name path name 
Tầng Application 2-20 
Tổng quan HTTP 
HTTP: hypertext 
transfer protocol 
§  Giao thức web ở tầng 
Application 
v  Mô hình client/server 
§  client: trình duyệt 
yêu cầu, nhận (dùng 
giao thức HTTP) và 
“hiện thị” các đối 
tượng Web 
§  server: Web server 
gởi (dùng giao thức 
H T T P ) c á c đ ố i 
tượng để đáp ứng 
yêu cầu 
PC chạy 
trình duyệt 
Firefox 
server 
Chạy web server 
Apache 
iphone chạy 
trình duyệt 
Safari 
Tầng Application 2-21 
Tổng quan HTTP (tt) 
Dùng TCP: 
v  Client khởi tạo kết nối 
TCP (tạo socket) đến 
server, port 80. 
v  server chấp nhận kết 
nối TCP từ client. 
v  Các thông điệp HTTP 
(thông điệp giao thức 
tầng application) được 
trao đổi giữa trình 
duyệt (HTTP client) và 
web server (HTTP 
server). 
v  Kết nối TCP được đóng. 
HTTP là“stateless” 
v  server không duy trì 
thông tin về các yêu 
cầu trước đó của 
client. 
Các giao thức nào mà duy 
trì “trạng thái” là 
phức tạp! 
v  Lịch sử trước đó (trạng 
thái) phải được duy trì 
v  Nếu server/client bị sự cố, 
cách nhìn về “trạng thái” 
của nó có thể bị mâu thuẩn, 
phải được điều chỉnh 
Vấn đề liên quan 
Tầng Application 2-22 
Các kết nối HTTP 
Nonpersistent HTTP 
v  Chỉ tối đa một đối 
tượng được gởi qua 
kết nối TCP. 
§  Kết nối sau đó sẽ 
bị đóng. 
v  HTTP/1.0. 
Persistent HTTP 
v  Nhiều đối tượng có 
thể được gởi qua 
một kết nối TCP 
g iữ a c l i e n t v à 
server. 
v  HTTP/1.1. 
Tầng Application 2-23 
HTTP không bền vững 
Giả sử người dùng vào URL như sau: 
1a. HTTP client khởi tạo kết 
nối TCP đến HTTP server 
( t i ế n t r ì n h ) t ạ i 
www.someSchool.edu trên 
port 80 
2. HTTP client gởi thông điệp 
yêu cầu HTTP (chứa URL) vào 
trong socket kết nối TCP. 
Thông điệp chỉ ra rằng client 
muốn đối tượng 
someDepartment/home.index 
1b. HTTP server tại host 
www.someSchool.edu chờ 
kết nối TCP tại port 80. 
“chấp nhận” kết nối, thông 
báo cho client 
3. HTTP server nhận thông 
điệp yêu cầu, định dạng 
thông điệp phản hồi chứa 
đối tượng được yêu cầu, và 
gởi thông điệp đến socket 
của nó Thời gian 
(chứa text, 
tham chiếu đến 10 
hình jpeg) 
www.someSchool.edu/someDepartment/home.index 
Tầng Application 2-24 
HTTP không bền vững(tt) 
5. HTTP client nhận thông 
điệp phản hồi chứa file 
html, hiển thị html. Phân 
tích cú pháp file html, tìm 
ra các đối tượng jpeg được 
tham chiếu 
6. Các bước 1-5 được lặp lại 
cho mỗi đối tượng trong 10 
đối tượng jpeg 
4. HTTP server đóng kết nối TCP. 
time 
Tầng Application 2-25 
HTTP không bền vững: thời gian đáp ứng 
RTT (định nghĩa): thời gian 
để cho một gói tin nhỏ đi 
từ client đến server và 
quay ngược lại 
Thời gian đáp ứng HTTP: 
v  Một RTT để khởi tạo 
kết nối TCP 
v  Một RTT cho yêu cầu 
HTTP và vài byte dầu 
tiên của đáp ứng HTTP 
được trả về 
v  Thời gian truyền file 
v  Thời gian đáp ứng HTTP 
không bền vững = 2RTT
+ thời gian truyền file 
thời gian 
truyền file 
Khởi tạo 
Kết nối TCP 
RTT 
yêu cầu 
file 
RTT 
file 
được nhận 
Thời gian Thời gian 
2: Application Layer 26 
Persistent HTTP 
Nonpersistent HTTP: 
v  Yêu cầu 2 RTTs cho một đối 
tượng. 
v  Một TCP connection làm việc 
với 1 đối tượng 
v  Trình duyệt thường mở song 
song nhiều TCP connections 
đến các đối tượng được quan 
tâm. 
Persistent HTTP 
v  Server giữ lại trạng thái mở của 
kết nối sau khi gởi response 
v  Nhiều HTTP messages giữa 
client/server được gởi qua kết 
nối đang mở 
Persistent without pipelining: 
v  Client chỉ gởi request khi đã 
nhận được response trước. 
v  1 RTT cho 1 đối tượng được 
quan tâm. 
Persistent with pipelining: 
v  Client gởi request liên tục đến 
các đối tượng được quan tâm 
v  Có thể 1 RTT cho tất cả các 
đối tượng được quân tâm 
Tầng Application 2-27 
Thông điệp yêu cầu HTTP 
v  hai loại thông điệp HTTP: yêu cầu (request), đáp 
ứng (response) 
v  Thông điệp yêu cầu HTTP: 
§  ASCII (dạng thức con người có thể đọc được) 
Dòng yêu cầu 
(các lệnh GET, POST, 
HEAD) 
Các dòng 
header 
ký tự xuống dòng, 
về đầu dòng mới chỉ 
điểm cuối cùng 
của thông điệp 
GET /index.html HTTP/1.1\r\n 
Host: www-net.cs.umass.edu\r\n 
User-Agent: Firefox/3.6.10\r\n 
Accept: text/html,application/xhtml+xml\r\n 
Accept-Language: en-us,en;q=0.5\r\n 
Accept-Encoding: gzip,deflate\r\n 
Accept-Charset: ISO-8859-1,utf-8;q=0.7\r\n 
Keep-Alive: 115\r\n 
Connection: keep-alive\r\n 
\r\n 
Ký tự xuống dòng 
line-feed character 
Tầng Application 2-28 
Thông điệp yêu cầu HTTP: định dạng 
tổng quát 
dòng 
Yêu cầu 
các dòng 
header 
thân 
method sp sp cr lf version URL 
cr lf value header field name 
cr lf value header field name 
~ ~ ~ ~ 
cr lf 
entity body ~ ~ ~ ~ 
Tầng Application 2-29 
Tải lên form input 
Phương pháp POST: 
v  web page thường bao 
gồm form input 
v  input được tải lên 
server trong body 
thực thể 
Phương pháp URL: 
v  Dùng phương thức 
GET 
v  input được tải trong 
trường URL của dòng 
yêu cầu: 
 www.somesite.com/animalsearch?monkeys&banana 
Tầng Application 2-30 
Các phương thức 
HTTP/1.0: 
v  GET 
v  POST 
v  HEAD 
§  Yêu cầu server để 
lại đối tượng được 
yêu cầu ra khỏi sự 
đáp ứng 
HTTP/1.1: 
v  GET, POST, HEAD 
v  PUT 
§  Tải file trong body 
thực thể đến đường 
dẫn được xác định 
trong trường URL 
v  DELETE 
§  Xóa file được chỉ 
định trong trường 
URL 
Tầng Application 2-31 
Thông điệp đáp ứng HTTP 
dòng trạng thái 
(giao thức 
mã trạng thái 
cụm từ trạng thái) 
các dòng 
header 
Dữ liệu, ví dụ, 
file HTML 
được yêu cầu 
HTTP/1.1 200 OK\r\n 
Date: Sun, 26 Sep 2010 20:09:20 GMT\r\n 
Server: Apache/2.0. ... hỉ nguồn giả tạo: địa chỉ 
IP mục tiêu 
v  Yêu cầu khuếch đại 
Application Layer 2-73 
Tầng Application 2-74 
Chương 2: Nội dung 
2.1 Các nguyên lý của 
các ứng dụng mạng 
2.2 Web và HTTP 
2.3 FTP 
2.4 thư điện tử 
§  SMTP, POP3, 
IMAP 
2.5 DNS 
2.6 các ứng dụng P2P 
2.7 lập trình socket 
với UDP và TCP 
Tầng Application 2-75 
Kiến trúc P2P thuần túy 
v  Server không hoạt động 
liên tục 
v  Các hệ thống đầu cuối 
bất kỳ giao tiếp trực tiếp 
với nhau 
v  Các peer được kết nối 
liên tục và thay đổi địa 
chỉ IP 
Ví dụ: 
§  P h â n p h ố i f i l e 
(BitTorrent) 
§  Streaming (KanKan) 
§  VoIP (Skype) 
Tầng Application 2-76 
Phân phối file: so sánh giữa 
client-server và P2P 
Câu hỏi: mất bao lâu để phân phối file (how much time to 
distribute file) (kích thước F) từ một server đến N peer? 
§  Khả năng tải lên/tải xuống của peer bị giới hạn 
us 
uN 
dN 
server 
network (với băng thông 
phong phú) 
file, size F 
us: khả năng 
upload của server 
ui: khả năng upload 
peer i 
di: khả năng download 
của peer i u2 d2 
u1 d1 
di 
ui 
Tầng Application 2-77 
Thời gian phân phối file: client-server 
v  Truyền máy chủ: phải gửi (tải 
lên) tuần tự N bản sao file: 
§  Thời gian để gởi một bản sao: 
F/us 
§  Thời gian để gởi N bản sao: 
NF/us 
Tăng tuyến tính trong N 
Thời gian để phân phối 
F đến N client 
dùng phương pháp 
client-server 
 Dc-s > max{NF/us,,F/dmin} 
v  client: mỗi client phải tải 
xuống bản sao của file 
§  dmin = tốc độ tối thiêu client 
download 
§  Thời gian thối thiểu client 
download: F/dmin 
us 
network 
di 
ui 
F 
Tầng Application 2-78 
Thời gian phân phối file: P2P 
v  Truyền server: phải upload ít 
nhất một bản sao 
§  Thời gian gởi một bản sao: F/us 
Thời gian phân phối 
F đến N client 
dùng phương pháp 
P2P 
us 
network 
di 
ui 
F 
 DP2P > max{F/us,,F/dmin,,NF/(us + Σui)} 
v  client: mỗi client phải 
download bản sao file 
§  Thời gian tối thiếu client tải 
xuống: F/dmin 
v  clients: trong khi tổng thể cần phải tải về NF 
bit 
§  Tốc độ upload tối đa (tốc độ tải về giới hạn tối 
đa) là us + Sui 
 nhưng để thực hiện điều này, mỗi khi mỗi peer mang lại năng lực dịch vụ 
Tăng tuyến tính trong N  
Tầng Application 2-79 
0
0.5
1
1.5
2
2.5
3
3.5
0 5 10 15 20 25 30 35
N
M
in
im
um
 D
is
tri
bu
tio
n 
Ti
m
e P2P
Client-Server
So sánh Client-server với P2P: ví dụ 
Tốc độ client upload = u, F/u = 1 hour, us = 10u, dmin ≥ us 
Tầng Application 2-80 
Phân phối file P2P: BitTorrent 
tracker: theo dõi các peers 
tham gia trong torrent 
torrent: nhóm các peer 
trao đổi các khối file 
Alice đến 
v  File được chia thành các khối 256Kb 
v  Các peer trong in torrent gởi/nhận các khối file 
 có được danh sách 
của các peer từ tracker 
 và bắt đầu trao đổi các 
khối fileexchanging với 
các peer trong torrent 
Tầng Application 2-81 
v  Peer tham gia torrent: 
§  Không có các khối, nhưng 
sẽ tích lũy chúng theo thời 
gian từ các peer khác 
§  Đăng ký với tracker để lấy 
danh sách các peer, kết nối 
với tập hợp của các peer 
(“các láng giềng”) 
Phân phối file P2P: BitTorrent 
v  Trong khi tải xuống, peer tải lên các khối dữ liệum mà 
mình đang có tới các peer khác 
v  Peer có thể thay đổi các peer mà nó đang trao đổi các 
khối dữ liệu 
v  churn: peers có thể đến và đi 
v  Một khi peer có toàn bộ file, nó có thể rời khỏi hoặc ở 
lại trong torrent 
Tầng Application 2-82 
BitTorrent: yêu cầu, gởi các khối file 
Yêu cầu các khối: 
v  Tại bất kỳ thời điểm, 
các peer khác nhau có 
các tập con khác nhau 
của các khối file 
v  Định kỳ, Alice yêu cầu 
mỗi peer cho danh sách 
các khối mà các peer có 
v  Alice yêu cầu các khối 
đang thiếu từ các peer, 
hiếm trước 
Gởi các khối: tit-for-tat 
v  Alice gởi các khối cho bốn 
peer mà hiện tại đang gởi các 
khối của cô ở tốc độ cao nhất 
§  Các peer khác bị thắt lại bởi Alice 
(không nhận khối từ cô ta) 
§  Đánh giá lại top 4 mỗi 10 giây 
v  Mỗi 30 giây: chọn ngẫu nhiên 
một peer khác, bắt đầu gởi các 
khối 
§  “optimistically unchokes” peer này 
§  Peer mới được chọn có thể tham 
gia và top 4 
Tầng Application 2-83 
BitTorrent: tit-for-tat 
(1) Alice “optimistically unchokes” Bob 
(2) Alice trở thành một trong bốn nhà cung cấp hàng đầu 
của Bob’s top-four providers; Bob đáp lại 
(3) Bob trở thành một trong bốn nhà cung cấp hàng đầu của Alice 
Tốc độ tải lên cao hơn: tìm 
đối tác tốc hơn, lấy file 
nhanh hơn! 
Distributed Hash Table (DHT) 
v  Bảng Hash 
v  Mô hình DHT 
v  Circular DHT and overlay networks 
v  Peer churn 
Key Value 
John Washington 132-54-3570 
Diana Louise Jones 761-55-3791 
Xiaoming Liu 385-41-0902 
Rakesh Gopal 441-89-1956 
Linda Cohen 217-66-5609 
.  
Lisa Kobayashi 177-23-0199 
Cơ sở dữ liệu đơn giản với cặp(key, value): 
•  key: tên người: số an sinh xã hội 
Cơ sở dữ liệu đơn giản 
•  key: tên phim; value: địa chỉ IP 
Original Key Key Value 
John Washington 8962458 132-54-3570 
Diana Louise Jones 7800356 761-55-3791 
Xiaoming Liu 1567109 385-41-0902 
Rakesh Gopal 2360012 441-89-1956 
Linda Cohen 5430938 217-66-5609 
.  
Lisa Kobayashi 9290124 177-23-0199 
•  thuận tiện hơn để lưu trữ và tìm kiếm 
trên đại diện số của key 
•  key = hash(original key) 
Bảng Hash 
v  Phân phối các cặp (key, value) qua hàng triệu các 
peer 
§  Các cặp được phân bố đều trên các peer 
v  Bất kỳ peer nào cũng có thể truy vấn cơ sở dữ 
liệu của một key 
§  Cơ sở dữ liệu trả về giá trị cho key đó 
§  Để giải quyết truy vấn, số lượng nhỏ các thông điệp 
được trao đổi giữa các peer 
v  Mỗi peer chỉ biết một số nhỏ các peer khác 
Distributed Hash Table (DHT) 
Chỉ định các cặp key-value cho 
các peer 
v  Quy tắc: chỉ định cặp key-value đến peer 
mà có ID gần nhất (closest). 
v  Quy ước: gần nhất(closest) is sự kế thừa 
ngay lặp tức (immediate successor ) của 
khóa (key) đó. 
v  Ví dụ: không gian ID {0,1,2,3,,63} 
v  Giả sử 8 peer: 1,12,13,25,32,40,48,60 
§  Nếu key = 51, thì được chỉ định cho peer 60 
§  Nếu key = 60, thì được chỉ định cho peer 60 
§  Nếu key = 61, thì được chỉ định cho peer 1 
1	
  
12	
  
13	
  
25	
  
32	
  
40	
  
48	
  
60	
  
DHT vòng tròn 
•  Mỗi peer chỉ nhận thức được 
người lập tức kế nhiệm và 
người tiền nhiệk 
“overlay network” 
1	
  
12	
  
13	
  
25	
  
32	
  
40	
  
48	
  
60	
  
Giá	
  trị	
  nào	
  được	
  	
  
kết	
  hợp	
  với	
  key	
  53	
  ?	
  
value	
  
O(N) các thông điệp 
trung bình để giải quyết 
truy vấn, khi có N peer 
Giải quyết một truy vấn 
DHT vòng tròn với đường tắt 
•  Mỗi peer theo dõi đại chỉ IP của người tiền nhiệm, 
người kế nhiệm, đường tắt. 
•  Giảm từ 6 còn 3 thông điệp. 
•  Có thể thiết kế các đường tắt với O(log N) láng giềng, 
O(log N) thông điệp trong truy vấn 
1	
  
12	
  
13	
  
25	
  
32	
  
40	
  
48	
  
60	
  
Giá	
  trị	
  nào	
  cho	
  
key	
  53	
  value	
  
Peer churn 
Ví dụ: peer 5 đột ngột rời khỏi 
1	
  
3	
  
4	
  
5	
  
8	
  
10	
  
12	
  
15	
  
Xử lý peer churn: 
v Các peer có thể đến và đi 
(churn) 
v Mỗi peer biết địa chỉ của hai 
kế nhiệm của nó 
v  Mỗi peer định kỳ ping hai 
kế nhiệm của nó để kiểm tra 
sự tồn tại 
v Nếu người vừa kế nhiệm bỏ 
đi, thì chọn kế nhiệm kế tiếp 
như là người kế nhiệm tức 
thời mới 
Peer churn 
Ví dụ: peer 5 đột ngột rời khỏi 
v peer 4 phát hiện sự rời khỏi của peer 5; peer 8 
trở thành người kế nhiệm ngay lập tức của nó 
v  4 yêu cầu 8 là người kế nhiệm tức thời của nó; 
người kế nhiệm tức thời của 8 trở thành người kế 
nhiệm thứ 2 của 4. 
1	
  
3	
  
4	
  
8	
  
10	
  
12	
  
15	
  
Xử lý peer churn: 
v Các peer có thể đến và đi 
(churn) 
v Mỗi peer biết địa chỉ của hai 
kế nhiệm của nó 
v  Mỗi peer định kỳ ping hai 
kế nhiệm của nó để kiểm tra 
sự tồn tại 
v Nếu người vừa kế nhiệm bỏ 
đi, thì chọn kế nhiệm kế tiếp 
như là người kế nhiệm tức 
thời mới 
Tầng Application 2-94 
Chương 2: Nội dung 
2.1 Các nguyên lý của 
các ứng dụng mạng 
2.2 Web và HTTP 
2.3 FTP 
2.4 electronic mail 
§  SMTP, POP3, 
IMAP 
2.5 DNS 
2.6 các ứng dụng P2P 
2.7 lập trình socket 
với UDP và TCP 
Tầng Application 2-95 
Lập trình Socket 
Mục tiêu: tìm hiểu cách xây dựng các ứng dụng 
client/server cái mà truyền thông dùng 
sockets 
socket: một cánh cửa giữa tiến trình ứng dụng 
và giao thức transport end-end 
Internet 
Được điều khiển bởi 
hệ điều hành 
Được điều khiển bởi 
Nhà phát triển 
ứng dụng 
transport 
application 
physical 
link 
network 
process 
transport 
application 
physical 
link 
network 
process 
socket 
Tầng Application 2-96 
Lập trình Socket 
Hai loại socket cho hai dịch vụ transport: 
§  UDP: datagram không tin cậy 
§  TCP: tin cậy, byte được định hướng dòng 
(stream-oriented) 
 Ví dụ ứng dụng: 
1.  Client đọc một dòng các ký tự (dữ liệu) từ 
bàn phím của nó và gởi dữ liêu đó đến 
server. 
2.  server nhận được dữ liệu đó và chuyển đổi 
các ký tự sang chữ hoa. 
3.  server gởi dữ liệu đã được sửa đổi cho 
client ở trên. 
4.  client này nhận được dữ liệu đã bị sửa đổi 
và hiển thị dòng đó lên màn hình của nó. 
Tầng Application 2-97 
Lập trình Socket với with UDP 
UDP: không “kết nối” giữa client và 
server 
v  Không bắt tay trước khi gởi dữ liệu 
v  Bên gửi chỉ rõ địa chỉ IP đích và số port cho 
mỗi packet 
v  Bên nhận lấy địa chỉ IP và số port của người gởi 
từ packet được nhận 
UDP: dữ liệu được truyền có thể bị mất 
hoặc được nhận không thứ tự 
Quan điểm ứng dụng: 
v UDP cung cấp truyền không tin cậy của các 
nhóm byte (“dâtgrams”) giữa client và server 
Sự tương tác socket Client/server: 
UDP 
đóng 
clientSocket 
Đọc datagram từ 
clientSocket 
Tạo socket: 
 clientSocket = 
socket(AF_INET,SOCK_DGRAM) 
Tạo datagram với địa chỉ IP server 
Và port=x; gởi datagram thông qua 
clientSocket 
Tạo socket, port= x: 
serverSocket = 
socket(AF_INET,SOCK_DGRAM) 
Đọc datagram từ 
serverSocket 
Viết trả lời đến 
serverSocket 
chỉ định địa chỉ 
client, 
port number 
Application 2-98 
server (chạy trên địa chỉ IP server) client 
Tầng Application 2-99 
Ví dụ ứng dụng: UDP client 
from socket import * 
serverName = ‘hostname’ 
serverPort = 12000 
clientSocket = socket(socket.AF_INET, 
 socket.SOCK_DGRAM) 
message = raw_input(’Input lowercase sentence:’) 
clientSocket.sendto(message,(serverName, serverPort)) 
modifiedMessage, serverAddress = 
 clientSocket.recvfrom(2048) 
print modifiedMessage 
clientSocket.close() 
Python UDPClient 
Bao gồm thư viện socket 
của Python’ 
Tạo socket UDP cho 
server 
Nhận thông điệp từ bàn phím 
người dùng 
Đính kèm tên server, port 
đến thông điệp; gởi vào 
tron socket 
In ra chuỗi được nhận và 
đóng socket 
Đọc các ký tự trả lời từ 
socket vào chuỗi 
Tầng Application 2-100 
Ví dụ ứng dung: UDP server 
from socket import * 
serverPort = 12000 
serverSocket = socket(AF_INET, SOCK_DGRAM) 
serverSocket.bind(('', serverPort)) 
print “The server is ready to receive” 
while 1: 
 message, clientAddress = serverSocket.recvfrom(2048) 
 modifiedMessage = message.upper() 
 serverSocket.sendto(modifiedMessage, clientAddress) 
Python UDPServer 
Tạo UDP socket 
Đính kèm socket đến số 
port cục bộ12000 
Lặp mãi mãi 
Đọc từ UDP socket vào 
trong thông điệp, lấy địa 
chỉ IP của client(địa chỉ IP 
client và port) 
Gởi chuỗi chữ hoa trở lại 
cho client này 
Tầng Application 2-101 
Lập trình Socket với TCP 
client phải tiếp xúc với server 
v  Tiến trình server phải được 
chạy trước 
v  server phải tạo socket (cửa) 
để mời client đến liên lạc 
client tiếp xúc server bằng: 
v  Tạo socket TCP, xác định địa 
chỉ IP, số port của tiến trình 
server 
v  Khi client tạo socket: client 
TCP thiết lập kết nối đến 
server TCP 
v  Khi đã tiếp xúc vớ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ố source port được 
dùng để phân biệt các 
client (xem tiếp 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: 
Tầng Application 2-102 
Tương tác socket Client/server: TCP 
wait for incoming 
connection request 
connectionSocket = 
serverSocket.accept() 
create socket, 
port=x, for incoming 
request: 
serverSocket = socket() 
create socket, 
connect to hostid, port=x 
clientSocket = socket() 
server (chạy trên hostid) client 
send request using 
clientSocket read request from 
connectionSocket 
write reply to 
connectionSocket 
TCP 
connection setup 
close 
connectionSocket 
read reply from 
clientSocket 
close 
clientSocket 
Tầng Application 2-103 
Ví dụ ứng dụng: TCP client 
from socket import * 
serverName = ’servername’ 
serverPort = 12000 
clientSocket = socket(AF_INET, SOCK_STREAM) 
clientSocket.connect((serverName,serverPort)) 
sentence = raw_input(‘Input lowercase sentence:’) 
clientSocket.send(sentence) 
modifiedSentence = clientSocket.recv(1024) 
print ‘From Server:’, modifiedSentence 
clientSocket.close() 
Python TCPClient 
Tạo TCP socket cho 
server, port 12000 ở xa 
Không cần đính kèm tên 
server, port 
Tầng Application 2-104 
Ví dụ ứng dụng: TCP server 
 from socket import * 
serverPort = 12000 
serverSocket = socket(AF_INET,SOCK_STREAM) 
serverSocket.bind((‘’,serverPort)) 
serverSocket.listen(1) 
print ‘The server is ready to receive’ 
while 1: 
 connectionSocket, addr = serverSocket.accept() 
 sentence = connectionSocket.recv(1024) 
 capitalizedSentence = sentence.upper() 
 connectionSocket.send(capitalizedSentence) 
 connectionSocket.close() 
Python TCPServer 
Tạo socket TCP chào đón 
server bắt đầu lắng nghe 
các yêu cầu TCP đến 
Lặp mãi mãi 
server đợi accept() cho yêu 
cầu đến, socket mới được tạo 
trở về 
Đọc các byte từ socket 
nhưng không đọc địa chỉ 
như UDP) 
Đóng kết nối đến client 
này(nhưng không đóng 
socket chào đón) 
Tầng Application 2-105 
Chương 2: tóm tắt 
v  Các kiến trúc ứng dụng 
§  client-server 
§  P2P 
v  Các yêu cầu dịch vụ ứng 
dụng: 
§  Độ tin cậy, băng thông, 
độ trễ 
v  Mô hình dịch vụ vận 
chuyển Internet 
§  Kết nối định hướng, tin 
cậy: TCP 
§  Không tin c, datagrams: 
UDP 
v  Các giao thức: 
§  HTTP 
§  FTP 
§  SMTP, POP, IMAP 
§  DNS 
§  P2P: BitTorrent, 
DHT 
v  Lập trình socket : TCP, 
UDP sockets 
Tầng Application 2-106 
v  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ụ 
§  server đáp ứng với 
dữ liệu, mã trạng 
thái 
v  Các định dạng thông 
điệp: 
§  headers: các 
trường cho biết 
thông tin về dữ liệu 
§  data: thông tin để 
truyền thông 
Các chủ đề quan trọng: 
v  Điều khiển với các thông 
điệp dữ liệu 
§  in-band, out-of-band 
v  Tập trung và không tập 
trung 
v  Không trạng thái và có 
trạng thái 
v  Truyền tin cậy và không tin 
cậy 
v  “sự phức tạp tại mạng biên” 
Chương 2: tóm tắt 
Quan trọng: tìm hiểu về các giao thức! 

File đính kèm:

  • pdfbai_giang_nhap_mon_mang_may_tinh_chuong_2_tang_application.pdf