Bài giảng Mạng máy tính - Chương 3: Tầng Transport - Nguyễn Duy

Các giao thức và dịch vụ

tầng Transport

Quản lý truyền thông logic giữa

các tiến trình ứng dụng đang chạy

trên có host khác nhau

Các giao thức protocols chạy trên

các hệ thống đầu cuối

Phía gửi: chia nhỏ các thông

điệp (message) ứng dụng thành

các segments, sau đó chuyển

các segments này cho tầng

network

 Phía nhận: tái kết hợp các

segments thành các thông điệp

(message), các thông điệp này

được chuyển lên tầng

Application

Có nhiều hơn 1 giao thức tầng

transport dành cho các ứng dụng

 Internet: TCP và UDP

pdf 110 trang kimcuc 7980
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Mạng máy tính - Chương 3: Tầng Transport - Nguyễn Duy", để 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: Bài giảng Mạng máy tính - Chương 3: Tầng Transport - Nguyễn Duy

Bài giảng Mạng máy tính - Chương 3: Tầng Transport - Nguyễn Duy
Tầng Transport 3-1 
Chương 3 
Tầng Transport 
Computer 
Networking: A Top 
Down Approach 
6th edition 
Jim Kurose, Keith Ross 
Addison-Wesley 
March 2012 
A note on the use of these ppt slides: 
We’re making these slides freely available to all (faculty, students, readers). 
They’re in PowerPoint form so you see the animations; and can add, modify, 
and delete slides (including this one) and slide content to suit your needs. 
They obviously represent a lot of work on our part. In return for use, we only 
ask the following: 
v  If you use these slides (e.g., in a class) that you mention their source 
(after all, we’d like people to use our book!) 
v  If you post any slides on a www site, that you note that they are adapted 
from (or perhaps identical to) our slides, and note our copyright of this 
material. 
Thanks and enjoy! JFK/KWR 
 All material copyright 1996-2012 
 J.F Kurose and K.W. Ross, All Rights Reserved 
