Professional Documents
Culture Documents
Transport Layer
1
Chương 3: Tầng giao vận
Mục đích:
▪ Hiểu các nguyên tắc bên ▪ Giao thức tầng giao vận
trong dịch vụ của tầng trong Internet:
giao vận: • UDP: hướng không liên
• Ghép/Tách kênh kết
• Truyền dữ liệu tin cậy • TCP: hướng liên kết
• Điều khiển luồng • Điều khiển tắc nghẽn
• Điều khiển tắc nghẽn của TCP
Transport Layer 2
Tầng giao vận làm gì?
▪ Cung cấp dịch vụ vận chuyển gói tin hiệu quả, tin cậy
và tiết kiệm chi phí cho người dùng (các tiến trình
chạy ở tầng ứng dụng).
▪ Tầng giao vận quản lý dữ liệu gửi, xác định trật tự
của dữ liệu và độ ưu tiên của dữ liệu đó.
Transport Layer 3
Chương 3: Tầng giao vận
Transport Layer 4
Các giao thức và dịch vụ tầng giao vận
application
▪ Cung cấp truyền thông lô-gíc transport
network
mobile network
data link
giữa các tiến trình ứng dụng chạy physical
national or global ISP
trên các host khác nhau
▪ Các giao thức giao vận chạy trên
các hệ thống cuối
• Bên gửi: chia các bản tin ứng
dụng thành các segment, local or
regional ISP
chuyển tới tầng mạng
• Bên nhận: ghép các segment home network content
provider
thành bản tin, chuyển lên tầng network
application
datacenter
network
ứng dụng transport
network
data link
▪ Nhiều hơn một giao thức giao physical
Người gửi:
application ▪ được thông qua một application
app. msg
thông báo lớp ứng dụng
transport ▪ xác định giá trị trường TThhtransport
app. msg
tiêu đề phân đoạn
network (IP) ▪ tạo phân đoạn network (IP)
physical physical
Transport Layer 7
Các hành động của tầng giao vận(tt)
Người nhận:
application ▪ Nhận phân đoạn từ IP application
▪ Kiểm tra giá trị tiêu đề
transport
app. msg ▪ Trích xuất thông báo lớp transport
ứng dụng
network (IP) network (IP)
▪ Phân kênh thông báo đến
link ứng dụng thông qua link
socket physical
physical
Th app. msg
Transport Layer 8
Hai giao thức truyền tải Internet chính
application
transport
Transport Layer 9
Chương 3: Tầng giao vận
Transport Layer 10
Multiplexing/demultiplexing
application
Transport Layer 11
Thực hiện tách kênh
▪ Host nhận gói dữ liệu IP
• Mỗi gói dữ liệu có địa chỉ IP 32 bits
nguồn, địa chỉ IP đích source port # dest port #
DatagramSocket
serverSocket = new
DatagramSocket
DatagramSocket mySocket2 DatagramSocket mySocket1 =
= new DatagramSocket (6428); new DatagramSocket (5775);
(9157); application
application P1 application
P3 P4
transport
transport transport
network
network link network
link physical link
physical physical
Transport Layer 14
Sự tách hướng kết nối
▪ Socket TCP được xác định ▪ Máy chủ có thể hỗ trợ đồng
bởi 4 nhân tố: thời nhiều socket TCP:
• địa chỉ IP nguồn • mỗi socket được định
• số cổng nguồn danh bởi 4 nhân tố của nó
• địa chỉ IP đích ▪ Máy chủ Web có nhiều
• số cổng đích
socket khác nhau cho mỗi
khách kết nối tới
▪ máy nhận dùng cả 4 giá trị
• HTTP không ổn định sẽ có
trên để định hướng đoạn dữ
liệu tới đúng Socket phù hợp socket riêng biệt cho mỗi
người dùng
Transport Layer 15
Sự tách hướng kết nối
application
application P4 P5 P6 application
P1 P2 P3
transport
transport transport
network
network link network
link physical link
physical server: IP physical
address B
3 phân đoạn, tất cả được định sẵn đến địa chỉ IP: B,
cổng đích: 80 là được tách kênh đến các socket khác nhau
Transport Layer 16
Tóm tắt
▪ Ghép kênh, phân kênh dựa trên phân đoạn, giá trị
trường header datagram
▪ UDP: phân kênh chỉ sử dụng số cổng đích
▪ TCP: phân kênh sử dụng 4 nhân tố: địa IP nguồn và
đích, cổng nguồn và đích.
▪ Ghép kênh / phân kênh xảy ra ở tất cả các lớp
Transport Layer 17
Chương 3: Tầng giao vận
Transport Layer 18
UDP: User Datagram Protocol
▪ Dịch vụ “best effort” (nổ lực ▪ Không thiết lập kết nối
tối đa), UDP segment có thể: (thêm độ trễ RTT)
• mất ▪ Đơn giản: không có trạng
• chuyển không theo thứ tự thái kết nối ở người gửi,
đến ứng dụng người nhận
▪ Hướng không kết nối: ▪ Kích thước header nhỏ
• Không có bắt tay giữa bên ▪ Không kiểm soát tắc nghẽn
gửi và bên nhận ▪ Có thể hoạt động khi đối
• Mỗi UDP segment được mặt với tắc nghẽn
điều khiển độc lập
Transport Layer 19
UDP: User Datagram Protocol(tt)
▪ UDP sử dụng:
• Ứng dụng phát trực tuyến đa phương tiện (khả
năng chịu mất mát, tỉ lệ nhạy cảm).
• DNS, SNMP, HTTP/3
▪ Nếu cần chuyển đáng tin cậy qua UDP (HTTP/3)
• thêm độ tin cậy cần thiết ở lớp ứng dụng
• thêm kiểm soát tắc nghẽn ở lớp ứng dụng
Transport Layer 20
UDP: User Datagram Protocol(tt)
Length tính theo UDP segment header
byte của UDP
segment,
32 bits
bao gồm header
source port # dest port #
length checksum
Truyền đi: 5 6 11
Nhận: 4 6 11
Người nhận- kiểm tra tính toán Người gửi-kiểm tra tính toán
=
Transport Layer 22
UDP checksum(tt)
Mục đích: phát hiện lỗi trong segment đã truyền
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
Tổng 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
Transport Layer 24
Tóm tắt UDP
▪ Giao thức “không rườm rà” :
• các phân đoạn có thể bị mất, phân phối không theo thứ tự
• dịch vụ nỗ lực tốt nhất: “gửi và hi vọng những điều tốt đẹp
nhất.
▪ UDP có những điểm cộng:
• không cần thiết lập/bắt tay (không phát sinh RTT)
• có thể hoạt động khi dịch vụ mạng bị xâm phạm
• giúp với độ tin cậy (checksum)
▪ Xây dựng chức năng bổ sung trên đầu UDP trong tầng ứng dụng
(ví dụ HTTP/3)
Transport Layer 25
Chương 3: Tầng giao vận
Transport Layer 26
Các yếu tố cấu thành giao thức giao vận
▪ Giao thức vận chuyển phải đối phó với các vấn đề về
• điều khiển lỗi
• đánh số thứ tự gói tin
• điều khiển luồng dữ liệu.
▪ Khi một tiến trình mong muốn thiết lập nối kết với một
tiến trình khác từ xa, nó phải chỉ ra rằng nó muốn kết
nối với tiến trình nào
▪ → thiết lập nối kết
Transport Layer 27
Thiết lập nối kết
Transport Layer 28
Thiết lập nối kết (tt)
▪ Giải thuật thiết lập nối kết phổ biến nhất là giải thuật
bắt tay 3 chiều (three-way hand-shake).
Transport Layer 29
Giải phóng nối kết
Transport Layer 30
Giải phóng nối kết(tt)
▪ Kiểu dị bộ:
• Giải phóng nối kết kiểu dị bộ có thể dẫn đến mất
dữ liệu.
Transport Layer 31
Giải phóng nối kết(tt)
▪ Cần một giải pháp để tránh mất dữ liệu -> giải phóng
nối kết đồng bộ, trong đó, mỗi host đều có trách
nhiệm trong việc giải phóng nối kết.
▪ Một nút phải tiếp tục nhận dữ liệu sau khi đã gởi đi
yêu cầu giải phóng nối kết (DISCONNECT REQUEST –
DR) đến bên đối tác, cho đến khi nhận được chấp
thuận hủy bỏ nối kết của bên đối tác đó.
Transport Layer 32
Khái niệm về truyền dữ liệu tin cậy
Transport Layer 33
Khái niệm về truyền dữ liệu tin cậy(tt)
▪ Hoạt động
Transport Layer 34
Khái niệm về truyền dữ liệu tin cậy(tt)
▪ Lỗi ACK/NAK
• Truyền lại
• Xử lý lặp gói tin?
• Thêm seq#
Transport Layer 35
Khái niệm về truyền dữ liệu tin cậy(tt)
Transport Layer 36
Khái niệm về truyền dữ liệu tin cậy(tt)
Mất gói tin gửi đi
Transport Layer 37
Khái niệm về truyền dữ liệu tin cậy(tt)
Mất ACK, timeout sớm
Transport Layer 38
Các giao thức Pipeline
Pipeline: Bên gửi cho phép nhiều, tới các gói tin được ACK
(acknowledgements)
▪ Dải giá trị liên tục phải tăng
▪ Bộ đệm tại bên gửi và bên nhận
Sender Receiver
▪ Chỉ gửi các gói tin với số hiệu ▪ Chỉ gửi 1 xác nhận ACK(i) cho gói
trong cửa sổ, “dịch” cửa sổ tin nhận được theo đúng thứ tự.
sang phải (i+1) mỗi khi nhận ▪ Các gói tin không theo thứ tự:
được ACK(i) • Hủy bỏ -> không lưu vào vùng
▪ ACK(n): xác nhận cho các gói đệm
tin với số hiệu cho đến n • Gửi ACK xác nhận lại gói tin
▪ Khi có timeout: truyền lại tất còn đúng thứ tự
cả các gói tin có số hiệu lớn
hơn i trong cửa sổ.
Transport Layer 40
Go–Back-N(tt)
▪ ví dụ: bên nhận phát hiện ra gói số 2 bị lỗi nó bỏ qua các gói sau đó
(3,4,5,6,7,8), chỉ chờ nhận lại gói số 2.
▪ Phía bên gởi chờ báo nhận từ bên nhận cho đến khi quá thời gian, nó
sẽ thực hiện gởi lại các gói 2, 3, 4, 5, 6, ....
Transport Layer 41
Selective Repeat
▪ Bên nhận ACK riêng cho mọi gói tin nhận đúng
• Đưa gói tin vào vùng đệm nếu cần, có thể sắp thứ tự
chuyển lên lớp trên
▪ Bên gửi chỉ gửi lại gói tin khi không nhận ACK
• Bộ đếm thời gian bên gửi cho mỗi gói tin không
được ACK
▪ Cửa sổ bên nhận
• N seq # liên tục
• Giới hạn seq #s gửi, gói tin không ACK
Transport Layer 42
Selective repeat: cửa sổ bên gửi, bên nhận
Transport Layer 45
Chương 3: Tầng giao vận
Transport Layer 46
Dịch vụ hướng kết nối TCP
Transport Layer 47
TCP: Tổng quan RFC: 793, 1122, 2018, 5681,7323
Transport Layer 48
Cấu trúc của TCP
32 bits
Transport Layer 49
TCP sequence numbers, ACK
Acknowledgements:
• seq # của byte tiếp theo sender sequence number space
Transport Layer 50
TCP sequence numbers, ACK
Host A Host B
User types‘C’
Seq=42, ACK=79, data = ‘C’
host ACKs đã nhận ‘C’
báo lại
Seq=79, ACK=43, data = ‘C’
host ACKs đã
nhận ‘C’ báo lại
Seq=43, ACK=80
Transport Layer 51
RTT và Timeout trong TCP
Transport Layer 52
RTT và timeout trong TCP
EstimatedRTT = (1- )*EstimatedRTT + *SampleRTT
• Đường trung bình dịch chuyển hàm mũ (exponential weighted
moving average)
• Ảnh hưởng của mẫu làm giảm tốc độ theo cấp số nhân
• Giá trị thường dùng: = 0.125 RTT: gaia.cs.umass.edu to fantasia.eurecom.fr
350
RTT (milliseconds)
300
250
RTT (milliseconds)
200
150
sampleRTT
EstimatedRTT
100
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds) Transport Layer 53
time (seconds)
SampleRTT Estimated RTT
RTT và timeout của TCP(tt)
Thiết lập timeout
Khoảng thời gian timeout (time interval)
▪ EstimatedRTT cộng biên an toàn
•Sự thay đổi lớn của EstimatedRTT -> giá trị biên an toàn lớn
▪ Ước lượng độ lệch SampleRTT kế thừa từ EstimatedRTT:
DevRTT = (1-)*DevRTT + *|SampleRTT-EstimatedRTT|
(thường, = 0.25)
Transport Layer 54
Dịch vụ hướng kết nối TCP
Transport Layer 55
Truyền dữ liệu tin cậy của TCP
▪ TCP tạo dịch vụ rdt ▪ Truyền lại khi:
trên dịch vụ không tin • Có sự kiện timeout
cậy của IP • Lặp ack
▪ Pipelined segment
▪ Xét trường hợp bên gửi:
▪ ACK tích lũy
• Bỏ qua điều khiển
luồng, điều khiển tắc
nghẽn
Transport Layer 56
Các sự kiện của bên gửi TCP
Nhận dữ liệu từ ứng dụng: Timeout:
▪ Tạo segment với seq # ▪ Truyền lại segment bị quá hạn
▪ seq # là giá trị luồng ▪ Tính timeout interval cho
byte của byte đầu tiên segment truyền lại
trong segment ▪ Khởi tạo lại bộ đếm thời gian
▪ Khởi tạo bộ đếm thời Nhận Ack:
gian ▪ Nếu segment trước đó chưa
▪ Chuyển segment tới IP được ACK
▪ Tính NextSeqNum • Cập nhật để biết đã có ack
▪ Nếu segment trước đó có ACK
▪ Tăng bộ đếm ACK lặp, lặp 3
lần thì truyền lại
Transport Layer 57
TCP: kịch bản truyền lại
SendBase=92
Seq=92, 8 bytes of data Seq=92, 8 bytes of data
timeout
ACK=100
X
ACK=100
ACK=120
SendBase=120
Transport Layer 58
TCP: kịch bản truyền lại(tt)
Host A Host B
Transport Layer 59
Dịch vụ hướng kết nối TCP
Transport Layer 60
Điều khiển luồng TCP
Transport Layer 61
Điều khiển luồng TCP
Transport Layer 62
Dịch vụ hướng kết nối TCP
Transport Layer 63
Quản lý kết nối của TCP
Thiết lập kết nối:
Nhắc lại: Bên gửi, bên nhận của TCP thiết lập kết nối trước khi trao
đổi dữ liệu
▪ Khởi tạo giá trị:
• seq. #
• buffer, thông tin điều khiển luồng (ví dụ: RcvWindow)
▪ Client: khởi tạo kết nối
Socket clientSocket = new Socket("hostname","port number");
▪ Server: liên lạc bởi client
Socket connectionSocket = welcomeSocket.accept();
Transport Layer 64
Quản lý kết nối của TCP(tt)
Bắt tay 3 đường:
Bước 1: Client A gửi TCP SYN
segment tới server
• Chỉ định seq # ban đầu
• Không có dữ liệu
Bước 2: Server B nhận SYN,
trả lời với SYNACK segment
• Server cấp phát buffer
• Server khởi tạo seq. #
Bước 3: Client nhận SYNACK,
trả lời bằng ACK segment,
có thể chứa dữ liệu
Transport Layer 65
Quản lý kết nối của TCP(tt)
Đóng kết nối:
Bước 3: client nhận FIN, trả
client đóng socket: lời bằng ACK.
clientSocket.close();
▪ Thời gian đợi: trả lời
Bước 1: client gửi TCP FIN bằng ACK báo đã nhận
tới server FIN
Bước 2: server nhận FIN, Bước 4: server, nhận ACK.
trả lời bằng ACK. Đóng Kết nối đóng.
kết nối, gửi FIN
Transport Layer 66
Quản lý kết nối của TCP(tt)
Transport Layer 67
Chương 3: Tầng giao vận
Transport Layer 68
Nguyên tắc điều khiển tắc nghẽn
Tắc nghẽn (congestion):
▪ Quá nhiều nguồn gửi quá nhiều dữ liệu nhanh quá khả
năng điều khiển của mạng
▪ Khác điều khiển luồng (flow)
▪ Đặc điểm:
• Mất gói tin (tràn buffer tại router)
• Độ trễ tăng (xếp hàng tại buffer của router)
Kiểm soát tắc nghẽn:
quá nhiều người gửi, gửi
quá nhanh
Transport Layer 69
Nguyên nhân, chi phí của tắc nghẽn: Kịch bản 1
R/2
lout
delay
throughput:
lin R/2
lin R/2
• Tối đa thông lượng có thể đạt được • Độ trễ lớn khi xảy ra tắc nghẽn
Transport Layer 70
Nguyên nhân, chi phí của tắc nghẽn: Kịch bản 2
▪ Một router, vùng đệm giới hạn
▪ Bên gửi truyền lại các packet bị hết time chờ
• Input tầng ứng dụng = output tầng ứng dụng: lin = lout
• Input tầng vận chuyển bao gồm việc truyền lại: l’in >= lin
R R
no buffer space!
R R
Transport Layer 72
Nguyên nhân, chi phí của tắc nghẽn: Kịch bản 2(tt)
Transport Layer 73
Nguyên nhân, chi phí của tắc nghẽn: Kịch bản 2(tt)
Transport Layer 74
Các cách tiếp cận để điều khiển tắc nghẽn
Transport Layer 75
Các cách tiếp cận để điều khiển tắc nghẽn(tt)
Transport Layer 76
Trường hợp nghiên cứu: Điều khiển tắc nghẽn ATM ABR
Transport Layer 77
Trường hợp nghiên cứu: Điều khiển tắc nghẽn ATM ABR(tt)
Transport Layer 79
TCP điều khiển tắc nghẽn: AIMD
AIMD (Additive Increase Multiplicative Decrease): tăng theo cấp số cộng
giảm theo cấp số nhân
▪ Hướng tiếp cận: bên gửi có thể tằng tốc độ gửi cho đến khi xảy
ra mất packet (tắc nghẽn), sau đó giảm tốc độ gửi khi xảy ra sự
kiện mất
Additive Increase
Multiplicative Decrease
Tăng tốc độ gửi lên 1 MSS
(maximum segment size) mỗi Giảm một nữa tốc độ gửi ở mỗi
RTT cho đến khi phát hiện thấy sự kiện mất
mất mát.
AIMD sawtooth
TCP sender Sending
behavior:
thăm dò băng thông
rate
time
Transport Layer: 80
TCP điều khiển tắc nghẽn: AIMD(tt)
Multiplicative decrease: tốc độ gửi là
▪ Giảm một nửa khi phát hiện mất bằng ba phần ACK trùng lặp
(TCP Reno)
▪ Giảm xuống 1 MSS khi phát hiện mất mát do timeout (TCP Tahoe)
Transport Layer 81
TCP điều khiển tắc nghẽn: chi tiết
▪ TCP bên gửi giới hạn truyền tải: LastByteSent- LastByteAcked < cwnd
▪ Cwnd là được điều chỉnh động để đáp ứng với tình trạng tắc
nghẽn mạng được quan sát (thực hiện kiểm soát tắc nghẽn TCP)
Transport Layer 82
TCP slow start
▪ Khi kết nối bắt đầu, tang tốc
dộ theo cấp số nhân cho đến Host A Host B
RTT
• gấp đôi cwnd mỗi RTT
• được thực hiện bằng cách
tang cwnd cho mỗi ACK
nhận được
Transport Layer 83
TCP: phát hiện, phản ứng khi mất gói
▪ Mất gói được khi timeout:
• Thiết lập cwnd = 1 MSS
• Sau đó kích thước cửa số tăng theo cấp số nhân đến
ngưỡng, sau đó sẽ tăng theo tuyến tính
▪ Mất gói được xác định khi 3 ACK trùng nhau: TCP Reno
• Các ACK trùng lặp chỉ ra mạng vẫn có khả năng truyền
• Cwnd bị giảm một nửa sau đó tăng theo tuyến tích
▪ TCP Tahoe luôn thiết lập cwnd bằng 1 (timeout hoặc 3 ACK trùng
nhau)
Transport Layer 84
Chuyển từ slow start sang CA
Congestion Avoidance (CA): Tránh tắc nghẽn
Q: Khi nào tăng theo số mũ Thực hiện:
chuyển thành theo tuyến tính? ▪ Thay đổi ssthresh
A: Khi cwnd có giá trị bằng 1/2 ▪ Tại sự kiện mất gói, ssthresh
giá trị của nó trước khi đặt bằng ½ cwnd ngay trước
timeout. sự kiện mất gói
Transport Layer 85
Tránh tắc nghẽn CA
Transport Layer 86
Hồi phục nhanh – Fast recovery
▪ Nút nhận: nhấn được 1 gói tin không đúng thứ tự thì gửi liên tiếp
3 ACK giống nhau
▪ Nút gửi: nhận được 3 ACK giống nhau
• TCP thiết lập ssthresh xuống còn 1/2 giá trị hiện tại của cwnd
• TCP đặt cwnd về giá trị hiện tại của ngưỡng mới
• TCP chuyển trạng thái CA
Transport Layer 87
Hồi phục nhanh – Fast recovery(tt)
Transport Layer 88
Tóm tắt: TCP điều khiển tắc nghẽn
New
New ACK!
ACK! new ACK
duplicate ACK
dupACKcount++ new ACK .
cwnd = cwnd + MSS (MSS/cwnd)
dupACKcount = 0
cwnd = cwnd+MSS Truyền segment(s) mới, khi được phép
dupACKcount = 0
L Truyền segment(s) mới, khi được phép
cwnd = 1 MSS
ssthresh = 64 KB cwnd > ssthresh
dupACKcount = 0
slow L congestion
start timeout avoidance
ssthresh = cwnd/2
cwnd = 1 MSS duplicate ACK
timeout dupACKcount = 0 dupACKcount++
ssthresh = cwnd/2 Truyền lại segment thiếu
cwnd = 1 MSS
dupACKcount = 0
Truyền lại segment thiếu New
timeout
ACK!
ssthresh = cwnd/2
cwnd = 1 New ACK
dupACKcount = 0
cwnd = ssthresh dupACKcount == 3
dupACKcount == 3 Truyền lại segment thiếu dupACKcount = 0
ssthresh= cwnd/2 ssthresh= cwnd/2
cwnd = ssthresh + 3 cwnd = ssthresh + 3
Truyền lại segment thiếu Truyền lại segment thiếu
fast
recovery
duplicate ACK
cwnd = cwnd + MSS
Truyền segment(s) mới, khi được phép
Transport Layer 89
Thông lượng của TCP
▪ Thông lượng trung bình của TCP từ chức năng của window
size và RTT?
• Bỏ qua slow start
▪ Cho W là window size khi xảy ra mất gói.
▪ Khi window là W, thông lượng là W/RTT
▪ Ngay sau mất gói, window giảm tới W/2, thông lượng
W/2RTT.
▪ Thông lượng trung bình: .75 W/RTT
Transport Layer 90