You are on page 1of 88

Chương 2: Tầng ứng dụng

 2.1 Các nguyên tắc của  2.6 Chia sẻ file P2P


ứng dụng mạng  2.7 Lập trình Socket với
 2.2 Web và HTTP TCP
 2.3 FTP  2.8 Lập trình Socket với
 2.4 E-Mail UDP
 SMTP, POP3, IMAP  2.9 Xây dựng một Web
 2.5 DNS server

1-1
Chương 2: Tầng ứng dụng
 2.1 Nguyên tắc của các  2.6 Chia sẻ file P2P
ứng dụng mạng  2.7 Lập trình Socket với
 2.2 Web và HTTP TCP
 2.3 FTP  2.8 Lập trình Socket với
 2.4 Electronic Mail UDP
 SMTP, POP3, IMAP  2.9 Xây dựng Web Server
 2.5 DNS

1-2
2.1.Nguyên tắc của các ứng dụng mạng

Các kiến trúc ứng dụng:


Client-Server
Peer-to-peer (P2P)
Hybrid

1-3
2.1.Nguyên tắc của các ứng dụng mạng
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-4
2.1.Nguyên tắc của các ứng dụng mạng
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-5
2.1.Nguyên tắc của các ứng dụng mạng
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-6
2.1.Nguyên tắc của các ứng dụng mạng
Truyền thông của các tiến trình
Tiến trình: chương trình Tiến trình client: tiến trình
chạy trong một host. khởi đầu quá trình
 Trong cùng host, 2 tiến truyền thông
trình giao tiếp sử dụng Tiến trình server: tiến trình
inter-process đợi kết nối
communication (Do OS
định nghĩa).
 Các tiến trình trong các  Chú ý: Các ứng dụng
host khác nhau giao tiếp P2P có cả tiến trình client
bằng cách trao đổi các và tiến trình server
message

1-7
2.1.Nguyên tắc của các ứng dụng mạng
Socket
host hoặc host hoặc
 Tiến trình gửi nhận server
server
messages tới/từ socket
của nó Điều khiển bởi
người lập trình
 Socket tương tự cửa ra Tiến trình Tiến trình
ứng dụng
vào socket socket
 Tiến trình gửi đẩy bản tin ra TCP với
TCP với
ngoài cửa buffer, Internet Buffer,
 Tiến trình gửi dựa vào hạ Biến biến
tầng giao vận trên phía bên
kia của cửa, nó mang
Điều khiển
message tới socket của tiến bởi OS
trình nhận
 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-8
2.1.Nguyên tắc của các ứng dụng mạng
Các tiến trình đánh địa chỉ
 Đối với một tiến trình  Định danh bao gồm cả
nhận messages, nó phải địa chỉ IP và địa chỉ
có một định danh cổng gán cho ứng dụng
 Một host có một địa chỉ trên host.
IP duy nhất  Ví dụ: Giá trị cổng của
 Câu hỏi: Địa chỉ IP của một số ứng dụng:
 HTTP server: 80
host mà tiến trình chạy
 Mail server: 25
có đáp ứng được việc
định danh tiến trình?  Chi tiết hơn trong phần
 Trả lời: Không, nhiều sau
tiến trình có thể chạy
trên cùng host

1-9
2.1.Nguyên tắc của các ứng dụng mạng
Giao thức lớp ứng dụng
 Giao thức lớp ứng dụng Các giao thức công khai:
định nghĩa  Định nghĩa trong các
 Kiểu của bản tin trao đổi, RFC
ví dụ bản yêu cầu, bản
 Cho phép phối hợp hoạt
tin trả lời
 Cú pháp của kiểu bản động
tin: Các trường trong bản  Ví dụ: HTTP, SMTP
tin và mô tả các trường
trong bản tin
Các giao thức không công
 Ý nghĩa của các trường
khai:
 Quy tắc các tiến trình
gửi/nhận bản tin khi nào
và như thế nào