Tầng Transport 3-2 
Chương 3: Tầng Transport 
Mục tiêu: 
v  Hiểu về các nguyên lý 
đằng sau các dịch vụ 
tầng transport: 
§  multiplexing/
demultiplexing 
§  Truyền dữ liệu tin cậy 
§ Điều khiển luồng (flow 
control) 
§ Điều khiển tắt nghẽn 
(congestion control) 
v  Tìm hiểu về các giao 
thức tầng transport 
trên Internet: 
§  UDP: vận chuyển phi 
kết nối 
§  TCP: vận chuyển tin cậy 
hướng kết nối 
(connection-oriented 
reliable transport) 
§ Điều khiển tắt nghẽn 
TCP 
Tầng Transport 3-3 
Chương 3: Nội dung 
3.1 các dịch vụ tầng 
Transport 
3.2 multiplexing và 
demultiplexing 
3.3 vận chuyển phi 
kết nối: UDP 
3.4 các nguyên lý 
truyền dữ liệu tin 
cậy 
3.5 vận chuyển hướng 
kết nối: TCP 
§  Cấu trúc segment 
§  Truyền dữ liệu tin cậy 
§ Điều khiển luồng (flow 
control) 
§  Quản lý kết nối 
3.6 các nguyên lý về 
điều khiển tắc nghẽn 
3.7 điều khiển tắc nghẽn 
TCP 
Tầng Transport 3-4 
Các giao thức và dịch vụ 
tầng Transport 
v  Quản lý truyền thông logic giữa 
các tiến trình ứng dụng đang chạy 
trên có host khác nhau 
v  Các giao thức protocols chạy trên 
các hệ thống đầu cuối 
§  Phía gửi: chia nhỏ các thông 
điệp (message) ứng dụng thành 
các segments, sau đó chuyển 
các segments này cho tầng 
network 
§  Phía nhận: tái kết hợp các 
segments thành các thông điệp 
(message), các thông điệp này 
được chuyển lên tầng 
Application 
v  Có nhiều hơn 1 giao thức tầng 
transport dành cho các ứng dụng 
§  Internet: TCP và UDP 
application 
transport 
network 
data link 
physical 
application 
transport 
network 
data link 
physical 
Tầng Transport 3-5 
Tầng Transport với tầng network 
v  Tầng network: 
truyền thông 
logic giữa các 
host 
v  Tầng transport : 
truyền thông 
logic giữa các 
tiến trình 
§ Dựa vào và tăng 
cường các dịch 
vụ tầng network 
12 đứa trẻ ở nhà Ann gửi 
những bức thư đến 12 
đứa trẻ ở nhà Bill: 
v  hosts = nhà 
v  Các tiến trình 
(processes) = những 
đứa trẻ 
v  Thông điệp tầng ứng 
dụng = các bức thư 
trong các phong bì 
v  Giao thức tầng 
transport = Ann and Bill 
v  Giao thức tầng 
network= dịch vụ bưu 
điện 
Tình huống tương tự: 
Tầng Transport 3-6 
Các giao thức tầng transport trên 
Internet 
v  Tin cậy, truyền theo 
thứ tự (TCP) 
§ Điền khiển tắt nghẽn 
§ Điều khiển luồng 
§  Thiết lập kết nối 
v  Không tin cậy, truyền 
không theo thứ tự: 
UDP 
§  Không rườm rà, mở rộng 
“nổ lực tốt nhất” (best-
effort) của IP 
v  Không có các dịch vụ: 
§  Bảo đảm độ trễ 
§  Bảo đảm băng thông 
application 
transport 
network 
data link 
physical 
application 
transport 
network 
data link 
physical 
network 
data link 
physical 
network 
data link 
physical 
network 
data link 
physical 
network 
data link 
physical 
network 
data link 
physical 
network 
data link 
physical 
network 
data link 
physical 
Tầng Transport 3-7 
Chương 3 Nội dung 
3.1 các dịch vụ tầng 
Transport 
3.2 multiplexing và 
demultiplexing 
3.3 vận chuyển phi 
kết nối: UDP 
3.4 các nguyên lý 
truyền dữ liệu tin 
cậy 
3.5 vận chuyển hướng 
kết nối: TCP 
§  Cấu trúc segment 
§  Truyền dữ liệu tin cậy 
§ Điều khiển luồng (flow 
control) 
§  Quản lý kết nối 
3.6 các nguyên lý về 
điều khiển tắc nghẽn 
3.7 điều khiển tắc nghẽn 
TCP 
Tầng Transport 3-8 
Multiplexing/demultiplexing 
tiến trình 
socket 
sử dụng thông tin trong 
header để chuyển segment 
vừa nhận vào đúng socket 
demultiplexing tại bên nhận: xử lý dữ liệu từ nhiều 
socket, thêm thông tin 
header về tầng transport 
vào segment (được sử 
dụng sau cho 
demultiplexing) 
multiplexingtại bên gửi: 
transport 
application 
physical 
link 
network 
P2 P1 
transport 
application 
physical 
link 
network 
P4 
transport 
application 
physical 
link 
network 
P3 
Tầng Transport 3-9 
demultiplexing làm việc như thế nào 
v  host nhận các khung dữ 
liệu (datagram) IP 
§  Mỗi khung dữ liệu có địa 
chỉ IP nguồn và đích 
§  Mỗi khung dữ liệu mang 
một segment tầng 
transport 
§  Mỗi segment có số port 
nguồn và đích 
v  host dùng các địa chỉ IP 
và số port để gởi 
segment đến socket 
thích hợp 
Số port nguồn Số port đích 
32 bits 
application 
data 
(payload) 
other header fields 
Định dạng segment TCP/UDP 
Tầng Transport 3-10 
Demultiplexing không kết nối 
v  Ôn lại: socket đã tạo có số 
port của host cục bộ 
(host-local port #) : 
 DatagramSocket mySocket1 
= new DatagramSocket(12534); 
v  Khi host nhận 
segment UDP : 
§  Kiểm tra số port đích 
trong segment 
§ Đưa segment UDP đến 
socket có số port đó 
v  Ôn lại: khi tạo khung 
dữ liệu (datagram) để 
gởi vào đến socket UDP 
socket, phải xác định 
§ Địa chỉ IP đích 
§  Số port đích 
Các khung dữ liệu IP 
với số cùng số port 
đích, nhưng khác địa 
chỉ IP nguồn và/hoặc 
khác số port nguồn sẽ 
được chuyển đến cùng 
socket tại máy đích 
Tầng Transport 3-11 
Demultiplexing không kết nối: 
ví dụ 
DatagramSocket 
serverSocket = new 
DatagramSocket 
 (6428); 
transport 
application 
physical 
link 
network 
P3 
transport 
application 
physical 
link 
network 
P1 
transport 
application 
physical 
link 
network 
P4 
DatagramSocket 
mySocket1 = new 
DatagramSocket 
(5775); 
DatagramSocket 
mySocket2 = new 
DatagramSocket 
 (9157); 
Port nguồn: 9157 
Port đích: 6428 
Port nguồn: 6428 
Port đích: 9157 
Port nguồn: ? 
Port đích: ? 
Port nguồn: ? 
Port đích: ? 
Tầng Transport 3-12 
Demux hướng kết nối 
v  Socket TCP được 
xác định bởi 4 yếu 
tố: 
§ Địa chỉ ip nguồn 
§  Số port nguồn 
§ Địa chỉ IP đích 
§  Số port đích 
v  demux: nơi nhận 
dùng tất cả 4 giá trị 
trên để điều hướng 
segment đến socket 
thích hợp 
v  host server có thể 
hổ trợ nhiều socket 
TCP đồng thời: 
§  Mỗi socket được xác 
định bởi bộ 4 của nó 
v  Các web server có 
các socket khác nhau 
cho mỗi kết nối từ 
client 
§  Kết nối HTTP không 
bền vững sẽ có socket 
khác nhau cho mỗi yêu 
cầu 
Tầng Transport 3-13 
Demultiplexing hướng kết nối: ví dụ 
transport 
application 
physical 
link 
network 
P3 
transport 
application 
physical 
link 
P4 
transport 
application 
physical 
link 
network 
P2 
IP nguồn,port: A,9157 
IP đích, port: B,80 
Địa chỉ IP nguồn,port: B,80 
Địa chỉ IP đích,port: A,9157 host: địa chỉ IP A 
host: địa 
chỉ IP C 
network 
P6 P5 
P3 
IP nguồn,port: C,5775 
IP đích,port: B,80 
IP nguồn,port: C,9157 
IP đích,port: B,80 
Ba segment, tất cả được đưa đến địa chỉ IP: B, 
Port đích: 80 được demultiplex đến các socket khác nhau 
server: 
địa chỉ IP 
B 
Tầng Transport 3-14 
Demultiplexing hướng kết nối: ví dụ 
transport 
application 
physical 
link 
network 
P3 
transport 
application 
physical 
link 
transport 
application 
physical 
link 
network 
P2 
IP nguồn,port: A,9157 
IP đích, port: B,80 
IP nguồn,port: B,80 
IP đích,port: A,9157 
host: địa 
chỉ IP A 
host: địa 
chỉ IP C 
server: 
địa chỉ IP 
B 
network 
P3 
IP nguồn,port: C,5775 
IP đích,port: B,80 
IP nguồn,port: C,9157 
IP đích,port: B,80 
P4 
threaded server 
Tầng Transport 3-15 
Chương 3 Nội dung 
3.1 các dịch vụ tầng 
Transport 
3.2 multiplexing và 
demultiplexing 
3.3 vận chuyển phi 
kết nối: UDP 
3.4 các nguyên lý 
truyền dữ liệu tin 
cậy 
3.5 vận chuyển hướng 
kết nối: TCP 
§  Cấu trúc segment 
§  Truyền dữ liệu tin cậy 
§ Điều khiển luồng (flow 
control) 
§  Quản lý kết nối 
3.6 các nguyên lý về 
điều khiển tắc nghẽn 
3.7 điều khiển tắc nghẽn 
TCP 
Tầng Transport 3-16 
UDP: User Datagram Protocol [RFC 768] 
v  Connectionless (phi kết nối): 
§  Không bắt tay giữa bên 
nhận và bên gửi 
§  Mỗi segment UDP được 
xử lý độc lập 
§  Không có cơ chế khôi phục 
các segment bị mất 
§  Các segment có thể đến 
bên nhận không đúng thứ 
tự do các segment không 
được đánh số thứ tự 
trước khi gởi 
§  Không có khả năng điều 
khiền luồng dữ liệu gởi 
(flow control) 
v  Ứng dụng UDP: 
§  Các ứng dụng đa 
phương tiện trực 
t u y ế n ( c h ị u m ấ t 
mát(loss tolerant), 
(cần tốc độ) (rate 
sensitive) ) 
§  DNS 
§  SNMP 
v  Truyền tin cậy trên 
UDP: 
§  Thêm độ tin cậy tại 
tầng application 
§  Phục hồi lỗi tại các 
ứng dụng cụ thể! 
Tầng Transport 3-17 
UDP: segment header 
Số port nguồn Số port đích 
32 bits 
Dữ liệu 
ứng dụng 
(payload) 
Định dạng segment UDP 
length checksum 
Độ dài được tính 
bằng byte của 
segment UDP, bao 
gồm cả header 
v  Không thiết lập kết nối (cái 
mà có thể gây ra độ trễ) 
v  Đơn giản: không trạng thái 
kết nối tại nơi gửi và nhận 
v  Kích thước header nhỏ 
v  Không điều khiển tắt nghẽn: 
UDP có thể gửi dữ liệu 
nhanh như mong muốn 
Tại sao có UDP? 
Tầng Transport 3-18 
UDP checksum 
bên gửi: 
v  Xét nội dung của 
segment, bao gồm các 
trường của header, là 
chuỗi các số nguyên 
16-bit 
v  checksum: bổ sung 
(tổng bù 1) của các 
nội dung segment 
v  Bên gửi đặt giá trị 
checksum vào trường 
checksum UDP 
bên nhận: 
v  Tính toán checksum của 
segment đã nhận 
v  Kiểm tra giá trị trên có bằng 
với giá trị trong trường 
checksum hay không: 
§  NO – có lỗi xãy ra 
§  YES – không có lỗi. Nhưng 
có thể còn lỗi khác nữa 
không? Xem phần sau. 
Mục tiêu: dò tìm “các lỗi” (các bit cờ được 
bật) trong các segment đã được truyền 
Tầng Transport 3-19 
Internet checksum: ví dụ 
Ví dụ: cộng 2 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 
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 
1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 
bit dư 
tổng 
checksum 
Lưu ý: khi cộng các số, bit nhớ ở phía cao nhất cần 
được thêm vào kết quả 
Tầng Transport 3-20 
Chương 3 Nội dung 
3.1 các dịch vụ tầng 
Transport 
3.2 multiplexing và 
demultiplexing 
3.3 vận chuyển phi 
kết nối: UDP 
3.4 các nguyên lý 
truyền dữ liệu tin 
cậy 
3.5 vận chuyển hướng 
kết nối: TCP 
§  Cấu trúc segment 
§  Truyền dữ liệu tin cậy 
§ Điều khiển luồng (flow 
control) 
§  Quản lý kết nối 
3.6 các nguyên lý về 
điều khiển tắc nghẽn 
3.7 điều khiển tắc nghẽn 
TCP 
Tầng Transport 3-21 
Các nguyên lý truyền dữ liệu tin cậy 
v  Quan trọng trong các tầng application, 
transport và link 
§  Top 10 danh sách các chủ đề mạng quan trọng 
v  Các đặc điểm của kênh truyền không tin cậy sẽ xác 
định sự phức tạp của giao thức truyền dữ liệu 
(data transfer protocol) (rdt) 
Tầng Transport 3-22 
v  Các đặc điểm của kênh truyền không tin cậy sẽ xác 
định sự phức tạp của giao thức truyền dữ liệu 
(data transfer protocol) (rdt) 
Các nguyên lý truyền dữ liệu tin 
cậy 
v  quan trọng trong các tầng application, 
transport và link 
§  Top 10 danh sách các chủ đề mạng quan trọng 
Transport Layer 3-23 
v  Các đặc điểm của kênh truyền không tin cậy sẽ xác 
định sự phức tạp của giao thức truyền dữ liệu data 
transfer protocol (rdt) 
v  quan trọng trong các tầng application, 
transport và link 
§  Top 10 danh sách các chủ đề mạng quan trọng 
Các nguyên lý truyền dữ liệu tin 
cậy 
Tầng Transport 3-24 
Truyền dữ liệu tin cậy: bắt đầu 
Bên 
gửi 
Bên 
nhận 
rdt_send(): được gọi bởi tầng trên, 
(tầng applicaiton). Chuyển dữ liệu 
cần truyền đến lớp cao hơn ở bên 
nhận 
udt_send(): được gọi bởi rdt, 
để truyền các gói trên kênh 
không tin cậy đến nơi nhận 
rdt_rcv(): được gọi khi gói dữ liệu 
đến kênh của bên nhận 
deliver_data(): được gọi bởi rdt 
để chuyển dữ liệu đến tầng cao 
hơn 
Tầng Transport 3-25 
Chúng ta sẽ: 
v  Từng bước phát triển truyền dữ liệu tin cậy 
(rdt) bên phía người gửi và nhận 
v  Chỉ xem xét chuyển dữ liệu theo 1 hướng 
§  Nhưng điều khiển thông tin sẽ theo cả 2 hướng! 
v  Sử dụng finite state machines (FSM) để xác 
định bên gửi và nhận 
trạng 
thái 
1 
trạng 
thái 2 
Sự kiện gây ra trạng thái truyền 
Các hành động được thực hiện trên 
chuyển trạng thái 
Trạng thái: khi ở “trạng 
thái” này thì trạng 
thái kế tiếp được xác 
định duy nhất bởi sự 
kiện kế tiếp 
Sự kiện 
Các hành động 
Truyền dữ liệu tin cậy: bắt đầu 
Tầng Transport 3-26 
rdt1.0: truyền tin cậy trên 1 kênh tin cậy 
v  Kênh cơ bản tin cậy hoàn toàn (underlying channel 
perfectly reliable) 
§  không có bit lỗi 
§  không mất mát gói 
v  Các FSMs riêng biệt cho bên gửi và nhận: 
§  Bên gửi gửi dữ liệu vào kênh cơ bản (underlying channel) 
§  Bên nhận đọc dữ liệu từ kênh cơ bản (underlying 
channel) 
chờ gọi 
từ tầng 
trên packet = make_pkt(data) 
udt_send(packet) 
rdt_send(data) 
extract (packet,data) 
deliver_data(data) 
chờ gọi 
từ tầng 
dưới 
rdt_rcv(packet) 
bên gửi bên nhận 
Tầng Transport 3-27 
v  Kênh cơ bản có thể đảo các bit trong packet 
§  checksum để kiểm tra các lỗi 
v  Câu hỏi: làm sao khôi phục các lỗi: 
§  acknowledgements (ACKs): receiver explicitly 
tells sender that pkt received OK 
§  negative acknowledgements (NAKs): receiver 
explicitly tells sender that pkt had errors 
§  sender retransmits pkt on receipt of NAK 
v  new mechanisms in rdt2.0 (beyond rdt1.0): 
§  error detection 
§  receiver feedback: control msgs (ACK,NAK) 
rcvr->sender 
rdt2.0: kênh với các lỗi 
Làm thế nào để con người phục hồi 
“lỗi” trong cuộc trò chuyện? 
Tầng Transport 3-28 
v  Kênh cơ bản có thể đảo các bit trong packet 
§  checksum để kiểm tra các lỗi 
v  Câu hỏi: làm sao khôi phục các lỗi: 
§  acknowledgements (ACKs): bên nhận thông báo rõ 
ràng cho bên gửi rằng packet được nhận thành 
công (OK) 
§  negative acknowledgements (NAKs): bên nhận 
thông báo rõ ràng cho bên gửi rằng packet đã bị 
lỗi 
•  Bên gửi truyền lại gói nào được xác nhận là NAK 
v  Các cơ chế mới trong rdt2.0 (sau rdt1.0): 
§  Phát hiện lỗi 
§  Phản hồi: các thông điệp điều khiển (ACK,NAK) 
từ bên nhận đến bên gửi 
rdt2.0: kênh với các lỗi 
Tầng Transport 3-29 
rdt2.0: đặc điểm kỹ thuật FSM 
Chờ gọi 
từ tầng 
trên 
sndpkt = make_pkt(data, checksum) 
udt_send(sndpkt) 
extract(rcvpkt,data) 
deliver_data(data) 
udt_send(ACK) 
rdt_rcv(rcvpkt) && 
 notcorrupt(rcvpkt) 
rdt_rcv(rcvpkt) && isACK(rcvpkt) 
udt_send(sndpkt) 
rdt_rcv(rcvpkt) && 
 isNAK(rcvpkt) 
udt_sen ...  biến thiên 
v  Các thông điệp được 
truyền lại (như 
req_conn(x)) vì mất thông 
điệp 
v  Sắp xếp lại thông điệp 
v  Không thể “thấy” phía bên 
kia 
Bắt tay 2-way: 
Let’s talk 
OK 
ESTAB 
ESTAB 
choose x 
 req_conn(x) 
ESTAB 
ESTAB 
acc_conn(x) 
Đồng ý thiết lập kết nối 
Tầng Transport 3-79 
Đồng ý thiết lặp kết nối 
Các tình huống thất bại khi bắt tay 2-way: 
retransmit 
req_conn(x) 
ESTAB 
req_conn(x) 
Kết nối mở một nữa! 
(không có client!) 
client 
terminates 
server 
forgets x 
connection 
x completes 
retransmit 
req_conn(x) 
ESTAB 
req_conn(x) 
data(x+1) 
retransmit 
data(x+1) 
accept 
data(x+1) 
choose x 
 req_conn(x) 
ESTAB 
ESTAB 
acc_conn(x) 
client 
terminates 
ESTAB 
choose x 
 req_conn(x) 
ESTAB 
acc_conn(x) 
data(x+1) accept 
data(x+1) 
connection 
x completes server 
forgets x 
Tầng Transport 3-80 
TCP bắt tay 3-way 
SYNbit=1, Seq=x 
Chọn số thứ tự ban đầu, x 
Gửi TCP SYN msg 
ESTAB 
SYNbit=1, Seq=y 
ACKbit=1; ACKnum=x+1 
Chọn số thứ tự ban đầu, y 
gửi TCP SYNACK 
msg, acking SYN 
ACKbit=1, ACKnum=y+1 
SYNACK(x) vừa được nhận 
cho hay server vẫn còn sống; 
send ACK for SYNACK; 
this segment may contain 
client-to-server data 
ACK(y) vừa được nhận 
cho hay client vẫn sống 
SYNSENT 
ESTAB 
SYN RCVD 
Trạng thái client 
LISTEN 
Trạng thái server 
LISTEN 
Tầng Transport 3-81 
TCP bắt tay 3-way: FSM 
closed 
Λ
listen 
SYN 
rcvd 
SYN 
sent 
ESTAB 
Socket clientSocket = 
 newSocket("hostname","port 
number"); 
SYN(seq=x) 
Socket connectionSocket = 
welcomeSocket.accept(); 
SYN(x) 
SYNACK(seq=y,ACKnum=x+1) 
Tạo socket mới để giao tiếp 
ngược lại với client 
SYNACK(seq=y,ACKnum=x+1) 
 ACK(ACKnum=y+1) 
ACK(ACKnum=y+1) 
Λ
Tầng Transport 3-82 
TCP: đóng kết nối 
v  Mỗi bên client và server sẽ đóng kết nối 
bên phía của nó 
§  Gởi TCP segment với FIN bit = 1 
v  Phản hồi bằng ACK cho FIN vừa được nhận 
§  Khi nhận FIN, ACK có thể được kết hợp với 
FIN của nó 
v  Các trao đổi FIN đồng thời có thể được 
vận dụng 
Tầng Transport 3-83 
FIN_WAIT_2 
CLOSE_WAIT 
FINbit=1, seq=y 
ACKbit=1; ACKnum=y+1 
ACKbit=1; ACKnum=x+1 
Chờ server 
đóng 
Vẫn có thể 
gửi dữ liệu 
Có thể không còn 
gửi dữ liệu 
LAST_ACK 
CLOSED 
TIMED_WAIT 
 timed wait 
for 2*max 
segment lifetime 
CLOSED 
TCP: đóng kết nối 
FIN_WAIT_1 FINbit=1, seq=x Có thể không 
còn gửi nhưng 
vẫn còn nhận 
dữ liệu 
clientSocket.close() 
Trạng thái client 
Trạng thái server 
ESTAB ESTAB 
Tầng Transport 3-84 
Chương 3 Nội dung 
3.1 các dịch vụ tầng 
Transport 
3.2 multiplexing và 
demultiplexing 
3.3 vận chuyển phi 
kết nối: UDP 
3.4 các nguyên lý 
truyền dữ liệu tin 
cậy 
3.5 vận chuyển hướng 
kết nối: TCP 
§  Cấu trúc segment 
§  Truyền dữ liệu tin cậy 
§ Điều khiển luồng (flow 
control) 
§  Quản lý kết nối 
3.6 các nguyên lý về 
điều khiển tắc nghẽn 
3.7 điều khiển tắc nghẽn 
TCP 
Tầng Transport 3-85 
Tắt nghẽn: 
v  “nguồn gửi quá nhiều dữ liệu với tốc độ quá 
nhanh đến mạng để được xử lý” 
v  Khác với điều khiển luồng (flow control)! 
v  Các biểu hiện: 
§ Mất gói (tràn bộ đệm tại các router) 
§ Độ trễ lớn (xếp hàng trong các bộ đệm 
của router) 
v  1 trong 10 vấn đề khó khăn! 
Các nguyên lý điều khiển tắt 
nghẽn (congestion control) 
Tầng Transport 3-86 
Nguyên nhân/Chi phí của tắc nghẽn: 
tình huống 1 
v  2 gửi, 2 nhận 
v  1 router, các bộ đệm 
không giới hạn 
v  Khả năng của đường 
link đầu ra: R 
v  Không truyền lại 
v  Thông lượng lớn nhất 
của mỗi kết nối: R/2 
Bộ đệm của đường 
link đầu ra được chia 
sẽ không giới hạn 
Host A 
dữ liệu gốc: λin 
Host B 
thông lượng: λout 
R/2 
R/2 
λ o
ut
λin R/2 
de
la
y 
λin 
v  Độ trễ lớn khi tốc độ 
đến, λin, vượt tới capacity 
Tầng Transport 3-87 
v  1 router, các bộ đệm có giới hạn 
v  bên gửi truyền lại các packet bị time-out 
§  application-layer input = application-layer output: λin = λout 
§  transport-layer input bao gồm việc truyền lại: λ'in 
Bộ đệm đường link 
đầu ra được chia sẽ 
giới hạn 
Host A 
λin : data gốc 
Host B 
λout λ'in: data gốc, cộng với 
dữ liệu được truyền lại 
Nguyên nhân/Chi phí của tắc nghẽn: 
tình huống 2 
λin 
Tầng Transport 3-88 
Lý tưởng hóa: kiến thức 
hoàn hảo 
v  Bên gửi chỉ gửi khi bộ 
nhớ đệm của router sẵn 
sàng 
Bộ nhớ đệm đường 
link đầu ra được chia 
sẽ giới hạn 
λin : data gốc λout λ'in: data gốc, cộng với 
dữ liệu được truyền lại 
copy 
free buffer space! 
R/2 
R/2 
λ o
ut
λin 
Nguyên nhân/Chi phí của tắc nghẽn: 
tình huống 2 
Host B 
A 
Tầng Transport 3-89 
λin : data gốc λout λ'in: data gốc, cộng với 
dữ liệu được truyền lại 
copy 
Không còn bộ nhớ đệm! 
Lý tưởng hóa: các packet bị mất 
được biết đến có thể bị mất 
hoặc bị loại bỏ tại router bởi vì 
bộ nhớ đệm bị đầy 
v  Bên gửi chỉ gởi lại packet được 
biết đến (known packet) đã bị 
mất 
Nguyên nhân/Chi phí của tắc nghẽn: 
tình huống 2 
A 
Host B 
Tầng Transport 3-90 
λin : data gốc λout λ'in: data gốc, cộng với 
dữ liệu được truyền lại 
còn bộ nhớ đệm! 
Nguyên nhân/Chi phí của tắc nghẽn: 
tình huống 2 
Lý tưởng hóa: các packet bị 
mất được biết đến có thể bị 
mất hoặc bị loại bỏ tại 
router bởi vì bộ nhớ đệm bị 
đầy 
v  Bên gửi chỉ gởi lại packet 
được biết đến (known 
packet) đã bị mất 
R/2 
R/2 λin 
λ o
ut
Khi gửi tại R/2, một 
số packet được 
truyền lại, nhưng 
tiệm cân goodput vẫn 
là R/2 (tại sao?) 
A 
Host B 
Tầng Transport 3-91 
A 
λin λout λ'in copy 
Còn bộ nhớ đệm! 
timeout 
R/2 
R/2 λin 
λ o
ut
Khi gửi tại R/2, một 
số packet được 
truyền lại, bao gồm 
packet bị trùng mà 
đã được gửi đi! 
Host B 
Thực tế: trùng lặp 
v  Các packet có thể bị mất , bị bỏ 
tại router bởi vì bộ nhớ đệm 
đầy 
v  Thời gian time out bên gửi hết 
sớm, gởi 2 bản giống nhau, cả 2 
đều được gửi đi 
Nguyên nhân/Chi phí của tắc nghẽn: 
tình huống 2 
Tầng Transport 3-92 
R/2 
λ o
ut
Khi gửi tại R/2, một 
số packet được 
truyền lại, bao gồm 
packet bị trùng mà 
đã được gửi đi! 
“chi phí” của tắc nghẽn: 
v  Cần nhiều băng thông cho việc truyền lại 
v  Truyền lại không cần thiết: đường link mang nhiều 
bản sao của packet 
§  Giảm goodput 
R/2 λin 
Nguyên nhân/Chi phí của tắc nghẽn: 
tình huống 2 
Thực tế: trùng lặp 
v  Các packet có thể bị mất , bị bỏ 
tại router bởi vì bộ nhớ đệm 
đầy 
v  Thời gian time out bên gửi hết 
sớm, gởi 2 bản giống nhau, cả 2 
đều được gởi đi 
Tầng Transport 3-93 
v  4 người gởi 
v  Các đường qua nhều hop 
v  timeout/truyền lại 
Hỏi: cái gì xảy ra khi λin và 
λ'in tăng? 
finite shared output 
link buffers 
Host A λout 
Nguyên nhân/Chi phí của tắc nghẽn: 
tình huống 3 
Host B 
Host C 
Host D 
λin : data gốc 
λ'in: data gốc, cộng với 
dữ liệu được truyền lại 
A: khi λ'in màu đỏ tăng, tất cả 
packet màu xanh đến tại hàng đợi 
phía trên bị loại bỏ, thông lượng 
màu xanh -> 0 
Tầng Transport 3-94 
“Chi phí” khác của tắt nghẽn 
v  Khi packet bị loại bỏ, bất kỳ “khả năng 
truyền upstream được sủ dụng cho packet 
đó đều bị lãng phí!” 
Nguyên nhân/Chi phí của tắc nghẽn: 
tình huống 3 
C/2 
C/2 
λ o
ut 
λin’ 
Tầng Transport 3-95 
Các phương pháp tiếp cận đối với 
điều khiển tắt nghẽn 
 2 phương pháp tiếp cận: 
Điều khiển tắt 
nghẽn end-end : 
v  Không phản hồi rõ 
ràng từ mạng 
v  Tắt nghẽn được suy 
ra từ việc quan sát hệ 
thống đầu cuối có 
mất mát hoặc bị trễ 
v  Tiếp cận được thực 
hiện bởi TCP 
Điều khiển tắt 
nghẽn có sự hổ 
trợ của mạng 
(network-
assisted) : 
v  Các router cung cấp 
phản hồi đến các hệ 
thống đầu cuối 
§ Bit đơn chỉ ra tắt 
nghẽn (SNA, DECbit, 
TCP/IP ECN, ATM) 
§ Tốc độ sẽ gửi của 
người gửi được xác 
định rõ ràng 
Tầng Transport 3-96 
Case study: điều khiển tắt nghẽn 
ATM ABR 
ABR: available bit 
rate: 
v  “dịch vụ mềm dẻo” 
v  Nếu đường đi của 
bên gửi “chưa hết: 
§  Bên gửi sẽ dùng 
băng thông sẵn 
sàng 
v  Nếu đường đi của 
bên gửi bị tắt nghẽn: 
§  Bên gửi sẽ điều 
tiết với tốc độ tối 
thiểu được bảo 
đảm 
Các cell RM (resource 
management): 
v  Được gởi bởi bên gửi, 
được xen kẽ với các cell 
dữ liệu 
v  Các bit trong RM cell 
được thiết lập bởi các by 
switch (“network-
assisted”) 
§  NI bit: không tăng tốc 
độ (tắt nghẽn nhẹ) 
§  CI bit: tắt nghẽn rõ rệt 
v  Các cell RM được trả về 
bên gửi từ bên nhận với 
nguyên vẹn các bit 
Tầng Transport 3-97 
Case study: điều khiển tắt nghẽn 
ATM ABR 
v  Trường 2 byte ER (tốc độ tường minh) trong cell 
RM 
§  Switch bị tắt nghẽn có thể có giá trị ER thấp hơn trong 
cell 
§  Do đó, tốc độ gửi của bên gửi được hổ trợ tối đa trên 
đường đi 
v  Bit EFCI bit trong cell dữ liệu: được thiết lặp đến 1 
trong switch bị tắt nghẽn 
RM cell data cell 
Tầng Transport 3-98 
Chương 3 Nội dung 
3.1 các dịch vụ tầng 
Transport 
3.2 multiplexing và 
demultiplexing 
3.3 vận chuyển phi 
kết nối: UDP 
3.4 các nguyên lý 
truyền dữ liệu tin 
cậy 
3.5 vận chuyển hướng 
kết nối: TCP 
§  Cấu trúc segment 
§  Truyền dữ liệu tin cậy 
§ Điều khiển luồng (flow 
control) 
§  Quản lý kết nối 
3.6 các nguyên lý về 
điều khiển tắc nghẽn 
3.7 điều khiển tắc nghẽn 
TCP 
Tầng Transport 3-99 
TCP điều khiển tắt nghẽn: additive increase, 
multiplicative decrease 
v  Hướng tiếp cận: bên gửi tăng tốc độ truyền (kích 
thước cửa sổ), thăm dò băng thông có thể sử dụng, 
cho đến khi mất mát gói xảy ra 
§  additive increase: tăng cwnd bởi 1 MSS mỗi RTT cho 
đến khi mất gói xảy ra 
§  multiplicative decrease: giảm một nữa cwnd sau khi 
mất gói xảy ra 
cw
nd
: T
C
P 
se
nd
er
co
ng
es
tio
n 
w
in
do
w
 s
iz
e 
AIMD saw tooth 
behavior: thăm dò 
băng thông 
additively increase window size  
. Cho đến khi mất gói xảy ra 
(thì giảm một nữa kích thước cửa sổ) 
time 
Tầng Transport 3-100 
TCP điều khiển tắt nghẽn: chi 
tiết 
v  Bên gửi giới hạn truyền 
tải: 
v  cwnd thay đổi, chức năng 
nhận biết tắt nghẽn trên 
mạng 
TCP tốc độ gửi: 
v  Ước lượng: gửi các 
byte cwnd, đợi ACK 
trong khoảng thời 
gian RTT, sau đó gởi 
thêm các byte 
last byte 
ACKed sent, not-
yet ACKed 
(“in-
flight”) 
last byte 
sent 
cwnd 
LastByteSent- 
 LastByteAcked 
< cwnd 
sender sequence number space 
rate ~ ~ 
cwnd 
RTT 
bytes/sec 
Tầng Transport 3-101 
TCP Slow Start 
v  Khi kết nối bắt đầu, 
tăng tốc độ theo cấp số 
nhân cho đến sự kiện 
mất gói đầu tiên xảy ra: 
§  initially cwnd = 1 MSS 
§  Gấp đôi cwnd mỗi RTT 
§ Được thực hiện bằng 
cách tăng cwnd cho mỗi 
ACK nhận được 
v  Tóm lại: tốc độ ban đầu 
chậm, nhưng nó sẽ tăng 
lên theo cấp số nhân 
Host A 
one segment 
R
TT
Host B 
time 
two segments 
four segments 
Tầng Transport 3-102 
TCP: phát hiện, phản ứng khi 
mất gói 
v  Mất gói được chỉ ra bởi timeout: 
§ cwnd được thiết lặp 1 MSS; 
§ Sau đó kích thước cửa sổ sẽ tăng theo cấp số 
nhân (như trong slow start) đến ngưỡng, sau đó 
sẽ tăng tuyến tính 
v  Mất gói được xác định bởi 3 ACK trùng nhau: TCP 
RENO 
§ Các ACK trùng lặp chỉ ra khả năng truyền của 
mạng 
§ cwnd bị cắt một nữa sau đó tăng theo tuyến tính 
v  TCP luôn luôn thiết lặp cwnd bằng 1 (timeout hoặc 
3 ack trùng nhau) 
Tầng Transport 3-103 
Hỏi: khi nào tăng cấp 
số nhân nên 
chuyển qua tuyến 
tính? 
Trả lời: khi cwnd 
được 1/2 giá trị 
của nó trước thời 
gian timeout. 
Thực hiện: 
v  ssthresh thay đổi 
v  Khi mất gói, ssthresh 
được thiết lặp về chỉ 
1/2 của cwnd trước 
khi mất gói 
TCP: chuyển từ slow start qua 
CA 
Tầng Transport 3-104 
Tóm tắt: TCP điều khiển tắt nghẽn 
timeout 
ssthresh = cwnd/2 
cwnd = 1 MSS 
dupACKcount = 0 
Truyền lại segmentt thiếu 
Λ
cwnd > ssthresh 
congestion 
avoidance 
cwnd = cwnd + MSS (MSS/cwnd) 
dupACKcount = 0 
Truyền segment(s) mới, khi được phép 
new ACK .
dupACKcount++ 
duplicate ACK 
fast 
recovery 
cwnd = cwnd + MSS 
Truyền segment(s) mới, khi được phép 
duplicate ACK 
ssthresh= cwnd/2 
cwnd = ssthresh + 3 
Truyền lại segmentt thiếu 
dupACKcount == 3 
timeout 
ssthresh = cwnd/2 
cwnd = 1 
dupACKcount = 0 
Truyền lại segmentt thiếu 
ssthresh= cwnd/2 
cwnd = ssthresh + 3 
Truyền lại segmentt thiếu 
dupACKcount == 3 cwnd = ssthresh dupACKcount = 0 
New ACK 
slow 
start 
timeout 
ssthresh = cwnd/2 
cwnd = 1 MSS 
dupACKcount = 0 
Truyền lại segmentt thiếu 
cwnd = cwnd+MSS 
dupACKcount = 0 
Truyền segment(s) mới, khi được phép 
new ACK dupACKcount++ 
ACK trùng 
Λ
cwnd = 1 MSS 
ssthresh = 64 KB 
dupACKcount = 0 
New 
ACK! 
New 
ACK! 
New 
ACK! 
Tầng Transport 3-105 
TCP thông lượng (throughtput) 
v  Thông lượng trung bình của TCP như là chức năng 
của kích thước cửa sổ và RTT? 
§  Bỏ qua slow start, giả sử dữ liệu luôn luôn được gởi 
v  W: kích thước cửa sổ (được đo bằng byte) khi mất gói xảy 
ra 
§  Kích thước cửa sổ trung bình (# in-flight bytes) là ¾ W 
§  Thông lượng trung bình là 3/4W mỗi RTT 
W 
W/2 
avg TCP thruput = 3 4 
W 
RTT bytes/sec 
Tầng Transport 3-106 
TCP tương lai: TCP qua “ống lớn và dài” 
v  Ví dụ: segment 1500 byte, 100ms RTT, 
muốn thông lượng 10 Gbps 
v  Kích thước cửa sổ yêu cầu W = 83,333 
segment trên đường truyền 
v  Thông lượng trong các trường hợp mất gói, 
L [Mathis 1997]: 
➜ để đạt thông lượng 10 Gbps, cần thì lệ mất gói 
là L = 2·10-10 – một tỷ lệ mất gói rất nhỏ! 
v  Phiên bản mới của TCP cho tốc độ cao 
TCP throughput = 1.22 
. MSS 
RTT L 
Tầng Transport 3-107 
Mục tiêu công bằng: nếu có K session TCP 
chia sẽ cùng đường link bị bóp cổ chai của 
băng thông R, thì mỗi phiên nên có tốc độ 
trung bình là R/K 
Kết nối TCP 1 
Router cổ chai 
Khả năng R 
TCP Công bằng 
Kết nối TCP 2 
Tầng Transport 3-108 
Tại sao TCP là công bằng? 
2 session cạnh tranh nhau: 
v  additive increase cho độ dốc tăng 1, khi thông lượng tăng 
v  multiplicative decrease giảm thông lượng tương úng 
R 
R 
Chia sẽ băng thông bằng nhau 
Connection 1 throughput 
C
on
ne
ct
io
n 
2 
th
ro
ug
hp
ut
Tránh tắt nghẽn: additive increase 
Mất gói: giảm một nữa kích thước cửa sổ 
Tránh tắt nghẽn: additive increase 
Mất gói: giảm một nữa kích thước cửa sổ 
Tầng Transport 3-109 
Công bằng (tt) 
TCP và UDP 
v  Nhiều ứng dụng 
thường không dùng 
TCP 
§  Không muốn tốc độ 
bị điều tiết do điều 
khiển tắt nghẽn 
v  Thay bằng dùng 
UDP: 
§  Truyền audio/video 
với tốc độ ổn định, 
chịu được mất gói 
Các kết nối TCP song song 
v  ứng dụng có thể mở 
nhiều kết nối song song 
giữa 2 host 
v  Trình duyệt web làm 
điều này 
v  Ví dụ: đường link với 
tốc độ R hỗ trợ 9 kết 
nối: 
§  ứng dụng mới yêu cầu 1 TCP, có 
tốc độ R/10 
§  ứng dụng mới yêu cầu 11 TCPs, 
có tốc độ R/2 
Tầng Transport 3-110 
Chương 3: Tóm tắt 
v  Các nguyên lý của các dịch vụ 
tầng transport layer : 
§ multiplexing, demultiplexing 
§ Truyền dữ liệu tin cậy 
§ Điều khiển luồng (flow 
control) 
§ Điều khiển tắt nghẽn 
(congestion control) 
v  Khởi tạo và thực hiện trên 
Internet 
§  UDP 
§  TCP 
Kế tiếp: 
v  Tìm hiểu xong 
các vấn đề mạng 
“biên” (các tầng 
application, 
transport) 
v  Chuẩn bị vào 
phần mạng “lõi” 

File đính kèm:

  • pdfbai_giang_mang_may_tinh_chuong_3_tang_transport_nguyen_duy.pdf