Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 109

Chương 2

Tầng ứng dụng

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

– Chạy ở các hệ thống cuối khác network


data link
physical
nhau
– Giao tiếp qua mạng.
• Sử dụng dịch vụ tầng giao vận
– TCP, UDP
– vd., Web: Phần mềm Web
server giao tiếp với các trình
duyệt
application
Không có phần mềm được viết application
transport
transport
network
cho thiết bị trong lõi mạng network
data link
data link
physical
physical
– Thiết bị lõi mạng không hoạt
động ở tầng ứng dụng

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

100% truyền dữ liệu tin cậy

Đị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

Ứng dụng Mất DL Băng thông Định thời

Truyền tệp no loss elastic no


e-mail no loss elastic no
Web no loss elastic no
audio/video loss-tolerant audio: 5kbps-1Mbps yes, 100’s msec
thời gian thực video:10kbps-5Mbps
audio/video lưu trữ loss-tolerant same as above yes, few secs
Games tương tác loss-tolerant few kbps up yes, 100’s msec
Tin nhắn nhanh no loss elastic yes and no

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

e-mail SMTP [RFC 2821] TCP


Truy cập từ xa Telnet [RFC 854] TCP
Web HTTP [RFC 2616] TCP
Truyền tệp FTP [RFC 959] TCP
streaming multimedia proprietary TCP or UDP
(e.g. RealNetworks)
Điện thoại Internet proprietary
(e.g., Dialpad) typically UDP

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

Địa chỉ máy Đường dẫn

20
Lê Đình Thanh, MMT-Tầng ứng dụng
Tổng quan HTTP

HTTP: hypertext transfer protocol


• Giao thức tầng ứng dụng cho Web HTT
P re
• Mô hình client/server que
PC running HTT st
P
– client: trình duyệt yêu cầu, nhận và hiển thị các đối rtượng
Explorer esp
ons Web
e
– server: Web server gửi các đối tượng web trong các đáp ứng yêu cầu
• HTTP 1.0: RFC 1945 st
u e
• HTTP 1.1: RFC 2068 req Server
T P
HT nse
espo running
r
T TP Apache Web
H
server

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)

1a. HTTP client khởi động kết nối TCP


đến HTTP server tại
www.someSchool.edu trên cổng
1b. HTTP server ở
www.someSchool.edu đợi kết
80
nối TCP ở cổng 80. “chấp nhận”
kết nối, báo cho client

2. HTTP client gửi thông báo HTTP


request (chứa URL) vào socket TCP.
Thông báo biểu thị rằng client cần 3. HTTP server nhận thông báo yêu
các đối tượng tại cầu, tạo thông báo response chứa
someDepartment/home.index đối tượng được yêu cầu, và gửi ra
socket của nó

time
24
Lê Đình Thanh, MMT-Tầng ứng dụng
HTTP không liên tục (tiếp)

4. HTTP server đóng kết nối TCP.

5. HTTP client nhận response chứa tệp


html, hiển thị html. Phân tích
html, tìm thấy 10 đối tượng jpeg
được tham chiếu

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

Carriage return, (extra carriage return, line feed)


line feed
indicates end
of message
28
Lê Đình Thanh, MMT-Tầng ứng dụng
HTTP request: cấu trúc

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

Dữ liệu: tệp data data data data data ...


HTML được
yêu cầu

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

1. Telnet đến Web server:


telnet cis.poly.edu 80 Mở kết nối TCP tới cổng 80
(cổng mặc định của HTTP) tại cis.poly.edu.
Mọi thứ được nhập sẽ được gửi đến cổng
80 tại cis.poly.edu

2. Gõ GET HTTP request:

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

3. Quan sát HTTP response nhận được!

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 en


server da try i
tab n b
usual http response + creates ID as ac
e
ebay: 8734 k en
Set-cookie: 1678 1678 for user d

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

FTP file transfer


FTP FTP
user client server
interface
user
at host local file remote file
system system

• Chuyển tệp từ/đến máy ở xa


• Mô hình client/server
– client: bên khởi tạo truyền (hoặc từ/đến máy ở xa)
– server: máy ở xa
• ftp: RFC 959
• ftp server: port 21

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

Lê Đình Thanh, MMT-Tầng ứng dụng 58


Các giao thức truy cập email
SMTP SMTP access
user
user protocol
agent
agent

sender’s mail receiver’s mail


server server

• SMTP: truyền email đến server nhận