1-10
2.1.Nguyên tắc của các ứng dụng mạng
Các dịch vụ giao vận mà ứng dụng cần
Mất dữ liệu Băng thông
 Một số ứng dụng (ví dụ: audio)  Một số ứng dụng (ví dụ: đa
có thể chấp nhận một tỷ lệ mất phương tiện) yêu cầu lượng
dữ liệu nào đó băng thông tối thiểu
 Một số ứng dụng khác (ví dụ:  Một số ứng dụng khác sử
Truyền file, telnet) đòi hỏi 100% dụng theo băng thông chúng
dữ liệu truyền là tin cậy 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-11
2.1.Nguyên tắc của các ứng dụng mạng

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 Thời gian

Truyền file Co giãn


Không cho phép Không
E-mail Co giãn
Không cho phép Không
Web Co giãn
Không cho phép Không
Real-time audio/video Cho phép Audio: 5kbps-1Mbps Có, hàng trăm msec
Video:10kbps-5Mbps
Stored audio/video Cho phép Tương tự trên Có, vài secs
Trò chơi tương tác Cho phép Yêu cầu kbps Có, hàng trăm msec
Instant messaging Không cho phép Co giãn Có

1-12
2.1.Nguyên tắc của các ứng dụng mạng
Các dịch vụ các giao thức giao vận
Dịch vụ TCP: Dịch vụ UDP:
 Hướng kết nối: Đòi hỏi quá  Truyền dữ liệu không tin
cậy giữa tiến trình gửi và
trình thiết lập giữa tiến trình
tiến trình nhận
client và tiến trình server
 Không cung cấp: việc thiết
 Truyền tin cậy giữa tiến trình lập kết, truyền tin cậy, điều
gửi và tiến trình nhận khiển luồng, điều khiển tắc
 Điều khiển luồng: Bên gửi sẽ nghẽn, tính thời gian, đảm
không vượt quá khả năng bên bảo băng thông
nhận
 Điều khiển tắc nghẽn: điều Q: Tại sao cần UDP?
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

1-13
2.1.Nguyên tắc của các ứng dụng mạng

Các ứng dụng Internet: các giao thức tầng ứng dụng
và tầng giao vận
Giao thức Giao thức
Ứng dụng tầng ứng dụng tầng giao vận

Thư điện tử SMTP [RFC 2821] TCP


Truy cập từ xa Telnet [RFC 854] TCP
Web HTTP [RFC 2616] TCP
Truyền file FTP [RFC 959] TCP
Truyền dòng Không công khai TCP hoặc UDP
đa phương tiện (vd: RealNetworks)
Không công khai
Điện thoại Internet (vd: Dialpad) UDP

1-14
Chương 2: Tầng ứng dụng
 2.1 Nguyên tắc của các  2.6 Chia sẻ file P2P
ứng dụng mạng  2.7 Lập trình Socket với
 2.2 Web và HTTP TCP
 2.3 FTP  2.8 Lập trình Socket với
 2.4 Electronic Mail UDP
 SMTP, POP3, IMAP  2.9 Xây dựng Web Server
 2.5 DNS

1-15
2.2. 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-16
2.2. Web và HTTP
HTTP
HTTP: hypertext transfer
protocol HT
TP
req
 Giao thức tầng ứng dụng HT ues
TP t
của Web res
pon
se
 Mô hình client/server
 client: Trình duyệt yêu t
ues
cầu, nhận và hiện thị các req e Server
TTP o ns
đối tượng H p chạy
res
TP Apache Web
 server: Web server gửi HT
server
các đối tượng trong trả
lời
 HTTP 1.0: RFC 1945
 HTTP 1.1: RFC 2068

1-17
2.2. Web và HTTP
HTTP (tiếp)
Sử dụng TCP: HTTP là không hướng
 Client khởi đầu kết nối TCP (tạo trạng thái
socket) tới server, cổng 80  Server không duy trì
 Server chấp nhận kết nối TCP từ thông tin về các yêu cầu
client của client trong quá khứ
 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 Các giao thức hướng trạng thái
client) và Web server (HTTP phức tạp hơn giao thức
server) không hướng trạng thái
 Kết nối TCP đóng
 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-18
2.2. Web và HTTP
Kết nối HTTP
Không kiên trì HTTP Kiên trì HTTP
 Một đối tượng được gửi  Nhiều đối tượng có thể
