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

