Mạng máy tính
Bộ môn Kỹ thuật máy tính và Mạng
Khoa Công nghệ Thông tin
1-1
Chương 2: Tầng ứng dụng
2.1 Các nguyên tắc của
ứng dụng mạng
2.2 Web và HTTP
2.3 FTP
2.4 E-Mail
SMTP, POP3, IMAP
2.6 Chia sẻ file P2P
2.7 Lập trình Socket với
TCP
với
2.8
2.8 Lập
Lập trình
trình Socket
Socket với
Lập trình Socket với UDP
UDP
2.5 DNS
1-2
Chương 2: Tầng ứng dụng
Mục đích:
Các khía cạnh của
các giao thức ứng
dụng mạng
Mô hình dịch vụ tầng
giao vận
Mô hình Client-Server
Mô hình peer-to-peer
Học về các giao thức
phổ biến mức ứng
dụng
HTTP
FTP
SMTP / POP3 / IMAP
DNS
Lập trình các ứng
dụng mạng
Socket API
1-3
Một số ứng dụng mạng
E-mail
Web
Instant messaging
Remote login
Chia sẻ file P2P
Trò chơi nhiều người
sử dụng qua mạng
Điện thoại qua Internet
Hội nghị truyền hình
thời gian thực
Tính toán song song
1-4
Tạo một ứng dụng mạng
Viết chương trình
Chạy trên các end systems
khác nhau và
Giao tiếp qua mạng
Ví dụ Web: Phần mềm Web
server giao tiếp với phần
mềm trình duyệt
Không có phần mềm viết cho
các thiết bị trong Network
Core
Các thiết bị trong Network
Core không thực hiện chức
năng tại lớp ứng dụng
Thiết kế này để sự phát triển
ứng dụng nhanh
application
transport
network
data link
physical
application
transport
network
data link
physical
application
transport
network
data link
physical
1-5
Chương 2: Tầng ứng dụng
2.1 Nguyên tắc 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.6 Chia sẻ file P2P
2.7 Lập trình Socket với
TCP
2.8 Lập trình Socket với
UDP
2.9 Xây dựng Web Server
2.5 DNS
1-6
Các kiến trúc ứng dụng
Client-Server
Peer-to-peer (P2P)
Hybrid
1-7
Kiến trúc Client-server
Server:
Host ở trạng thái luôn
chạy
Địa chỉ IP cố định
Server farm để tăng khả
năng phục vụ
Client:
Truyền thông với server
Có thể không kết nối liên
tục
Có thể có địa chỉ IP động
Không giao tiếp trực tiếp
với nhau
1-8
Kiến trúc P2P
Server không ở trạng thái luôn
chạy
Hệ thống cuối tùy ý truyền
thông trực tiếp
Các Peer kết nối không liên tục
và thay đổi địa chỉ IP
Ví dụ: Gnutella
Khả năng co giãn quy mô cao
Khó quản lý
1-9
Hybrid
Lai giữa P2P và Client-Server
Napster
Truyền file P2P
Tìm kiếm file tập trung:
• Các Peer đăng ký nội dung tại server trung tâm
• Các Peer gửi yêu cầu server trung tâm xác định vị trí của nội
dung
Instant Messaging
Giao tiếp giữa 2 user là P2P
Quản lý tập trung vị trí của user:
• User đăng ký địa chỉ IP với server trung tâm khi kết nối
• User thông qua server trung tâm để tìm địa chỉ IP của đối
tượng cần giao tiếp
1-10
Truyền thông của các tiến trình
Tiến trình: chương trình
chạy trong một host.
Trong cùng host, 2 tiến
trình giao tiếp sử dụng
inter-process
communication (Do OS
định nghĩa).
Các tiến trình trong các
host khác nhau giao tiếp
bằng cách trao đổi các
message
Tiến trình client: tiến trình
khởi đầu quá trình
truyền thông
Tiến trình server: tiến trình
đợi kết nối
Chú ý: Các ứng dụng
P2P có cả tiến trình client
và tiến trình server
1-11
Socket
Tiến trình gửi nhận
messages tới/từ socket
của nó
Socket tương tự cửa ra
vào
Tiến trình gửi đẩy bản tin ra
ngoài cửa
Tiến trình gửi dựa vào hạ
tầng giao vận trên phía bên
kia của cửa, nó mang
message tới socket của tiến
trình nhận
host hoặc
server
host hoặc
server
Tiến trình
Điều khiển bởi
người lập trình
ứng dụng
socket
socket
TCP với
buffer,
Biến
Tiến trình
Internet
TCP với
Buffer,
biến
Điều khiển
bởi OS
API: (1) Chọn giao thức giao vận; (2) Gán giá trị cho một
vài tham số (chi tiết phần sau)
1-12
Các tiến trình đánh địa chỉ
Đối với một tiến trình
nhận messages, nó phải
có một định danh
Một host có một địa chỉ
IP duy nhất
Câu hỏi: Địa chỉ IP của
host mà tiến trình chạy
có đáp ứng được việc
định danh tiến trình?
Trả lời: Không, nhiều
tiến trình có thể chạy
trên cùng host
Định danh bao gồm cả
địa chỉ IP và địa chỉ
cổng gán cho ứng dụng
trên host.
Ví dụ: Giá trị cổng của
một số ứng dụng:
HTTP server: 80
Mail server: 25
Chi tiết hơn trong phần
sau
1-13
Giao thức lớp ứng dụng
Giao thức lớp ứng dụng
định nghĩa
Kiểu của bản tin trao đổi,
ví dụ bản yêu cầu, bản
tin trả lời
Cú pháp của kiểu bản tin:
Các trường trong bản tin
và mô tả các trường
trong bản tin
Ý nghĩa của các trường
Quy tắc các tiến trình
gửi/nhận bản tin khi nào
và như thế nào
Các giao thức công khai:
Định nghĩa trong các
RFC
Cho phép phối hợp
hoạt động
Ví dụ: HTTP, SMTP
Các giao thức không công
khai:
Ví dụ: KaZaA
1-14
Các dịch vụ giao vận mà ứng dụng cần
Mất dữ liệu
Một số ứng dụng (ví dụ: audio)
có thể chấp nhận một tỷ lệ mất
dữ liệu nào đó
Một số ứng dụng khác (ví dụ:
Truyền file, telnet) đòi hỏi 100%
dữ liệu truyền là tin cậy
Băng thông
Một số ứng dụng (ví dụ: đa
phương tiện) yêu cầu lượng
băng thông tối thiểu
Một số ứng dụng khác sử
dụng theo băng thông chúng
nhận được
Thời gian
Một số ứng dụng (ví dụ: điện
thoại Internet, trò chơi tương
tác) đòi hỏi độ trễ thấp
1-15
Yêu cầu của ứng dụng giao vận của một số ứng
dụng
Ứng dụng Mất dữ liệu
Băng thông
Co giãn
Co giãn
Co giãn
Audio: 5kbps-1Mbps
Video:10kbps-5Mbps
Tương tự trên
Stored audio/video Cho phép
Yêu cầu kbps
Trò chơi tương tác Cho phép
Instant messaging Không cho phép Co giãn
Truyền file
E-mail
Web
Real-time audio/video
Không cho phép
Không cho phép
Không cho phép
Cho phép
Thời gian
Không
Không
Không
Có, hàng trăm msec
Có, vài secs
Có, hàng trăm msec
Có
1-16
Các dịch vụ các giao thức giao vận
Dịch vụ TCP:
Hướng kết nối: Đòi hỏi quá
trình thiết lập giữa tiến trình
client và tiến trình server
Truyền tin cậy giữa tiến trình
gửi và tiến trình nhận
Điều khiển luồng: Bên gửi sẽ
không vượt quá khả năng bên
nhận
Điều khiển tắc nghẽn: điều
chỉnh bên gửi khi mạng quá tải
Không cung cấp: tính thời gian,
đảm bảo băng thông tối thiểu
Dịch vụ UDP:
Truyền dữ liệu không tin
cậy giữa tiến trình gửi và
tiến trình nhận
Không cung cấp: việc thiết
lập kết, truyền tin cậy, điều
khiển luồng, điều khiển tắc
nghẽn, tính thời gian, đảm
bảo băng thông
Q: Tại sao cần UDP?
1-17
Các ứng dụng Internet: các giao thức tầng ứng dụng
và tầng giao vận
Ứng dụng
Thư điện tử
Truy cập từ xa
Web
Truyền file
Truyền dòng
đa phương tiện
Điện thoại Internet
Giao thức
tầng ứng dụng
Giao thức
tầng giao vận
SMTP [RFC 2821]
Telnet [RFC 854]
HTTP [RFC 2616]
FTP [RFC 959]
Không công khai
(vd: RealNetworks)
Không công khai
(vd: Dialpad)
TCP
TCP
TCP
TCP
TCP hoặc UDP
UDP
1-18
Chương 2: Tầng ứng dụng
2.1 Nguyên tắc 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.6 Chia sẻ file P2P
2.7 Lập trình Socket với
TCP
2.8 Lập trình Socket với
UDP
2.9 Xây dựng Web Server
2.5 DNS
1-19
Web và HTTP
Trang Web chứa các đối tượng
Đối tượng có thể là file HTML, ảnh JPEG, Java
applet, audio,…
Trang Web chứa file HTML, chứa các đối tượng
tham chiếu
Mỗi đối tượng được đánh địa chỉ bởi một URL
Ví dụ URL:
www.someschool.edu/someDept/pic.gif
host name
path name
1-20
HTTP
HTTP: hypertext transfer
protocol
Giao thức tầng ứng dụng
của Web
Mô hình client/server
client: Trình duyệt yêu
cầu, nhận và hiện thị các
đối tượng
server: Web server gửi
các đối tượng trong trả
lời
HTTP 1.0: RFC 1945
HTTP 1.1: RFC 2068
HT
TP
r
equ
est
HT
TP
res
pon
se
es t
u
eq
r
se Server
P
n
T
po
HT
chạy
es
r
P
T
Apache Web
HT
server
1-21
HTTP (tiếp)
Sử dụng TCP:
Client khởi đầu kết nối TCP (tạo
socket) tới server, cổng 80
Server chấp nhận kết nối TCP từ
client
Các bản tin HTTP (bản tin của
giao thức tầng ứng dụng Web)
trao đối giứa trình duyệt (HTTP
client) và Web server (HTTP
server)
Kết nối TCP đóng
HTTP là không hướng
trạng thái
Server không duy trì
thông tin về các yêu cầu
của client trong quá khứ
Các giao thức hướng trạng thái
phức tạp hơn giao thức
không hướng trạng thái
Quá khứ phải được duy trì
Nếu server/client lỗi, các
trạng thái có thể không
thống nhất
1-22
Kết nối HTTP
Nonpersistent HTTP
Một đối tượng được gửi
qua một kết nối TCP
HTTP/1.0 sử dụng
nonpersistent HTTP
Persistent HTTP
Nhiều đối tượng có thể
gửi qua một kết nối
TCP giữa client và
server
HTTP/1.1 mặc định sử
dụng persistent HTTP
1-23
Nonpersistent HTTP
(chứa text,
Giả sử người sử dụng nhập vào URL
tham chiếu tới 10
www.someSchool.edu/someDepartment/home.index
ảnh jpeg)
1a. HTTP client khởi đầu kết nối
TCP tới HTTP server (tiến trình)
tại www.someSchool.edu, cổng
80
2. HTTP client gửi bản tin yêu cầu
HTTP (chứa URL) vào socket
của kết nối TCP. Bản tin chỉ
rằng client muốn lấy đối tượng
someDepartment/home.index
1b. HTTP server tại host
www.someSchool.edu đợi kết
nối TCP tại cổng 80.
Chấp nhận kết nối, thông báo
cho client
3. HTTP server nhận bản tin yêu
cầu, xây dựng bản tin trả lời
chứa đối tượng đã yêu cầu và
gửi bản tin vào trong socket của
nó
Thời gian
1-24
Nonpersistent HTTP (cont.)
4. HTTP server đóng kết nối TCP
5. HTTP client nhận trả lời chứa file
html, hiện thị nội dung. Phân
tích html, tìm 10 đối tượng ảnh
jpeg được tham chiếu
time 6. Lặp bước 1-5 cho mỗi đối tượng
ảnh jpeg
1-25