qua một kết nối TCP gửi qua một kết nối
 HTTP/1.0 sử dụng TCP giữa client và
nonpersistent HTTP server
 HTTP/1.1 mặc định sử
dụng persistent HTTP

1-19
2.2. Web và HTTP
Nonpersistent HTTP (chứa text,
Giả sử người sử dụng nhập vào URL www.someSchool.edu/someDepartment/home.index
tham chiếu tới 10
ả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
1b. HTTP server tại host
www.someSchool.edu đợi kết
80
nối TCP tại cổng 80.
Chấp nhận kết nối, thông báo
2. HTTP client gửi bản tin yêu cầu HTTP cho client
(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 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

Thời gian
1-20
2.2. Web và HTTP
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-21
2.2. Web và HTTP
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
Khởi đầu
Thời gian trả lời: kết nối TCP
 1 RTT để khởi tạo kết nối RTT
TCP file
yêu cầu
 1 RTT cho yêu cầu HTTP RTT
transmit time
và nhận byte đầu tiên của
trả lời HTTP file
đã nhận
 Thời gian truyền file
total = 2RTT+transmit time thời gian thời gian

1-22
2.2. Web và HTTP
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-23
2.2. Web và HTTP

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, GET /somedir/page.html HTTP/1.1
HEAD ) Host: www.someschool.edu
User-agent: Mozilla/4.0
header Connection: close
line Accept-language:fr

(CR, LF)

1-24
2.2. Web và HTTP

Bản tin yêu cầu HTTP

1-25
2.2. Web và HTTP

Kiểu Method
HTTP/1.0 HTTP/1.1
 GET  GET, POST, HEAD
 POST  PUT
 HEAD  đưa file trong phần body
 lên đường dẫn chỉ trong
Hỏi server bỏ đối tượng
URL
đã yêu cầu ra khỏi trả lời
 DELETE
 xóa file trong trường
URL

1-26
2.2. Web và HTTP
Bản tin trả lời HTTP
status line
(protocol
status code HTTP/1.1 200 OK
status phrase) Connection close
Date: Thu, 06 Aug 1998 12:00:15 GMT
Server: Apache/1.3.0 (Unix)
header
Last-Modified: Mon, 22 Jun 1998 …...
line
Content-Length: 6821
Content-Type: text/html

dữ liệu, ví dụ: dữ liệu


file HTML đã
yêu cầu

1-27
2.2. Web và HTTP
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-28
2.2. Web và HTTP
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-29
2.2. Web và HTTP
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 server
ban đầu
qua trình duyệt
Proxy
 Trình duyệt gửi mọi HT
TP est
req server re qu
H u
yêu cầu HTTP qua T
client TP
res
est H TTP
pon se
pon res
Cache se H TT P
 est
Đối tượng trong cache: req
u
T P n se
sẽ được trả về HT es
po
r
 Nếu không: Yêu cầu T TP
H
được chuyển tới
client
server ban đầu server
ban đầu

1-30
2.2. Web và HTTP
Web cache
 Cache hoạt động như Lợi ích của Web cache
cả client và server  Giảm thời gian trả lời
 Thông thường, được  Giảm lưu lượng trên đường

cài đặt bởi ISP truyền truy cập

1-31
2.2. Web và HTTP
Web cache
 Cache hoạt động như Tại sao dùng Web cache?
cả client và server  Giảm thời gian trả lời cho
 Thông thường cache yêu cầu của client.
 Giảm lưu lượng trên đường
được cài đặt bởi ISP
truy cập của tổ chức.
(trường đại học, công
ty, nhà cung cấp dịch
vụ cho gia đình)

1-32
2.2. Web và HTTP
Ví dụ caching
Các server
Giả sử ban đầu
 Kích thước của đối tượng trung
bình = 100,000 bits ~ 960 kbs public
Internet
 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 Đường truyền truy cập
ban đầu và trở lại = 2 giây 1.5 Mbps
Kết quả Mạng của
 Sự sử dụng trong LAN = 15% tổ chức
10 Mbps LAN
 Sự sử dụng trong đường truyền
truy cập = 100%
 Total delay = Internet delay +
access delay + LAN delay Institutional
Cache
= 2 giây + phút + millisecond

1-33
2.2. Web và HTTP
Ví dụ caching (tiếp)
Server
Giải pháp có thể ban đầu
 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% Đường truyền
 Total delay = Internet delay + truy cập10 Mbps
access delay + LAN delay Mạng của
= 2 sec + msecs + msecs tổ chức
10 Mbps LAN

institutional
cache

1-34
2.2. Web và HTTP
Ví dụ caching (tiếp) Server
ban đầu
Cài đặt cache
 Hỗ trợ hit rate .4 public
Kết quả Internet
 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 Đường truyền
truy cập 1.5 Mbps
 Sự sử dụng đường truyền
truy cập giảm tới 60%, kết Mạng của
quả độ trễ không đáng kể (10 tổ chức
10 Mbps LAN
msec)
 total avg delay = Internet
delay + access delay + LAN
delay = .6*(2.01) secs +
milliseconds < 1.4 secs institutional
cache

1-35
2.2. Web và HTTP
GET có điều kiện
 Mục đích: không gửi đối Cache Server
tượng nếu cache có phiên
Bản tin yêu cầu HTTP If-
bản cập nhật modified-since: <date>
 Cache: chỉ định ngày của Đối tượng
bản sao chép trong cache không bị
trong yêu cầu HTTP Bản tin trả lời HTTP thay đổi
If-modified-since: <date> HTTP/1.0
 Server: Trả lời không chứa 304 Not Modified
đối tượng nếu bản sao
chép trong cache cập nhật:
Bản tin yêu cầu HTTP
HTTP/1.0 304 Not Modified If-modified-since: <date>
Đối tượng
đã thay đổi
Bản tin trả lời HTTP
HTTP/1.0 200 OK
<data>
1-36
Chương 2: Tầng ứng dụng
 2.1 Nguyên tắc của các  2.6 Chia sẻ file P2P
ứng dụng mạng  2.7 Lập trình Socket với
 2.2 Web và HTTP TCP
 2.3 FTP  2.8 Lập trình Socket với
 2.4 Electronic Mail UDP
 SMTP, POP3, IMAP  2.9 Xây dựng Web Server
 2.5 DNS

1-37
2.3 FTP: File Transfer Protocol

Giao diện FTP Truyền file


FTP
người sử client server
dụng FTP
user
tại host Hệ thống Hệ thống file
file cục bộ 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-38
2.3 FTP: File Transfer Protocol
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
 FTP client liên lạc với FTP cổng 21
server tại cổng 21, chỉ định
dùng TCP làm giao thức giao
Kết nối dữ liệu TCP
vận FTP cổng 20 FTP
 Client giành ủy quyền qua kết client server
nối điều khiển
 Server mở một kết nối dữ liệu
 Client xem thư mục từ xa bằng
cách gửi lệnh qua kết nối điều TCP thứ hai để truyền một file
khiển khác.
 Kết nối điều khiển: truyền theo
 Khi server nhận một lệnh
truyền file, server mở một kết đường riêng
nối dữ liệu TCP tới client  FTP server duy trì trạng thái:
 Sau khi truyền file, server đóng thư mục hiện tại, ủy quyền
kết nối. trước đó

1-39
2.3 FTP: File Transfer Protocol
Lệnh và trả lời của FTP
Ví dụ một số lệnh: Ví dụ một số mã trả về
 Gửi văn bản mã ASCII  Status code và status
qua kênh điều khiển phrase (như HTTP)
 USER username  331 Username OK,
 PASS password đòi hỏi mật khẩu
 LIST trả về một danh  125 kết nối dữ
sách các file trong thưc liệu đã mở; bắt
mục hiện tại đầu truyền
 RETR filename lấy  425 Không thể mở
file kết nối dữ liệu
 STOR filename đưa  452 Lỗi ghi file
file lên remote host
1-40
Chương 2: Tầng ứng dụng
 2.1 Nguyên tắc của các  2.6 Chia sẻ file P2P
ứng dụng mạng  2.7 Lập trình Socket với
 2.2 Web và HTTP TCP
 2.3 FTP  2.8 Lập trình Socket với
 2.4 Electronic Mail UDP
 SMTP, POP3, IMAP  2.9 Xây dựng Web Server
 2.5 DNS

1-41
2.4 Electronic Mail Hàng đợi
bản tin gửi đi
User mailbox
user
Ba thành phần chính: agent
 User agent mail
user
 Mail server server
agent
 Simple mail transfer protocol: SMTP mail
SMTP server user
SMTP agent
User Agent
 Còn gọi là Mail Reader SMTP
mail user
 Soạn, sửa, đọc bản tin mail agent
server
 Ví dụ: Eudora, Outlook,
Netscape Messenger user
agent
 Các bản tin gửi tới và gửi đi
user
đã chứa trên server agent

1-42
2.4 Electronic Mail
Mail server
Mail Server user
agent
 mailbox chứa các bản tin mail
user
thư điện tử gửi đến cho server
agent
người sử dụng SMTP mail
 message queue của các server user
bản tin thư điện tử gửi đi SMTP agent
 SMTP protocol giữa các
mail server để gửi các SMTP
mail user
bản tin thư điện tử server agent
 client: mail server gửi
user
 “server”: mail server agent
nhận user
agent

1-43
2.4 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-44
2.4 Electronic Mail
Kịch bản: Alice gửi bản tin cho Bob
1) Alice dùng UA để soạn bản
4) SMTP client gửi bản tin của
tin và gửi cho
Alice qua kết nối TCP
bob@someschool.edu
5) Mail server của Bob chuyển
2) UA của Alice gửi bản tin tới
bản tin vào mailbox của Bob
mail server của cô ta; bản tin
đặt trong message queue 6) Bob chạy user agent để đọc
bản tin
3) Phía client của SMTP 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