• Giao thức truy cập email: nhận email từ server
– POP: Post Office Protocol [RFC 1939]
• Xác thực (agent <-->server) và download
– IMAP: Internet Mail Access Protocol [RFC 1730]
• Nhiều tính năng hơn (phức tạp hơn)
• Quản lý các thư được lưu trên server
– HTTP: Hotmail , Yahoo! Mail, Gmail, …
59
Lê Đình Thanh, MMT-Tầng ứng dụng
POP3 protocol
S: +OK POP3 server ready
C: user bob
Pha xác thực S: +OK
C: pass hungry
• Lệnh từ client: S: +OK user successfully logged on
– user: username C: list
– pass: password S: 1 498
• Đáp ứng của server S: 2 912
S: .
– +OK C: retr 1
– -ERR S: <message 1 contents>
S: .
Pha giao dịch, client:
C: dele 1
• list: liệt kê các số hiệu thư C: retr 2
• retr: nhận thư theo số hiệu S: <message 1 contents>
• dele: delete S: .
C: dele 2
• quit C: quit
S: +OK POP3 server signing off
60
Lê Đình Thanh, MMT-Tầng ứng dụng
POP3 (tiếp) và IMAP
Tiếp về POP3 IMAP
• Ví dụ trước sử dụng chế • Giữ mọi thư trên server
độ “download and • Cho phép người dùng sắp
delete”. xếp thư theo thư mục
• Bob không thể đọc lại e- • IMAP giữ trạng thái người
mail nếu anh ta thay đổi dùng qua các phiên:
client – Tên của các thư mục và ánh
• “Download-and-keep”: xạ giữa định danh thư và
bản sao của thư được lưu tên thư mục
ở các client khác nhau
• POP3 phi trạng thái

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

Người: có nhiều định danh: Domain Name System:


– CMT, tên, passport # • Cơ sở dữ liệu phân tán được cài
Internet hosts, routers: đặt theo kiến trúc phân cấp các
name servers
– Địa chỉ IP (32 bit) – sử dụng để xác định nguồn, đích các datagrams
• Giao thức tầng ứng dụng host,
– “tên”, vd., ww.yahoo.com – được sử dụng bởi con người
routers, name servers giao tiếp để
H: ánh xạ giữa IP và tên như thế nào? phân giải tên (dịch địa chỉ/tên)
– Ghi chú: chức năng lõi
Internet, được cài đặt như giao
thức tầng ứng dụng
– Phức tạp ở biên mạng

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

com DNS servers org DNS servers edu DNS servers

pbs.org poly.edu umass.edu


yahoo.com amazon.com
DNS servers DNS serversDNS servers
DNS servers DNS servers

Client muốn biết địa chỉ IP của www.amazon.com:


• Client yêu cầu root server tìm com DNS server
• Client truy vấn com DNS server để biết amazon.com DNS
server
• Client truy vấn amazon.com DNS server để lấy địa chỉ IP
của www.amazon.com

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

local DNS server


dns.poly.edu
7 6
1 8

authoritative DNS server


dns.cs.umass.edu
requesting host
cis.poly.edu

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

Truy vấn đệ quy:


 Đặt quá tải lên name 2 3
server được hỏi
7 6
Truy vấn lặp:
 Server được hỏi trả lời TLD DNS server
với tên của server cần
liên hệ local DNS server
 “Tôi không biết, anh có dns.poly.edu 5 4
thể hỏi server này” 1 8

authoritative DNS server


dns.cs.umass.edu
requesting host
cis.poly.edu

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

Tiêu đề thông báo


 identification: số thứ tự (16
bit) của query, reply cho
query có cùng số thứ tự
 flags:
 query hay reply
 Có mong đệ quy hay
không
 Có thể thực hiện đệ quy
không
 reply có thẩm quyền hay
không

74
Lê Đình Thanh, MMT-Tầng ứng dụng
Giao thức DNS

Tên, kiểu trường


cho try vấn

RRs trong trả lời


truy vấn

Các bản ghi


servers thẩm quyền

Các thông tin mở rộng


có thể được dùng

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:

(networkutopia.com, dns1.networkutopia.com, NS)


(dns1.networkutopia.com, 212.212.212.1, A)

• Đưa vào server thẩm quyền bản ghi Type A cho


www.networkuptopia.com và Type MX cho
networkutopia.com

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

– Nội dung (thư mục và tệp)


1 3
2) Alice truy vấn để tìm “Hey
2
Jude” 1

