Giáo trình Mạng máy tính - 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.5 DNS

‰ 2.6 Chia sẻ file P2P

‰ 2.7 Lập trình Socket với

TCP

‰ ‰ 2.8 L 2.8 Lậ ập trình Socket v p trình Socket vớ ớii

Lập trình Socket với UDP

UD

pdf 98 trang yennguyen 5020
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Mạng máy tính - Chương 2: Tầng ứng dụng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Giáo trình Mạng máy tính - Chương 2: Tầng ứng dụng

Giáo trình Mạng máy tính - Chương 2: Tầng ứng dụng
1-1
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-2
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.5 DNS
‰ 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 2.8 Lập trình Socket với
Lập trình Socket với UDP
UDP
1-3
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-4
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-5
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-6
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.5 DNS
‰ 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
1-7
Các kiến trúc ứng dụng
‰Client-Server
‰ Peer-to-peer (P2P)
‰Hybrid
1-8
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-9
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-10
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-11
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-12
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
Tiến trình
TCP với
buffer,
Biến
socket
host hoặc
server
Tiến trình
TCP với
Buffer, 
biến
socket
host hoặc
server
Internet
Điều khiển
bởi OS
Điều khiển bởi
người lập trình
ứng dụng
‰ 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-13
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-14
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-15
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
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
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
1-16
Yêu cầu của ứng dụng giao vận của một số ứng
dụng
Ứng dụng
Truyền file
E-mail
Web
Real-time audio/video
Stored audio/video
Trò chơi tương tác
Instant messaging
Mất dữ liệu
Không cho phép
Không cho phép
Không cho phép
Cho phép
Cho phép
Cho phép
Không cho phép
Băng thông
Co giãn
Co giãn
Co giãn
Audio: 5kbps-1Mbps
Video:10kbps-5Mbps
Tương tự trên
Yêu cầu kbps
Co giãn
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-17
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-18
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
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)
Giao thức
tầng giao vận
TCP
TCP
TCP
TCP
TCP hoặc UDP
UDP
1-19
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.5 DNS
‰ 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
1-20
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-21
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
Server 
chạy
Apache Web
server
HTTP request
H T T
P r e
q u e
s t
HTTP response
H T T
P r e
s p o
n s e
1-22
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-23
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-24
Nonpersistent HTTP
Giả sử người sử dụng nhập vào URL 
www.someSchool.edu/someDepartment/home.index
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
(chứa text, 
tham chiếu tới 10 
ảnh jpeg)
1-25
Nonpersistent HTTP (cont.)
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
6. Lặp bước 1-5 cho mỗi đối tượng
ảnh jpeg
4. HTTP server đóng kết nối TCP 
time
1-26
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
transmit time
Khởi đầu
kết nối TCP
RTT
file 
yêu cầu
RTT
file 
đã nhận
thời gian thời gian
1-27
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-28
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
GET /somedir/page.html HTTP/1.1
Host: www.someschool.edu
User-agent: Mozilla/4.0
Connection: close 
Accept-language:fr
(CR, LF)
Request line
(lệnh GET, POST, 
HEAD )
header
line
1-29
Bản tin yêu cầu HTTP
1-30
Kiểu Method
HTTP/1.0
‰ GET
‰ POST
‰ HEAD
 Hỏi server bỏ đối tượng
đã yêu cầu ra khỏi trả lời
HTTP/1.1
‰ GET, POST, HEAD
‰ PUT
 đưa file trong phần body 
lên đường dẫn chỉ trong
URL
‰ DELETE
 xóa file trong trường URL
1-31
Bản tin trả lời HTTP
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
status line
(protocol
status code
status phrase)
header
line
dữ liệu, ví dụ:
file HTML đã
yêu cầu
1-32
Mã trạng thái của trả lời HTTP 
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
Trong dòng đầu tiên của trả lời server->client
Ví dụ:
1-33
Thực hành
1. Telnet tới một Web server:
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
telnet cis.poly.edu 80
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-34
Web cache (proxy server)
‰ 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
 Đố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
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
client
Proxy
server
client
HTTP request
H T T
P r e
q u e
s t
HTTP response
H T T
P r e
s p o
n s e
H T T
P r e
q u e s
t
H T T
P r e
s p o n
s e
server
ban đầu
server
ban đầu
1-35
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-36
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-37
Ví dụ caching 
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
Các server
ban đầu
public
Internet
Mạng của
tổ chức 10 Mbps LAN
Đường truyền truy cập
1.5 Mbps 
Institutional
Cache
1-38
Ví dụ caching (tiếp)
Giải pháp có thể
‰ Tăng băng thông của đường truyền
truy cập: 10 Mbps
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
Server 
ban đầu
public
Internet
Mạng của
tổ chức 10 Mbps LAN
Đường truyền
truy cập10 Mbps
institutional
cache
1-39
Ví dụ caching (tiếp)
Cài đặt cache
‰ Hỗ trợ hit rate .4
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
Server 
ban đầu
public
Internet
Mạng của
tổ chức 10 Mbps LAN
Đường truyền
truy cập 1.5 Mbps 
institutional
cache
1-40
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
Cache Server
Bản tin yêu cầu HTTP 
If-modified-since: 
Bản tin trả lời HTTP
HTTP/1.0 
304 Not Modified
Đối tượng
không bị
thay đổi
Bản tin yêu cầu HTTP
If-modified-since: 
Bản tin trả lời HTTP
HTTP/1.0 200 OK
Đối tượng
đã thay đổi
1-41
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.5 DNS
‰ 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
1-42
FTP: File Transfer Protocol
‰ Truyền file tới/từ host ở xa
‰ Mô hình client/server
 client: Phía khởi đầ ... 