1-45
2.4 Electronic Mail

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
1-46
2.4 Electronic Mail
SMTP: Một số thông tin khác
 SMTP sử dụng persistent So sánh với HTTP:
connections
 HTTP: pull
 SMTP yêu cầu bản tin
 SMTP: push
(header & body) dùng mã
ASCII 7-bit  Cả hai có tương tác
 SMTP server sử dụng Lệnh/Trả lời dạng mã ASCII,
CRLF.CRLF để xác định kết status code
thúc bản tin
 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-47
2.4 Electronic Mail
Định dạng bản tin
SMTP: giao thức để trao đổi
các bản tin thư điện tử header
dòng
RFC 822: chuẩn định dạng bản
trống
tin dạng văn bản
 Header lines, ví dụ
 To: body
 From:
 Subject:

khác Lệnh SMTP


 body
 bản tin, ký tự ASCII

1-48
2.4 Electronic Mail
Đị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
From: alice@crepes.fr
MIME version To: bob@hamburger.edu
Subject: Picture of yummy crepe.
method sử dụng MIME-Version: 1.0
để mã hóa dữ liệu Content-Transfer-Encoding: base64
Content-Type: image/jpeg
kiểu dữ liệu
đa phương tiện, dữ liệu mã hóa kiểu base64 .....
kiểu con, .........................
khai báo tham số ......dữ liệu mã hóa kiểu base64
dữ liệu đã mã hóa

