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

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:
 giao_trinh_mang_may_tinh_chuong_2_tang_ung_dung.pdf giao_trinh_mang_may_tinh_chuong_2_tang_ung_dung.pdf