3) Alice yêu cầu tệp từ Bob

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

Tính khả mở rộng: Qu


er
Phát tràn có giới hạn y

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

• Mỗi peer hoặc là một


trưởng nhóm hoặc một
thành viên nhóm.
– Kết nối TCP giữa thành viên
nhóm và trưởng nhóm.
– Kết nối TCP giữa các trưởng
nhóm.
• Trưởng nhóm theo dõi nội
dung của các thành viên
thuộc nhóm. o r d in a r y p e e r

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

Socket API socket


• Được giới thiệu trong BSD4.1
Một giao diện ở host, được
UNIX, 1981
tạo bởi ứng dụng và quản lý
• Được tạo, sử dụng và giải phóng bởi HĐH (một “cửa”) qua đó
rõ ràng bởi các ứng dụng tiến trình có thể gửi và nhận
• Mô hình client/server thông báo đến/từ tiến trình
• Hai dịch vụ giao vận qua socket khác
API:
– datagram không tin cậy
– Dòng byte tin cậy

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

Được điều khiển


Được điều khiển process bởi người
bởi người process
phát triển
phát triển socket socket
TCP với TCP với Được điều khiển
Được điều khiển đệm, bởi HĐH
bởi HĐH đệm, internet
biến biến

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

Ví dụ ứng dụng client-server:


1) client đọc các dòng từ bộ đệm bàn

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

to network from network

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()

TCP Tạo socket,


Đợi yêu cầu
kết nối connection setup kết nối đến hostid, port=x
connectionSocket = clientSocket =
welcomeSocket.accept() Socket()

Gửi yêu cầu kết nối sử dụng


Đọc yêu cầu từ clientSocket
connectionSocket

Ghi trả lời tới


connectionSocket Đọc trả lời từ
clientSocket
Đóng
connectionSocket Đóng
clientSocket
93
Lê Đình Thanh, MMT-Tầng ứng dụng
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;
Tạo dòng vào
từ bàn phím BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
Tạo
client socket, Socket clientSocket = new Socket("hostname", 6789);
kết nối đến server
Tạo DataOutputStream outToServer =
dòng ra new DataOutputStream(clientSocket.getOutputStream());
đính vào scoket
94
Lê Đình Thanh, MMT-Tầng ứng dụng
Ví dụ: Java client (TCP), cont.

Tạo BufferedReader inFromServer =


dòng vào new BufferedReader(new
gắn vào socket InputStreamReader(clientSocket.getInputStream()));

sentence = inFromUser.readLine();
Gửi một dòng
đến server outToServer.writeBytes(sentence + '\n');

Đọc dòng modifiedSentence = inFromServer.readLine();


từ server
System.out.println("FROM SERVER: " + modifiedSentence);

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 {

public static void main(String argv[]) throws Exception


{
String clientSentence;
Tạo String capitalizedSentence;
server socket
ServerSocket welcomeSocket = new ServerSocket(6789);
đợi ở cổng 6789
while(true) {
Đợi
liên lạc Socket connectionSocket = welcomeSocket.accept();
từ client
BufferedReader inFromClient =
Tạo new BufferedReader(new
dòng vào InputStreamReader(connectionSocket.getInputStream()));
gắn vào socket

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();

capitalizedSentence = clientSentence.toUpperCase() + '\n';


Ghi dòng
ra socket outToClient.writeBytes(capitalizedSentence);
}
}
} Kết thúc vòng lặp,
quay lại và đợi
client khác kết nối

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

Ghi trả lời ra


serverSocket
Đọc trả lời từ
xác định
clientSocket
host, port
của client Đóng
clientSocket

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

to network from network

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 sentence = inFromUser.readLine();


sendData = sentence.getBytes();
102
Lê Đình Thanh, MMT-Tầng ứng dụng
Ví dụ: Java client (UDP), cont.
Tạo datagram với
độ dài dữ liệu, IP, DatagramPacket sendPacket =
port new DatagramPacket(sendData, sendData.length, IPAddress, 9876);

Gửi datagram clientSocket.send(sendPacket);


đến server
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
Đọc datagram
từ server clientSocket.receive(receivePacket);

String modifiedSentence =
new String(receivePacket.getData());

System.out.println("FROM SERVER:" + modifiedSentence);


clientSocket.close();
}
}

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);

byte[] receiveData = new byte[1024];


byte[] sendData = new byte[1024];

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();

String capitalizedSentence = sentence.toUpperCase();

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

You might also like