Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 98 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
98
Dung lượng
921,27 KB
Nội dung
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
Mô hình thời gian trả lời
RTT: thời gian để gửi một
gói tin từ client tới server
và trở lại
Thời gian trả lời:
1 RTT để khởi tạo kết nối
TCP
1 RTT cho yêu cầu HTTP
và nhận byte đầu tiên của
trả lời HTTP
Thời gian truyền file
total = 2RTT+transmit time
Khởi đầu
kết nối TCP
RTT
file
yêu cầu
transmit time
RTT
file
đã nhận
thời gian
thời gian
1-26
Persistent HTTP
Nonpersistent HTTP:
Yêu cầu 2 RTT cho 1 đối
tượng
Hệ điều hành phải cấp phát
tài nguyên cho mỗi kết nối
TCP
Trình duyệt phải mở song
song nhiều kết nối TCP để lấy
đối tượng tham chiếu
Persistent HTTP
Server tạm dừng kết nối sau
khi gửi trả lời
Các bản tin HTTP sau đó
giữa cùng client/server được
gửi qua kết nối
1-27
Bản tin yêu cầu HTTP
Hai kiểu bản tin HTTP: yêu cầu, trả lời
Bản tin yêu cầu HTTP:
ASCII
Request line
(lệnh GET, POST,
HEAD )
GET /somedir/page.html HTTP/1.1
Host: www.someschool.edu
User-agent: Mozilla/4.0
header Connection: close
line Accept-language:fr
(CR, LF)
1-28
Bản tin yêu cầu HTTP
1-29
Kiểu Method
HTTP/1.0
GET
POST
HEAD
HTTP/1.1
GET, POST, HEAD
PUT
Hỏi server bỏ đối tượng
đã yêu cầu ra khỏi trả lời
đưa file trong phần body
lên đường dẫn chỉ trong
URL
DELETE
xóa file trong trường URL
1-30
Bản tin trả lời HTTP
status line
(protocol
status code
status phrase)
header
line
dữ liệu, ví dụ:
file HTML đã
yêu cầu
HTTP/1.1 200 OK
Connection close
Date: Thu, 06 Aug 1998 12:00:15 GMT
Server: Apache/1.3.0 (Unix)
Last-Modified: Mon, 22 Jun 1998 …...
Content-Length: 6821
Content-Type: text/html
dữ liệu
1-31
Mã trạng thái của trả lời HTTP
Trong dòng đầu tiên của trả lời server->client
Ví dụ:
200 OK
Yêu cầu thực hiện thành công, đối tượng trong bản tin
301 Moved Permanently
Đối tượng yêu cầu đã di chuyển vị trí, ví trí mới được chỉ ra
trong bản tin (Location:)
400 Bad Request
Server không hiểu bản tin yêu cầu
404 Not Found
Không tìm thấy đối tượng yêu cầu
505 HTTP Version Not Supported
1-32
Thực hành
1. Telnet tới một Web server:
telnet cis.poly.edu 80
Mở kết nối TCP tới cổng 80 tại cis.poly.edu.
Nội dung gõ được gửi tới cổng 80 tại
cis.poly.edu
2. Gõ lệnh GET
GET /~ross/ HTTP/1.1
Host: cis.poly.edu
3. Xem bản tin trả lời gửi bởi HTTP server
1-33
Web cache (proxy server)
Mục đích: thực hiện yêu cầu của client không phải yêu cầu
tới server ban đầu
Người dùng thiết lập
qua trình duyệt
Trình duyệt gửi mọi
yêu cầu HTTP qua
Cache
server
ban đầu
Đối tượng trong cache:
sẽ được trả về
Nếu không: Yêu cầu
được chuyển tới
server ban đầu
Proxy
HT
TP
es t
u
server
q
req
re
H
u
P
e
T
se
T
st
client TP
n
T
o
H
p
res
res
pon
P
se
TT
H
es t
u
eq
r
se
P
n
T
o
p
HT
es
r
TP
T
H
client
server
ban đầu
1-34
Web cache
Cache hoạt động như
cả client và server
Thông thường, được
cài đặt bởi ISP
Lợi ích của Web cache
Giảm thời gian trả lời
Giảm lưu lượng trên đường
truyền truy cập
1-35
Web cache
Cache hoạt động như
cả client và server
Thông thường cache
được cài đặt bởi ISP
(trường đại học, công
ty, nhà cung cấp dịch
vụ cho gia đình)
Tại sao dùng Web cache?
Giảm thời gian trả lời cho
yêu cầu của client.
Giảm lưu lượng trên đường
truy cập của tổ chức.
1-36
Ví dụ caching
Các server
ban đầu
Giả sử
Kích thước của đối tượng trung
bình = 100,000 bits
Tốc độ yêu cầu trung bình từ trình
duyệt của tới server ban đầu = 15
giây
Trễ từ router của tổ chức tới server
ban đầu và trở lại = 2 giây
Kết quả
Sự sử dụng trong LAN = 15%
Sự sử dụng trong đường truyền
truy cập = 100%
Total delay = Internet delay +
access delay + LAN delay
= 2 giây + phút + millisecond
public
Internet
Đường truyền truy cập
1.5 Mbps
Mạng của
tổ chức
10 Mbps LAN
Institutional
Cache
1-37
Ví dụ caching (tiếp)
Server
ban đầu
Giải pháp có thể
Tăng băng thông của đường truyền
truy cập: 10 Mbps
public
Internet
Kết quả
Sự sử dụng LAN = 15%
Sử dụng đường truyền truy cập =
15%
Total delay = Internet delay +
access delay + LAN delay
= 2 sec + msecs + msecs
Đường truyền
truy cập10 Mbps
Mạng của
tổ chức
10 Mbps LAN
institutional
cache
1-38
Ví dụ caching (tiếp)
Server
ban đầu
Cài đặt cache
Hỗ trợ hit rate .4
public
Internet
Kết quả
40% yêu cầu sẽ đáp ứng gần
như ngay lập tức
60% yêu cầu đáp ứng bởi
server ban đầu
Sự sử dụng đường truyền
truy cập giảm tới 60%, kết
quả độ trễ không đáng kể (10
msec)
total avg delay = Internet
delay + access delay + LAN
delay = .6*(2.01) secs +
milliseconds < 1.4 secs
Đường truyền
truy cập 1.5 Mbps
Mạng của
tổ chức
10 Mbps LAN
institutional
cache
1-39
GET có điều kiện
Mục đích: không gửi đối
tượng nếu cache có phiên
bản cập nhật
Cache: chỉ định ngày của
bản sao chép trong cache
trong yêu cầu HTTP
If-modified-since:
Server: Trả lời không chứa
đối tượng nếu bản sao
chép trong cache cập nhật:
HTTP/1.0 304 Not Modified
Server
Cache
Bản tin yêu cầu HTTP
If-modified-since:
Bản tin trả lời HTTP
Đối tượng
không bị
thay đổi
HTTP/1.0
304 Not Modified
Bản tin yêu cầu HTTP
If-modified-since:
Đối tượng
đã thay đổi
Bản tin trả lời HTTP
HTTP/1.0 200 OK
1-40
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-41
FTP: File Transfer Protocol
Giao diện FTP
người sử client
dụng FTP
user
tại host
Hệ thống
file cục bộ
Truyền file
FTP
server
Hệ thống file
từ ở xa
Truyền file tới/từ host ở xa
Mô hình client/server
client: Phía khởi đầu việc truyền (tới hoặc từ host ở xa)
server: host ở xa
ftp: RFC 959
ftp server: port 21
1-42
FTP: Kết nối dữ liệu và điều khiển riêng biệt
Kết nối điều khiển TCP
cổng 21
FTP client liên lạc với FTP
server tại cổng 21, chỉ định
dùng TCP làm giao thức giao
vận
Client giành ủy quyền qua kết
nối điều khiển
Client xem thư mục từ xa bằng
cách gửi lệnh qua kết nối điều
khiển
Khi server nhận một lệnh
truyền file, server mở một kết
nối dữ liệu TCP tới client
Sau khi truyền file, server đóng
kết nối.
FTP
client
Kết nối dữ liệu TCP
cổng 20
FTP
server
Server mở một kết nối dữ liệu
TCP thứ hai để truyền một file
khác.
Kết nối điều khiển: truyền theo
đường riêng
FTP server duy trì trạng thái:
thư mục hiện tại, ủy quyền
trước đó
1-43
Lệnh và trả lời của FTP
Ví dụ một số lệnh:
Gửi văn bản mã ASCII
qua kênh điều khiển
USER username
PASS password
LIST trả về một danh
sách các file trong thưc
mục hiện tại
RETR filename lấy
file
STOR filename đưa
file lên remote host
Ví dụ một số mã trả về
Status code và status
phrase (như HTTP)
331 Username OK,
đòi hỏi mật khẩu
125 kết nối dữ
liệu đã mở; bắt
đầu truyền
425 Không thể mở
kết nối dữ liệu
452 Lỗi ghi file
1-44
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-45
Electronic Mail
Hàng đợi
bản tin gửi đi
User mailbox
user
agent
Ba thành phần chính:
User agent
Mail server
mail
server
user
agent
SMTP
Simple mail transfer protocol:
SMTP
User Agent
Còn gọi là Mail Reader
Soạn, sửa, đọc bản tin mail
Ví dụ: Eudora, Outlook,
Netscape Messenger
Các bản tin gửi tới và gửi đi
đã chứa trên server
SMTP
SMTP
mail
server
mail
server
user
agent
user
agent
user
agent
user
agent
1-46
Electronic Mail: Mail server
user
agent
Mail Server
mailbox chứa các bản tin
thư điện tử gửi đến cho
người sử dụng
message queue của các
bản tin thư điện tử gửi đi
SMTP protocol giữa các
mail server để gửi các
bản tin thư điện tử
client: mail server gửi
“server”: mail server
nhận
mail
server
user
agent
SMTP
SMTP
SMTP
mail
server
mail
server
user
agent
user
agent
user
agent
user
agent
1-47
Electronic Mail: SMTP [RFC 2821]
Sử dụng TCP để truyền tin cậy các bản tin thư điện tử từ
client tới server, cổng 25
Gửi trực tiếp: server gửi tới server nhận
Ba pha của việc truyền
Bắt tay
Truyền các bản tin
Kết thúc
Sự tương tác Lệnh/Trả lời
Lệnh: văn bản mã ASCII
Trả lời: status code và status phrase
Các bản tin phải dùng mã ASCII 7-bit
1-48
Kịch bản: Alice gửi bản tin cho Bob
4) SMTP client gửi bản tin của
Alice qua kết nối TCP
5) Mail server của Bob chuyển
bản tin vào mailbox của Bob
6) Bob chạy user agent để đọc
bản tin
1) Alice dùng UA để soạn bản
tin và gửi cho
bob@someschool.edu
2) UA của Alice gửi bản tin tới
mail server của cô ta; bản tin
đặt trong message queue
3) Phía client của SMTP mở kết
nối TCP với mail server của
Bob
1
user
agent
2
mail
server
3
mail
server
4
5
6
user
agent
1-49
Ví dụ tương tác SMTP
S:
C:
S:
C:
S:
C:
S:
C:
S:
C:
C:
C:
S:
C:
S:
220 hamburger.edu
HELO crepes.fr
250 Hello crepes.fr, pleased to meet you
MAIL FROM:
250 alice@crepes.fr... Sender ok
RCPT TO:
250 bob@hamburger.edu ... Recipient ok
DATA
354 Enter mail, end with "." on a line by itself
Do you like ketchup?
How about pickles?
.
250 Message accepted for delivery
QUIT
221 hamburger.edu closing connection
1-50
SMTP: Một số thông tin khác
SMTP sử dụng persistent
connections
SMTP yêu cầu bản tin
(header & body) dùng mã
ASCII 7-bit
SMTP server sử dụng
CRLF.CRLF để xác định kết
thúc bản tin
So sánh với HTTP:
HTTP: pull
SMTP: push
Cả hai có tương tác
Lệnh/Trả lời dạng mã ASCII,
status code
HTTP: mỗi đối tượng được
đóng gói trong chính bản tin
trả lời
SMTP: nhiều đối tượng
được gửi trong bản tin có
nhiều phần
1-51
Định dạng bản tin
SMTP: giao thức để trao đổi
các bản tin thư điện tử
RFC 822: chuẩn định dạng bản
tin dạng văn bản
Header lines, ví dụ
To:
From:
Subject:
khác Lệnh SMTP
header
dòng
trống
body
body
bản tin, ký tự ASCII
1-52
Định dạng bản tin: Các mở rộng đa phương tiện
MIME: Multimedia Mail Extension, RFC 2045, 2046
Thêm các dòng trong header của bản tin khai báo kiểu nội
dung MIME
MIME version
method sử dụng
để mã hóa dữ liệu
kiểu dữ liệu
đa phương tiện,
kiểu con,
khai báo tham số
From: alice@crepes.fr
To: bob@hamburger.edu
Subject: Picture of yummy crepe.
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
dữ liệu mã hóa kiểu base64 .....
.........................
......dữ liệu mã hóa kiểu base64
dữ liệu đã mã hóa
1-53
Thực hành tương tác SMTP
telnet servername 25
Xem trả lời 220 từ server
Gõ vào các lệnh HELO, MAIL FROM, RCPT TO,
DATA, QUIT để gửi thư điện tử không sử dụng email
client (reader)
1-54
Các giao thức truy cập thư điện tử
SMTP
SMTP
user
agent
mail server
của bên gửi
giao thức
truy cập
user
agent
mail server
của bên nhận
SMTP: chuyển/lưu trữ thư tới server của bên nhận
Giao thức truy cập thư: lấy thư từ server
POP: Post Office Protocol [RFC 1939]
• Ủy quyền (agent server) và tải thư
IMAP: Internet Mail Access Protocol [RFC 1730]
• Nhiều tính năng hơn (phức tạp hơn)
• Thao tác trên các bản tin lưu trên server
HTTP: Hotmail , Yahoo! Mail, …
1-55
Giao thức POP3
Pha ủy quyền
Lệnh của client:
user: khai báo tên người
dùng
pass: mật khẩu
Trả lời của server
+OK
-ERR
Pha giao dịch, client:
list: liệt kê các số bản tin
retr: lấy bản tin dựa vào số
dele: xóa
quit
S:
C:
S:
C:
S:
C:
S:
S:
S:
C:
S:
S:
C:
C:
S:
S:
C:
C:
S:
+OK POP3 server ready
user bob
+OK
pass hungry
+OK
người sử dụng
đăng nhập thành công
list
1 498
2 912
.
retr 1
.
dele 1
retr 2
.
dele 2
quit
+OK POP3 server chấm dứt
phiên làm việc
1-56
POP3 và IMAP
Thông tin thêm về POP3
Ví dụ trước sử dụng
chế độ “tải và xóa”
Bob không thể đọc lại
các thư điện tử nếu bob
chuyển sang client khác
Chế độ “Tải và giữ” sao
chép các bản tin trên
các client khác nhau
POP3 không lưu trạng
thái giữa các phiên
IMAP
Giữ tất cả các bản tin
tại một chỗ: server
Cho phép người sử
dụng tổ chức các bản
tin vào các thư mục
IMAP giữ trạng thái
người sử dụng qua các
phiên:
Tên của các thư mục và
ánh xạ giữa các định
danh của bản tin và tên
thư mục
1-57
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-58
DNS: Domain Name System
Con người: có nhiều định danh:
CMT, tên, hộ chiếu
Host, router trên Internet:
Địa chỉ IP (32 bít) để đánh
địa chỉ các đơn vị dữ liệu
gửi đi
Tên, ví dụ: www.yahoo.com
sử dụng bởi con người
Câu hỏi: Ánh xạ giữa địa chỉ IP
và tên ?
Hệ thống tên miền (DNS):
Cơ sở dữ liệu phân tán được
thực hiện phân cấp bởi nhiều
name server
Giao thức tầng ứng dụng để
host, router, name server giao
tiếp dịch giữa địa chỉ và tên
Chú ý: Chức năng cơ bản
của Internet, thực hiện bởi
giao thức ứng dụng
Sự phức tạp tại network
edge
1-59
DNS
Các dịch vụ DNS
Dịch tên host sang địa
chỉ IP
Bí danh cho Host
Canonical name và alias
names
Bí danh cho Mail server
Phân tải
Web server: Một tập các
địa chỉ IP cho một
canonical name
Tại sao không dùng DNS tập
chung ?
Một điểm lỗi
Khối lượng lưu lượng
Cơ sở dữ liệu tập chung
xa
Bảo trì
Không co giãn!
1-60
Cơ sở dữ liệu phân cấp và phân tán
Root DNS Servers
com DNS servers
yahoo.com
amazon.com
DNS servers DNS servers
org DNS servers
pbs.org
DNS servers
edu DNS servers
poly.edu
umass.edu
DNS serversDNS 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 yêu cầu com DNS server để xác định
amazon.com DNS server
Client yêu cầu amazon.com DNS server để lấy địa
chỉ IP cho www.amazon.com
1-61
DNS: Root name server
Local name server không trả lời được thì nó sẽ liên lạc với Root name server
Root name server:
Liên lạc với authoritative name server nếu nó không biết ánh xạ tên
Lấy ánh xạ
Trả ánh xạ về cho local name server
a Verisign, Dulles, VA
c Cogent, Herndon, VA (also Los Angeles)
d U Maryland College Park, MD
k RIPE London (also Amsterdam, Frankfurt)
g US DoD Vienna, VA
h ARL Aberdeen, MD
i 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)
b USC-ISI Marina del Rey, CA
l ICANN Los Angeles, CA
13 root name
server trên toàn
thế giới
1-62
TLD và Authoritative Server
Top-level domain (TLD) server: có vai trò đối
với com, org, net, edu,… và tất cả các miền
quốc gia mức trên cùng uk, fr, ca, jp,…
Authoritative DNS server: DNS server của các
tổ chức cung cấp ánh xạ authoritative hostname
thành địa chỉ IP cho server của tổ chức (ví dụ
Web và Email).
Có
thể duy trì bởi tổ chức hoặc nhà cung cấp dịch vụ
1-63
Local Name Server
Không hoàn toàn thuộc vào phân cấp
Mỗi ISP (residential ISP, công ty, tổ chức) có
Còn gọi là “default name server”
Khi một host tạo truy vấn DNS, truy vấn được
gửi tới Local DNS server của nó
Hoạt
động như một proxy, chuyển tiếp query vào
trong phân cấp.
1-64
Ví dụ
Root DNS server
2
Host tại cis.poly.edu
muốn biết địa chỉ IP
của
gaia.cs.umass.edu
3
4
TLD DNS server
5
Local DNS server
dns.poly.edu
1
8
host gửi yêu cầu
7
6
authoritative DNS server
dns.cs.umass.edu
cis.poly.edu
gaia.cs.umass.edu
1-65
Truy vấn đệ quy
Truy vấn đệ quy:
Giao toàn bộ việc tìm
root DNS server
2
tên cho name server
liên lạc
Tải lớn?
Truy vấn lặp:
Server liên lạc trả về
3
7
6
TLD DNS server
local DNS server
dns.poly.edu
tên của server cần liên
1
8
lạc tiếp
“Tôi không biết nhưng
anh muốn biết thì đi
requesting host
hỏi server này”
cis.poly.edu
5
4
authoritative DNS server
dns.cs.umass.edu
gaia.cs.umass.edu
1-66
DNS: lưu giữ tạm và cập nhật bản ghi
Name server nào đó học các ánh xạ, server sẽ lưu giữ tạm
các ánh xạ đó
Các khe lưu trữ tạm quá hạn (biến mất) sau một khoảng
thời gian
Các TLD server thông thường lưu trữ tạm trong các local
name servers
• Vì thế, root name server không phải hỏi thường xuyên
Cơ chế cập nhật/thông báo định nghĩa bởi IETF
RFC 2136
http://www.ietf.org/html.charters/dnsind-charter.html
1-67
Bản ghi DNS
DNS: Cơ sở dữ liệu phân tán chứa các bản ghi tài nguyên (Resource record - RR)
Định dạng RR: (name, value, type, ttl)
Type=A
name là hostname
value là địa chỉ IP
Type=NS
name là domain (ví dụ
foo.com)
value là địa chỉ của
authoritative name server
cho domain đó
Type=CNAME
name là tên bí danh cho một số
tên thật (cannonical name)
www.ibm.com thật ra là
servereast.backup2.ibm.com
value là tên thật
Type=MX
value là tên thật của mail
server liên kết với name (bí
danh của hostname)
(foo.com, mail.bar.foo.com,
MX)
1-68
Giao thức DNS, bản tin
Giao thức DNS: Bản tin truy vấn và trả lời có chung một
định dạng bản tin
Header của bản tin
identification: 16 bit, định
cho truy vấn, trả lời sử
dụng cùng giá trị
flags:
Truy vấn hay trả lời
Mong muốn đệ quy
Có khả năng đệ quy
Trả lời là ủy quyền
1-69
Giao thức DNS, bản tin
Các trường Name, type
cho một Truy vấn
Các bản ghi trong trả lời
Các bản ghi cho
authoritative server
Các bản ghi cung cấp
thông tin khác
1-70
Chèn thêm bản ghi vào DNS
Ví dụ: Tạo “Network Utopia”
Đăng ký tên networkuptopia.com tại registrar (ví dụ: nhà
cung cấp giải pháp mạng)
Cần cung cấp cho registrar tên và địa chỉ IP của authoritative
name server của mạng (primary và secondary)
Registrar chèn thêm hai RR vào trong com TLD server:
(networkutopia.com, dns1.networkutopia.com, NS)
(dns1.networkutopia.com, 212.212.212.1, A)
Thêm vào authoritative server bản ghi kiểu A cho
www.networkuptopia.com và bản ghi kiểu MX cho
networkutopia.com
Người khác xác định địa chỉ IP của Web site này như
thế nào?
1-71
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-72
Chia sẻ file P2P
Alice chọn một peer,
Bob
File được sao chép từ
máy của Bob tới máy
của Alice: HTTP
Trong khi Alice đang tải,
người sử dụng khác lấy
dữ liệu đã có trên máy
Alice
Peer của Alice vừa là
Web client vừa là Web
server.
Mọi peer là server = quy
mô lớn!
Ví dụ
Alice chạy ứng dụng
P2P client
Kết nối tới Internet và
nhận một địa chỉ IP mới
Tìm “Hey Jude”
Ứng dụng các peer
khác có bản sao chép
của Hey Jude không.
1-73
P2P: thư mục trung tâm
Thiết kế của “Napster” ban
đầu
1) Khi peer kết nối, nó thông
báo server trung tâm:
Bob
Server thư mục
trung tâm
1
peers
1
Địa chỉ IP
Nội dung
2) Alice yêu cầu “Hey Jude”
3) Alice yêu cầu file từ Bob
3
1
2
1
Alice
1-74
P2P: Vấn đề của thư mục trung tâm
Một điểm chịu lỗi
Hiệu năng
Xâm phạm bản quyền
Truyền file là không
tập trung,
xác định vị trí nội dung
là không tập chung
1-75
Phát tán các query: Gnutella
Hoàn toàn phân tán
Không có server trung
tâm
Giao thức công khai
Nhiều Gnutella clients
cài đặt giao thức
Mạng bao phủ: đồ thị
Cạnh giữa peer X và Y:
nếu có một kết nối TCP
Tất cả peer hoạt động
và các cạnh là mạng
bao phủ
Các cạnh không là
đường truyền vật lý
Peer thường kết nối với
< 10 hàng xóm
1-76
Gnutella: Giao thức
Query gửi qua kết nối TCP đã có
Các peers chuyển tiếp
bản tin Query
QueryHit gửi theo
đường ngược lại
Truyền file:
HTTP
Query
QueryHit
er
u
Q
y
i
H
y
r
t
Qu
e
ry
e
u
Q
QueryHit
Query
Qu
Ổn định:
er
y
giới hạn phạm vi phát tán
1-77
Gnutella: Peer gia nhập
1.
2.
3.
4.
5.
Peer gia nhập X phải tìm một số peer khác trong
mạng Gnutella: sử dụng danh sách các peer ứng
viên
X cố gắng tạo kết nối TCP với peer khác trong danh
sách tới khi thiết lập được kết nối với Y
X gửi bản tin Ping tới Y; Y chuyển tiếp bản tin Ping .
Mọi peer nhận được bản tin Ping sẽ trả lời bằng
bản tin Pong
X nhận nhiều bản tin Pong. Nó có thể thiết lập thêm
các kết nối TCP
1-78
Lai: KaZaA
Mỗi peer là đứng đầu
của một nhóm hoặc là
con của một nhóm.
Kết nối TCP giữa peer và
các đứng đầu của nhóm.
Kết nối TCP giữa các cặp
đứng đầu nhóm.
Đứng đầu nhóm theo dõi
nội dung của tất cả các
con của nó.
ordinary peer
group-leader peer
neighoring relationships
in overlay network
1-79
KaZaA: Truy vấn
Mỗi file có một hash và một mô tả
Client gửi từ khóa tới đứng đầu nhóm
Đứng đầu nhóm trả lời các kết quả:
Mỗi kết quả: metadata, hash, địa chỉ IP
Nếu đứng đầu nhóm chuyển tiếp truy vấn tới
đứng đầu nhóm khác, đứng đầu nhóm khác
trả lời
Sau đó, client chọn file để tải xuống
Yêu
cầu HTTP sử dụng hash làm định danh để
gửi tới peer giữ file đó
1-80
Kazaa
Hạn chế số upload đồng thời
Xếp hàng yêu cầu
Ưu tiên
Download song song
1-81
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-82
Lập trình Socket với TCP
Client phải liên lạc với server
•
• Tiến trình server phải đang chạy
• Server phải tạo socket (cửa) để client
liên lạc
Client liên lạc với server bằng cách:
• Tạo client-local TCP socket
• Gán địa chỉ IP, cổng của tiến trình
server
• Khi client tạo socket: client TCP giành
kết nối tới server TCP
Khi nhận được sự liên lạc của
client, server TCP tạo một socket
mới cho tiến trình server để giao
tiếp với client
– Cho phép server nói chuyện
với nhiều client
– Giá trị source port dùng để
phân biệt các client (chi tiết
hơn trong chương 3)
Góc nhìn ứng dụng
TCP cung cấp dịch vụ truyền
tin cậy các byte giữa client và server
1-83
Ví dụ: C client (TCP)
/* client.c */
void main(int argc, char *argv[])
{
struct sockaddr_in sad; /* cấu trúc chứa 1 địa chỉ IP */
int clientSocket; /* mô tả socket */
struct hostent *ptrh; /* con trỏ tới một entry trong host table */
char Sentence[128];
char modifiedSentence[128];
Tạo client socket,
Kết nối tới server
host = argv[1]; port = atoi(argv[2]);
clientSocket = socket(PF_INET, SOCK_STREAM, 0);
memset((char *)&sad,0,sizeof(sad)); /* xóa cấu trúc sockaddr */
sad.sin_family = AF_INET; /* thiết lập family Internet */
sad.sin_port = htons((u_short)port);
ptrh = gethostbyname(host); /* Chuyển tên host thành địa chỉ IP */
memcpy(&sad.sin_addr, ptrh->h_addr, ptrh->h_length);
connect(clientSocket, (struct sockaddr *)&sad, sizeof(sad));
1-84
Ví dụ: C client (TCP) (tiếp)
Đọc
input stream
từ user
Gửi tới server
Đọc từ server
gets(Sentence);
n=write(clientSocket, Sentence, strlen(Sentence)+1);
n=read(clientSocket, modifiedSentence, sizeof(modifiedSentence
printf(“TỪ SERVER: %s\n”, modifiedSentence);
Đóng
kết nối
close(clientSocket);
}
1-85
Ví dụ: C server (TCP)
/* server.c */
void main(int argc, char *argv[])
{
struct sockaddr_in sad; /* cấu trúc chứa một địa chỉ IP */
struct sockaddr_in cad;
int welcomeSocket, connectionSocket; /* mô tả socket */
struct hostent *ptrh; /* con trỏ tới một entry trong host table */
char clientSentence[128];
char capitalizedSentence[128];
Tạo một socket chờ tại một cổng
&
Gắn với một địa chỉ cục bộ
port = atoi(argv[1]);
welcomeSocket = socket(PF_INET, SOCK_STREAM, 0);
memset((char *)&sad,0,sizeof(sad)); /* xóa cấu trúc sockaddr */
sad.sin_family = AF_INET; /* thiết lập family Internet */
sad.sin_addr.s_addr = INADDR_ANY; /* thiết lập địa chỉ IP address */
sad.sin_port = htons((u_short)port);/* thiết lập giá trị cổng */
bind(welcomeSocket, (struct sockaddr *)&sad, sizeof(sad));
1-86
Ví dụ: C server (TCP) (tiếp)
/* Chỉ định số client lớn nhất được xếp hàng */
listen(welcomeSocket, 10)
Đợi client liên lạc
while(1) {
connectionSocket=accept(welcomeSocket, (struct sockaddr *)&cad, &alen);
n=read(connectionSocket, clientSentence, sizeof(clientSentence));
/* Chuyển clientSentence thành chữ hoa, chứa kết quả trong
capitalizedSentence*/
n=write(connectionSocket, capitalizedSentence, strlen(capitalizedSentence)+1);
close(connectionSocket);
}
Đưa kết quả ra socket
}
Kết thúc vòng lặp While,
Quay trở lại và đợi một kết nối client khác
1-87
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-88
Lập trình Socket với UDP
UDP: Không kết nối giữa client và
server
• Không bắt tay
• Bên gửi chỉ ra địa chỉ IP và
cổng của bên nhận cho mỗi gói
tin
• Server phải tìm địa chỉ IP, cổng
của bên gửi trong gói tin đã
nhận
Góc nhìn ứng dụng
UDP cung cấp
dịch vụ truyền không tin cậy
một nhóm các byte (“datagrams”)
giữa client và server
UDP: dữ liệu đã truyền có thể nhận
không theo thứ tự hoặc bị mất
1-89
Tương tác giữa client socket
và server socket: UDP
Server (đang chạy trên hostid)
Tạo socket,
Cổng=x, đối với
gói tin đến:
serverSocket =
DatagramSocket()
Đọc yêu cầu từ
serverSocket
Ghi trả lời ra
serverSocket
chỉ định địa chỉ host của client
và giá trị cổng
Client
Tạo socket,
clientSocket =
DatagramSocket()
Tạo, địa chỉ (hostid, port=x,
Gửi yêu cầu datagram sử dụng clientSocket
Đọc trả lời từ
clientSocket
Đóng
clientSocket
1-90
Ví dụ: C client (UDP)
/* client.c */
void main(int argc, char *argv[])
{
struct sockaddr_in sad; /* cấu trúc chứa một địa chỉ IP */
int clientSocket; /* mô tả socket */
struct hostent *ptrh; /* con trỏ tới một entry trong host table */
char Sentence[128];
char modifiedSentence[128];
Tạo client socket,
Không kết nối tới server
host = argv[1]; port = atoi(argv[2]);
clientSocket = socket(PF_INET, SOCK_DGRAM, 0);
/* xác định địa chỉ của server */
memset((char *)&sad,0,sizeof(sad)); /* xóa cấu trúc sockaddr */
sad.sin_family = AF_INET; /* thiết lập family Internet */
sad.sin_port = htons((u_short)port);
ptrh = gethostbyname(host); /* Chuyển tên host thành địa chỉ IP */
memcpy(&sad.sin_addr, ptrh->h_addr, ptrh->h_length);
1-91
Ví dụ: C client (UDP) (tiếp)
Đọc
input stream
từ user
Gửi
tới server
Đọc
từ server
gets(Sentence);
addr_len =sizeof(struct sockaddr);
n=sendto(clientSocket, Sentence, strlen(Sentence)+1,
(struct sockaddr *) &sad, addr_len);
n=recvfrom(clientSocket, modifiedSentence, sizeof(modifiedSentence).
(struct sockaddr *) &sad, &addr_len);
printf(“TỪ SERVER: %s\n”,modifiedSentence);
Đóng
kết nối
close(clientSocket);
}
1-92
Ví dụ: C server (UDP)
/* server.c */
void main(int argc, char *argv[])
{
struct sockaddr_in sad; /* cấu trúc chứa một địa chỉ IP */
struct sockaddr_in cad;
int serverSocket; /* mô tả socket */
struct hostent *ptrh; /* con trỏ tới một entry trong host table */
char clientSentence[128];
char capitalizedSentence[128];
Tạo socket chờ ở cổng
&
Gắn với một địa chỉ cục bộ
port = atoi(argv[1]);
serverSocket = socket(PF_INET, SOCK_DGRAM, 0);
memset((char *)&sad,0,sizeof(sad)); /* xóa cấu trúc sockaddr */
sad.sin_family = AF_INET; /* thiết lập family Internet */
sad.sin_addr.s_addr = INADDR_ANY; /* thiết lập địa chỉ IP cục bộ */
sad.sin_port = htons((u_short)port);/* thiết lập giá trị cổng */
bind(serverSocket, (struct sockaddr *)&sad, sizeof(sad));
1-93
Ví dụ: C server (UDP) (tiếp)
Nhận bản tin từ các client
while(1) {
n=recvfrom(serverSocket, clientSentence, sizeof(clientSentence), 0
(struct sockaddr *) &cad, &addr_len );
/* chuyển clientSentence thành chữ hoa, chứa kết quả trong capitalizedSentence*/
n=sendto(connectionSocket, capitalizedSentence, strlen(capitalizedSentence)+1,0
(struct sockaddr *) &cad, &addr_len);
close(connectionSocket);
}
Ghi kết quả ra socket
}
Kết thúc vòng lặp While,
quay trở lại và đợi kết nối client khác
1-94
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-95
Xây dựng một Web server đơn giản
Điều khiển một yêu cầu
HTTP
Chấp nhận yêu cầu
Phân tích header
Giành file đã yêu cầu từ
hệ thống file của server
Tạo bản tin trả lời HTTP:
Sau khi tạo server, có
thể yêu cầu file sử dụng
một trình duyệt (ví dụ IE
explorer)
header lines + file
Gửi trả lời cho client
1-96
Chương 2: Tổng kết
Nội dung đã học: Ứng dụng mạng
Các kiến trúc ứng dụng
Tính tin cậy, băng thông, độ
trễ
Các giao thức cụ thể:
Client-Server
P2P
Hybrid
Các yêu cầu ứng dụng:
HTTP
FTP
SMTP, POP, IMAP
DNS
Lập trình socket
Mô hình dịch vụ giao vận
của Internet
Tin cậy, hướng kết nối
Không tin cậy, datagrams:
UDP
1-97
Chương 2: Tổng kết
Quan trọng: đã học về các giao thức
Trao đổi bản tin yêu
cầu/bản tin trả lời:
Client yêu cầu thông tin
hoặc dịch vụ
Server gửi dữ liệu trả lời,
mã trạng thái
Định dạng bản tin:
Header: Các trường
mang thông tin về Data
Data: thông tin truyền
thông
Bản tin dữ liệu và bản tin điều
khiển
in-band, out-of-band
Tập chung (centralized) và
không tập chung
(decentralized)
Không hướng trạng thái
(stateless) và hướng trạng
thái (stateful)
Truyền bản tin kiểu tin cậy
(reliable) và không tin cậy
(unreliable)
Sự phức tạp tại network edge
1-98
[...]... 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-1 7 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... Internet, trò chơi tương tác) đòi hỏi độ trễ thấp 1-1 5 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... HTTP/1.1 Host: www.someschool.edu User-agent: Mozilla/4.0 header Connection: close line Accept-language:fr (CR, LF) 1-2 8 Bản tin yêu cầu HTTP 1-2 9 Kiểu Method HTTP/1.0 GET POST HEAD HTTP/1.1 GET, POST, HEAD PUT Hỏi server bỏ đối tượng đã yêu cầu ra khỏi trả lời đưa file trong phần body lên đường dẫn chỉ trong URL DELETE xóa file trong trường URL 1-3 0 Bản tin trả lời HTTP status line... file HTML đã yêu cầu HTTP/1.1 200 OK Connection close Date: Thu, 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 (Unix) Last-Modified: Mon, 22 Jun 1998 … Content-Length: 6821 Content-Type: text/html dữ liệu 1-3 1 Mã trạng thái của trả lời HTTP Trong dòng đầu tiên của trả lời server->client Ví dụ: 200 OK Yêu cầu thực hiện thành công, đối tượng trong bản tin 301 Moved Permanently Đối tượng yêu cầu đã... RealNetworks) Không công khai (vd: Dialpad) TCP TCP TCP TCP TCP hoặc UDP UDP 1-1 8 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-1 9 Web và HTTP Trang Web chứa các đối tượng Đối tượng có thể... 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-2 4 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-2 5 Mô hình thời gian trả lời RTT: thời gian để gửi một gói tin từ client tới server và... vài secs Có, hàng trăm msec Có 1-1 6 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... host name path name 1-2 0 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-2 1 HTTP (tiếp) Sử dụng... 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-1 2 Các tiến trình đánh... đã nhận thời gian thời gian 1-2 6 Persistent HTTP Nonpersistent HTTP: Yêu cầu 2 RTT cho 1 đối tượng Hệ điều hành phải cấp phát tài nguyên cho mỗi kết nối TCP Trình duyệt phải mở song song nhiều kết nối TCP để lấy đối tượng tham chiếu Persistent HTTP Server tạm dừng kết nối sau khi gửi trả lời Các bản tin HTTP sau đó giữa cùng client/server được gửi qua kết nối 1-2 7 Bản tin yêu cầu HTTP Hai