Professional Documents
Culture Documents
02 - Tang Ung Dung
02 - Tang Ung Dung
Ghi chú
Slides này dựa trên sildes của J.F Kurose and K.W. Ross .
Computer Networking: A
Top Down Approach
Featuring the Internet,
3rd edition.
Jim Kurose, Keith Ross
Addison-Wesley, July 2004.
1
Lê Đình Thanh, MMT-Tầng ứng dụng
Chương 2: Tầng ứng dụng
• • mạng
2.1 Các nguyên lý của ứng dụng 2.6 Chia sẻ tệp ngang hàng
• 2.2 Web và HTTP • 2.7 Lập trình socket với TCP
• 2.3 FTP • 2.8 Lập trình socket với
• 2.4 Thư điện tử UDP
– SMTP, POP3, IMAP • 2.9 Phát triển một Web
• 2.5 DNS server
2
Lê Đình Thanh, MMT-Tầng ứng dụng
Chương 2: Tầng ứng dụng
Mục đích: • Học các giao thức bằng
• Khái niệm, các khía cạnh việc thực hành các giao
cài đặt của các giao thức thức tầng ứng dụng phổ
tầng ứng dụng biến
– Các mô hình dịch – HTTP
– FTP
vụ tầng giao vận – SMTP / POP3 / IMAP
– Mô hình khách- – DNS
phục vụ • Lập trình ứng dụng mạng
– Mô hình ngang hàng – socket API
3
Lê Đình Thanh, MMT-Tầng ứng dụng
Một số ứng dụng mạng
• Điệnđiện
Thư thoạitửInternet
• Webnghị trực tuyến
Hội
• Tin nhắn
Tính toánnhanh
song song hiệu năng cao
• Đăng nhập từ xa
• Chia sẻ tệp ngang hàng
• Trò chơi mạng với nhiều người chơi
• Truyền video theo dòng
4
Lê Đình Thanh, MMT-Tầng ứng dụng
Tạo một ứng dụng mạng
Viết chương trình application
transport
5
Lê Đình Thanh, MMT-Tầng ứng dụng
Chương 2: Tầng ứng dụng
• • mạng
2.1 Các nguyên lý của ứng dụng 2.6 Chia sẻ tệp ngang hàng
• 2.2 Web và HTTP • 2.7 Lập trình socket với TCP
• 2.3 FTP • 2.8 Lập trình socket với
• 2.4 Thư điện tử UDP
– SMTP, POP3, IMAP • 2.9 Phát triển một Web
• 2.5 DNS server
6
Lê Đình Thanh, MMT-Tầng ứng dụng
Các kiến trúc ứng dụng
• Khách-phục vụ (Client-server)
• Ngang hàng (Peer-to-peer)
• Lai (client-server và P2P)
7
Lê Đình Thanh, MMT-Tầng ứng dụng
Kiến trúc Client-server
server:
– Đầu cuối luôn chạy
– Địa chỉ IP cố định
– server farms cho tính khả
mở rộng
clients:
– Giao tiếp với server
– Lúc kết nối, lúc không
– Có thể có địa chỉ IP động
– Không giao tiếp với client
khác
8
Lê Đình Thanh, MMT-Tầng ứng dụng
Kiến trúc thuần ngang hàng
• Không có server luôn chạy
• Các hệ thống cuối bất kỳ
giao tiếp trực tiếp với nhau
• Các đầu cuối ngang hàng
(peers) kết nối theo thời
điểm và thay đổi địa chỉ IP
giữa các lần kết nối
• vd: Gnutella
Tính khả mở rộng rất cao
Nhưng khó quản trị
9
Lê Đình Thanh, MMT-Tầng ứng dụng
Lai giữa client-server và P2P
Napster
– Truyền tệp P2P
– Tìm tệp tập trung:
• Peers đăng ký nội dung tại server trung tâm
• Peers truy vấn server trung tâm để định vị nội dung
Tin nhắn nhanh
– Chat giữa hai người dùng là P2P
– Phát hiện sự có mặt (online)/xác định vị trí: tập trung:
• Người dùng đăng ký địa chỉ IP của nó với server trung tâm khi online
• Người dùng liên hệ server trung tâm để tìm địa chỉ IP của bạn chat
10
Lê Đình Thanh, MMT-Tầng ứng dụng
Truyền thông tiến trình
Tiến trình (process): chương Tiến trình khách: tiến trình
trình đang chạy ở một host. khởi tạo truyền thông
• Ở trên cùng host, hai tiến Tiến trình phục vụ: tiến trình
trình truyền thông sử dụng đợi được liên hệ
truyền thông liên tiến trình
(được xác định bởi HĐH).
• Các tiến trình ở các host
khác nhau truyền thông Ghi chú: các ứng dụng với kiến trúc
P2P có cả tiến trình khách và tiến
bằng trao đổi thông báo trình phục vụ
11
Lê Đình Thanh, MMT-Tầng ứng dụng
Sockets
host or host or
• Tiến trình gửi/nhận thông server server
báo với nhau qua socket
Được kiểm soát bởi
• socket tương tự như cửa người phát triển
process process
– Tiến trình gửi chuyển thông
báo ra ngoài cửa socket socket
– Hậ tầng truyền thông bên TCP with TCP with
buffers, Internet buffers,
ngoài cửa chuyển thông báo
variables variables
đến trước cửa của tiến trình
nhận
Được kiểm soát bởi HĐH
API: (1) lựa chọn giao thức giao vận; (2) xác định một số tham số
12
Lê Đình Thanh, MMT-Tầng ứng dụng
Địa chỉ của tiến trình
• Để một tiến trình nhận • Định danh tiến trình bao
được thông báo, nó phải gồm cả địa chỉ IP và số
có một định danh hiệu cổng tương ứng với
• Một host có một địa chỉ IP tiến trình.
duy nhất • Ví dụ số hiệu cổng:
• H: Địa chỉ IP của host mà – HTTP server: 80
tiến trình đang chạy có thể – Mail server: 25
làm định danh tiến trình?
• TL: Không, nhiều tiến trình
có thể cùng chạy trên cùng
host
13
Lê Đình Thanh, MMT-Tầng ứng dụng
Giao thức tầng ứng dụng định nghĩa
• Các
Giao thức
loạicông
thôngcộng:
báo được trao
• Được
đổi giữa
địnhcác tiến trong
nghĩa trình ứng
RFCs
dụngphép liên tác
• Cho
– Cú pháp/định dạng/cấu trúc
• vd, HTTP,
của cácSMTP
thông báo: dãy các
Giao thức đặc(thông
trường quyền:
tin)
– KaZaA
• vd, Ngữ nghĩa của các trường =
nghĩa của thông tin trong các
trường
• Các luật xử lý (khi nào và
như thế nào) gửi/nhận
thông báo
14
Lê Đình Thanh, MMT-Tầng ứng dụng
Một ứng dụng cần dịch vụ giao vận nào?
Mất dữ liệu Băng thông
Một số ứng dụng (vd., multimedia)
• Một số ứng dụng (vd., audio)
yêu cầu băng thông tối thiểu để có
có thể thứ một số gói mất “hiệu lực”
• Các ứng dụng khác (vd., Các ứng dụng khác tận dụng mọi
truyền tệp, telnet) yêu cầu băng thông chúng nhận
Định thời
• Một số ứng dụng (vd.,
điện thoại Internet, trò
chơi có tương tác) yêu
cầu trễ thấp để có “hiệu
lực”
15
Lê Đình Thanh, MMT-Tầng ứng dụng
Yêu cầu dịch vụ giao vận của một số ứng dụng phổ biến
16
Lê Đình Thanh, MMT-Tầng ứng dụng
Các dịch vụ giao vận Internet
TCP: UDP:
• Hướng kết nối: cần có thiết lập kết • Truyền không tin cậy giữa tiến
nối giữa các tiền trình truyền trình gửi và tiến trình nhận
thông với nhau • Không cung cấp: thiết lập kết
• Giao vận tin cậy giữa tiến trình nối, điều khiển luồng, kiểm
gửi và tiến trình nhận soát tắc nghẽn, định thời,
• Điều khiển luồng: tiến trình gửi hoặc đảm bảo băng thông
không gửi quá khả năng nhận của
tiến trình nhận H: Tại sao lại có UDP?
• Điều khiển tắc nghẽn: giảm tốc độ
gửi khi mạng quá tải
• Không cung cấp: định thời, đảm
bảo băng thông tối thiểu
17
Lê Đình Thanh, MMT-Tầng ứng dụng
Các ứng dụng Internet: giao thức tầng ứng dụng và giao
thức giao vận được sử dụng
Giao thức tầng Giao thức giao vận
Ứng dụng ứng dụng được sử dụng
18
Lê Đình Thanh, MMT-Tầng ứng dụng
Chương 2: Tầng ứng dụng
• • mạng
2.1 Các nguyên lý của ứng dụng 2.6 Chia sẻ tệp ngang hàng
• 2.2 Web và HTTP • 2.7 Lập trình socket với TCP
• 2.3 FTP • 2.8 Lập trình socket với
• 2.4 Thư điện tử UDP
– SMTP, POP3, IMAP • 2.9 Phát triển một Web
• 2.5 DNS server
19
Lê Đình Thanh, MMT-Tầng ứng dụng
Web và HTTP
Một số thuật ngữ ban đầu
• Trang web bao gồm các đối tượng
• Đối tượng có thể là tệp HTML, JPEG image, Java applet, audio
file,…
• Trang web bao gồm tệp HTML chứa tham chiếu các các đối
tượng
• Mỗi đối tượng có thể đánh địa chỉ bằng một URL
• Vd. URL:
www.someschool.edu/someDept/pic.gif
20
Lê Đình Thanh, MMT-Tầng ứng dụng
Tổng quan HTTP
Mac running
Navigator
21
Lê Đình Thanh, MMT-Tầng ứng dụng
Tổng quan HTTP (tiếp)
Sử dụng TCP: HTTP là “phi trạng thái”
• HTTP client/trình duyệt khởi tạo • server không duy trì
kết nối TCP (tạo socket) đến thông tin các yêu cầu
HTTP/Web server trước
• Server chấp nhận kết nối TCP của
Bên lề
client
Giao thức duy trì trạng thái phức
• Các thông báo HTTP được trao tạp!
đổi giữa trình duyệt và server Phải lưu lịch sử (trạng thái)
• Kết nối TCP được đóng Nếu server/client treo, cái nhìn
về “trạng thái” của hai tiến
trình sẽ không nhất quán
22
Lê Đình Thanh, MMT-Tầng ứng dụng
Kết nối HTTP
Liên tụcliên tục
Không
• Nhiều đốinhấttượng
một đối
có thể
tượng
được
được
gửigửi
trong
trong
mộtmột
kếtkết
nốinối
TCP.TCP.
• HTTP/1.1
HTTP/1.0 sử dụng kết nối liên
không
tụcliên
ở chế
tụcđộ
HTTP
mặc định
23
Lê Đình Thanh, MMT-Tầng ứng dụng
HTTP không liên tục
(chứa text,
Giử sử người dùng nhập URL www.someSchool.edu/someDepartment/home.index
tham chiếu đến
10 ảnh jpeg)
time
24
Lê Đình Thanh, MMT-Tầng ứng dụng
HTTP không liên tục (tiếp)
time
6. Các bước 1-5 được lặp lại cho mỗi
đối tượng ảnh
25
Lê Đình Thanh, MMT-Tầng ứng dụng
Mô hình hóa thời gian đáp ứng
Thời gian quay vòng - RTT: thời
gian để gửi một gói nhỏ từ
client đến server rồi quay
ngược lại từ server đến client. initiate TCP
connection
Thời gian đáp ứng: RTT
• Một RTT để thiết lập kết nối request
TCP file
time to
• Một RTT để gửi HTTP request RTT
transmit
và nhận một số bytes đầu tiên file
file
của HTTP response received
• Thời gian truyền tệp
time time
total = 2RTT+transmit time
26
Lê Đình Thanh, MMT-Tầng ứng dụng
HTTP liên tục
Hạn chế của HTTP không liên tục: Liên tục không đường ống:
• Yêu cầu 2 RTTs / đối tượng • client gửi yêu cầu tiếp theo khi
• HĐH phải làm việc và cấp tài đã nhận được response cho
nguyên cho mỗi kết nối TCP yêu cầu trước
• nhưng các trình duyệt thường • Một RTT/ đối tượng tham chiếu
mở nhiều kết nối TCP song song Liên tục với đường ống:
để yêu cầu các đối tượng tham • Mặc định ở HTTP/1.1
chiếu • client gửi các yêu cầu ngay khi
HTTP liên tục nó bắt gặp đối tượng tham
• server để kết nối mở sau khi gửi chiếu
response • Có thể chỉ cần một RTT cho tất
• Các thông báo HTTP tiếp sau cả các đối tượng tham chiếu
được gửi qua kết nối
27
Lê Đình Thanh, MMT-Tầng ứng dụng
HTTP request
• Hai loại thông báo HTTP: request, response
• HTTP request message:
– ASCII (định dạng người đọc được)
request line
(GET, POST, GET /somedir/page.html HTTP/1.1
HEAD commands) Host: www.someschool.edu
User-agent: Mozilla/4.0
header Connection: close
lines Accept-language:fr
29
Lê Đình Thanh, MMT-Tầng ứng dụng
Upload dữ liệu form
Phương thức Post:
• Web page thường bao gồm form nhập
• Dữ liệu được đẩy lên server trong
Phương
thânthức GET: request
của HTTP
• Dữ liệu được đẩy lên theo
URL:
www.somesite.com/animalsearch?monkeys&banana
30
Lê Đình Thanh, MMT-Tầng ứng dụng
Phương thức
HTTP/1.1
HTTP/1.0
• GET,
GET POST, HEAD
• PUT
POST
– Đẩy tệp trong thân lên thư mục được xác định bởi URL
• HEAD
• DELETE
– Yêu cầu server bỏ qua đối tượng được yêu cầu
– Xóa tệp được xác định bởi URL
31
Lê Đình Thanh, MMT-Tầng ứng dụng
HTTP response
Dòng trạng thái
(giao thức
Mã trạng thái HTTP/1.1 200 OK
Mô tả trạng thái) Connection close
Date: Thu, 06 Aug 1998 12:00:15 GMT
Các dòng tiêu đề Server: Apache/1.3.0 (Unix)
Last-Modified: Mon, 22 Jun 1998 …...
Content-Length: 6821
Content-Type: text/html
32
Lê Đình Thanh, MMT-Tầng ứng dụng
Các mã trạng thái HTTP response
Dòng đầu tiên của HTTP response.
Một số ví dụ mã trạng thái:
200 OK
– Yêu cầu thành công, đối tượng được yêu cầu chứa ở phần sau của
thông báo
301 Moved Permanently
– Đối tượng được yêu cầu đã bị chuyển, thư mục mới của đối tượng
được xác định phía sau (Location:)
400 Bad Request
– Không hiểu yêu cầu
404 Not Found
– Không tìm thấy đối tượng được yêu cầu
505 HTTP Version Not Supported
33
Lê Đình Thanh, MMT-Tầng ứng dụng
Thử HTTP phía client
GET /~ross/ HTTP/1.1 Bằng việc nhập nội dung này (hai dấu
Host: cis.poly.edu xuống dòng), bạn gửi yêu cầu
GET request tối thiểu
đến HTTP server
34
Lê Đình Thanh, MMT-Tầng ứng dụng
Trạng thái người dùng-server:
cookies
Ví dụ: trình duyệt sử dụng cookies
Nhiều
Bốn–thành
Susanphần:
luôn truy cập Internet trên cùng một PC
– Cô vàotiêu
1) Dòng mộtđềtrang thương
cookie trong mại
HTTPđiện tử lần đầu
response
– Khi các
2) Dòng HTTP
tiêu requests
đề cookie đến HTTP
trong site, site tạo một định danh duy nhất và tạo
request
mộtcookie
3) Tệp phần tử trong
được lưuCSDL
trêntrên
máyserver
ngườichodùngđịnh danh trị
và quản nàybởi trình duyệt
4) CSDL ở phía server
35
Lê Đình Thanh, MMT-Tầng ứng dụng
Cookies: lưu “trạng thái” (tiếp)
client server
Cookie file
usual http request msg
amazon: 1678 cookie: 1678 cookie- ss
ebay: 8734 specific acce
usual http response msg action
s s
one week later:
ce
ac
Cookie file usual http request msg
cookie-
amazon: 1678
cookie: 1678
spectific
ebay: 8734 usual http response msg action
36
Lê Đình Thanh, MMT-Tầng ứng dụng
Cookies (tiếp)
Bên lề
Cookies và tính riêngtư:
cookies có thể mang: cookies cho sites biết thông tin về
• Xác thực NSD
NSD có thể cung cấp e-mail cho
• Giỏ hàng sites
• Khuyến cáo Các máy tìm kiếm sử dụng chuyển
hướng và & cookies để thu thập
• Trạng thái phiên của thông tin
người dùng (Web e-mail) Các công ty quảng cáo nhận thông
tin từ các sites
37
Lê Đình Thanh, MMT-Tầng ứng dụng
Web caches (proxy server)
Mục đích: đáp ứng yêu cầu của client mà không cần server gốc làm
việc
• Trình duyệt gửi HTTP đến origin
cache server
– Nếu đối tượng được yêu Proxy
cầu ở trong cache: cache HTT st
P req server u e
ues P req
gửi đối tượng cho trình client HTTP t HT T nse
resp p o
duyệt ons T P res
e HT
– Ngược lại cache yêu cầu đối st
u e
tượng từ server gốc, rồi gửi req
T T P
o nse
đối tượng cho client H
resp
TP
HT
client
origin
server
38
Lê Đình Thanh, MMT-Tầng ứng dụng
Web caching (tiếp)
•TạiCache đóngcaching?
sao Web vai trò cả client và server
•• Thường cache
Giảm thời gian được cài đặt
đáp ứng đếnbởi
yêuISP
cầu(trường ĐH, công ty, ISP địa phương)
của client.
• Giảm lưu lượng trên các liên kết bên trong tổ chức.
• Internet với nhiều caches cho phép các nhà cung cấp nội dung chuyển tải
nội dung hiệu quả
39
Lê Đình Thanh, MMT-Tầng ứng dụng
Ví dụ Caching
origin
Giả thiết
servers
• Kích thước trung bình các đối
tượng = 100,000 bits public
Internet
• Trung bình tần suất yêu cầu từ các
trình duyệt bên trong tổ chức đến
server gốc = 15/sec
• Trễ vòng từ router của tổ chức đến 1.5 Mbps
access link
server gốc = 2 sec
institutional
Hệ quả network
• 10 Mbps LAN
Sử dụng LAN = 15%
• Sử dụng access link = 100%
• Tổng trễ = trễ Internet + trễ truy cập
+ trễ LAN institutional
= 2 sec + minutes + milliseconds cache
40
Lê Đình Thanh, MMT-Tầng ứng dụng
Ví dụ Caching (tiếp)
origin
Giải pháp có thể
servers
• Tăng băng thông của access link, ví
dụ lên 10 Mbps public
Internet
Hệ quả
• Sử dụng LAN = 15%
• Sử dụng access link = 15%
• Tổng trễ = trễ Internet + trễ truy cập + 10 Mbps
access link
trễ LAN
= 2 sec + msecs + msecs institutional
network
• Thường tốn kém để nâng cấp 10 Mbps LAN
institutional
cache
41
Lê Đình Thanh, MMT-Tầng ứng dụng
Ví dụ Caching (tiếp)
origin
Cài đặt cache servers
• Giả sử tần suất tìm thấy là .4 public
Hệ quả Internet
• 40% yêu cầu được đáp ứng ngay
lập tức
• 60% yêu cầu được đáp ứng bởi
server gốc 1.5 Mbps
• Sử dụng access link còn 60%, access link
giảm được trễ (10 msec) institutional
• Tổng trễ = trễ Internet + trễ truy network
10 Mbps LAN
cập + trễ LAN = .6*(2.01) secs +
milliseconds < 1.4 secs
institutional
cache
42
Lê Đình Thanh, MMT-Tầng ứng dụng
GET có điều kiện
cache server
• Mục đích: không gửi đối tượng
nếu cache đang có phiên bản cập HTTP request msg
nhật If-modified-since:
<date>
object
• cache: đưa thông tin thời điểm not
cập nhật cuối của bản copy trên modified
cache vào HTTP request HTTP response
HTTP/1.0
If-modified-since: 304 Not Modified
<date>
• server: response không chứa đối
tượng nếu bản copy trên cache là HTTP request msg
If-modified-since:
cập nhật: <date> object
HTTP/1.0 304 Not modified
Modified HTTP response
HTTP/1.0 200 OK
<data>
43
Lê Đình Thanh, MMT-Tầng ứng dụng
Chương 2: Tầng ứng dụng
• • mạng
2.1 Các nguyên lý của ứng dụng 2.6 Chia sẻ tệp ngang hàng
• 2.2 Web và HTTP • 2.7 Lập trình socket với TCP
• 2.3 FTP • 2.8 Lập trình socket với
• 2.4 Thư điện tử UDP
– SMTP, POP3, IMAP • 2.9 Phát triển một Web
• 2.5 DNS server
44
Lê Đình Thanh, MMT-Tầng ứng dụng
FTP: file transfer protocol
45
Lê Đình Thanh, MMT-Tầng ứng dụng
FTP: phân biệt hai kết nối điều khiển/dữ liệu
TCP control connection
• FTP client liên lạc FTP server ở port 21
cổng 21, sử dụng TCP ở tầng giao
vận
TCP data connection
• Client xác nhận xác thực trên kết FTP port 20 FTP
nối điều khiển client server
• Client gửi lệnh qua kết nối điều
Server mở kết nối TCP thứ hai để
khiển.
truyền tệp thứ hai.
• Khi nhận được lệnh chuyển tệp,
Kết nối điều khiển: “out of band”
server mở kết nối TCP trên cổng FTP server duy trì “trạng thái”:
20 đến client để truyền tệp
thư mục hiện tại, xác thực trước
• Sau khi truyền xong một tệp, đây
server đóng kết nối dữ liệu.
46
Lê Đình Thanh, MMT-Tầng ứng dụng
Lệnh FTP, đáp ứng
Ví dụ mã
lệnh:
trả về
• Được
Mã trạng
gửi thái
văn bản
và diễn
mã giải
ASCII qua kênh điều khiển
• 331
USERUsername
usernameOK, password required
• 125
PASSdata
password
connection already open; transfer
• starting
LIST trả về danh sách tệp trong thư mục hiện tại
• 425 Can’t open data connection
• RETR filename nhận tệp
• 452 Error writing file
• STOR filename lưu (đẩy) tệp lên máy ở xa
47
Lê Đình Thanh, MMT-Tầng ứng dụng
Chương 2: Tầng ứng dụng
• • mạng
2.1 Các nguyên lý của ứng dụng 2.6 Chia sẻ tệp ngang hàng
• 2.2 Web và HTTP • 2.7 Lập trình socket với TCP
• 2.3 FTP • 2.8 Lập trình socket với
• 2.4 Thư điện tử UDP
– SMTP, POP3, IMAP • 2.9 Phát triển một Web
• 2.5 DNS server
48
Lê Đình Thanh, MMT-Tầng ứng dụng
outgoing
Thư điện tử message queue
user mailbox
user
Ba thành phần chính: agent
• user agents mail
user
• mail servers server
agent
• simple mail transfer protocol: SMTP
mail
SMTP server user
SMTP agent
User Agent
• “mail reader” SMTP
• Biên soạn, gửi, nhận và đọc mail mail user
server agent
• vd., Eudora, Outlook, elm,
Netscape Messenger user
• Thư được lưu trên server agent
user
agent
49
Lê Đình Thanh, MMT-Tầng ứng dụng
Mail servers
user
Mail Servers agent
• mailbox chứa thư của người mail
user
dùng server
agent
• message queue chứa các thư SMTP
chuẩn bị gửi mail
server user
• Giao thức SMTP giữa các mail
SMTP agent
servers để chuyển thư
– client: mail server gửi SMTP
– “server”: mail server nhận mail user
server agent
user
agent
user
agent
50
Lê Đình Thanh, MMT-Tầng ứng dụng
E-Mail: SMTP [RFC 2821]
• Sử dụng TCP để truyền email tin cậy từ client đến server, cổng 25
• Truyền trực tiếp: từ server gửi đến server nhận
• ba pha truyền
– Bắt tay (chào hỏi)
– Truyền thư
– Đóng
• Tương tác command/response
– commands: ASCII text
– response: mã và miêu tả trạng thái
• Thư phải ở dạng 7-bit ASCII
51
Lê Đình Thanh, MMT-Tầng ứng dụng
Kịch bản: Alice gửi thư cho Bob
1) Alice sử dụng UA để soạn thư 4) SMTP client gửi thư của Alice’s
với “to” qua kết nối TCP
bob@someschool.edu 5) Mail server của Bob lưu thư
2) UA của Alice gửi thư đến mail trong mailbox của Bob
server của cô ta; thư được lưu 6) Bob chạy UA của anh ta và đọc
ở message queue thư
3) SMTP client của trên mail server
của Alice mở kết nối TCP với
mail server của Bob
1 mail
mail
server user
user server
2 agent
agent 3 6
4 5
52
Lê Đình Thanh, MMT-Tầng ứng dụng
Ví dụ tương tác SMTP
S: 220 hamburger.edu
C: HELO crepes.fr
S: 250 Hello crepes.fr, pleased to meet you
C: MAIL FROM: <alice@crepes.fr>
S: 250 alice@crepes.fr... Sender ok
C: RCPT TO: <bob@hamburger.edu>
S: 250 bob@hamburger.edu ... Recipient ok
C: DATA
S: 354 Enter mail, end with "." on a line by itself
C: Do you like ketchup?
C: How about pickles?
C: .
S: 250 Message accepted for delivery
C: QUIT
S: 221 hamburger.edu closing connection
53
Lê Đình Thanh, MMT-Tầng ứng dụng
Ví dụ khác
54
Lê Đình Thanh, MMT-Tầng ứng dụng
Tự thử tương tác SMTP:
• telnet servername 25
• Xem trả lời 220 từ server
• Nhập các lệnh HELO, MAIL FROM, RCPT TO, DATA, QUIT
55
Lê Đình Thanh, MMT-Tầng ứng dụng
SMTP
•So SMTP
sánh sử
vớidụng
HTTP:kết nối bền vững
• SMTP yêu cầu thư (header & body) ở dạng 7-bit ASCII
• HTTP: kéo (pull)
• SMTP server sử dụng CRLF.CRLF để xác định kết thúc thư
• SMTP: đẩy (push)
• Cả hai đều có tương tác command/response với mã ASCII, các mã trạng
thái
• HTTP: mỗi đối tượng được chứa bên trong một thông báo trả lời
• SMTP: nhiều đối tượng được gửi trong thông báo có nhiều phần
56
Lê Đình Thanh, MMT-Tầng ứng dụng
Định dạng thư
SMTP: giao thức dùng cho trao đổi email
RFC 822: chuẩn cho format thông báo bằng văn bản: header
dòng
• Các dòng tiêu đề, vd. trắng
– To:
– From:
– Subject: body
khác các lệnh SMTP!
• Thân
– “thông báo”, chỉ bao gồm các ký tự ASCII
57
Lê Đình Thanh, MMT-Tầng ứng dụng
Định dạng thư: các mở rộng multimedia
• MIME: multimedia mail extension, RFC 2045, 2056
• Các dòng được thêm vào tiêu đề thư khai báo các dạng nội dung
MIME
From: alice@crepes.fr
MIME version To: bob@hamburger.edu
Subject: Picture of yummy crepe.
Phương thức được dùng MIME-Version: 1.0
để mã hóa dữ liệu Content-Transfer-Encoding: base64
Content-Type: image/jpeg
Khai báo các dạng
dữ liệu đa phương tiện base64 encoded data .....
.........................
......base64 encoded data
Dữ liệu được mã hóa
61
Lê Đình Thanh, MMT-Tầng ứng dụng
Chương 2: Tầng ứng dụng
• • mạng
2.1 Các nguyên lý của ứng dụng 2.6 Chia sẻ tệp ngang hàng
• 2.2 Web và HTTP • 2.7 Lập trình socket với TCP
• 2.3 FTP • 2.8 Lập trình socket với
• 2.4 Thư điện tử UDP
– SMTP, POP3, IMAP • 2.9 Phát triển một Web
• 2.5 DNS server
62
Lê Đình Thanh, MMT-Tầng ứng dụng
DNS: Hệ thống tên miền
63
Lê Đình Thanh, MMT-Tầng ứng dụng
DNS
Các dịch vụ DNS Tại sao không tập trung DNS?
• Dịch từ Hostname sang IP • Một điểm lỗi
• Đặt bí danh cho Host • Lưu lượng
– Tên gốc và các bí danh • CSDL tập trung ở xa
• Đặt bí danh cho Mail • Bảo trì
server
• Phân tải Không khả mở rộng!
– Các Web servers nhân bản:
tập địa chỉ IP cho một tên
gốc
64
Lê Đình Thanh, MMT-Tầng ứng dụng
CSDL phân cấp, phân tán
Root DNS Servers
65
Lê Đình Thanh, MMT-Tầng ứng dụng
DNS: Root name servers
• Được liên lạc bởi name server địa phương nếu name server không biết địa
chỉ IP tương ứng tên
• root name server:
– Liên lạc name server có thẩm quyền nếu không biết ánh xạ tên
– Lấy ánh xạ tên
– Trả ánh xạ tên cho name server địa phương
a Verisign, Dulles, VA
c Cogent, Herndon, VA (also Los Angeles)
d U Maryland College Park, MD k RIPE London (also Amsterdam,
g US DoD Vienna, VA
h ARL Aberdeen, MD i Frankfurt)
Autonomica, Stockholm (plus 3
j Verisign, ( 11 locations) other locations)
m WIDE Tokyo
e NASA Mt View, CA
f Internet Software C. Palo Alto,
CA (and 17 other locations)
13 root name servers
worldwide
b USC-ISI Marina del Rey, CA
l ICANN Los Angeles, CA
66
Lê Đình Thanh, MMT-Tầng ứng dụng
TLD Server và Servers thẩm quyền
• Top-level domain (TLD) servers: chịu trách
nhiệm cho com, org, net, edu, …, và tất cả các
tên miền cấp một các quốc gia như uk, fr, ca,
jp.
– Network solutions duy trì các servers cho com
TLD
– Educause duy trì các servers cho edu TLD
• DNS servers thẩm quyền: là DNS servers của
các tổ chức, cung cấp ánh xạ tên miền sang
địa chỉ IP cho các servers của tổ chức (vd.,
Web mail). 67
Lê Đình Thanh, MMT-Tầng ứng dụng
Local Name Server
• Không nhất thiết phải thuộc hệ thống phân
cấp
• Mỗi ISP (ISP địa phương, công ty, trường học)
có một LNS.
– Còn được gọi là “default name server”
• Khi một host tạo một truy vấn DNS, truy vấn
được gửi đến DNS địa phương
– Hoạt động như một proxy, chuyển truy vấn đến hệ
thống phân cấp.
68
Lê Đình Thanh, MMT-Tầng ứng dụng
root DNS server
Ví dụ
2
• Host ở cis.poly.edu cần 3
TLD DNS server
địa chỉ IP của 4
gaia.cs.umass.edu
5
gaia.cs.umass.edu
69
Lê Đình Thanh, MMT-Tầng ứng dụng
Ví dụ
70
Lê Đình Thanh, MMT-Tầng ứng dụng
Truy vấn đệ quy
root DNS server
gaia.cs.umass.edu
71
Lê Đình Thanh, MMT-Tầng ứng dụng
DNS: lưu đệm và cập nhật bản ghi
• Một khi name server học được ánh xạ, nó lưu đệm ánh
xạ
– Các phần tử trong cache được đặt timeout
– TLD servers thường được lưu đệm tại các
local name servers
• Do vậy root name servers không thường xuyên
được thăm
• Cơ chế cập nhật/thông báo được thiết kế bởi IETF
– RFC 2136
– http://www.ietf.org/html.charters/dnsind-charter.html
72
Lê Đình Thanh, MMT-Tầng ứng dụng
Các bản ghi DNS
DNS: CSDL phân tán lưu trữ các bản ghi tài nguyên (RR)
RR format: (name, value, type, ttl)
Type=A Type=CNAME
name là hostname name là bí danh cho tên thực
value là IP address www.ibm.com thực tế là
servereast.backup2.ibm.com
• Type=NS value là tên thực
– name là domain (vd.
foo.com)
– value là IP address của Type=MX
name server thẩm quyền cho value là tên mailserver tương
domain ứng với name
73
Lê Đình Thanh, MMT-Tầng ứng dụng
Giao thức DNS
DNS protocol : query và reply có cùng format
74
Lê Đình Thanh, MMT-Tầng ứng dụng
Giao thức DNS
75
Lê Đình Thanh, MMT-Tầng ứng dụng
Chèn bản ghi vào DNS
• Ví dụ: Khởi động “Network Utopia”
• Đăng ký tên networkuptopia.com tại registrar (vd., Network
Solutions)
– Cần cung cấp cho registrar tên và địa chỉ IP addresses của name
server thẩm quyền (chính và thứ cấp)
– Registrar chèn hai RRs vào com TLD server:
76
Lê Đình Thanh, MMT-Tầng ứng dụng
Chương 2: Tầng ứng dụng
• • mạng
2.1 Các nguyên lý của ứng dụng 2.6 Chia sẻ tệp ngang hàng
• 2.2 Web và HTTP • 2.7 Lập trình socket với TCP
• 2.3 FTP • 2.8 Lập trình socket với
• 2.4 Thư điện tử UDP
– SMTP, POP3, IMAP • 2.9 Phát triển một Web
• 2.5 DNS server
77
Lê Đình Thanh, MMT-Tầng ứng dụng
Chia sẻ tệp ngang hàng
• Alice chọn một trong các
Ví dụ peers, Bob.
• Alice chạy ứng dụng P2P client•trên
Tệpnotebook
được copycủa
từcô
máy của
Bob đến notebook của
• Kết nối Internet không liên tục; nhận địa chỉ IP mới với mỗi
Alice: HTTP
kết nối
• Trong khi Alice
• Yêu cầu “Hey Jude”
downloads, người dùng
• Ứng dụng hiển thị các peers có bản saoupload
khác của Hey Jude.của
từ máy
Alice.
• Máy của Alice vừa là HTTP
client vừa là HTTP server.
Mọi peers là servers = khả
mở rộng cao!
78
Lê Đình Thanh, MMT-Tầng ứng dụng
P2P: thư mục tập trung
Bob
Thiết kế “Napster” ban đầu centralized
directory server
1) Khi peer kết nối, nó thông 1
báo server trung tâm: peers
– Địa chỉ IP 1
Alice
79
Lê Đình Thanh, MMT-Tầng ứng dụng
P2P: vấn đề với thư mục tập trung
• Một điểm lỗi làm tê liệt hệ thống truyền tệp được thực
• Tắc nghẽn nút cổ chai hiện phân tán, nhưng
• Vi phạm bản quyền định vị nội dung tập
trung
80
Lê Đình Thanh, MMT-Tầng ứng dụng
Phát tràn truy vấn: Gnutella
• Hoàn
Mạng chồng:
toàn đồ
phânthịtán
– Không
• Cạnh giữacóXserver trungcó
và Y nếu tâm
kết nối TCP giữa hai peers
•• Giao
Tất cảthức
peersđược
đangcông
hoạtbốđộng
côngvàcộng
các cạnh tạo thành mạng
• overlay
Nhiều Gnutella
net clients cài đặt giao thức
• Cạnh không phải là một liên kết vật lý
• Một peer thường kết nối với < 10 láng giềng
81
Lê Đình Thanh, MMT-Tầng ứng dụng
Gnutella: giao thức
Truy vấn được gửi File transfer:
HTTP
qua các kết nối
TCP hiện tại
peers chuyển tiếp
truy vấn Query
QueryHit QueryHit
được gửi ngược
trên đường ery Qu
ery
đi Qu Hit
ery
Qu
Query
QueryHit
82
Lê Đình Thanh, MMT-Tầng ứng dụng
Gnutella: Peer tham gia mạng
1. Peer X muốn tham gia mạng phải tìm được peer khác trong
mạng Gnutella: sử dụng danh sách các peer ứng viên
2. X lần lượt thử kết nối TCP với các peers trong danh sách cho
đến khi tìm được peer Y kết nối được
3. X gửi thông báo Ping đến Y; Y chuyển tiếp Ping.
4. Tất cả các peers nhận được Ping trả lời bằng thông báo Pong
5. X nhận được nhiều thông báo trả lời Pong. Sau đó, nó có thể
tìm kết nối TCP khác
Peer rời mạng: bài tập
83
Lê Đình Thanh, MMT-Tầng ứng dụng
Khai thác sự hỗn tạp: KaZaA
g r o u p - le a d e r p e e r
n e ig h o r in g r e la tio n s h ip s
in o v e r la y n e tw o r k
84
Lê Đình Thanh, MMT-Tầng ứng dụng
KaZaA: Truy vấn
• Mỗi tệp có một giá trị băm và một miêu tả
• Client gửi từ khóa truy vấn đến trưởng nhóm
của nó
• Trưởng nhóm trả lời bằng các bộ:
– Mỗi bộ: metadata, hash, IP address
• Nếu trưởng nhóm chuyến tiếp truy vấn đến
các trưởng nhóm khác, các trưởng nhóm khác
trả lời bằng các bộ
• Client chọn tệp download
– HTTP requests sử dụng hash làm định danh được
gửi đến peer có tệp cần download
Lê Đình Thanh, MMT-Tầng ứng dụng
85
Thủ thuật cho KazaA
• Hạn chế trong các upload đồng thời
• Xếp hàng request
• Sử dụng ưu tiên
• Download song song
86
Lê Đình Thanh, MMT-Tầng ứng dụng
Chương 2: Tầng ứng dụng
• • mạng
2.1 Các nguyên lý của ứng dụng 2.6 Chia sẻ tệp ngang hàng
• 2.2 Web và HTTP • 2.7 Lập trình socket với TCP
• 2.3 FTP • 2.8 Lập trình socket với
• 2.4 Thư điện tử UDP
– SMTP, POP3, IMAP • 2.9 Phát triển một Web
• 2.5 DNS server
87
Lê Đình Thanh, MMT-Tầng ứng dụng
Lập trình Socket
Mục đích: học cách phát triển ứng dụng client/server sử dụng sockets
88
Lê Đình Thanh, MMT-Tầng ứng dụng
LT Socket sử dụng TCP
Socket: Một cửa giữa tiến trình ứng dụng và giao thức giao
thức giao vận (UCP hoặc TCP)
Dịch vụ TCP : truyền tin cậy dãy các bytes từ một tiến trình
đến tiến trình khác
Host/ Host/
server server
89
Lê Đình Thanh, MMT-Tầng ứng dụng
LT Socket với TCP
Client phải liên lạc server • Khi được kết nối bởi client,
• Tiến trình server phải chạy server TCP tạo socket mới để
trước server giao tiếp với client
• Server phải tạo một socket – Cho phép server có thể nói
(cửa) chào đón client kết nối chuyện với nhiều clients
tới – source port được sử dụng để
Client kết nối server bằng: phân biệt (chi tiết ở Chương
• Tạo TCP socket trên client 3)
• Xác định socket của server
• Khi client tạo socket: client TCP góc nhìn ứng dụng
thiết lập kết nối đến server TCP
TCP cung cấp dịch vụ truyền
dãy bytes đến đích
đúng thứ tự và tin cậy
90
Lê Đình Thanh, MMT-Tầng ứng dụng
Thuật ngữ Stream
• Một dòng là một dãy ký tự chạy ra/vào một tiến trình.
• Một dòng vào được đính vào một nguồn vào của tiến trình như bàn phím,
tệp hoặc socket.
• Một dòng ra được gắn vào một đích ra như màn hình, tệp, socket.
91
Lê Đình Thanh, MMT-Tầng ứng dụng
LT Socket với TCP
keyboard monitor
inFromUser
phím (inFromUser stream) , gửi input
stream
cho server qua socket Tiến trình
(outToServer stream) Process
client
2) server đọc các dòng từ socket
3) server chuyển các dòng sang chữ
hoa, gửi cho client
4) client đọc và in nội dung được
inFromServer
outToServer
output input
server sửa đổi và trả về stream stream
(inFromServer stream)
client
clientSocket
TCP
socket TCP
socket
92
Lê Đình Thanh, MMT-Tầng ứng dụng
Tương tác client/server qua socket
Server (chạy trên hostid) Client
Tạo socket,
port=x, lắng nghe
yêu cầu:
welcomeSocket =
ServerSocket()
sentence = inFromUser.readLine();
Gửi một dòng
đến server outToServer.writeBytes(sentence + '\n');
clientSocket.close();
}
}
95
Lê Đình Thanh, MMT-Tầng ứng dụng
Ví dụ: Java server (TCP)
import java.io.*;
import java.net.*;
class TCPServer {
96
Lê Đình Thanh, MMT-Tầng ứng dụng
Ví dụ: Java server (TCP), cont
Tạo
dòng ra, gắn vào
DataOutputStream outToClient =
socket
new DataOutputStream(connectionSocket.getOutputStream());
Đọc dòng
từ socket clientSentence = inFromClient.readLine();
97
Lê Đình Thanh, MMT-Tầng ứng dụng
Chương 2: Tầng ứng dụng
• • mạng
2.1 Các nguyên lý của ứng dụng 2.6 Chia sẻ tệp ngang hàng
• 2.2 Web và HTTP • 2.7 Lập trình socket với TCP
• 2.3 FTP • 2.8 Lập trình socket với
• 2.4 Thư điện tử UDP
– SMTP, POP3, IMAP • 2.9 Phát triển một Web
• 2.5 DNS server
98
Lê Đình Thanh, MMT-Tầng ứng dụng
LT Socket với UDP
UDP: không có “kết nối” giữa client và server
• Không bắt tay
• Bên gửi chủ động ghi địa chỉ IP và port của đích vào mỗi gói tin
• Bên nhận phải đọc địa chỉ IP, port của bên
Gócgửi từứng
nhìn gói nhận
dụng được
UDP: dữ liệu được truyền có thể nhận được không
UDP cungđúng
cấp thứ
dịchtự, có thể mất
vụtruyền
không tin cậy các nhóm bytes
từ nút gửi đến nút nhận
99
Lê Đình Thanh, MMT-Tầng ứng dụng
Tương tác client/server: UDP
Server (chạy trên hostid) Client
Tạo socket,
Tạo socket,
port=x, lắng nghe clientSocket =
yêu cầu: DatagramSocket()
serverSocket =
DatagramSocket()
Tạo và gửi (hostid, port=x)
datagram request sử dụng
Nhận được yêu clientSocket
cầu kết nối
serverSocket
100
Lê Đình Thanh, MMT-Tầng ứng dụng
Ví dụ: Java client (UDP)
keyboard monitor
inFromUser
input
stream
Tiến trình
Process
client Input: nhận gói (TCP
nhận “dòng byte”)
Output: gửi gói (TCP
gửi “dòng byte”)
receivePacket
sendPacket
UDP UDP
packet packet
client
clientSocket UDP
socket UDP
socket
101
Lê Đình Thanh, MMT-Tầng ứng dụng
Ví dụ: Java client (UDP)
import java.io.*;
import java.net.*;
class UDPClient {
public static void main(String args[]) throws Exception
{
Tạo
dòng vào BufferedReader inFromUser =
Tạo new BufferedReader(new InputStreamReader(System.in));
client socket
DatagramSocket clientSocket = new DatagramSocket();
Dịch
hostname sang IP InetAddress IPAddress = InetAddress.getByName("hostname");
sử dụng DNS
byte[] sendData = new byte[1024];
byte[] receiveData = new byte[1024];
String modifiedSentence =
new String(receivePacket.getData());
103
Lê Đình Thanh, MMT-Tầng ứng dụng
Ví dụ: Java server (UDP)
import java.io.*;
import java.net.*;
class UDPServer {
public static void main(String args[]) throws Exception
Tạo {
datagram socket
ở cổng 9876 DatagramSocket serverSocket = new DatagramSocket(9876);
while(true)
{
Tạo không gian cho
gói nhận được DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
Nhận serverSocket.receive(receivePacket);
datagram
104
Lê Đình Thanh, MMT-Tầng ứng dụng
Ví dụ: Java server (UDP), cont
String sentence = new String(receivePacket.getData());
Nhận đc IP
port # của InetAddress IPAddress = receivePacket.getAddress();
bên gửi
int port = receivePacket.getPort();
sendData = capitalizedSentence.getBytes();
Tạo datagram
để gửi cho client DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, IPAddress,
port);
Ghi
Datagram serverSocket.send(sendPacket);
từ socket }
}
} Kết thúc vòng lặp,
quay lại và đợi
datagram khác
105
Lê Đình Thanh, MMT-Tầng ứng dụng
Chương 2: Tầng ứng dụng
• • mạng
2.1 Các nguyên lý của ứng dụng 2.6 Chia sẻ tệp ngang hàng
• 2.2 Web và HTTP • 2.7 Lập trình socket với TCP
• 2.3 FTP • 2.8 Lập trình socket với
• 2.4 Thư điện tử UDP
– SMTP, POP3, IMAP • 2.9 Phát triển một Web
• 2.5 DNS server
106
Lê Đình Thanh, MMT-Tầng ứng dụng
Xây dựng Web server đơn giản
• Xử lý các HTTP request • Sau khi tạo server, bạn có
• Chấp nhận request thể yêu cầu tệp từ trình
• Phân tích header duyệt (vd. IE, FF)
• Nhận tệp được yêu cầu từ
hệ thống tệp
• Tạo HTTP response:
– Header + file
• Gửi response cho client
107
Lê Đình Thanh, MMT-Tầng ứng dụng
Chương 2: Tóm tắt
Chúng ta đã nghiên cứu về các ứng dụng
mạng
• Các kiến trúc ứng dụng
Các giao thức:
HTTP
– client-server FTP
– P2P SMTP, POP, IMAP
– hybrid DNS
Lập trình socket
• Các yêu cầu dịch vụ:
– tin cậy, băng thông, trễ
• Mô hình dịch vụ giao vận
Internet
– Hướng kết nối, tin cậy: TCP
– Không tin cậy, datagrams: UDP
108
Lê Đình Thanh, MMT-Tầng ứng dụng
Chương 2: Tóm tắt
Quan trọng nhất: các giao thức
• Trao đổi request/reply:
Thông báo điều khiển <> thông
– client yêu cầu thông tin
báo dữ liệu
hoặc dịch vụ in-band, out-of-band
– server trả lời với dữ liệu, Tập trung <> phi tập trung
mã trạng thái Phi trạng thái <> có trạng thái
• Định dạng thông báo: Tin cậy <> không tin cậy
– Tiêu đề: các trường cung “sự phức tạp của biên mạng”
cấp thông tin về dữ liệu
– data: thông tin cần truyền
tải
109
Lê Đình Thanh, MMT-Tầng ứng dụng