1-49
2.4 Electronic Mail
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-50
2.4 Electronic Mail
Các giao thức truy cập thư điện tử
SMTP SMTP giao thức user
user
agent truy cập agent

mail server mail server


của bên gửi 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-51
2.4 Electronic Mail
Giao thức POP3 S:
C:
+OK POP3 server ready
user bob
Pha ủy quyền S: +OK
C: pass hungry
 Lệnh của client:
S: +OK người sử dụng
 user: khai báo tên người đăng nhập thành công
C: list
dùng
S: 1 498
 pass: mật khẩu
S: 2 912
 Trả lời của server S: .
 +OK C: retr 1
S: <message 1 contents>
 -ERR
S: .
Pha giao dịch, client: C: dele 1
C: retr 2
 list: liệt kê các số bản tin
S: <message 1 contents>
 retr: lấy bản tin dựa vào số S: .
 dele: xóa C: dele 2
 quit
C: quit
S: +OK POP3 server chấm dứt
phiên làm việc
1-52
2.4 Electronic Mail

POP3 và IMAP
Thông tin thêm về POP3 IMAP
 Ví dụ trước sử dụng  Giữ tất cả các bản tin
chế độ “tải và xóa” tại một chỗ: server
 Bob không thể đọc lại  Cho phép người sử
