Bài giảng Mạng máy tính - Chương 2: Tầng Application - Nguyễn Duy
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 Stre am ing s to re d
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
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Mạng máy tính - Chương 2: Tầng Application - Nguyễn Duy", để 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 Mạng máy tính - Chương 2: Tầng Application - Nguyễn Duy
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.52 (CentOS)\r\n
Last-Modified: Tue, 30 Oct 2007 17:00:02 GMT
\r\n
ETag: "17dc6-a5c-bf716880"\r\ ... lời giả tạo
đến DNS server
Khai thác DNS cho tấn
công DDoS
v Gởi các truy vấn với địa
chỉ 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:
bai_giang_mang_may_tinh_chuong_2_tang_application_nguyen_duy.pdf

