Professional Documents
Culture Documents
Giới thiệu
Ghi chú
Slides này dựa trên sildes của J.F Kurose and K.W. Ross .
Computer Networking:
A Top Down Approach
Featuring the Internet,
3rd edition.
Jim Kurose, Keith Ross
Addison-Wesley, July
2004.
company
network
Lê Đình Thanh, MMT-Giới thiệu 1-4
Internet là gì: cách nhìn theo thành phần
• Các giao thức điều khiển gửi, router workstation
nhận các thông báo server
– Ví dụ TCP, IP, HTTP, FTP, PPP mobile
• Internet: “mạng của các mạng” local ISP
– Phân cấp lỏng
– Internet công cộng khác mạng
intranet riêng regional ISP
• Các chuẩn Internet
– RFC: Request for comments
– IETF: Internet Engineering Task
Force
company
network
Lê Đình Thanh, MMT-Giới thiệu 1-5
Internet là gì: cách nhìn theo dịch vụ
• Hạ tầng truyền thông cho
phép các ứng dụng phân tán:
– Web, email, games, thương mại
điện tử, chia sẻ tệp, chat, …
• Các dịch vụ truyền thông
được cung cấp cho ứng dụng
– Hướng kết nối, tin cậy
– Phi kết nối, không tin cậy
Các giao thức định nghĩa định dạng, thứ tự các thông báo
được gửi và nhận giữa các thực thể mạng, và hành vi của
các thực thể khi gửi, nhận được thông báo
Chào
Yêu cầu kết
nối TCP
Chào
Đáp ứng kết
Có thời gian không? nối TCP
Get http://www.awl.com/kurose-ross
2:00
<tệp>
thời gian
Tần số
Thời gian
TDM
Tần số
Thời gian
Lê Đình Thanh, MMT-Giới thiệu 1-18
Lõi mạng: Chuyển gói
Mỗi dòng dữ liệu đầu cuối – đầu Cạnh tranh tài nguyên:
cuối được chia thành các gói ❑ Tổng tài nguyên được yêu cầu
(packets) có thể vượt tổng hiện có
❑ Tắc nghẽn: xếp hàng các gói,
• Các gói chia sẻ tài nguyên đợi để sử dụng liên kết
mạng ❑ Lưu và chuyển tiếp: tại mỗi thời
• Mỗi gói sử dụng toàn bộ băng điểm, các gói chuyển một chặng
thông của liên kết Nút nhận toàn bộ gói trước
1.5 Mb/s
B
Hàng đợi các gói
đợi liên kết ra
D E
Dãy các gói của A & B không có mẫu cố định hợp kênh
thống kê.
TrongTDM mỗi nút nhận cùng một khe khi xử lý khung
TDM.
Lê Đình Thanh, MMT-Giới thiệu 1-20
Chuyển gói <> chuyển mạch
Chuyển gói cho phép nhiều người hơn sử dụng mạng!
• Liên kết 1 Mb/s
• Mỗi người dùng:
– 100 kb/s khi “hoạt động”
– Hoạt động 10% thời gian
N
người dùng
• Chuyển mạch: Liên kết
– 10 người dùng 1 Mbps
• Chuyển gói:
– Với 35 người dùng, xác suất
> 10 người dùng hoạt động
nhỏ hơn 0.0004
Circuit-switched Packet-switched
networks networks
cable headend
home
cable distribution
network (simplified)
Lê Đình Thanh, MMT-Giới thiệu 1-31
Kiến trúc mạng cáp: Tổng quan
cable headend
home
cable distribution
network (simplified)
Lê Đình Thanh, MMT-Giới thiệu 1-32
Kiến trúc mạng cáp: Tổng quan
server(s)
cable headend
home
cable distribution
network
Lê Đình Thanh, MMT-Giới thiệu 1-33
Kiến trúc mạng cáp: Tổng quan
FDM:
C
O
V V V V V V N
I I I I I I D D T
D D D D D D A A R
E E E E E E T T O
O O O O O O A A L
1 2 3 4 5 6 7 8 9
Channels
cable headend
home
cable distribution
network
Lê Đình Thanh, MMT-Giới thiệu 1-34
Truy cập từ công sở: local area networks
• Mạng LAN của cơ quan kết nối
hệ thống cuối với bộ định
tuyến biên
• Ethernet:
– Các liên kết được chia sẻ
hoặc dành riêng kết nối hệ
thống cuối và bộ định tuyến
– 10 Mbs, 100Mbps, Gigabit
Ethernet
• LANs: Chương 5
wireless
to/from laptops
cable router/
cable
modem firewall
headend
wireless
access
Ethernet point
Các tier-2
Tier-2 ISP trả Tier-2 ISP ISPs cũng kết
Tier-2 ISP
tiền cho tier-1 nối riêng với
ISP để kết nối Tier 1 ISP nhau, hoặc kết
với phần còn lại NAP nối NAP
của Internet
❑ tier-2 ISP là
khách hàng của Tier 1 ISP Tier 1 ISP Tier-2 ISP
tier-1 ISP
Tier-2 ISP Tier-2 ISP
local
ISP Tier 3 local
local local
ISP ISP
ISP ISP
tier- 3 ISPs là Tier-2 ISP Tier-2 ISP
khách hàng của
tier-2 ISPs Tier 1 ISP
NAP
local
ISP Tier 3 local
local local
ISP ISP
ISP ISP
Tier-2 ISP Tier-2 ISP
Tier 1 ISP
NAP
B
Gói đang xếp hàng (>> trễ)
Vùng đệm còn rỗi: các gói đến bị loại bỏ
(>> mất) nếu không còn vùng đệm rỗi
Lê Đình Thanh, MMT-Giới thiệu 1-48
Bốn nguyên nhân gây trễ
• 1. xử lý ở nút: ❑ 2. xếp hàng
transmission
A
propagation
B
nodal
processing queueing
B
nodal
processing queueing
Lê Đình Thanh, MMT-Giới thiệu 1-50
Tương tự Đoàn xe
100 km 100 km
Đoàn 10 xe Trạm Trạm
soát vé soát vé
• Các xe “lan truyền” với tốc độ • Thời gian để “đẩy” toàn bộ
100 km/hr đoàn xe qua trạm soát vé ra
• Trạm soát vé cần 12 s để đường cao tốc = 12*10 = 120
phục vụ một xe (transmission s
time) • Thời gian để xe cuối đi từ
• xe~bit; đoàn xe ~ gói trạm thứ nhất đến trạm thứ
hai: 100km/(100km/hr)= 1 hr
• H: Cần bao lâu để đoàn xe
đậu trước trạm soát vé thứ • A: 62 phút
hai?
Lê Đình Thanh, MMT-Giới thiệu 1-51
Tương tự Đoàn xe (tiếp)
100 km 100 km
Đoàn Trạm soát vé Trạm soát vé
10 xe
• dproc = trễ xử lý
– Thường vài microsecs hoặc ít hơn
• dqueue = trễ xếp hàng
– Phụ thuộc vào tắc nghẽn
• dtrans = trễ phát
– = L/R, đáng kể với các liên kết tốc độ thấp
• dprop = trễ lan truyền
– Một vài microsecs đến hàng trăm msecs
3 probes 3 probes
3 probes
airplane routing airplane routing airplane routing airplane routing airplane routing
switch
destination Hn Ht M network Hn Ht M
M application Hl Hn Ht M link Hl Hn Ht M
Ht M transport physical
Hn Ht M network
Hl Hn Ht M link router
physical
• 1970: Mạng vệ tinh ALOHAnet ở Các nguyên lý liên mạng của Cerf
Hawaii và Kahn’s:
• 1973: Metcalfe’ đề xuất Ethernet – Tối thiểu hóa, tự trị - không
trong luận án Tiến sỹ yêu cầu thay đổi bên trong
• 1974: Cerf và Kahn – kiến trúc liên mỗi mạng khi kết nối các
mạng mạng với nhau
• late70’s: kiến trúc mạng đặc – Mô hình dịch vụ nỗ lực tối
quyền: DECnet, SNA, XNA đa
• late 70’s: chuyển gói có độ dài cố – Router phi trạng thái
định (ATM precursor) – Điều khiển phi tập trung
• 1979: ARPAnet có 200 nút xác định kiến trúc Internet ngày
nay
Ghi chú
Slides này dựa trên sildes của J.F Kurose and K.W. Ross .
Computer Networking: A
Top Down Approach
Featuring the Internet,
3rd edition.
Jim Kurose, Keith Ross
Addison-Wesley, July 2004.
1
Lê Đình Thanh, MMT-Tầng ứng dụng
Chương 2: Tầng ứng dụng
• 2.1 Các nguyên lý của ứng • 2.6 Chia sẻ tệp ngang hàng
dụng mạng • 2.7 Lập trình socket với TCP
• 2.2 Web và HTTP • 2.8 Lập trình socket với
• 2.3 FTP UDP
• 2.4 Thư điện tử • 2.9 Phát triển một Web
– SMTP, POP3, IMAP server
• 2.5 DNS
2
Lê Đình Thanh, MMT-Tầng ứng dụng
Chương 2: Tầng ứng dụng
Mục đích: • Học các giao thức bằng
• Khái niệm, các khía cạnh việc thực hành các giao
cài đặt của các giao thức thức tầng ứng dụng phổ
tầng ứng dụng biến
– Các mô hình dịch vụ – HTTP
tầng giao vận – FTP
– SMTP / POP3 / IMAP
– Mô hình khách-phục
– DNS
vụ
– Mô hình ngang hàng • Lập trình ứng dụng mạng
– socket API
3
Lê Đình Thanh, MMT-Tầng ứng dụng
Một số ứng dụng mạng
• Thư điện tử • Điện thoại Internet
• Web • Hội nghị trực tuyến
• Tin nhắn nhanh • Tính toán song song hiệu
• Đăng nhập từ xa năng cao
• Chia sẻ tệp ngang hàng
• Trò chơi mạng với nhiều
người chơi
• Truyền video theo dòng
4
Lê Đình Thanh, MMT-Tầng ứng dụng
Tạo một ứng dụng mạng
Viết chương trình application
transport
network
– Chạy ở các hệ thống cuối khác data link
physical
nhau
– Giao tiếp qua mạng.
• Sử dụng dịch vụ tầng giao vận
– TCP, UDP
– vd., Web: Phần mềm Web
server giao tiếp với các trình
duyệt
application
Không có phần mềm được viết application
transport
transport
network
network
cho thiết bị trong lõi mạng data link
data link
physical
physical
– Thiết bị lõi mạng không hoạt
động ở tầng ứng dụng
5
Lê Đình Thanh, MMT-Tầng ứng dụng
Chương 2: Tầng ứng dụng
• 2.1 Các nguyên lý của ứng • 2.6 Chia sẻ tệp ngang hàng
dụng mạng • 2.7 Lập trình socket với TCP
• 2.2 Web và HTTP • 2.8 Lập trình socket với
• 2.3 FTP UDP
• 2.4 Thư điện tử • 2.9 Phát triển một Web
– SMTP, POP3, IMAP server
• 2.5 DNS
6
Lê Đình Thanh, MMT-Tầng ứng dụng
Các kiến trúc ứng dụng
• Khách-phục vụ (Client-server)
• Ngang hàng (Peer-to-peer)
• Lai (client-server và P2P)
7
Lê Đình Thanh, MMT-Tầng ứng dụng
Kiến trúc Client-server
server:
– Đầu cuối luôn chạy
– Địa chỉ IP cố định
– server farms cho tính khả
mở rộng
clients:
– Giao tiếp với server
– Lúc kết nối, lúc không
– Có thể có địa chỉ IP động
– Không giao tiếp với client
khác
8
Lê Đình Thanh, MMT-Tầng ứng dụng
Kiến trúc thuần ngang hàng
• Không có server luôn chạy
• Các hệ thống cuối bất kỳ
giao tiếp trực tiếp với nhau
• Các đầu cuối ngang hàng
(peers) kết nối theo thời
điểm và thay đổi địa chỉ IP
giữa các lần kết nối
• vd: Gnutella
Tính khả mở rộng rất cao
Nhưng khó quản trị
9
Lê Đình Thanh, MMT-Tầng ứng dụng
Lai giữa client-server và P2P
Napster
– Truyền tệp P2P
– Tìm tệp tập trung:
• Peers đăng ký nội dung tại server trung tâm
• Peers truy vấn server trung tâm để định vị nội dung
Tin nhắn nhanh
– Chat giữa hai người dùng là P2P
– Phát hiện sự có mặt (online)/xác định vị trí: tập trung:
• Người dùng đăng ký địa chỉ IP của nó với server trung tâm khi online
• Người dùng liên hệ server trung tâm để tìm địa chỉ IP của bạn chat
10
Lê Đình Thanh, MMT-Tầng ứng dụng
Truyền thông tiến trình
Tiến trình (process): chương Tiến trình khách: tiến trình
trình đang chạy ở một host. khởi tạo truyền thông
• Ở trên cùng host, hai tiến Tiến trình phục vụ: tiến trình
trình truyền thông sử dụng đợi được liên hệ
truyền thông liên tiến trình
(được xác định bởi HĐH).
• Các tiến trình ở các host
khác nhau truyền thông Ghi chú: các ứng dụng với kiến trúc
P2P có cả tiến trình khách và tiến
bằng trao đổi thông báo trình phục vụ
11
Lê Đình Thanh, MMT-Tầng ứng dụng
Sockets
host or host or
• Tiến trình gửi/nhận thông server server
báo với nhau qua socket
Được kiểm soát bởi
• socket tương tự như cửa người phát triển
process process
– Tiến trình gửi chuyển thông
báo ra ngoài cửa socket socket
– Hậ tầng truyền thông bên ngoài TCP with TCP with
buffers, Internet buffers,
cửa chuyển thông báo đến
variables variables
trước cửa của tiến trình nhận
API: (1) lựa chọn giao thức giao vận; (2) xác định một số tham số
12
Lê Đình Thanh, MMT-Tầng ứng dụng
Địa chỉ của tiến trình
• Để một tiến trình nhận • Định danh tiến trình bao
được thông báo, nó phải gồm cả địa chỉ IP và số
có một định danh hiệu cổng tương ứng với
• Một host có một địa chỉ IP tiến trình.
duy nhất • Ví dụ số hiệu cổng:
• H: Địa chỉ IP của host mà – HTTP server: 80
tiến trình đang chạy có thể – Mail server: 25
làm định danh tiến trình?
• TL: Không, nhiều tiến trình
có thể cùng chạy trên cùng
host
13
Lê Đình Thanh, MMT-Tầng ứng dụng
Giao thức tầng ứng dụng định nghĩa
• Các loại thông báo được trao Giao thức công cộng:
đổi giữa các tiến trình ứng • Được định nghĩa trong RFCs
dụng • Cho phép liên tác
– Cú pháp/định dạng/cấu trúc
của các thông báo: dãy các • vd, HTTP, SMTP
trường (thông tin) Giao thức đặc quyền:
– Ngữ nghĩa của các trường = • vd, KaZaA
nghĩa của thông tin trong các
trường
• Các luật xử lý (khi nào và
như thế nào) gửi/nhận
thông báo
14
Lê Đình Thanh, MMT-Tầng ứng dụng
Một ứng dụng cần dịch vụ giao vận nào?
Mất dữ liệu Băng thông
Một số ứng dụng (vd., multimedia)
• Một số ứng dụng (vd., audio) yêu cầu băng thông tối thiểu để có
có thể thứ một số gói mất “hiệu lực”
• Các ứng dụng khác (vd., Các ứng dụng khác tận dụng mọi
truyền tệp, telnet) yêu cầu băng thông chúng nhận
Định thời
• Một số ứng dụng (vd.,
điện thoại Internet, trò
chơi có tương tác) yêu
cầu trễ thấp để có “hiệu
lực”
15
Lê Đình Thanh, MMT-Tầng ứng dụng
Yêu cầu dịch vụ giao vận của một số ứng dụng phổ biến
16
Lê Đình Thanh, MMT-Tầng ứng dụng
Các dịch vụ giao vận Internet
TCP: UDP:
• Hướng kết nối: cần có thiết lập kết • Truyền không tin cậy giữa tiến
nối giữa các tiền trình truyền trình gửi và tiến trình nhận
thông với nhau • Không cung cấp: thiết lập kết
• Giao vận tin cậy giữa tiến trình gửi nối, điều khiển luồng, kiểm
và tiến trình nhận soát tắc nghẽn, định thời,
• Điều khiển luồng: tiến trình gửi hoặc đảm bảo băng thông
không gửi quá khả năng nhận của
tiến trình nhận H: Tại sao lại có UDP?
• Điều khiển tắc nghẽn: giảm tốc độ
gửi khi mạng quá tải
• Không cung cấp: định thời, đảm
bảo băng thông tối thiểu
17
Lê Đình Thanh, MMT-Tầng ứng dụng
Các ứng dụng Internet: giao thức tầng ứng dụng và giao
thức giao vận được sử dụng
Giao thức tầng Giao thức giao vận
Ứng dụng ứng dụng được sử dụng
18
Lê Đình Thanh, MMT-Tầng ứng dụng
Chương 2: Tầng ứng dụng
• 2.1 Các nguyên lý của ứng • 2.6 Chia sẻ tệp ngang hàng
dụng mạng • 2.7 Lập trình socket với TCP
• 2.2 Web và HTTP • 2.8 Lập trình socket với
• 2.3 FTP UDP
• 2.4 Thư điện tử • 2.9 Phát triển một Web
– SMTP, POP3, IMAP server
• 2.5 DNS
19
Lê Đình Thanh, MMT-Tầng ứng dụng
Web và HTTP
Một số thuật ngữ ban đầu
• Trang web bao gồm các đối tượng
• Đối tượng có thể là tệp HTML, JPEG image, Java applet, audio
file,…
• Trang web bao gồm tệp HTML chứa tham chiếu các các đối
tượng
• Mỗi đối tượng có thể đánh địa chỉ bằng một URL
• Vd. URL:
www.someschool.edu/someDept/pic.gif
20
Lê Đình Thanh, MMT-Tầng ứng dụng
Tổng quan HTTP
HTTP: hypertext transfer
protocol
• Giao thức tầng ứng dụng cho PC running
Web Explorer
• 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 Web Server
– server: Web server gửi các đối running
Apache Web
tượng web trong các đáp ứng
server
yêu cầu
• HTTP 1.0: RFC 1945
Mac running
• HTTP 1.1: RFC 2068 Navigator
21
Lê Đình Thanh, MMT-Tầng ứng dụng
Tổng quan HTTP (tiếp)
Sử dụng TCP: HTTP là “phi trạng thái”
• HTTP client/trình duyệt khởi tạo • server không duy trì
kết nối TCP (tạo socket) đến thông tin các yêu cầu
HTTP/Web server trước
• Server chấp nhận kết nối TCP của
Bên lề
client Giao thức duy trì trạng thái phức
• Các thông báo HTTP được trao tạp!
đổi giữa trình duyệt và server Phải lưu lịch sử (trạng thái)
• Kết nối TCP được đóng Nếu server/client treo, cái nhìn
về “trạng thái” của hai tiến
trình sẽ không nhất quán
22
Lê Đình Thanh, MMT-Tầng ứng dụng
Kết nối HTTP
Không liên tục Liên tục
• Nhiều nhất một đối tượng • Nhiều đối tượng có thể
được gửi trong một kết nối được gửi trong một kết nối
TCP. TCP.
• HTTP/1.0 sử dụng kết nối • HTTP/1.1 sử dụng kết nối
không liên tục HTTP liên tục ở chế độ mặc định
23
Lê Đình Thanh, MMT-Tầng ứng dụng
HTTP không liên tục
Giử sử người dùng nhập URL www.someSchool.edu/someDepartment/home.index (chứa text,
tham chiếu đến
10 ảnh jpeg)
time
24
Lê Đình Thanh, MMT-Tầng ứng dụng
HTTP không liên tục (tiếp)
time
6. Các bước 1-5 được lặp lại cho mỗi
đối tượng ảnh
25
Lê Đình Thanh, MMT-Tầng ứng dụng
Mô hình hóa thời gian đáp ứng
Thời gian quay vòng - RTT: thời
gian để gửi một gói nhỏ từ
client đến server rồi quay
ngược lại từ server đến client. initiate TCP
Thời gian đáp ứng: connection
RTT
• Một RTT để thiết lập kết nối
request
TCP file
• Một RTT để gửi HTTP request RTT
time to
transmit
và nhận một số bytes đầu tiên file
file
của HTTP response received
• Thời gian truyền tệp
total = 2RTT+transmit time time time
26
Lê Đình Thanh, MMT-Tầng ứng dụng
HTTP liên tục
Hạn chế của HTTP không liên tục: Liên tục không đường ống:
• Yêu cầu 2 RTTs / đối tượng • client gửi yêu cầu tiếp theo khi
• HĐH phải làm việc và cấp tài đã nhận được response cho
nguyên cho mỗi kết nối TCP yêu cầu trước
• nhưng các trình duyệt thường • Một RTT/ đối tượng tham chiếu
mở nhiều kết nối TCP song song Liên tục với đường ống:
để yêu cầu các đối tượng tham • Mặc định ở HTTP/1.1
chiếu • client gửi các yêu cầu ngay khi
HTTP liên tục nó bắt gặp đối tượng tham
• server để kết nối mở sau khi gửi chiếu
response • Có thể chỉ cần một RTT cho tất
• Các thông báo HTTP tiếp sau cả các đối tượng tham chiếu
được gửi qua kết nối
27
Lê Đình Thanh, MMT-Tầng ứng dụng
HTTP request
request line
(GET, POST, GET /somedir/page.html HTTP/1.1
HEAD commands) Host: www.someschool.edu
User-agent: Mozilla/4.0
header Connection: close
lines Accept-language:fr
29
Lê Đình Thanh, MMT-Tầng ứng dụng
Upload dữ liệu form
Phương thức Post:
• Web page thường bao gồm
form nhập Phương thức GET:
• Dữ liệu được đẩy lên server • Dữ liệu được đẩy lên theo
trong thân của HTTP URL:
request
www.somesite.com/animalsearch?monkeys&banana
30
Lê Đình Thanh, MMT-Tầng ứng dụng
Phương thức
HTTP/1.0 HTTP/1.1
• GET • GET, POST, HEAD
• POST • PUT
• HEAD – Đẩy tệp trong thân lên thư
mục được xác định bởi URL
– Yêu cầu server bỏ qua đối
tượng được yêu cầu • DELETE
– Xóa tệp được xác định bởi
URL
31
Lê Đình Thanh, MMT-Tầng ứng dụng
HTTP response
Dòng trạng thái
(giao thức
Mã trạng thái HTTP/1.1 200 OK
Mô tả trạng thái) Connection close
Date: Thu, 06 Aug 1998 12:00:15 GMT
Server: Apache/1.3.0 (Unix)
Các dòng tiêu đề
Last-Modified: Mon, 22 Jun 1998 …...
Content-Length: 6821
Content-Type: text/html
32
Lê Đình Thanh, MMT-Tầng ứng dụng
Các mã trạng thái HTTP response
Dòng đầu tiên của HTTP response.
Một số ví dụ mã trạng thái:
200 OK
– Yêu cầu thành công, đối tượng được yêu cầu chứa ở phần sau của
thông báo
301 Moved Permanently
– Đối tượng được yêu cầu đã bị chuyển, thư mục mới của đối tượng
được xác định phía sau (Location:)
400 Bad Request
– Không hiểu yêu cầu
404 Not Found
– Không tìm thấy đối tượng được yêu cầu
505 HTTP Version Not Supported 33
Lê Đình Thanh, MMT-Tầng ứng dụng
Thử HTTP phía client
GET /~ross/ HTTP/1.1 Bằng việc nhập nội dung này (hai dấu
Host: cis.poly.edu xuống dòng), bạn gửi yêu cầu
GET request tối thiểu
đến HTTP server
34
Lê Đình Thanh, MMT-Tầng ứng dụng
Trạng thái người dùng-server:
cookies
Nhiều trình duyệt sử dụng Ví dụ:
cookies – Susan luôn truy cập Internet
Bốn thành phần: trên cùng một PC
– Cô vào một trang thương mại
1) Dòng tiêu đề cookie trong
điện tử lần đầu
HTTP response
– Khi các HTTP requests đến
2) Dòng tiêu đề cookie trong
site, site tạo một định danh
HTTP request
duy nhất và tạo một phần tử
3) Tệp cookie được lưu trên máy trong CSDL trên server cho
người dùng và quản trị bởi định danh này
trình duyệt
4) CSDL ở phía server
35
Lê Đình Thanh, MMT-Tầng ứng dụng
Cookies: lưu “trạng thái” (tiếp)
client server
Cookie file
usual http request msg
amazon: 1678 cookie: 1678 cookie-
ebay: 8734 specific
usual http response msg action
one week later:
36
Lê Đình Thanh, MMT-Tầng ứng dụng
Cookies (tiếp)
Bên lề
Cookies và tính riêngtư:
cookies có thể mang: cookies cho sites biết thông tin về
• Xác thực NSD
NSD có thể cung cấp e-mail cho
• Giỏ hàng sites
• Khuyến cáo Các máy tìm kiếm sử dụng chuyển
hướng và & cookies để thu thập
• Trạng thái phiên của thông tin
người dùng (Web e-mail) Các công ty quảng cáo nhận thông
tin từ các sites
37
Lê Đình Thanh, MMT-Tầng ứng dụng
Web caches (proxy server)
Mục đích: đáp ứng yêu cầu của client mà không cần server gốc làm
việc
• Trình duyệt gửi HTTP đến origin
cache server
client
origin
server
38
Lê Đình Thanh, MMT-Tầng ứng dụng
Web caching (tiếp)
• Cache đóng vai trò cả client và Tại sao Web caching?
server • Giảm thời gian đáp ứng đến yêu
• Thường cache được cài đặt bởi cầu của client.
ISP (trường ĐH, công ty, ISP địa • Giảm lưu lượng trên các liên kết
phương) bên trong tổ chức.
• Internet với nhiều caches cho
phép các nhà cung cấp nội dung
chuyển tải nội dung hiệu quả
39
Lê Đình Thanh, MMT-Tầng ứng dụng
Ví dụ Caching
origin
Giả thiết
servers
• Kích thước trung bình các đối
tượng = 100,000 bits public
Internet
• Trung bình tần suất yêu cầu từ các
trình duyệt bên trong tổ chức đến
server gốc = 15/sec
1.5 Mbps
• Trễ vòng từ router của tổ chức đến
access link
server gốc = 2 sec
institutional
Hệ quả network
10 Mbps LAN
• Sử dụng LAN = 15%
• Sử dụng access link = 100%
• Tổng trễ = trễ Internet + trễ truy cập
+ trễ LAN institutional
= 2 sec + minutes + milliseconds cache
40
Lê Đình Thanh, MMT-Tầng ứng dụng
Ví dụ Caching (tiếp)
origin
Giải pháp có thể
servers
• Tăng băng thông của access link, ví
dụ lên 10 Mbps public
Internet
Hệ quả
• Sử dụng LAN = 15%
• Sử dụng access link = 15%
10 Mbps
• Tổng trễ = trễ Internet + trễ truy cập + access link
trễ LAN
institutional
= 2 sec + msecs + msecs
network
• Thường tốn kém để nâng cấp 10 Mbps LAN
institutional
cache
41
Lê Đình Thanh, MMT-Tầng ứng dụng
Ví dụ Caching (tiếp)
origin
Cài đặt cache servers
• Giả sử tần suất tìm thấy là .4 public
Hệ quả Internet
• 40% yêu cầu được đáp ứng ngay
lập tức
• 60% yêu cầu được đáp ứng bởi
server gốc 1.5 Mbps
access link
• Sử dụng access link còn 60%,
giảm được trễ (10 msec) institutional
• Tổng trễ = trễ Internet + trễ truy network
10 Mbps LAN
cập + trễ LAN = .6*(2.01) secs +
milliseconds < 1.4 secs
institutional
cache
42
Lê Đình Thanh, MMT-Tầng ứng dụng
GET có điều kiện
cache server
• Mục đích: không gửi đối tượng
nếu cache đang có phiên bản cập HTTP request msg
nhật If-modified-since:
<date> object
• cache: đưa thông tin thời điểm not
cập nhật cuối của bản copy trên modified
cache vào HTTP request HTTP response
HTTP/1.0
If-modified-since: 304 Not Modified
<date>
• server: response không chứa đối
HTTP request msg
tượng nếu bản copy trên cache là If-modified-since:
cập nhật: <date> object
HTTP/1.0 304 Not modified
Modified HTTP response
HTTP/1.0 200 OK
<data>
43
Lê Đình Thanh, MMT-Tầng ứng dụng
Chương 2: Tầng ứng dụng
• 2.1 Các nguyên lý của ứng • 2.6 Chia sẻ tệp ngang hàng
dụng mạng • 2.7 Lập trình socket với TCP
• 2.2 Web và HTTP • 2.8 Lập trình socket với
• 2.3 FTP UDP
• 2.4 Thư điện tử • 2.9 Phát triển một Web
– SMTP, POP3, IMAP server
• 2.5 DNS
44
Lê Đình Thanh, MMT-Tầng ứng dụng
FTP: file transfer protocol
45
Lê Đình Thanh, MMT-Tầng ứng dụng
FTP: phân biệt hai kết nối điều khiển/dữ liệu
TCP control connection
• FTP client liên lạc FTP server ở port 21
cổng 21, sử dụng TCP ở tầng giao
vận
TCP data connection
• Client xác nhận xác thực trên kết FTP port 20 FTP
nối điều khiển client server
• Client gửi lệnh qua kết nối điều
khiển. Server mở kết nối TCP thứ hai để
truyền tệp thứ hai.
• Khi nhận được lệnh chuyển tệp,
Kết nối điều khiển: “out of band”
server mở kết nối TCP trên cổng
FTP server duy trì “trạng thái”:
20 đến client để truyền tệp
thư mục hiện tại, xác thực trước
• Sau khi truyền xong một tệp, đây
server đóng kết nối dữ liệu.
46
Lê Đình Thanh, MMT-Tầng ứng dụng
Lệnh FTP, đáp ứng
Ví dụ lệnh: Ví dụ mã trả về
• Được gửi văn bản mã ASCII qua • Mã trạng thái và diễn giải
kênh điều khiển • 331 Username OK,
• USER username password required
• PASS password • 125 data connection
already open; transfer
• LIST trả về danh sách tệp trong
starting
thư mục hiện tại
• 425 Can’t open data
• RETR filename nhận tệp connection
• STOR filename lưu (đẩy) tệp • 452 Error writing file
lên máy ở xa
47
Lê Đình Thanh, MMT-Tầng ứng dụng
Chương 2: Tầng ứng dụng
• 2.1 Các nguyên lý của ứng • 2.6 Chia sẻ tệp ngang hàng
dụng mạng • 2.7 Lập trình socket với TCP
• 2.2 Web và HTTP • 2.8 Lập trình socket với
• 2.3 FTP UDP
• 2.4 Thư điện tử • 2.9 Phát triển một Web
– SMTP, POP3, IMAP server
• 2.5 DNS
48
Lê Đình Thanh, MMT-Tầng ứng dụng
outgoing
Thư điện tử message queue
user mailbox
user
Ba thành phần chính: agent
• user agents mail
user
server
• mail servers agent
• simple mail transfer protocol: SMTP
mail
SMTP server user
SMTP agent
User Agent
• “mail reader” SMTP
mail user
• Biên soạn, gửi, nhận và đọc mail agent
server
• vd., Eudora, Outlook, elm,
Netscape Messenger user
agent
• Thư được lưu trên server
user
agent
49
Lê Đình Thanh, MMT-Tầng ứng dụng
Mail servers
user
Mail Servers agent
• mailbox chứa thư của người mail
user
dùng server
agent
• message queue chứa các thư SMTP
chuẩn bị gửi mail
server user
• Giao thức SMTP giữa các mail SMTP agent
servers để chuyển thư
– client: mail server gửi SMTP
user
– “server”: mail server nhận mail
agent
server
user
agent
user
agent
50
Lê Đình Thanh, MMT-Tầng ứng dụng
E-Mail: SMTP [RFC 2821]
• Sử dụng TCP để truyền email tin cậy từ client đến server, cổng 25
• Truyền trực tiếp: từ server gửi đến server nhận
• ba pha truyền
– Bắt tay (chào hỏi)
– Truyền thư
– Đóng
• Tương tác command/response
– commands: ASCII text
– response: mã và miêu tả trạng thái
• Thư phải ở dạng 7-bit ASCII
51
Lê Đình Thanh, MMT-Tầng ứng dụng
Kịch bản: Alice gửi thư cho Bob
1) Alice sử dụng UA để soạn thư 4) SMTP client gửi thư của Alice’s
với “to” qua kết nối TCP
bob@someschool.edu 5) Mail server của Bob lưu thư
2) UA của Alice gửi thư đến mail trong mailbox của Bob
server của cô ta; thư được lưu 6) Bob chạy UA của anh ta và đọc
ở message queue thư
3) SMTP client của trên mail server
của Alice 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
52
Lê Đình Thanh, MMT-Tầng ứng dụng
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
53
Lê Đình Thanh, MMT-Tầng ứng dụng
Ví dụ khác
54
Lê Đình Thanh, MMT-Tầng ứng dụng
Tự thử tương tác SMTP:
• telnet servername 25
• Xem trả lời 220 từ server
• Nhập các lệnh HELO, MAIL FROM, RCPT TO, DATA, QUIT
55
Lê Đình Thanh, MMT-Tầng ứng dụng
SMTP
• SMTP sử dụng kết nối bền vững So sánh với HTTP:
• SMTP yêu cầu thư (header &
• HTTP: kéo (pull)
body) ở dạng 7-bit ASCII
• SMTP: đẩy (push)
• SMTP server sử dụng
CRLF.CRLF để xác định kết thúc • Cả hai đều có tương tác
thư command/response với mã ASCII,
các mã trạng thái
56
Lê Đình Thanh, MMT-Tầng ứng dụng
Định dạng thư
SMTP: giao thức dùng cho trao đổi
email header
dòng
RFC 822: chuẩn cho format thông
trắng
báo bằng văn bản:
• Các dòng tiêu đề, vd.
– To: body
– From:
– Subject:
khác các lệnh SMTP!
• Thân
– “thông báo”, chỉ bao gồm các ký
tự ASCII
57
Lê Đình Thanh, MMT-Tầng ứng dụng
Định dạng thư: các mở rộng multimedia
• MIME: multimedia mail extension, RFC 2045, 2056
• Các dòng được thêm vào tiêu đề thư khai báo các dạng nội dung
MIME
From: alice@crepes.fr
MIME version To: bob@hamburger.edu
Subject: Picture of yummy crepe.
Phương thức được dùng MIME-Version: 1.0
để mã hóa dữ liệu Content-Transfer-Encoding: base64
Content-Type: image/jpeg
Khai báo các dạng
dữ liệu đa phương tiện base64 encoded data .....
.........................
......base64 encoded data
Dữ liệu được mã hóa
59
Lê Đình Thanh, MMT-Tầng ứng dụng
POP3 protocol
S: +OK POP3 server ready
C: user bob
Pha xác thực S: +OK
C: pass hungry
• Lệnh từ client: S: +OK user successfully logged on
– user: username C: list
– pass: password S: 1 498
S: 2 912
• Đáp ứng của server
S: .
– +OK C: retr 1
– -ERR S: <message 1 contents>
S: .
Pha giao dịch, client: C: dele 1
• list: liệt kê các số hiệu thư C: retr 2
• retr: nhận thư theo số hiệu S: <message 1 contents>
S: .
• dele: delete C: dele 2
• quit C: quit
S: +OK POP3 server signing off
60
Lê Đình Thanh, MMT-Tầng ứng dụng
POP3 (tiếp) và IMAP
Tiếp về POP3 IMAP
• Ví dụ trước sử dụng chế • Giữ mọi thư trên server
độ “download and • Cho phép người dùng sắp
delete”. xếp thư theo thư mục
• Bob không thể đọc lại e- • IMAP giữ trạng thái người
mail nếu anh ta thay đổi dùng qua các phiên:
client – Tên của các thư mục và ánh
• “Download-and-keep”: xạ giữa định danh thư và
bản sao của thư được lưu tên thư mục
ở các client khác nhau
• POP3 phi trạng thái
61
Lê Đình Thanh, MMT-Tầng ứng dụng
Chương 2: Tầng ứng dụng
• 2.1 Các nguyên lý của ứng • 2.6 Chia sẻ tệp ngang hàng
dụng mạng • 2.7 Lập trình socket với TCP
• 2.2 Web và HTTP • 2.8 Lập trình socket với
• 2.3 FTP UDP
• 2.4 Thư điện tử • 2.9 Phát triển một Web
– SMTP, POP3, IMAP server
• 2.5 DNS
62
Lê Đình Thanh, MMT-Tầng ứng dụng
DNS: Hệ thống tên miền
63
Lê Đình Thanh, MMT-Tầng ứng dụng
DNS
Các dịch vụ DNS Tại sao không tập trung DNS?
• Dịch từ Hostname sang IP • Một điểm lỗi
• Đặt bí danh cho Host • Lưu lượng
– Tên gốc và các bí danh • CSDL tập trung ở xa
• Đặt bí danh cho Mail • Bảo trì
server
• Phân tải Không khả mở rộng!
– Các Web servers nhân bản:
tập địa chỉ IP cho một tên
gốc
64
Lê Đình Thanh, MMT-Tầng ứng dụng
CSDL phân cấp, phân tán
Root DNS Servers
65
Lê Đình Thanh, MMT-Tầng ứng dụng
DNS: Root name servers
• Được liên lạc bởi name server địa phương nếu name server không biết địa
chỉ IP tương ứng tên
• root name server:
– Liên lạc name server có thẩm quyền nếu không biết ánh xạ tên
– Lấy ánh xạ tên
– Trả ánh xạ tên cho name server địa phương
a Verisign, Dulles, VA
c Cogent, Herndon, VA (also Los Angeles)
d U Maryland College Park, MD
k RIPE London (also Amsterdam,
g US DoD Vienna, VA
Frankfurt) Stockholm (plus 3
i Autonomica,
h ARL Aberdeen, MD
j Verisign, ( 11 locations) other locations)
m WIDE Tokyo
e NASA Mt View, CA
f Internet Software C. Palo Alto,
CA (and 17 other locations)
13 root name servers
worldwide
b USC-ISI Marina del Rey, CA
l ICANN Los Angeles, CA
66
Lê Đình Thanh, MMT-Tầng ứng dụng
TLD Server và Servers thẩm quyền
• Top-level domain (TLD) servers: chịu trách
nhiệm cho com, org, net, edu, …, và tất cả các
tên miền cấp một các quốc gia như uk, fr, ca,
jp.
– Network solutions duy trì các servers cho com
TLD
– Educause duy trì các servers cho edu TLD
• DNS servers thẩm quyền: là DNS servers của
các tổ chức, cung cấp ánh xạ tên miền sang
địa chỉ IP cho các servers của tổ chức (vd.,
Web mail). 67
Lê Đình Thanh, MMT-Tầng ứng dụng
Local Name Server
• Không nhất thiết phải thuộc hệ thống phân
cấp
• Mỗi ISP (ISP địa phương, công ty, trường học)
có một LNS.
– Còn được gọi là “default name server”
• Khi một host tạo một truy vấn DNS, truy vấn
được gửi đến DNS địa phương
– Hoạt động như một proxy, chuyển truy vấn đến hệ
thống phân cấp.
68
Lê Đình Thanh, MMT-Tầng ứng dụng
root DNS server
Ví dụ
2
• Host ở cis.poly.edu cần 3
TLD DNS server
địa chỉ IP của 4
gaia.cs.umass.edu
5
gaia.cs.umass.edu
69
Lê Đình Thanh, MMT-Tầng ứng dụng
Ví dụ
70
Lê Đình Thanh, MMT-Tầng ứng dụng
Truy vấn đệ quy
root DNS server
gaia.cs.umass.edu
71
Lê Đình Thanh, MMT-Tầng ứng dụng
DNS: lưu đệm và cập nhật bản ghi
• Một khi name server học được ánh xạ, nó lưu đệm ánh
xạ
– Các phần tử trong cache được đặt timeout
– TLD servers thường được lưu đệm tại các local name
servers
• Do vậy root name servers không thường xuyên được thăm
• Cơ chế cập nhật/thông báo được thiết kế bởi IETF
– RFC 2136
– http://www.ietf.org/html.charters/dnsind-charter.html
72
Lê Đình Thanh, MMT-Tầng ứng dụng
Các bản ghi DNS
DNS: CSDL phân tán lưu trữ các bản ghi tài nguyên (RR)
RR format: (name, value, type, ttl)
Type=A Type=CNAME
name là hostname name là bí danh cho tên thực
value là IP address www.ibm.com thực tế là
servereast.backup2.ibm.com
• Type=NS value là tên thực
– name là domain (vd.
foo.com)
– value là IP address của Type=MX
name server thẩm quyền cho value là tên mailserver tương
domain ứng với name
73
Lê Đình Thanh, MMT-Tầng ứng dụng
Giao thức DNS
DNS protocol : query và reply có cùng format
74
Lê Đình Thanh, MMT-Tầng ứng dụng
Giao thức DNS
75
Lê Đình Thanh, MMT-Tầng ứng dụng
Chèn bản ghi vào DNS
• Ví dụ: Khởi động “Network Utopia”
• Đăng ký tên networkuptopia.com tại registrar (vd., Network
Solutions)
– Cần cung cấp cho registrar tên và địa chỉ IP addresses của name
server thẩm quyền (chính và thứ cấp)
– Registrar chèn hai RRs vào com TLD server:
76
Lê Đình Thanh, MMT-Tầng ứng dụng
Chương 2: Tầng ứng dụng
• 2.1 Các nguyên lý của ứng • 2.6 Chia sẻ tệp ngang hàng
dụng mạng • 2.7 Lập trình socket với TCP
• 2.2 Web và HTTP • 2.8 Lập trình socket với
• 2.3 FTP UDP
• 2.4 Thư điện tử • 2.9 Phát triển một Web
– SMTP, POP3, IMAP server
• 2.5 DNS
77
Lê Đình Thanh, MMT-Tầng ứng dụng
Chia sẻ tệp ngang hàng
• Alice chọn một trong các
Ví dụ peers, Bob.
• Alice chạy ứng dụng P2P • Tệp được copy từ máy của
client trên notebook của cô Bob đến notebook của
Alice: HTTP
• Kết nối Internet không liên
tục; nhận địa chỉ IP mới với • Trong khi Alice
mỗi kết nối downloads, người dùng
khác upload từ máy của
• Yêu cầu “Hey Jude”
Alice.
• Ứng dụng hiển thị các peers
• Máy của Alice vừa là HTTP
có bản sao của Hey Jude.
client vừa là HTTP server.
Mọi peers là servers = khả
mở rộng cao!
78
Lê Đình Thanh, MMT-Tầng ứng dụng
P2P: thư mục tập trung
Bob
Thiết kế “Napster” ban đầu centralized
directory server
1) Khi peer kết nối, nó thông 1
báo server trung tâm: peers
– Địa chỉ IP 1
Alice
79
Lê Đình Thanh, MMT-Tầng ứng dụng
P2P: vấn đề với thư mục tập trung
80
Lê Đình Thanh, MMT-Tầng ứng dụng
Phát tràn truy vấn: Gnutella
• Hoàn toàn phân tán Mạng chồng: đồ thị
– Không có server trung tâm • Cạnh giữa X và Y nếu có kết
• Giao thức được công bố nối TCP giữa hai peers
công cộng • Tất cả peers đang hoạt động
• Nhiều Gnutella clients cài và các cạnh tạo thành mạng
đặt giao thức overlay net
• Cạnh không phải là một liên
kết vật lý
• Một peer thường kết nối
với < 10 láng giềng
81
Lê Đình Thanh, MMT-Tầng ứng dụng
Gnutella: giao thức
File transfer:
Truy vấn được gửi
HTTP
qua các kết nối
TCP hiện tại
peers chuyển tiếp
truy vấn Query
QueryHit QueryHit
được gửi ngược
trên đường
đi
Query
QueryHit
82
Lê Đình Thanh, MMT-Tầng ứng dụng
Gnutella: Peer tham gia mạng
1. Peer X muốn tham gia mạng phải tìm được peer khác trong
mạng Gnutella: sử dụng danh sách các peer ứng viên
2. X lần lượt thử kết nối TCP với các peers trong danh sách cho
đến khi tìm được peer Y kết nối được
3. X gửi thông báo Ping đến Y; Y chuyển tiếp Ping.
4. Tất cả các peers nhận được Ping trả lời bằng thông báo Pong
5. X nhận được nhiều thông báo trả lời Pong. Sau đó, nó có thể
tìm kết nối TCP khác
Peer rời mạng: bài tập
83
Lê Đình Thanh, MMT-Tầng ứng dụng
Khai thác sự hỗn tạp: KaZaA
group-leader peer
neighoring relationships
in overlay network
84
Lê Đình Thanh, MMT-Tầng ứng dụng
KaZaA: Truy vấn
• Mỗi tệp có một giá trị băm và một miêu tả
• Client gửi từ khóa truy vấn đến trưởng nhóm
của nó
• Trưởng nhóm trả lời bằng các bộ:
– Mỗi bộ: metadata, hash, IP address
• Nếu trưởng nhóm chuyến tiếp truy vấn đến
các trưởng nhóm khác, các trưởng nhóm khác
trả lời bằng các bộ
• Client chọn tệp download
– HTTP requests sử dụng hash làm định danh được
85
gửi đến peer có tệp cần download
Lê Đình Thanh, MMT-Tầng ứng dụng
Thủ thuật cho KazaA
• Hạn chế trong các upload đồng thời
• Xếp hàng request
• Sử dụng ưu tiên
• Download song song
86
Lê Đình Thanh, MMT-Tầng ứng dụng
Chương 2: Tầng ứng dụng
• 2.1 Các nguyên lý của ứng • 2.6 Chia sẻ tệp ngang hàng
dụng mạng • 2.7 Lập trình socket với TCP
• 2.2 Web và HTTP • 2.8 Lập trình socket với
• 2.3 FTP UDP
• 2.4 Thư điện tử • 2.9 Phát triển một Web
– SMTP, POP3, IMAP server
• 2.5 DNS
87
Lê Đình Thanh, MMT-Tầng ứng dụng
Lập trình Socket
Mục đích: học cách phát triển ứng dụng client/server sử dụng sockets
88
Lê Đình Thanh, MMT-Tầng ứng dụng
LT Socket sử dụng TCP
Socket: Một cửa giữa tiến trình ứng dụng và giao thức giao
thức giao vận (UCP hoặc TCP)
Dịch vụ TCP : truyền tin cậy dãy các bytes từ một tiến trình
đến tiến trình khác
Host/ Host/
server server
89
Lê Đình Thanh, MMT-Tầng ứng dụng
LT Socket với TCP
Client phải liên lạc server • Khi được kết nối bởi client,
• Tiến trình server phải chạy server TCP tạo socket mới để
trước server giao tiếp với client
• Server phải tạo một socket – Cho phép server có thể nói
(cửa) chào đón client kết nối chuyện với nhiều clients
tới – source port được sử dụng để
Client kết nối server bằng: phân biệt (chi tiết ở Chương
3)
• Tạo TCP socket trên client
• Xác định socket của server
• Khi client tạo socket: client TCP góc nhìn ứng dụng
thiết lập kết nối đến server TCP
TCP cung cấp dịch vụ truyền
dãy bytes đến đích
đúng thứ tự và tin cậy
90
Lê Đình Thanh, MMT-Tầng ứng dụng
Thuật ngữ Stream
• Một dòng là một dãy ký tự chạy
ra/vào một tiến trình.
• Một dòng vào được đính vào một
nguồn vào của tiến trình như bàn
phím, tệp hoặc socket.
• Một dòng ra được gắn vào một
đích ra như màn hình, tệp,
socket.
91
Lê Đình Thanh, MMT-Tầng ứng dụng
LT Socket với TCP
keyboard monitor
Ví dụ ứng dụng client-server:
1) client đọc các dòng từ bộ đệm bàn
inFromUser
phím (inFromUser stream) , gửi input
stream
cho server qua socket Tiến trình
(outToServer stream) Process
client
2) server đọc các dòng từ socket
3) server chuyển các dòng sang chữ
hoa, gửi cho client
inFromServer
outToServer
4) client đọc và in nội dung được output input
server sửa đổi và trả về stream stream
(inFromServer stream)
client TCP
clientSocket
socket TCP
socket
92
Lê Đình Thanh, MMT-Tầng ứng dụng
Tương tác client/server qua socket
Server (chạy trên hostid) Client
Tạo socket,
port=x, lắng nghe
yêu cầu:
welcomeSocket =
ServerSocket()
sentence = inFromUser.readLine();
Gửi một dòng
đến server outToServer.writeBytes(sentence + '\n');
clientSocket.close();
}
}
95
Lê Đình Thanh, MMT-Tầng ứng dụng
Ví dụ: Java server (TCP)
import java.io.*;
import java.net.*;
class TCPServer {
96
Lê Đình Thanh, MMT-Tầng ứng dụng
Ví dụ: Java server (TCP), cont
Tạo
dòng ra, gắn vào
DataOutputStream outToClient =
socket
new DataOutputStream(connectionSocket.getOutputStream());
Đọc dòng
từ socket clientSentence = inFromClient.readLine();
97
Lê Đình Thanh, MMT-Tầng ứng dụng
Chương 2: Tầng ứng dụng
• 2.1 Các nguyên lý của ứng • 2.6 Chia sẻ tệp ngang hàng
dụng mạng • 2.7 Lập trình socket với TCP
• 2.2 Web và HTTP • 2.8 Lập trình socket với
• 2.3 FTP UDP
• 2.4 Thư điện tử • 2.9 Phát triển một Web
– SMTP, POP3, IMAP server
• 2.5 DNS
98
Lê Đình Thanh, MMT-Tầng ứng dụng
LT Socket với UDP
UDP: không có “kết nối” giữa client
và server
• Không bắt tay
• Bên gửi chủ động ghi địa chỉ IP và Góc nhìn ứng dụng
port của đích vào mỗi gói tin
UDP cung cấp dịch vụtruyền
• Bên nhận phải đọc địa chỉ IP, port
không tin cậy các nhóm bytes
của bên gửi từ gói nhận được
từ nút gửi đến nút nhận
UDP: dữ liệu được truyền có thể
nhận được không đúng thứ tự, có
thể mất
99
Lê Đình Thanh, MMT-Tầng ứng dụng
Tương tác client/server: UDP
Server (chạy trên hostid) Client
Tạo socket,
Tạo socket,
port=x, lắng nghe clientSocket =
yêu cầu: DatagramSocket()
serverSocket =
DatagramSocket()
Tạo và gửi (hostid, port=x)
datagram request sử dụng
Nhận được yêu clientSocket
cầu kết nối
serverSocket
100
Lê Đình Thanh, MMT-Tầng ứng dụng
Ví dụ: Java client (UDP)
keyboard monitor
inFromUser
input
stream
Tiến trình
Process
client Input: nhận gói (TCP
nhận “dòng byte”)
Output: gửi gói (TCP
gửi “dòng byte”)
receivePacket
sendPacket
UDP UDP
packet packet
client UDP
clientSocket
socket UDP
socket
101
Lê Đình Thanh, MMT-Tầng ứng dụng
Ví dụ: Java client (UDP)
import java.io.*;
import java.net.*;
class UDPClient {
public static void main(String args[]) throws Exception
Tạo {
dòng vào BufferedReader inFromUser =
Tạo new BufferedReader(new InputStreamReader(System.in));
client socket
DatagramSocket clientSocket = new DatagramSocket();
Dịch
hostname sang IP InetAddress IPAddress = InetAddress.getByName("hostname");
sử dụng DNS
byte[] sendData = new byte[1024];
byte[] receiveData = new byte[1024];
String modifiedSentence =
new String(receivePacket.getData());
103
Lê Đình Thanh, MMT-Tầng ứng dụng
Ví dụ: Java server (UDP)
import java.io.*;
import java.net.*;
class UDPServer {
public static void main(String args[]) throws Exception
Tạo {
datagram socket
ở cổng 9876 DatagramSocket serverSocket = new DatagramSocket(9876);
while(true)
{
Tạo không gian cho
gói nhận được DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
Nhận serverSocket.receive(receivePacket);
datagram
104
Lê Đình Thanh, MMT-Tầng ứng dụng
Ví dụ: Java server (UDP), cont
String sentence = new String(receivePacket.getData());
Nhận đc IP
port # của InetAddress IPAddress = receivePacket.getAddress();
bên gửi
int port = receivePacket.getPort();
sendData = capitalizedSentence.getBytes();
Tạo datagram
để gửi cho client DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, IPAddress,
port);
Ghi
Datagram serverSocket.send(sendPacket);
từ socket }
}
} Kết thúc vòng lặp,
quay lại và đợi
datagram khác
105
Lê Đình Thanh, MMT-Tầng ứng dụng
Chương 2: Tầng ứng dụng
• 2.1 Các nguyên lý của ứng • 2.6 Chia sẻ tệp ngang hàng
dụng mạng • 2.7 Lập trình socket với TCP
• 2.2 Web và HTTP • 2.8 Lập trình socket với
• 2.3 FTP UDP
• 2.4 Thư điện tử • 2.9 Phát triển một Web
– SMTP, POP3, IMAP server
• 2.5 DNS
106
Lê Đình Thanh, MMT-Tầng ứng dụng
Xây dựng Web server đơn giản
• Xử lý các HTTP request • Sau khi tạo server, bạn có
• Chấp nhận request thể yêu cầu tệp từ trình
duyệt (vd. IE, FF)
• Phân tích header
• Nhận tệp được yêu cầu từ
hệ thống tệp
• Tạo HTTP response:
– Header + file
• Gửi response cho client
107
Lê Đình Thanh, MMT-Tầng ứng dụng
Chương 2: Tóm tắt
Chúng ta đã nghiên cứu về các ứng dụng mạng
Các giao thức:
• Các kiến trúc ứng dụng
HTTP
– client-server FTP
– P2P SMTP, POP, IMAP
– hybrid DNS
Lập trình socket
• Các yêu cầu dịch vụ:
– tin cậy, băng thông, trễ
• Mô hình dịch vụ giao vận
Internet
– Hướng kết nối, tin cậy: TCP
– Không tin cậy, datagrams: UDP
108
Lê Đình Thanh, MMT-Tầng ứng dụng
Chương 2: Tóm tắt
Quan trọng nhất: các giao thức
109
Lê Đình Thanh, MMT-Tầng ứng dụng
Chương 3
Tầng giao vận
Ghi chú
Slides này dựa trên sildes của J.F Kurose and K.W. Ross .
Computer Networking: A
Top Down Approach
Featuring the Internet,
3-2
Lê Đình Thanh, MMT-Tầng giao vận
Chương 3. Nội dung
• 3.1 Các dịch vụ tầng giao • 3.5 Truyền hướng kết nối:
vận TCP
• 3.2 Ghép và tách kênh – Cấu trúc đoạn
– Truyền tin cậy
• 3.3 Truyền phi kết nối: UDP
– Kiểm soát luồng
• 3.4 Các nguyên lý truyền tin
– Quản trị kết nối
cậy
• 3.6 Các nguyên lý kiểm soát
tắc nghẽn
• 3.7 Kiểm soát tắc nghẽn
trong TCP
3-3
Lê Đình Thanh, MMT-Tầng giao vận
Các dịch vụ và giao thức giao vận
• Cung cấp truyền thông logic giữa application
transport
các tiến trình chạy trên các hosts network
data link
khác nhau physical
network
data link
network physical
• Các giao thức giao vận chạy trên data link
physical
các hệ thống cuối network
data link
– Bên gửi: cắt thông báo từ ứng physical network
data link
dụng gửi xuống thành nhiều physical
3-4
Lê Đình Thanh, MMT-Tầng giao vận
Tầng giao vận <> Tầng mạng
• Tầng mạng: truyền thông
logic giữa các hosts
• transport layer: truyền
thông logic giữa các tiến
trình
– Dựa vào các dịch vụ tầng
mạng
3-5
Lê Đình Thanh, MMT-Tầng giao vận
Các giao thức giao vận Internet
• Tin cậy, đúng thứ tự (TCP) application
transport
network
– no-frills extension of “best- data link
physical
effort” IP
• Dịch vụ:
application
transport
network
– Đảm bảo giới hạn trễ data link
physical
3-6
Lê Đình Thanh, MMT-Tầng giao vận
Chương 3. Nội dung
• 3.1 Các dịch vụ tầng giao • 3.5 Truyền hướng kết nối:
vận TCP
• 3.2 Ghép và tách kênh – Cấu trúc đoạn
– Truyền tin cậy
• 3.3 Truyền phi kết nối: UDP
– Kiểm soát luồng
• 3.4 Các nguyên lý truyền tin
– Quản trị kết nối
cậy
• 3.6 Các nguyên lý kiểm soát
tắc nghẽn
• 3.7 Kiểm soát tắc nghẽn
trong TCP
3-7
Lê Đình Thanh, MMT-Tầng giao vận
Ghép/tách kênh
Tách kênh ở nút nhận: Ghép kênh ở nút gửi:
Nhận dữ liệu từ nhiều sockets,
Chuyển các gói vào đúng socket Đóng gói bằng tiêu đề
(để sau sử dụng cho tách
kênh)
= socket = process
application P3 P1
P1
application P2 P4 application
host 2 host 3
host 1
3-8
Lê Đình Thanh, MMT-Tầng giao vận
Tách kênh như thế nào
• host nhận IP datagrams
– Mỗi datagram có địa chỉ IP
nguồn, IP đích 32 bits
– Mỗi datagram mang một đoạn
dữ liệu từ tầng giao vận source port # dest port #
– Mỗi đoạn có số hiệu cổng
nguồn, đích
other header fields
• host sử dụng địa chỉ IP và số hiệu
cổng để chuyển đoạn đến cổng
thích hợp
application
data
(message)
3-9
Lê Đình Thanh, MMT-Tầng giao vận
Tách kênh phi kết nối
• Khi host nhận UDP segment:
• Tạo socket với số hiệu cổng:
DatagramSocket mySocket1 = new – Kiểm tra số hiệu cổng đích
DatagramSocket(99111); trong segment
DatagramSocket mySocket2 = new – Chuyển UDP segment đến
DatagramSocket(99222); socket có số hiệu cổng đích
• UDP socket được xác định bằng
bộ đôi:
(dest IP address, dest port number)
3-10
Lê Đình Thanh, MMT-Tầng giao vận
Tách kênh phi kết nối (tiếp)
DatagramSocket serverSocket = new DatagramSocket(6428);
P2 P3 P1
P1
3-11
Lê Đình Thanh, MMT-Tầng giao vận
Tách kênh hướng kết nối
• TCP socket được xác định • Server có thể hỗ trợ nhiều
bằng bộ tứ: TCP sockets đồng thời:
– IP nguồn – Mỗi socket được xác định bởi
– port nguồn bộ 4 của nó
– IP đích – Web server có nhiều socket
– port đích cho mỗi client đang kết nối
• non-persistent HTTP sẽ có socket
• Host nhận sử dụng cả 4 giá khác nhau cho các requests
trị để chuyển đoạn socket
tương ứng
3-12
Lê Đình Thanh, MMT-Tầng giao vận
Tách kênh hướng kết nối (tiếp)
P1 P4 P5 P6 P2 P1P3
SP: 5775
DP: 80
S-IP: B
D-IP:C
3-13
Lê Đình Thanh, MMT-Tầng giao vận
Tách kênh hướng kết nối: Web Server
đa luồng
P1 P4 P2 P1P3
SP: 5775
DP: 80
S-IP: B
D-IP:C
3-14
Lê Đình Thanh, MMT-Tầng giao vận
Chương 3. Nội dung
• 3.1 Các dịch vụ tầng giao • 3.5 Truyền hướng kết nối:
vận TCP
• 3.2 Ghép và tách kênh – Cấu trúc đoạn
– Truyền tin cậy
• 3.3 Truyền phi kết nối: UDP
– Kiểm soát luồng
• 3.4 Các nguyên lý truyền tin
– Quản trị kết nối
cậy
• 3.6 Các nguyên lý kiểm soát
tắc nghẽn
• 3.7 Kiểm soát tắc nghẽn
trong TCP
3-15
Lê Đình Thanh, MMT-Tầng giao vận
UDP: User Datagram Protocol [RFC 768]
• Dịch vụ “nỗ lực tối đa”, các
đoạn UDP có thể: Tại sao lại dùng UDP?
– Mất • Không thiết lập kết nối (trễ)
– Đến sai thứ tự • Đơn giản: không trạng thái kết
• Phi kết nối: nối ở cả bên gửi và bên nhận
– Không bắt tay giữa bên gửi • Tiêu đề đoạn nhỏ
và bên nhận • Không kiểm soát tắc nghẽn:
– Mỗi đoạn được xử lý độc UDP có thể truyền nhanh như
lập với các đoạn khác mong muốn
3-16
Lê Đình Thanh, MMT-Tầng giao vận
UDP
• Thường được sử dụng cho
streaming multimedia 32 bits
3-17
Lê Đình Thanh, MMT-Tầng giao vận
UDP checksum
Mục đích: phát hiện “lỗi” (vd., lộn bit) trong đoạn được truyền
3-18
Lê Đình Thanh, MMT-Tầng giao vận
Ví dụ Internet Checksum
• Ghi chú
– Khi cộng các số, nhớ ở bít quan trọng nhất phải
được cộng vào kết quả
• Ví dụ: cộng hai số nguyên 16-bit
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
wraparound 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
sum 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0
checksum 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
3-19
Lê Đình Thanh, MMT-Tầng giao vận
Chương 3. Nội dung
• 3.1 Các dịch vụ tầng giao • 3.5 Truyền hướng kết nối:
vận TCP
• 3.2 Ghép và tách kênh – Cấu trúc đoạn
– Truyền tin cậy
• 3.3 Truyền phi kết nối: UDP
– Kiểm soát luồng
• 3.4 Các nguyên lý truyền tin
– Quản trị kết nối
cậy
• 3.6 Các nguyên lý kiểm soát
tắc nghẽn
• 3.7 Kiểm soát tắc nghẽn
trong TCP
3-20
Lê Đình Thanh, MMT-Tầng giao vận
Các nguyên lý truyền tin cậy
• Quan trọng trong các tầng ứng dụng, giao vận, liên kết
• top-10 các chủ đề quan trọng của networking!
• Các đặc tính của kênh truyền không tin cậy sẽ quyết định độ phức tạp của giao thức truyền tin cậy
(rdt)
3-21
Lê Đình Thanh, MMT-Tầng giao vận
Truyền tin cậy: bắt đầu
rdt_send(): được gọi từ tầng trên. deliver_data(): được gọi
bởi rdt để chuyển dữ liệu lên
tầng trên
send receive
side side
udt_send(): được gọi bởi rdt, rdt_rcv(): được gọi khi gói đến đầu
để truyền gói qua kênh không tin bên nhận của kênh
cậy đến bên nhận
3-22
Lê Đình Thanh, MMT-Tầng giao vận
Truyền tin cậy: bắt đầu
Chúng ta sẽ:
• Phát triển tăng trưởng các bên gửi, nhận trong giao
thức truyền tin cậy (rdt)
• Chỉ xem xét truyền một chiều
– Nhưng thông tin điều khiển sẽ được truyền theo cả hai
chiều!
• Sử dụng máy hữu hạn trạng thái (FSM) để đặc tả bên
gửi, bên nhận event causing state transition
actions taken on state transition
state: when in this “state”
next state uniquely state state
1 event
determined by next 2
event actions
3-23
Lê Đình Thanh, MMT-Tầng giao vận
Rdt1.0: truyền tin cậy trên kênh tin cậy
• Kênh truyền ở dưới hoàn toàn tin cậy
– Không lỗi bít
– Không mất gói
• FSMs của bên gửi, bên nhận:
– Bên gửi gửi dữ liệu xuống kênh bên dưới
– Bên nhận nhận dữ liệu từ kênh bên dưới
3-24
Lê Đình Thanh, MMT-Tầng giao vận
Rdt2.0: kênh truyền có lỗi bit
• Kênh truyền bên dưới có thể làm đảo một số bít trong gói
– checksum để phát hiện lỗi
• Câu hỏi: khắc phục lỗi như thế nào:
– acknowledgements (ACKs): bên nhận thông báo cho bên gửi rằng
đã nhận được gói không phát hiện lỗi
– negative acknowledgements (NAKs): bên nhận thông báo cho bên
gửi rằng đã nhận được gói CÓ lỗi
– Bên gửi phát lại gói khi nhận được NAK
• Các cơ chế trong rdt2.0 (ngoài rdt1.0):
– Phát hiện lỗi
– Phản hồi từ bên nhận: các thông báo điều khiển (ACK,NAK) từ bên
nhận sang bên gửi
3-25
Lê Đình Thanh, MMT-Tầng giao vận
rdt2.0: FSM
rdt_send(data)
snkpkt = make_pkt(data, receiver
checksum)
udt_send(sndpkt) rdt_rcv(rcvpkt) &&
Wait for Wait for isNAK(rcvpkt)
rdt_rcv(rcvpkt)
call from ACK or udt_send(sndp &&
above NAK kt) corrupt(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) &&
extract(rcvpkt,data)
notcorrupt(rcvpkt)
deliver_data(data)
udt_send(ACK)
3-26
Lê Đình Thanh, MMT-Tầng giao vận
rdt2.0: hoạt động khi không có lỗi
rdt_send(data)
snkpkt = make_pkt(data,
checksum)
udt_send(sndpkt) rdt_rcv(rcvpkt) &&
Wait for Wait for isNAK(rcvpkt)
rdt_rcv(rcvpkt)
call from ACK or udt_send(sndp &&
above NAK kt) corrupt(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) &&
extract(rcvpkt,data)
notcorrupt(rcvpkt)
deliver_data(data)
udt_send(ACK)
3-27
Lê Đình Thanh, MMT-Tầng giao vận
rdt2.0: hoạt động khi có lỗi
rdt_send(data)
snkpkt = make_pkt(data,
checksum)
udt_send(sndpkt) rdt_rcv(rcvpkt) &&
Wait for Wait for isNAK(rcvpkt)
rdt_rcv(rcvpkt)
call from ACK or udt_send(sndp &&
above NAK kt) corrupt(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) &&
extract(rcvpkt,data)
notcorrupt(rcvpkt)
deliver_data(data)
udt_send(ACK)
3-28
Lê Đình Thanh, MMT-Tầng giao vận
rdt2.0 có lỗ hổng không tránh khỏi!
Điều gì xảy ra nếu ACK/NAK Xử lý nhận lặp:
hỏng? • Bên gửi thêm số thứ tự vào mỗi
• Bên gửi không biết việc gì đã xảy gói
ra ở bên nhận! • Bên gửi phát lại nếu không
• Không đơn giản chỉ phát lại: có nhận được ACK/NAK
thể tạo nhận lặp • Bên nhận bỏ (không chuyển lên
trên) gói lặp
3-29
Lê Đình Thanh, MMT-Tầng giao vận
rdt2.1: bên gửi, xử lý mất ACK/NAKs
rdt_send(data)
sndpkt = make_pkt(0, data,
checksum) rdt_rcv(rcvpkt) &&
udt_send(sndpkt) ( corrupt(rcvpkt) ||
Wait for Wait for
call 0 from ACK or isNAK(rcvpkt) )
above NAK 0 udt_send(sndpkt)
rdt_rcv(rcvpkt)
rdt_rcv(rcvpkt)
&&
&& notcorrupt(rcvpkt)
notcorrupt(rcvpkt)
&& isACK(rcvpkt)
L
&& isACK(rcvpkt)
L
Wait for Wait for
ACK or call 1 from
rdt_rcv(rcvpkt) NAK 1 above
&&
rdt_send(data)
( corrupt(rcvpkt) ||
udt_send(sndpk
isNAK(rcvpkt) ) sndpkt = make_pkt(1, data,
t) checksum)
udt_send(sndpkt)
3-30
Lê Đình Thanh, MMT-Tầng giao vận
rdt2.1: bên nhận, xử lý mất ACK/NAKs
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)
&& has_seq0(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt) && (corrupt(rcvpkt) rdt_rcv(rcvpkt) && (corrupt(rcvpkt)
sndpkt = make_pkt(NAK, chksum) sndpkt = make_pkt(NAK, chksum)
udt_send(sndpkt) udt_send(sndpkt)
Wait for Wait for
rdt_rcv(rcvpkt) && 0 from 1 from rdt_rcv(rcvpkt) &&
not corrupt(rcvpkt) && below below not corrupt(rcvpkt) &&
has_seq1(rcvpkt) has_seq0(rcvpkt)
sndpkt = make_pkt(ACK, chksum) sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt) udt_send(sndpkt)
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)
&& has_seq1(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt)
3-31
Lê Đình Thanh, MMT-Tầng giao vận
rdt2.1: thảo luận
Bên gửi: Bên nhận:
• seq # được thêm vào pkt • Phải kiểm tra nếu gói nhận
– two seq. #’s (0,1) là đủ. Tại được lặp
sao? – Trạng thái biểu thị gói đang
• Phải kiểm tra nếu nhận đợi có seq.# là 0 hay 1
được ACK/NAK hỏng • Ghi chú: bên nhận không
• Trạng thái thể biết ACK/NAK được
– Trạng thái phải “nhớ” xem nhận như thế nào ở bên gửi
gói “hiện tại” có seq.# là 0 hay
1.
3-32
Lê Đình Thanh, MMT-Tầng giao vận
rdt2.2: giao thức không NAK
• Có chức năng như rdt2.1, chỉ sử dụng ACK
• Thay vì gửi NAK, bên nhận gửi ACK cho gói cuối cùng nhận
được OK
– Bên nhận phải bao gồm seq. # của gói được ACKed
• ACK lặp tương đương NAK: bên gửi phát lại gói hiện tại
3-33
Lê Đình Thanh, MMT-Tầng giao vận
rdt2.2: vỡ bên gửi, bên nhận
rdt_send(data)
sndpkt = make_pkt(0, data,
checksum) rdt_rcv(rcvpkt) &&
udt_send(sndpkt) ( corrupt(rcvpkt) ||
Wait for Wait for
call 0 from ACK isACK(rcvpkt,1) )
above 0 udt_send(sndpkt)
sender FSM
fragment rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) && && isACK(rcvpkt,0)
(corrupt(rcvpkt) || L
Wait for receiver FSM
0 from
has_seq1(rcvpkt))
udt_send(sndpkt below fragment
)
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)
&& has_seq1(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(ACK1, chksum) 3-34
udt_send(sndpkt) Lê Đình Thanh, MMT-Tầng giao vận
rdt3.0: kênh truyền có lỗi và mất gói
Giả thiết mới: kênh truyền bên Tiếp cận: bên gửi đợi ACK trong
dưới có thể làm mất gói khoảng thời gian “hợp lý”
(data or ACKs) • Phát lại nếu không nhận được ACK
– checksum, seq. #, ACKs, phát sau thời gian đợi
lại có ích, nhưng chưa đủ • Nếu pkt (hoặc ACK) trễ (không
mất):
– Phát lại sẽ gây lặp, nhưng sử
dụng seq. # đã xử lý được lặp
– Bên nhận phải xác định seq. #
của gói được ACKed
• Yêu cầu đồng hồ đếm lùi
3-35
Lê Đình Thanh, MMT-Tầng giao vận
rdt3.0 sender
rdt_send(data)
rdt_rcv(rcvpkt) &&
sndpkt = make_pkt(0, data, checksum) ( corrupt(rcvpkt) ||
udt_send(sndpkt) isACK(rcvpkt,1) )
rdt_rcv(rcvpkt) start_timer
L
L Wait for Wait
timeout
call 0from for
ACK0 udt_send(sndpkt)
above
start_timer
rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt) rdt_rcv(rcvpkt)
&& isACK(rcvpkt,1) && notcorrupt(rcvpkt)
stop_timer && isACK(rcvpkt,0)
stop_timer
Wait Wait for
timeout for call 1 from
udt_send(sndpkt) ACK1 above
start_timer rdt_rcv(rcvpkt)
rdt_send(data) L
rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) || sndpkt = make_pkt(1, data, checksum)
isACK(rcvpkt,0) ) udt_send(sndpkt)
start_timer
L
3-36
Lê Đình Thanh, MMT-Tầng giao vận
rdt3.0 – hoạt động
3-37
Lê Đình Thanh, MMT-Tầng giao vận
rdt3.0 – hoạt động
3-38
Lê Đình Thanh, MMT-Tầng giao vận
Hiệu năng của rdt3.0
U L/R .008
= = = 0.00027
sender 30.008
RTT + L / R microsec
onds
U sender: sử dụng – tỉ lệ thời gian bên gửi bận gửi
1KB pkt / 30 msec -> thông lượng 33kB/sec / 1 Gbps link
Giao thức mạng khai thác tài nguyên vật lý hạn chế!
3-39
Lê Đình Thanh, MMT-Tầng giao vận
rdt3.0: stop-and-wait
sender receive
Bít đầu tiên được truyền, t = 0 r
Bít cuối cùng được truyền, t = L
/R
Bít đầu tiên đến
RTT Bít cuối cùng đến, gửi ACK
U L/R .008
= = = 0.00027
sender 30.008
RTT + L / R microsec
onds
3-40
Lê Đình Thanh, MMT-Tầng giao vận
Các giao thức Pipelined
Pipelining: bên gửi gửi nhiều gói liên tiếp
– Phạm vi seq.# phải được tăng lên
– Sử dụng đệm ở bên gửi và bên nhận
U 3*L/R .024
= = = 0.0008
sender 30.008
RTT + L / R microsecon
ds
3-42
Lê Đình Thanh, MMT-Tầng giao vận
Go-Back-N
Bên gửi:
• k-bit seq # trong tiêu đề gói tin
• “cửa sổ” của N gói liên tiếp chưa được ack
ACK(n): ACKs mọi gói đến gói có seq # n – “ACK tích kũy”
có thể làm giả ACK lặp (xem bên nhận)
Đồng hồ cho mỗi gói đang gửi
timeout(n): phát lại các gói trong cửa sổ có seq.# từ n trở lên
3-43
Lê Đình Thanh, MMT-Tầng giao vận
GBN: FSM của bên gửi
rdt_send(data)
if (nextseqnum < base+N) {
sndpkt[nextseqnum] = make_pkt(nextseqnum,data,chksum)
udt_send(sndpkt[nextseqnum])
if (base == nextseqnum)
start_timer
nextseqnum++
}
L else
refuse_data(data)
base=1
nextseqnum=1
timeout
start_timer
Wait udt_send(sndpkt[base])
rdt_rcv(rcvpkt) udt_send(sndpkt[base+1])
&& corrupt(rcvpkt) …
udt_send(sndpkt[nextseqnum-1])
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
base = getacknum(rcvpkt)+1
If (base == nextseqnum)
stop_timer
else
start_timer 3-44
Lê Đình Thanh, MMT-Tầng giao vận
GBN: FSM của bên gửi
default
udt_send(sndpkt) rdt_rcv(rcvpkt)
&& notcurrupt(rcvpkt)
L && hasseqnum(rcvpkt,expectedseqnum)
expectedseqnum=1 Wait extract(rcvpkt,data)
sndpkt = deliver_data(data)
make_pkt(expectedseqnum,ACK,chksum) sndpkt = make_pkt(expectedseqnum,ACK,chksum)
udt_send(sndpkt)
expectedseqnum++
Chỉ ACK: luôn gửi ACK cho gói nhận đúng và đúng thứ tự có seq.
# lớn nhất
– Có thể sinh lặp ACKs
– Chỉ cần nhớ seq.# mong đợi expectedseqnum
• Gói đến không đúng thứ tự:
– Loại bỏ -> không đệm bên nhận!
– ACK lại với seq.# lớn nhất đúng thứ tự
3-45
Lê Đình Thanh, MMT-Tầng giao vận
GBN
3-46
Lê Đình Thanh, MMT-Tầng giao vận
Lặp lại có lựa chọn (Selective Repeat)
• Bên nhận biên nhận từng gói nhận đúng
– Lưu đệm các gói, nếu cần, để chuyển lên tầng trên đúng thứ tự
• Bên gửi chỉ gửi lại các gói không nhận được ACK
– Mỗi gói chưa ack có một đồng hồ
• Cửa sổ gửi
– N gói liên tiếp
– Giới hạn các gói được gửi, chưa ACK
3-47
Lê Đình Thanh, MMT-Tầng giao vận
Selective repeat: cửa sổ gửi/nhận
3-48
Lê Đình Thanh, MMT-Tầng giao vận
Selective repeat
Bên gửi Bên nhận
data từ trên: pkt n trong [rcvbase, rcvbase+N-1]
• Nếu có seq # tiếp theo trong cửa Gửi ACK(n)
sổ, gửi pkt Không đúng thứ tự: lưu đệm
timeout(n): Đúng thứ tự: chuyển (cả các gói
• gửi lại pkt n, đặt lại timer trong đệm trở thành đúng thứ
tự), dịch cửa sổ đến gói chưa
ACK(n) trong [sendbase,sendbase+N]: nhận tiếp theo
• Đánh dấu đã nhận pkt n
pkt n trong [rcvbase-N,rcvbase-1]
• Nếu n là gói chưa ack bé nhất,
ACK(n)
chuyển cửa sổ sendbase đến gói
chưa ack tiếp theo Ngược lại:
Bỏ qua
3-49
Lê Đình Thanh, MMT-Tầng giao vận
Selective repeat – hoạt động
3-50
Lê Đình Thanh, MMT-Tầng giao vận
Selective repeat:
dilemma
Ví dụ:
• seq #’s: 0, 1, 2, 3
• window size=3
3-51
Lê Đình Thanh, MMT-Tầng giao vận
Chương 3. Nội dung
• 3.1 Các dịch vụ tầng giao • 3.5 Truyền hướng kết nối:
vận TCP
• 3.2 Ghép và tách kênh – Cấu trúc đoạn
– Truyền tin cậy
• 3.3 Truyền phi kết nối: UDP
– Kiểm soát luồng
• 3.4 Các nguyên lý truyền tin
– Quản trị kết nối
cậy
• 3.6 Các nguyên lý kiểm soát
tắc nghẽn
• 3.7 Kiểm soát tắc nghẽn
trong TCP
3-52
Lê Đình Thanh, MMT-Tầng giao vận
TCP: Tổng quan RFCs: 793, 1122, 1323, 2018, 2581
• Điểm-điểm: • Song công:
– Một gửi, một nhận – Hai luồng dữ liệu theo hai
• Tin cậy, đúng thứ tự: hướng trên cùng một kết nối
– Không “thông báo biên” – MSS (maximum segment
size): Kích thước đoạn lớn
• pipelined: nhất
– TCP kiểm soát tắc nghẽn và • Hướng kết nối:
điều khiển luồng đặt kích
thước cửa sổ – Bắt tay (trao đổi thông báo
điều khiển) khởi tạo trạng
• Đệm gửi/nhận thái bên gửi/nhận trước khi
trao đổi dữ liệu
socket
application
writes data
application
reads data • Luồng được điều khiển bên
socket
door
TCP TCP
door gửi không áp đảo bên nhận
send buffer receive buffer
segment
3-53
Lê Đình Thanh, MMT-Tầng giao vận
Cấu trúc đoạn TCP
32 bits
URG: khẩn Đếm theo bytes
hường không được dùng) source port # dest port #
dữ liệu
sequence number (không đoạn!)
ACK: ACK #
valid acknowledgement number
head not
PSH: push data now len used U A P R S F Receive window
hường không được dùng) # bytes
checksum Urg data pnter
bên nhận
RST, SYN, FIN: sẽ chấp nhận
Options (variable length)
Thiết lập kết nối
(setup, teardown
commands)
application
Internet data
checksum (variable length)
(as in UDP)
3-54
Lê Đình Thanh, MMT-Tầng giao vận
Thiết lập kết nối: Bắt tay ba bước
3-55
Lê Đình Thanh, MMT-Tầng giao vận
TCP seq. #’s và ACKs
Seq. #’s:
Host A Host B
– Số thứ tự trong dòng
của byte đầu tiên của User
đoạn types
ACKs: ‘C’ host ACKs
– seq # của byte kế tiếp receipt of
đợi nhận ‘C’, echoes
– ACK tích lũy back ‘C’
H: Bên nhận xử lý đoạn đến
không đúng thứ tự như host ACKs
thế nào receipt
– TL: Đặc tả TCP không of echoed
đề cập, - tùy thuộc ‘C’
người cài đặt
time
simple telnet scenario
3-56
Lê Đình Thanh, MMT-Tầng giao vận
TCP Round Trip Time vàTimeout
H: Thiết lập giá trị TCP H: Ước lượng RTT như thế nào?
timeout như thế nào? • SampleRTT: thời gian từ khi gửi
• Lớn hơn RTT đoạn đến khi nhận được ACK
– Nhưng RTT thay đổi – Không tính phát lại
• Quá ngắn: timeout sớm • SampleRTT sẽ thay đổi, muốn tính
– Phát lại không cần thiết RTT “trơn hơn”
• Quá dài: phản ứng chậm – Trung bình các SampleRTT gần
với mất đoạn nhất
3-57
Lê Đình Thanh, MMT-Tầng giao vận
TCP Round Trip Time vàTimeout
EstimatedRTT = (1-)*EstimatedRTT + *SampleRTT
3-58
Lê Đình Thanh, MMT-Tầng giao vận
Ví dụ ước lượng RTT:
RTT: gaia.cs.umass.edu to fantasia.eurecom.fr
350
300
250
RTT (milliseconds)
200
150
100
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
3-59
Lê Đình Thanh, MMT-Tầng giao vận
TCP Round Trip Time vàTimeout
Đặt timeout
• EstimtedRTT cộng “biên an toàn”
– Biến đổi EstimatedRTT càng lớn -> biên an toàn càng cao
• Đầu tiên ước lượng lượng chênh lệch của SampleRTT so với EstimatedRTT:
DevRTT = (1-)*DevRTT +
*|SampleRTT-EstimatedRTT|
3-60
Lê Đình Thanh, MMT-Tầng giao vận
Chương 3. Nội dung
• 3.1 Các dịch vụ tầng giao • 3.5 Truyền hướng kết nối:
vận TCP
• 3.2 Ghép và tách kênh – Cấu trúc đoạn
– Truyền tin cậy
• 3.3 Truyền phi kết nối: UDP
– Kiểm soát luồng
• 3.4 Các nguyên lý truyền tin
– Quản trị kết nối
cậy
• 3.6 Các nguyên lý kiểm soát
tắc nghẽn
• 3.7 Kiểm soát tắc nghẽn
trong TCP
3-61
Lê Đình Thanh, MMT-Tầng giao vận
TCP - Truyền tin cậy
• TCP tạo dịch vụ rdt trên dịch • Phát lại được kích hoạt bởi:
vụ IP không tin cậy – Sự kiện timeout
• Gửi đường ống các đoạn – Biên nhận lặp
• Biên nhận tích lũy • Đầu tiên xem xét bên gửi
• TCP sử dụng một đồng hồ TCP được đơn giản hóa:
– Bỏ qua biên nhận lặp
phát lại
– Bỏ qua điều khiển luồng và
tắc nghẽn
3-62
Lê Đình Thanh, MMT-Tầng giao vận
Các sự kiện bên gửi TCP:
Nhận dữ liệu từ ứng dụng: timeout:
• Tạo đoạn với seq # • Phát lại đoạn gây timeout
• seq # là số thứ tự trong • Đặt lại đồng hồ
dòng của byte đầu tiên Nhận ack:
của đoạn • Nếu biên nhận các đoạn
• Khởi động đồng hồ nếu chưa được biên nhận
chưa chạy (xem đồng hồ trước đó
là đoạn cũ nhất chưa – Cập nhật thông tin các
được biên nhận) đoạn đã được biên nhận
• Thời gian hết hạn: – Bắt đầu đồng hồ nếu có
TimeOutInterval đoạn dôi ra
3-63
Lê Đình Thanh, MMT-Tầng giao vận
NextSeqNum = InitialSeqNum
SendBase = InitialSeqNum
loop (forever) {
TCP
switch(event)
sender
event: data received from application above (simplified)
create TCP segment with sequence number NextSeqNum
if (timer currently not running)
start timer Comment:
pass segment to IP • SendBase-1: last
NextSeqNum = NextSeqNum + length(data) cumulatively
ack’ed byte
event: timer timeout Example:
retransmit not-yet-acknowledged segment with • SendBase-1 = 71;
smallest sequence number y= 73, so the rcvr
start timer wants 73+ ;
y > SendBase, so
event: ACK received, with ACK field value of y that new data is
if (y > SendBase) { acked
SendBase = y
if (there are currently not-yet-acknowledged segments)
start timer
3-64
} Lê Đình Thanh, MMT-Tầng giao vận
TCP: kịch bản phát lại
Host A Host B Host A Host B
Seq=92 timeout
timeout
X
loss
Sendbase
= 100
Seq=92 timeout
SendBase
= 120
SendBase
SendBase
= 100
= 120 Timeout sớm
time time
Mất ACK 3-65
Lê Đình Thanh, MMT-Tầng giao vận
TCP: kịch bản phát lại (tiếp)
timeout Host A Host B
X
loss
SendBase
= 120
time
ACK tích lũy
3-66
Lê Đình Thanh, MMT-Tầng giao vận
Sinh TCP ACK [RFC 1122, RFC 2581]
Sự kiện bên Nhận Hành động bên Nhận
Đoạn đến đúng thứ tự với ACK trễ. Đợi 500ms để nhận đoạn tiếp
seq # mong đợi. Tất cả bytes theo. Nếu không nhận được đoạn tiếp theo,
đến seq # mong đợi đã được ACKed gửi ACK
Đoạn đến đúng thứ tự với Ngay lập tức gửi ACK tích lũy,
seq # mong đợi. Một đoạn khác biên nhận cả hai đoạn đến đúng thứ tự
Có ACK đang chờ
Đoạn đến sai thứ tự với seq.# lớn Ngay lập tức gửi ACK lặp,
hơn seq. # mong đợi chứa seq. # mong đợi
Phát hiện đoạn trống
Đoạn đến nằm trong/lấp Ngay lập tức gửi ACK, chỉ đoạn nằm
đoạn trống đầu đoạn trống
3-67
Lê Đình Thanh, MMT-Tầng giao vận
Phát lại sớm
• Khoảng time-out thường • Nếu bên gửi nhận được 3
tương đối dài: ACKs lặp, nó cho rằng đoạn
– Trễ lớn trước khi phát lại sau dữ liệu đã biên nhận đã
đoạn bị mất bị mất:
• Phát hiện các đoạn mất qua – Phát lại sớm: gửi lại đoạn
ACKs lặp. trước khi đồng hồ hết hạn
– Bên gửi thường gửi nhiều
đoạn lặp đi lặp lại
– Nếu đoạn mất, có thể có
nhiều ACKs lặp.
3-68
Lê Đình Thanh, MMT-Tầng giao vận
Giải thuật phát lại sớm:
event: ACK received, with ACK field value of y
if (y > SendBase) {
SendBase = y
if (there are currently not-yet-acknowledged segments)
start timer
}
else {
increment count of dup ACKs received for y
if (count of dup ACKs received for y = 3) {
resend segment with sequence number y
}
3-69
Lê Đình Thanh, MMT-Tầng giao vận
Chương 3. Nội dung
• 3.1 Các dịch vụ tầng giao • 3.5 Truyền hướng kết nối:
vận TCP
• 3.2 Ghép và tách kênh – Cấu trúc đoạn
– Truyền tin cậy
• 3.3 Truyền phi kết nối: UDP
– Điều khiển luồng
• 3.4 Các nguyên lý truyền tin
– Quản trị kết nối
cậy
• 3.6 Các nguyên lý kiểm soát
tắc nghẽn
• 3.7 Kiểm soát tắc nghẽn
trong TCP
3-70
Lê Đình Thanh, MMT-Tầng giao vận
TCP – Điều khiên luồng
Điều khiển luồng
Biên gửi không làm tràn
• Bên nhận có đệm nhận: đệm bên nhận do gửi quá
nhanh, quá nhiều
3-72
Lê Đình Thanh, MMT-Tầng giao vận
Chương 3. Nội dung
• 3.1 Các dịch vụ tầng giao • 3.5 Truyền hướng kết nối:
vận TCP
• 3.2 Ghép và tách kênh – Cấu trúc đoạn
– Truyền tin cậy
• 3.3 Truyền phi kết nối: UDP
– Điều khiển luồng
• 3.4 Các nguyên lý truyền tin
– Quản trị kết nối
cậy
• 3.6 Các nguyên lý kiểm soát
tắc nghẽn
• 3.7 Kiểm soát tắc nghẽn
trong TCP
timed wait
closed
closed
TCP server
lifecycle
TCP client
lifecycle
Tắc nghẽn:
• Không hình thức: “quá nhiều nguồn gửi quá nhiều dữ liệu
quá nhanh để mạng xử lý”
• Khác điều khiển lưu lượng!
• Biểu hiện:
– Mất gói (tràn đệm ở các routers)
– Trễ lớn (xếp hàng ở các routers)
• Một trong top-10 vấn đề!
R/3
lout
lout
lout
R/4
a. b. c.
“cái giá” của tắc nghẽn:
Nhiều việc hơn (phát lại)
Phát lại không cần thiết
Lê Đình Thanh, MMT-Tầng giao vận 3-82
Nguyên nhân/cái giá của tắc nghẽn: k.bản 3
• Bốn nút gửi H: Điều gì xảy ra khi và l
in
• Đường đi nhiều chặng l
tăng?
• timeout/phát lại in
Host A lout
lin : original data
l'in : original data, plus
retransmitted data
finite shared
output link
buffers
Host B
H
o
s
t
B
End-end: Network-assisted:
• Không có phản hồi rõ ràng từ • Các routers cung cấp phản hồi
mạng về end-systems
• Tắc nghẽn được suy luận từ – Một bit biểu thị tắc nghẽn
mất và trễ do end-system quan (SNA, DECbit, TCP/IP ECN,
sát ATM)
• Vd. TCP – Tốc độ gửi bên gửi nên áp
dụng
16 Kbytes
8 Kbytes
time
RTT
tiên:
– Gấp đối CongWin sau mỗi
RTT
– Tăng CongWin sau mỗi ACK
nhận được
• Tóm tắt: tốc độ xuất phát
chậm và tăng nhanh theo
cấp số nhân
time
Cài đặt:
• BiếnThreshold
• Khi mất đoạn, Threshold được
đặt bằng 1/2 CongWin trước
khi mất
TCP connection 1
bottleneck
TCP
router
connection 2
capacity R
Connection 1 throughput R
Lê Đình Thanh, MMT-Tầng giao vận 3-99
Tính công bằng (tiếp)
Công bằng và UDP Công bằng và các kết nối TCP
• Các ứng dụng đa phương song song
tiện thường không sử • Hai hosts có thể mở hai kết nối
dụng TCP song song, vd. Web browsers
– do not want rate throttled • Ví dụ: liên kết có bằng thông R
bởi điều khiển tắc nghẽn hỗ trợ 9 kết nối;
• Mà dùng UDP: – ứng dụng mới yêu cầu 1 kết nối
– Bơm dữ liệu audio/video ở TCP, nhận tốc độ R/10
tốc độ cố định, khứ gói mất – ứng dụng mới yêu cầu 11 kết
nối, nhận R/2 !
• Lĩnh vực nghiên cứu: TCP
friendly
P = min{Q, K − 1}
- trong đó Q là số lần server rỗi nếu đối tượng có kích thước không giới hạn.
Server rỗi:
P = min{K-1,Q} times third window
= 4S/R
fourth window
Ví dụ: = 8S/R
• O/S = 15 đoạn
• K = 4 cửa sổ
•Q=2
• P = min{K-1,Q} = 2 object
complete
transmission
delivered
time at
Server rỗi P=2 lần time at server
client
R
= 2S/R
third window
= 4S/R
P
O
delay = + 2 RTT + idleTime p fourth window
= 8S/R
R p =1
P
O S S
= + 2 RTT + [ + RTT − 2 k −1 ]
R k =1 R R object
complete
transmission
delivered
O S S
= + 2 RTT + P[ RTT + ] − (2 P − 1) time at
R R R time at
client
server
K = min{k : 20 S + 21 S + + 2 k −1 S O}
= min{k : 20 + 21 + + 2 k −1 O / S }
O
= min{k : 2 − 1 }
k
S
O
= min{k : k log 2 ( + 1)}
S
O
= log 2 ( + 1)
S
Tính Q, số lần server rỗi với đối tượng có kích thước không giới hạn,
tương tự (see HW).
20 parallel non-
10 persistent
0
28 100 1 Mbps 10
Kbps Kbps Mbps
Với RTT lớn, thời gian đáp ứng chủ yếu do thiết lập TCP
& slow start. Kết nối bền vững cho cải thiện đáng kể
improvement: đặc biệt khi tích trễ*thông lớn.
Lê Đình Thanh, MMT-Tầng giao vận 3-110
Chương 3: Tóm tắt
• Các nguyên lý đằng sau các
dịch vụ tầng giao vận:
– ghép, tách kênh
– Truyền tin cậy
– Điều khiển luồng
– Điều khiển tắc nghẽn
Tiếp theo:
• Thể hiện và cài đặt trong
Internet • Rời biên mạng (tầng
– UDP ứng dụng và giao vận)
– TCP • Đi vào lõi mạng
Ghi chú
Slides này dựa trên sildes của J.F Kurose and K.W. Ross .
Computer Networking: A
Top Down Approach
Featuring the Internet,
3rd edition.
Jim Kurose, Keith Ross
Addison-Wesley, July 2004.
qua nó
3 2
• Thiết lập/ngắt cuộc gọi cho mỗi cuộc gọi trước khi dữ liệu có thể
chảy
• Mỗi gói mang định danh VC (không phải địa chỉ nút đích)
• Mỗi router trên đường từ nguồn đến đích duy trì “trạng thái” của
mỗi kết nối đi qua
• Tài nguyên của liên kết, của router (băng thông, đệm) được cấp phát
cho VC
12 22 32
1 3
2
1 12 2 22
2 63 1 18
3 7 2 17
1 97 3 87
… … … …
application
6. Nhận dữ liệu application
transport 5. Luồng dữ liệu bắt đầu
network 4. Cuộc gọi được kết nối 3. Chấp nhận cuộctransport
gọi
1. Khởi tạo cuộc gọi 2. Cuộc gọi đến network
data link
data link
physical
physical
application
application
transport
transport
network
1. Gửi dữ liệu 2. Nhận dữ liệu network
data link
data link
physical
physical
otherwise 3
Lê Đình Thanh, MMT-Tầng mạng 4-17
Đối sánh theo đoạn đầu dài nhất
Prefix Match Link Interface
11001000 00010111 00010 0
11001000 00010111 00011000 1
11001000 00010111 00011 2
otherwise 3
Ví dụ
Internet ATM
• Dữ liệu được trao đổi giữa các • Hội thoại của con người:
máy tính
– Ràng buộc thời gian, tin cậy
– Dịch vụ “đàn hồi”, không ràng
– Cần cho các dịch vụ đảm
buộc thời gian.
bảo
• Hệ thống cuối “thông minh”
• Hệ thống cuối “dumb”
– Có thể điều chỉnh, điều khiển
– telephones
hoạt động, khôi phục lỗi
– Phức tạp trong lõi
– Đơn giản trong lõi, phức tạp
ngoài biên
• Nhiều loại liên kết
– Các đặc tính khác nhau
– Khó có dịch vụ đồng nhất
System Bus
• Lưu đệm khi tốc độ đến qua switch vượt tốc độ đường ra
• Xếp hàng (trễ) và tràn đệm (mất)!
Tầng vật lý
223 1 1 1
223.1.3.0/24
223.1.1.3
223.1.9.2 223.1.7.0
223.1.9.1 223.1.7.1
223.1.8.1 223.1.8.0
223.1.2.6 223.1.3.27
Organization 0
200.23.16.0/23
Organization 1
“Send me anything
200.23.18.0/23 with addresses
Organization 2 beginning
200.23.20.0/23 . Fly-By-Night-ISP 200.23.16.0/20”
.
. . Internet
.
Organization 7 .
200.23.30.0/23
“Send me anything
ISPs-R-Us
with addresses
beginning
199.31.0.0/16”
“Send me anything
with addresses
Organization 2 beginning
200.23.20.0/23 . Fly-By-Night-ISP 200.23.16.0/20”
.
. . Internet
.
Organization 7 .
200.23.30.0/23
“Send me anything
ISPs-R-Us
with addresses
Organization 1 beginning 199.31.0.0/16
or 200.23.18.0/23”
200.23.18.0/23
10.0.0.4
10.0.0.2
138.76.29.7
10.0.0.3
• Động lực: mạng cục bộ sử dụng chỉ một địa chỉ IP nhìn từ
Internet:
– Không cần cấp phát cả dải địa chỉ từ ISP: - một địa
chỉ IP dùng cho tất cả thiết bị
– Có thể thay đổi các địa chỉ của các thiết bị bên trong
mạng cục bộ mà không cần phải báo cho bên ngoài
– Có thể thay đổi ISP mà không phải thay đổi địa chỉ
các thiết bị bên trong mạng cục bộ
– Các thiết bị bên trong mạng cục bộ không lộ địa chỉ
ra bên ngoài (tăng an ninh).
– Chỉ cần mua một IP Internet (kinh tế)
Lê Đình Thanh, MMT-Tầng mạng 4-48
NAT: Network Address Translation
Cài đặt: NAT router phải:
A B C D E F
Physical view:
IPv6 IPv6 IPv4 IPv4 IPv6 IPv6
data data
A-to-B: E-to-F:
B-to-C: B-to-C:
IPv6 IPv6
IPv6 inside IPv6 inside
IPv4 IPv4
Lê Đình Thanh, MMT-Tầng mạng 4-60
Chương 4: Tầng mạng
• 4. 1 Giới thiệu • 4.5 Giải thuật định tuyến
• 4.2 Mạng mạch ảo và mạng – Trạng thái liên kết
datagram – Véctơ khoảng cách
– Phân cấp
• 4.3 Cái gì bên trong router
• 4.4 IP: Internet Protocol • 4.6 Định tuyến trong
Internet
– Datagram format
– RIP
– IPv4 addressing
– OSPF
– ICMP
– BGP
– IPv6
• 4.7 Phát tỏa và đa phát
routing algorithm
value in arriving
packet’s header
0111 1
3 2
N = tập routers = { u, v, w, x, y, z }
E = tập liên kết ={ (u,v), (u,x), (v,x), (v,w), (x,w), (x,y), (w,y), (w,z), (y,z) }
Chi phí đường đi (x1, x2, x3,…, xp) = c(x1,x2) + c(x2,x3) + … + c(xp-1,xp)
Giải thuật định tuyến: tìm đường đi có chi phí thấp nhất
5
3
v w 5
2
u 2 1 z
3
1 2
x 1
y
1 A A A A
1+e 2+e 0 0 2+e 2+e 0
D 0 0 B D B D B D B
1+e 1 0 0 1+e 1
0 e 0 0 1 1+e 0 e
1
C C C C
1
e
… tính lại … tính lại … tính lại
Khởi tạo
Lê Đình Thanh, MMT-Tầng mạng 4-70
Chương 4: Tầng mạng
• 4. 1 Giới thiệu • 4.5 Giải thuật định tuyến
• 4.2 Mạng mạch ảo và mạng – Trạng thái liên kết
datagram – Véctơ khoảng cách
– Phân cấp
• 4.3 Cái gì bên trong router
• 4.4 IP: Internet Protocol • 4.6 Định tuyến trong
Internet
– Datagram format
– RIP
– IPv4 addressing
– OSPF
– ICMP
– BGP
– IPv6
• 4.7 Phát tỏa và đa phát
Thì
from
from
y ∞∞ ∞ y 2 0 1
from
y 2 0 1
z ∞∞ ∞ z 7 1 0 z 3 1 0
node y table
cost to cost to cost to
x y z x y z x y z y
2 1
x ∞ ∞ ∞ x 0 2 7 x 0 2 3 x z
from
y 2 0 1 y 2 0 1 7
from
from
y 2 0 1
z ∞∞ ∞ z 7 1 0 z 3 1 0
node z table
cost to cost to cost to
x y z x y z x y z
x ∞∞ ∞ x 0 2 7 x 0 2 3
from
from
y 2 0 1 y 2 0 1
from
y ∞∞ ∞
z 7 1 0 z 3 1 0 z 3 1 0
time
Lê Đình Thanh, MMT-Tầng mạng 4-77
DV: chi phí liên kết thay đổi
Chi phí liên kết thay đổi: 1
Nút phát hiện chi phí của liên kết liền kề y
4 1
thay đổi
x z
Cập nhật thông tin, tính lại DV của nó 50
Nếu DV thay đổi, thông báo các láng
giềng
Ở thời điểm t0, y phát hiện chi phí liên kết thay đổi, cập nhật
DV của nó và thông báo cho các láng liền của nó.
“Tin tốt
đi nhanh” Ở thời điểmt1, z nhận thông tin cập nhật từ y và cập nhật DV.
Nó tính chi phí nhỏ nhất mới đến x và gửi DV cho các láng giềng.
Ở thời điểm t2, y nhận thông báo từ z và cập nhật DV của nó. DV
không thay đổi nên y không gửi thông báo cho z.
“Tin xấu
đi chậm”
Lê Đình Thanh, MMT-Tầng mạng 4-78
DV: chi phí liên kết thay đổi
Chi phí thay đổi:
60
Tin tốt đi nhanh y
4 1
Tin xấu đi chậm – vấn đề “đếm
đến vô hạn”! x z
50
44 lần lặp để ổn định: xem sách
3c
3a 2c
3b 2a
AS3 2b
1c AS2
1a 1b
1d AS1 • Kết hợp các routers thành
các “hệ thống tự trị” (AS)
– Định tuyến liên-AS
Intra-AS Inter-AS – Định tuyến nội-AS
Routing Routing
algorithm algorithm – routers ở các AS khác nhau
Forwarding
có có thể chạy các giao
Gateway router table thức nội-AS khác nhau
• Có liên kết trực tiếp đến
router thuộc AS khác
Lê Đình Thanh, MMT-Tầng mạng 4-83
Các AS liên kết nối
3c
3a 2c
3b 2a
AS3 2b
1c AS2
1a 1b AS1
1d • Bảng định tuyến được cấu
hình bởi cả giải thuật định
tuyến Nội-AS và Liên-AS
Intra-AS Inter-AS
Routing Routing – GT Nội-AS cập nhật các
algorithm algorithm
phần tử cho đích bên trong
Forwarding – GT Liên-AS & Nội-AS cập
table nhật các phần tử cho đích
bên ngoài
• Còn được biết đến với tên Interior Gateway Protocols (IGP)
• Các giao thức định tuyến nội-AS phổ biến nhất:
u Đích số chặng
v
u 1
A B w v 2
w 2
x 3
x y 3
z C D z 2
y
C
Mạng đích Router kế tiếp Số chặng đến đích.
w A 2
y B 2
z B 7
x -- 1
…. …. ....
Bảng định tuyến của D
C
Mạng đích Router kế tiếp Số chặng đến đích. w
A 2
y B 2
z BA 75
x -- 1
…. …. ....
Bảng định
Lê Đình Thanh,tuyến củamạng
MMT-Tầng D 4-94
RIP: Lỗi liên kết và khôi phục
Nếu không nghe thông tin quảng bá sau 180 giây --> láng
giềng/liên kết đã hỏng
– Các đường đi qua láng giềng không hợp lệ
– Gửi các quảng bá mới đến các láng giềng
– Các láng giềng lần lượt gửi thông tin quảng bá
(nếu bảng định tuyến thay đổi)
– Thông tin liên kết hỏng nhanh chóng lan truyền
trong toàn mạng
– poison reverse được sử dụng để tránh lặp ping-
pong (khoảng cách vô hạn = 16 chặng)
Lê Đình Thanh, MMT-Tầng mạng 4-95
Xử lý bảng RIP
• Các bảng định tuyến RIP được quản lý bởi tiến trình tầng ứng
dụng, route-d (daemon)
• Quảng bá gửi trong gói UDP, được lặp theo chu kỳ
routed routed
Transprt Transprt
(UDP) (UDP)
network forwarding forwarding network
(IP) table table (IP)
link link
physical physical
• An ninh: tất cả thông báo OSPF đều được xác thực (để tránh
xâm nhập độc hại)
• Cho phép nhiều đường cùng chi phí (RIP chỉ cho 1 đường)
• Với mỗi liên kết, nhiều độ đo chi phí cho các TOS khác nhau
(vd., chi phí liên kết vệ tinh được đặt “thấp” với nỗ lực tối đa,
đặt “cao” cho thời gian thực)
• Hỗ trợ tích hợp đơn phát và đa phát:
– Multicast OSPF (MOSPF) sử dụng cùng dữ liệu
topo như OSPF
• OSPF phân cấp trong các mạng lớn.
3c
3a 2c
3b 2a
AS3 2b
1c AS2
1a 1b
AS1 1d
eBGP session
iBGP session
Lê Đình Thanh, MMT-Tầng mạng 4-104
Phân tán thông tin đến được
• Với phiên eBGP giữa 3a và 1c, AS3 gửi prefix thông tin đến được đến
AS1.
• 1c sau đó có thể sử dụng iBGP để phân tán thông tin mới này đến tất
cả router trong AS1
• 1b sau đó có thể tái-quảng bá thông tin đến được đến AS2 thông qua
phiên 1b-2a eBGP
• Khi router học được prefix mới, nó tạo một phần tử cho prefix trong
bảng định tuyến của nó.
3c
3a 2c
3b 2a
AS3 2b
1c AS2
1a 1b
AS1 1d
eBGP session
iBGP session
Lê Đình Thanh, MMT-Tầng mạng 4-105
Các thuộc tính đường định tuyến &
Đường định tuyến BGP
• Khi quảng bá một prefix, thông tin quảng bá bao gồm các
thuộc tính BGP.
– prefix + các thuộc tính= “đường định tuyến”
• Hai thuộc tính quan trọng:
– AS-PATH: chứa các ASs trên đường đi của thông tin quảng bá
– NEXT-HOP: Chỉ router nội-AS đến AS tiếp theo. (Có thể có nhiều liên
kết từ AS hiện tại đến AS tiếp theo)
• Khi router gateway nhận được thông tin quảng bá, sử dụng
import policy để chấp nhận/từ chối.
Chính sách:
• Liên-AS: các admin muốn điều khiển đường đi của lưu lượng
đi qua mạng của mình.
• Nội-AS: một admin, không cần chính sách
Quy mô:
• Định tuyến phân cấp tiết kiệm kích thước bảng định tuyến,
giảm lưu lượng cập nhật
Hiệu năng:
• Nội-AS: có thể tập trung vào hiệu năng
• Liên-AS: chính sách có thể thống trị hiệu năng
R3 R4 R3 R4
(a) (b)
B B
c c
D D
F E F E
G G
(a) Phát tỏa được khởi tạo ở A (b) Phát tỏa được khởi tạo ở D
Figure 4.42: Xây dựng cây bao trùm dựa vào tâm
…chúng ta sẽ xem xét các tiếp cận cơ bản trước, sau đó các giao
thức cụ thể theo từng tiếp cận
S: source Ký hiệu
R1 2
1 R4 router với
thành viên nhóm
R2 5
Router không có
3 4
R5 thành viên nhóm
R3 6 i Liên kết được sử dụng
R6 R7 cho chuyển tiếp,
i chỉ thứ tự liên kết được
thêm theo giải thuật
Lê Đình Thanh, MMT-Tầng mạng 4-118
Chuyển tiếp theo đường ngược lại
R1 Router có
R4
thành viên nhóm
R2 router không có
P thành viên nhóm
P
R5 Thông báo prune
R3 P Các liên kết đa phát
R6 R7
• Cây Steiner: cây chi phí nhỏ nhất kết nối tất cả
routers có thành viên nhóm
• Bài toán NP-đầy đủ
• Các heuristics
• Không được sử dụng trong thực hành:
– Tính toán phức tạp
– Cần thông tin về toàn bộ mạng
– Cứng nhắc: chạy lại mỗi khi một router tham
gia/rời
Ký hiệu
Dày: Thưa:
❑ Các thành viên được gói ❑ # mạng có thành viên nhóm
dày, gần nhau. nhỏ hơn # các mạng kết nối
❑ Băng thông nhiều hơn ❑ Thành viên nhóm “được phân
tán rộng”
❑ Băng thông không nhiều
Dày Thưa:
• Tư cách thành viên nhóm • Không phải thành viên cho
bởi các routers được giả đến khi router tham gia rõ
thiết đến khi router bị cắt rõ ràng
ràng • Xây dựng cây đa phát theo
• Xây dựng cây đa phát theo nút nhận-điều khiển (vd.,
dữ liệu-điều khiển (vd., RPF) center-based)
• Băng thông và xử lý của • Băng thông và xử lý của
router không thành viên: router: thận trọng
phung phí
Ghi chú
Slides này dựa trên sildes của J.F Kurose and K.W. Ross .
Computer Networking: A
Top Down Approach
Featuring the Internet,
3rd edition.
Jim Kurose, Keith Ross
Addison-Wesley, July 2004.
frame frame
adapter adapter
0 0
D.2r
R = remainder[ ]
G
Pros Cons
• Một nút hoạt động có thể • Đụng độ, lãng phí khe
phát liên tục ở toàn bộ tốc • Khe rỗi
độ kênh • Nút có thể phát hiện đụng
• Phi tập trung cao: chỉ các độ ít hơn thời gian phát
khe cần phải đồng bộ giữa • Đồng bộ đồng hồ
các nút
• Đơn giản
Lê Đình Thanh, MMT-Tầng liên kết 5-24
Slotted Aloha – tính hiệu quả
Hiệu quả là tỉ lệ các khe thành công • Để có hiệu quả cao nhất
trong thời gian chạy dài khi có với N nút, tìm p* sao cho
nhiều nút, mỗi nút có nhiều khung Np(1-p)N-1 lớn nhất
để gửi • Với nhiều nút, lấy giới hạn
của Np*(1-p*)N-1 khi N
• Giả sử N nút có nhiều tiến đến vô cùng, với 1/e
frames cần gửi, mỗi nút phát
trong khe với xác suất p = .37
• Xác suất nút 1 thành công ở
một khe là = p(1-p)N-1
• Xác suất có nút thành công ở
một khe là = Np(1-p)N-1 Tốt nhất: kênh được sử
dụng với phát hữu ích
37% thời gian!
= p . (1-p)2(N-1)
= 1/(2e) = .18
Đụng độ:
Thời gian phát toàn bộ gói bị
lãng phí
Lưu ý:
Vai trò của khoảng cách & trễ lan
truyền trong xác định xác suất đụng
độ
LAN
(có dây hoặc = adapter
không dây)
71-65-F7-2B-08-53
58-23-D7-FA-20-B0
0C-C4-11-6F-E3-98
0C-C4-11-6F-E3-98
237.196.7.88
R
B
• Hai bảng ARP ở R, mỗi bảng cho một LAN
R
B
Metcalfe’s Ethernet
sketch
hub or
switch
1
efficiency =
1 + 5t prop / ttrans
twisted pair
hub
twisted pair
hub
hub
hub
hub hub
hub
hub hub
Tìm trong switch table với địa chỉ MAC đích của frame
if tìm thấy phần tử cho đích
then{
if nút đích trong cùng đoạn nút gửi
then loại bỏ frame
else chuyển tiếp giao diện được chỉ định
}
else phát tràn
address interface
switch
A 1
B 1
E 2
hub hub hub G 3
A
I C 1
D F
B C G H
E
switch
collision
domain
hub
hub hub
B’ A’
switch
IP subnet
hub
hub hub
optimal no yes no
routing
cut yes no yes
through
Lê Đình Thanh, MMT-Tầng liên kết 5-71
Tầng liên kết
• 5.1 Giới thiệu • 5.6 Hubs và switches
• 5.2 Phát hiện và sửa lỗi • 5.7 PPP
• 5.3 Các giao thức đa truy • 5.8 Ảo hóa liên kết: ATM và
cập MPLS
• 5.4 Địa chỉ tầng liên kết
• 5.5 Ethernet
• Đóng khung: đóng gói datagram tầng mạng trong frame tầng
liên kết
– Mang dữ liệu tầng mạng của bất kỳ giao thức tầng
mạng nào (không chỉ IP) đồng thời
– Khả năng tách kênh hướng lên
• Trong suốt bit: phải mang bất kỳ mẫu bit nào ở trường dữ liệu
• Phát hiện lỗi (không sửa lỗi)
• Tính sống động kết nối: phát hiện, báo hiệu lỗi liên kết cho tầng
mạng
• Hiệp thương địa chỉ tầng mạng: điểm cuối có thể học/cấu hình
địa chỉ mạng của điểm cuối khác
Khôi phục lỗi, điều khiển luồng, sắp lại thứ tự dữ liệu
là nhiệm vụ của các tầng trên!
• Nút gửi: thêm (“nhồi”) byte < 01111110> nữa sau byte dữ
liệu < 01111110>
• Nút nhận:
– Hai byte 01111110 liên tiếp: bỏ byte thứ nhất,
tiếp tục nhận dữ liệu
– Một byte 01111110: flag byte
Các byte
cần gửi
Ảo hóa tài nguyên: một trừu tượng hóa mạnh mẽ trong kỹ nghệ
hệ thống:
• Ví dụ tính toán: bộ nhớ ảo, thiết bị ảo
– Máy ảo: vd., java
– IBM VM os từ 1960’s/70’s
• Phân tầng các trừu tượng: không quan tâm đến chi tiết tầng
dưới, chỉ quan tâm đến tầng dướiu một cách trừu tượng
gateway
Các phiên bản khác nhau tầng AAL, phụ thuộc vào lớp dịch vụ
ATM:
• AAL1: cho dịch vụ CBR (Constant Bit Rate), vd. Giả lập mạch
• AAL2: cho dịch vụ VBR (Variable Bit Rate), vd., MPEG video
• AAL5: cho dữ liệu (vd., IP datagrams)
AAL PDU
ATM cell
Tiêu đề cell
ATM
network
Ethernet Ethernet
LANs LANs
Lê Đình Thanh, MMT-Tầng liên kết 5-99
IP-qua-ATM
app
app transport
transport IP IP
IP AAL AAL
Eth Eth ATM
ATM
phy phy phy ATM phy
phy
ATM
phy
• Mục đích ban đầu: tăng tốc chuyển tiếp IP bằng việc sử dụng
nhãn có độ dài cố định (thay cho địa chỉ IP) trong việc chuyển
tiếp
– Mượn các ý tưởng từ tiếp cận Virtual Circuit (VC)
– Nhưng IP datagram vẫn giữ địa chỉ IP!
PPP or Ethernet
MPLS header IP header remainder of link-layer frame
header
20 3 1 5
Lê Đình Thanh, MMT-Tầng liên kết 5-103
Router có khả năng MPLS
• Là router chuyển nhãn
• Chuyển tiếp gói đến giao diện ra chỉ dựa vào giá
trị nhãn (không xét địa chỉ IP)
– Bảng chuyển tiếp MPLS khác bảng chuyển tiếp IP
• Cần giao thức báo hiệu để thiết lập chuyển tiếp
– RSVP-TE
– Có thể chuyển tiếp theo các đường mà IP không thể!
– Dùng MPLS cho phân tích lưu lượng
• Phải cùng tồn tại với các IP routers
8 A 1 10 6 A 1
12 9 D 0
R6
0 0
D
1 1
R4 R3
R5
0 0
A
R2 in outR1 out
label label dest interface
in out out
label label dest interface 6 - A 0
8 6 A 0
Lê Đình Thanh, MMT-Tầng liên kết 5-105
Chương 5: Tóm tắt
• Các nguyên lý dịch vụ tầng liên kết dữ liệu:
– Phát hiện/sửa lỗi
– Chia sẻ kênh phát tỏa: đa truy cập
– Địa chỉ tầng liên kết: MAC
• Các công nghệ tầng liên kết
– Ethernet
– LAN chuyển mạch
– PPP
– Mạng ảo như tầng liên kết: ATM, MPLS