các thư điện tử nếu bob dụng tổ chức các bản
chuyển sang client khác tin vào các thư mục
 Chế độ “Tải và giữ” sao  IMAP giữ trạng thái
chép các bản tin trên người sử dụng qua các
các client khác nhau phiên:
 POP3 không lưu trạng  Tên của các thư mục và
thái giữa các phiên ánh xạ giữa các định
danh của bản tin và tên
thư mục
1-53
Chương 2: Tầng ứng dụng
 2.1 Nguyên tắc của các  2.6 Chia sẻ file P2P
ứng dụng mạng  2.7 Lập trình Socket với
 2.2 Web và HTTP TCP
 2.3 FTP  2.8 Lập trình Socket với
 2.4 Electronic Mail UDP
 SMTP, POP3, IMAP  2.9 Xây dựng Web Server
 2.5 DNS

1-54
2.5 DNS: Domain Name System

Con người: có nhiều định danh: Hệ thống tên miền (DNS):


 CMT, tên, hộ chiếu  Cơ sở dữ liệu phân tán được
Host, router trên Internet: thực hiện phân cấp bởi nhiều
 Địa chỉ IP (32 bít) để đánh name server
địa chỉ các đơn vị dữ liệu  Giao thức tầng ứng dụng để
gửi đi
host, router, name server giao
 Tên, ví dụ: www.yahoo.com tiếp dịch giữa địa chỉ và tên
sử dụng bởi con người
 Chú ý: Chức năng cơ bản
Câu hỏi: Ánh xạ giữa địa chỉ IP
của Internet, thực hiện bởi
và tên ?
giao thức ứng dụng
 Sự phức tạp tại network
edge

1-55
2.5 DNS: Domain Name System

Các dịch vụ DNS Tại sao không dùng DNS tập


 Dịch tên host sang địa chung ?
chỉ IP  Một điểm lỗi
 Bí danh cho Host  Khối lượng lưu lượng
 Canonical name và alias  Cơ sở dữ liệu tập chung
names xa
 Bí danh cho Mail server  Bảo trì
 Phân tải
 Web server: Một tập các
Không co giãn!
địa chỉ IP cho một
canonical name

1-56
2.5 DNS: Domain Name System
Cơ sở dữ liệu phân cấp và 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 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-57
2.5 DNS: Domain Name System
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
g US DoD Vienna, VA k RIPE London (also Amsterdam, Frankfurt)
h ARL Aberdeen, MD i Autonomica, Stockholm (plus 3 other locations)
j Verisign, ( 11 locations)

m WIDE Tokyo
e NASA Mt View, CA
f Internet Software C. Palo Alto, CA (and 17
other locations)

13 root name
server trên toàn
b USC-ISI Marina del Rey, CA
thế giới
l ICANN Los Angeles, CA

1-58
2.5 DNS: Domain Name System
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-59
2.5 DNS: Domain Name System
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-60
2.5 DNS: Domain Name System
Root DNS server
Ví dụ
2
 Host tại cis.poly.edu 3
TLD DNS server
muốn biết địa chỉ IP 4
của
5
gaia.cs.umass.edu
Local DNS server
dns.poly.edu
7 6
1 8

authoritative DNS server


dns.cs.umass.edu
host gửi yêu cầu
cis.poly.edu

gaia.cs.umass.edu
1-61
2.5 DNS: Domain Name System
Truy vấn đệ quy root DNS server

Truy vấn đệ quy:


2 3
 Giao toàn bộ việc tìm
tên cho name server 7 6
liên lạc TLD DNS server
 Tải lớn?

Truy vấn lặp: local DNS server


4
dns.poly.edu 5
 Server liên lạc trả về
tên của server cần liên 1 8
lạc tiếp
 “Tôi không biết nhưng authoritative DNS server
dns.cs.umass.edu
anh muốn biết thì đi requesting host
hỏi server này” cis.poly.edu

gaia.cs.umass.edu