1-63
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-64
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-65
host gửi yêu cầu
cis.poly.edu
gaia.cs.umass.edu
Root DNS server
Local DNS server
dns.poly.edu
1
2
3
4
5
6
authoritative DNS server
dns.cs.umass.edu
78
TLD DNS server
Ví dụ
‰ Host tại cis.poly.edu
muốn biết địa chỉ IP 
của
gaia.cs.umass.edu
1-66
requesting host
cis.poly.edu
gaia.cs.umass.edu
root DNS server
local DNS server
dns.poly.edu
1
2
45
6
authoritative DNS server
dns.cs.umass.edu
7
8
TLD DNS server
3
Truy vấn đệ quy
Truy vấn đệ quy:
‰ Giao toàn bộ việc tìm
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ề
tên của server cần liên
lạc tiếp
‰ “Tôi không biết nhưng
anh muốn biết thì đi
hỏi server này”
1-67
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
 
1-68
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)
‰ Type=NS
 name là domain (ví dụ
foo.com)
 value là địa chỉ của
authoritative name server 
cho domain đó
Định dạng RR: (name, value, type, ttl)
‰ Type=A
 name là hostname
 value là địa chỉ IP
‰ 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-69
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-70
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-71
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-72
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.5 DNS
‰ 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
1-73
Chia sẻ file P2P
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.
‰ 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!
1-74
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:
 Địa chỉ IP
 Nội dung
2) Alice yêu cầu “Hey Jude”
3) Alice yêu cầu file từ Bob
Server thư mục
trung tâm
peers
Alice
Bob
1
1
1
12
3
1-75
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-76
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-77
Gnutella: Giao thức
Query
QueryHit
Query
Query
QueryHit
Q u
e r y
Query
Q u
e r y
H i t
Truyền file:
HTTPˆ 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
Ổn định:
giới hạn phạm vi phát tán
1-78
Gnutella: Peer gia nhập
1. 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
2. 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
3. X gửi bản tin Ping tới Y; Y chuyển tiếp bản tin Ping . 
4. Mọi peer nhận được bản tin Ping sẽ trả lời bằng
bản tin Pong
5. 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-79
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-80
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-81
Kazaa
‰Hạn chế số upload đồng thời
‰ Xếp hàng yêu cầu
‰Ưu tiên
‰Download song song
1-82
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.5 DNS
‰ 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
1-83
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)
TCP cung cấp dịch vụ truyền
tin cậy các byte giữa client và server
Góc nhìn ứng dụng
1-84
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]; 
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));
Tạo client socket, 
Kết nối tới server
1-85
Ví dụ: C client (TCP) (tiếp)
gets(Sentence);
n=write(clientSocket, Sentence, strlen(Sentence)+1); 
n=read(clientSocket, modifiedSentence, sizeof(modifiedSentence
printf(“TỪ SERVER: %s\n”, modifiedSentence); 
close(clientSocket); 
}
Đọc
input stream
từ user
Gửi tới server
Đọc từ server
Đóng
kết nối
1-86
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]; 
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));
Tạo một socket chờ tại một cổng
&
Gắn với một địa chỉ cục bộ
1-87
Ví dụ: C server (TCP) (tiếp)
/* Chỉ định số client lớn nhất được xếp hàng */
listen(welcomeSocket, 10)
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
Đợi client liên lạc
1-88
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.5 DNS
‰ 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
1-89
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
UDP: dữ liệu đã truyền có thể nhận
không theo thứ tự hoặc bị mất
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
1-90
Tương tác giữa client socket 
và server socket: UDP
Đóng
clientSocket
Server (đang chạy trên hostid)
Đọc trả lời từ
clientSocket
Tạo socket,
clientSocket = 
DatagramSocket()
Client
Tạo, địa chỉ (hostid, port=x,
Gửi yêu cầu datagram sử dụng clientSocket
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
1-91
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]; 
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); 
Tạo client socket, 
Không kết nối tới server
1-92
Ví dụ: C client (UDP) (tiếp)
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); 
close(clientSocket); 
}
Đọc
input stream
từ user
Gửi
tới server
Đọc
từ server
Đóng
kết nối
1-93
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]; 
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));
Tạo socket chờ ở cổng
&
Gắn với một địa chỉ cục bộ
1-94
Ví dụ: C server (UDP) (tiếp)
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
Nhận bản tin từ các client
1-95
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.5 DNS
‰ 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
1-96
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:
 header lines + file
‰ Gửi trả lời cho client
‰ 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)
1-97
Chương 2: Tổng kết
‰ Các kiến trúc ứng dụng
 Client-Server
 P2P
 Hybrid
‰ Các yêu cầu ứng dụng:
 Tính tin cậy, băng thông, độ
trễ
‰ 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
Nội dung đã học: Ứng dụng mạng
‰ Các giao thức cụ thể:
 HTTP
 FTP
 SMTP, POP, IMAP
 DNS
‰ Lập trình socket 
1-98
Chương 2: Tổng kết
‰ 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
Quan trọng: đã học về các giao thức
‰ 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

File đính kèm:

  • pdfgiao_trinh_mang_may_tinh_chuong_2_tang_ung_dung.pdf