1-62
2.5 DNS: Domain Name System
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-63
2.5 DNS: Domain Name System
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  Type=CNAME
 name là hostname  name là tên bí danh cho một số

 value là địa chỉ IP tên thật (cannonical name)


www.ibm.com thật ra là
 Type=NS
servereast.backup2.ibm.com
 name là domain (ví dụ
 value là tên thật
foo.com)
 value là địa chỉ của  Type=MX
authoritative name server cho  value là tên thật của mail
domain đó server liên kết với name (bí
danh của hostname)
 (foo.com, mail.bar.foo.com,
1-64
MX)
2.5 DNS: Domain Name System
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-65
2.5 DNS: Domain Name System
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-66
2.5 DNS: Domain Name System
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-67
Chương 2: Tầng ứng dụng
 2.1 Nguyên tắc của các  2.6 Chia sẻ file P2P
ứng dụng mạng  2.7 Lập trình Socket với
 2.2 Web và HTTP TCP
 2.3 FTP  2.8 Lập trình Socket với
 2.4 Electronic Mail UDP
 SMTP, POP3, IMAP  2.9 Xây dựng Web Server
 2.5 DNS

1-68
2.6 Chia sẻ file P2P
 Alice chọn một peer, Bob

Ví dụ  File được sao chép từ

 Alice chạy ứng dụng máy của Bob tới máy


của Alice: HTTP
P2P client
 Trong khi Alice đang tải,
 Kết nối tới Internet và
người sử dụng khác lấy
nhận một địa chỉ IP mới
dữ liệu đã có trên máy
 Tìm “Hey Jude” Alice
 Ứng dụng các peer  Peer của Alice vừa là
khác có bản sao chép Web client vừa là Web
của Hey Jude không. server.
Mọi peer là server = quy
mô lớn!

1-69
2.6 Chia sẻ file P2P
Thư mục trung tâm
Bob
Thiết kế của “Napster” ban Server thư mục
đầu trung tâm
1
1) Khi peer kết nối, nó thông peers

báo server trung tâm: 1

 Địa chỉ IP
1 3
 Nội dung
2 1
2) Alice yêu cầu “Hey Jude”
3) Alice yêu cầu file từ Bob

Alice

1-70
2.6 Chia sẻ file P2P
Vấn đề của thư mục trung tâm
 Một điểm chịu lỗi Truyền file là không
 Hiệu năng tập trung,
 Xâm phạm bản quyền xác định vị trí nội dung
là không tập chung

1-71
Chương 2: Tầng ứng dụng
 2.1 Nguyên tắc của các  2.6 Chia sẻ file P2P
ứng dụng mạng  2.7 Lập trình Socket với
 2.2 Web và HTTP TCP
 2.3 FTP  2.8 Lập trình Socket với
 2.4 Electronic Mail UDP
 SMTP, POP3, IMAP  2.9 Xây dựng Web Server
 2.5 DNS

1-72
2.7 Lập trình Socket với TCP

Client phải liên lạc với server • Khi nhận được sự liên lạc của
• Tiến trình server phải đang chạy client, server TCP tạo một socket
• Server phải mở socket (cửa) để client mới cho tiến trình server để giao
liên lạc tiếp với client
– Cho phép server nói chuyện
Client liên lạc với server bằng cách: với nhiều client
• Tạo client-local TCP socket – Giá trị source port dùng để
• Gán địa chỉ IP, cổng của tiến trình phân biệt các client (chi tiết
server hơn trong chương sau)
• Khi client tạo socket: client TCP giành
kết nối tới server TCP
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-73
2.7 Lập trình Socket với TCP
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 */
Tạo client socket,
char Sentence[128];
Kết nối tới server
char modifiedSentence[128];

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-74
2.7 Lập trình Socket với TCP
Ví dụ: C client (TCP) (tiếp)
Đọc
input stream gets(Sentence);
từ user

Gửi tới server n=write(clientSocket, Sentence, strlen(Sentence)+1);

n=read(clientSocket, modifiedSentence, sizeof(modifiedSentence)


Đọc từ server

printf(“TỪ SERVER: %s\n”, modifiedSentence);

Đóng close(clientSocket);
kết nối
}
1-75
2.7 Lập trình Socket với TCP
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 */
Tạo một socket chờ tại một cổng
char clientSentence[128]; &
char capitalizedSentence[128]; 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-76
2.7 Lập trình Socket với TCP
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-77
Chương 2: Tầng ứng dụng
 2.1 Nguyên tắc của các  2.6 Chia sẻ file P2P
ứng dụng mạng  2.7 Lập trình Socket với
 2.2 Web và HTTP TCP
 2.3 FTP  2.8 Lập trình Socket với
 2.4 Electronic Mail UDP
 SMTP, POP3, IMAP  2.9 Xây dựng Web Server
 2.5 DNS

1-78
2.8 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 Góc nhìn ứng dụng
• Server phải tìm địa chỉ IP, cổng
UDP cung cấp
của bên gửi trong gói tin đã dịch vụ truyền không tin cậy
nhận một nhóm các byte (“datagrams”)
UDP: dữ liệu đã truyền có thể nhận giữa client và server
không theo thứ tự hoặc bị mất

1-79
2.8 Lập trình Socket với UDP
Tương tác giữa client socket
và server socket: UDP
Server (đang chạy trên hostid) Client
Tạo socket,
Cổng=x, đối với Tạo socket,
clientSocket =
gói tin đến: DatagramSocket()
serverSocket =
DatagramSocket()

Tạo, địa chỉ (hostid, port=x,


Gửi yêu cầu datagram sử dụng clientSocket
Đọc yêu cầu từ
serverSocket

Ghi trả lời ra


serverSocket Đọc trả lời từ
chỉ định địa chỉ host của client clientSocket
và giá trị cổng
Đóng
clientSocket

1-80
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-81
Ví dụ: C client (UDP) (tiếp)
Đọc
input stream gets(Sentence);
từ user

Gửi addr_len =sizeof(struct sockaddr);


tới server n=sendto(clientSocket, Sentence, strlen(Sentence)+1,
(struct sockaddr *) &sad, addr_len);

n=recvfrom(clientSocket, modifiedSentence, sizeof(modifiedSentence).


Đọc (struct sockaddr *) &sad, &addr_len);
từ server

printf(“TỪ SERVER: %s\n”,modifiedSentence);

Đóng close(clientSocket);
kết nối }

1-82
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]; Tạo socket chờ ở cổng


char capitalizedSentence[128]; &
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-83
Ví dụ: C server (UDP) (tiếp)
while(1) { Nhận bản tin từ các client

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-84
Chương 2: Tầng ứng dụng
 2.1 Nguyên tắc của các  2.6 Chia sẻ file P2P
ứng dụng mạng  2.7 Lập trình Socket với
 2.2 Web và HTTP TCP
 2.3 FTP  2.8 Lập trình Socket với
 2.4 Electronic Mail UDP
 SMTP, POP3, IMAP  2.9 Xây dựng Web Server
 2.5 DNS

1-85
Xây dựng một Web server đơn giản

 Điều khiển một yêu cầu  Sau khi tạo server, có


HTTP thể yêu cầu file sử dụng
 Chấp nhận yêu cầu một trình duyệt (ví dụ IE
explorer)
 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:
 header lines + file
 Gửi trả lời cho client

1-86
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  Các giao thức cụ thể:
 Client-Server  HTTP
 P2P  FTP
 Hybrid  SMTP, POP, IMAP
 Các yêu cầu ứng dụng:  DNS
 Tính tin cậy, băng thông, độ trễ
 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-87
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  Bản tin dữ liệu và bản tin điều

cầu/bản tin trả lời: khiển


 in-band, out-of-band
 Client yêu cầu thông tin
hoặc dịch vụ  Tập chung (centralized) và
 Server gửi dữ liệu trả lời, không tập chung
mã trạng thái (decentralized)
 Định dạng bản tin:  Không hướng trạng thái
 Header: Các trường mang
(stateless) và hướng trạng
thái (stateful)
thông tin về Data
 Data: thông tin truyền
 Truyền bản tin kiểu tin cậy
(reliable) và không tin cậy
thông
(unreliable)
 Sự phức tạp tại network edge
1-88

You might also like