sequence numberacknowledgement numberReceive window Urg data pointer checksum F S R P A U head len not used Options chiều dài thay đổi URG: urgent data, báo có data khẩn trong segment
Trang 1Chương 4
Giao thức TCP
Trang 2Chương 4-Giao thức TCP 3-2
NỘI DUNG
❒ Tổng quan Giao thức truyền tải hướng kết nối, TCP
❍ Cấu trúc segment
Trang 3Tổng quan TCP
❒ Song công hoàn toàn:
❍ Luồng số liệu chạy trên cảhai chiều của cùng kết nối
❒ Kết nối có hướng (connection-oriented):
❍ Bắt tay thông qua tra đổi thông điệp điều khiển
❒ Điều khiển luồng:
❍ Kiểm soát nghẽn và điều
khiển luồng, cài đặt cửa sổ
❒ S ử d ụ ng b ộ đ ệ m truy ề n và
nh ậ n
Trang 4sequence numberacknowledgement number
Receive window Urg data pointer checksum
F S R P A U
head len
not used
Options (chiều dài thay đổi)
URG: urgent data,
báo có data khẩn
trong segment được chỉ
ra bởi data pointer
ACK: ACK #
là hợp lệ PSH: chuyển data
lên trên ngay
RST, SYN, FIN:
Thiết lập kết nối
Số byte (# bytes) Máy thu sẵn sàng nhận
Đếm theo byte
số liệu
Internet checksum (như UDP)
Trang 5Chỉ số tuần tự và báo nhận ACK
byte đầu tiên trong phần data của segment
Chỉ số báo nhận ACK trong segment là chỉ số tuần tự của byte kế
tiếp trong dòng byte mà máy gửi segment này đang chờ.
Trang 6Nhận 'C' và truyền lại ‘C’
time Giả sử client bắt đầu với tuần tự 42
Server bắt đầu với tuần tự 79
Trang 8Chương 4-Giao thức TCP 3-8
Tham số RTT và Timeout (2)
❒ Exponential weighted moving average
❒ Ảnh hưởng của mẫu quá khứ giảm nhanh theo hàm mũ
❒ Giá trị tiêu biểu là: ααα = 0.125
Trang 10Chương 4-Giao thức TCP 3-10
Tham số RTT và Timeout (3)
Cài đặt timeout
❒ Trước hết xác định độ lệch của mẫu so với EstimatedRTT:
TimeoutInterval = EstimatedRTT + 4*DevRTT
β
β*|SampleRTT-EstimatedRTT|
Sau đó gán giá trị timeout interval:
Trang 11NỘI DUNG
❍ Cấu trúc segment
❒ Truyền tải số liệu tin cậy
Trang 12datagram không bảo đảm IP
❒ Các segment được chuyển
theo cơ chế ống dẫn
(Pipeline)
❒ Dùng báo nhận kiểu tích lũy
đại diện (cumulative ack)
Trang 13Các sự kiện phía TCP sender
Nhận data từ ứng dụng:
tuần tự kế tiếp (seq #)
chưa chạy (như cho
❍ Cập nhật
❍ Khởi động timer nếu còn segment đang đợi
Trang 14= 100
Trang 16Chương 4-Giao thức TCP 3-16
Phát sinh ACK
Sự kiện tại máy thu
Segment đến đúng thứ tự với chỉ
số mong đợi Tất cả data đến chỉ
số này đều đã được báo nhận
Segment đến đúng thứ tự với chỉ
số mong đợi Một segment khác
đang được xúc tiến báo nhận
Segment đến không đúng thứ tự
với chỉ số lớn hơn chỉ số mong
đợi Phát hiện mất segment
Segment đến bổ sung vào một
phần hay toàn bộ số bị mất
Hành vi tại máy thu
Chậm ACK Đợi segment kế trong 500ms Nếu không có segment kế, gửi ACK
Gửi ngay một ACK đại diện báo nhận cho cả hai một lúc
Gửi ngay ACK trùng chỉ số để chỉ ra byte đang đợi kế tiếp
Gửi ngay ACK,báo chờ segment với byte bắt đầu tại chỗ thiếu đầu tiên Đặc tả theo RFC 1122, RFC 2581
Trang 17Truyền lại nhanh (Fast Retransmit)
❍ Sender gửi nhiều
segment liên tiếp
❍ Nếu segment bị mất sẽ
có nhiều ACK trùng
ACK trùng cho cùng data, xem như segmnet
kế tiếp đã bị mất:
❍ Truyền lại nhanh : truyền lại trước khi timer hết hạn
Trang 19sự kiện: nhận ACK , với giá trị ACK cho y
if (y > SendBase) { SendBase = y
if (có các segment vẫn chưa được báo nhận) start timer
} else {
tăng số đếm ACK nhận cho y
if (nếu số đếm ACK nhận cho y = 3) { truyền lại segment với số tuần tự y }
Giải thuật truyền lại nhanh:
Trang 20Chương 4-Giao thức TCP 3-20
NỘI DUNG
❍ Cấu trúc segment
❒ Điều khiển luồng (flow control)
Trang 21Điều khiển luồng (Flow Control
thu:
hợp: tốc độ truyền và tốc độ lấy data
làm nhiệm vụ không để cho máy phát làm tràn bộ đệm thu vì truyền quá nhiều, quá
Data trong
bộ đệm
Vùng trống
Trang 22Chương 4-Giao thức TCP 3-22
Hoạt động điều khiển luồng
(giả sử máy thu loại bỏ các
Data trong
bộ đệm
Vùng trống
Trang 23NỘI DUNG
❍ Cấu trúc segment
❒ Quản lý liên kết
Trang 24Chương 4-Giao thức TCP 3-24
Quản lý liên kết TCP (1/5)
Nhắc lại: máy phát và máy
thu tạo cầu nối trước
khi truyền data
❒ Khởi tạo các biến:
❍ Chỉ ra seq # ban đầu
Bước 3: client nhận SYNACK, phản hồi ACK segment, có thểchứa data
Trang 25Quản lý liên kêt TCP (2/5): Bắt tay ba
bước
Trang 26Step 2: server nhận FIN,
phản hồi ACK Tiến hành
đóng kết nối và gửi FIN
Trang 27Quản lý liên kết (4/5)
Step 3: client nhận FIN,
phản hồi ACK
❍ Vào trạng thái “timed
wait” - gửi ACK cho
server (báo nhận FIN)
Step 4: server nhận ACK,
Trang 28Chương 4-Giao thức TCP 3-28
Quản lý liên kết TCP (5/5)
Chu kỳ của TCP client
Chu kỳ của TCP server
Trang 29NỘI DUNG
❍ Cấu trúc segment
Trang 30Chương 4-Giao thức TCP 3-30
Kiểm soát nghẽn
Hiện tượng nghẽn:
và quá nhanh vào mạng, quá khả năng chịu đựng”
khiển luồng chỉ giải quyết phần ngọn!
❍ Mất gói (bộ đệm tại node bị tràn)
❍ Quá trễ (xếp hàng dài trong bộ đệm tại node)
Trang 33Nguyên nhân và phí tổn: kịch bản 2
❒ Luôn luôn:
❒ Chỉ truyền lại khi mất:
❒ Truyền lại các gói trễ (không mất) làm cho tải đầu vào lớn hơn
so với truyền lại khi mất có cùng
Trang 35t A
H o s
t B
λ
o u t
Trang 36❒ Các router thông báo cho host
❍ Bit chỉ định nghẽn(SNA, DECbit, TCP/IP ECN, ATM)
❍ Tốc độ nào sender nên truyền vào lúc nào
Trang 37NỘI DUNG
❍ Cấu trúc segment
Trang 38hữu dụng cho đến khi xảy ra mất gói
(nhận được báo nhận) cho đến khi phát hiện mất data
Trang 39Chi tiết kiểm soát nghẽn trong TCP
rate = CongWin
RTT Bytes/sec
Trang 41TCP Slow Start (2/2)
chóng theo hàm mũ cho
đến khi phát hiện sự
kiện mất data đầu tiên:
❍ Gấp đôi CongWin sau
mỗi RTT
❍ Được thực hiện sau mỗi
lần nhận ACK
❒ Tóm lại: tốc độ ban đầu
chậm nhưng tăng nhanh
Trang 42timeout tín hiệu của tình trạng nghẽn
Lý do
Hiệu chỉnh cửa sổ nghẽn và tốc độ tăng kích thước
tùy theo triệu chứng (sự kiện chỉ thị) nghẽn
Trang 43Hiệu chỉnh (2/2)
Câu hỏi đặt ra: khi
nào nên chuyển từ
tăng theo hàm mũ
sang tăng theo
tuyến tính?
Khi CongWin đạt 1/2
giá trị của nó trước
khi có timeout xảy
Trang 44Chương 4-Giao thức TCP 3-44
Tóm tắt giải thuật kiểm soát nghẽn của
TCP
slow-start , cửa sổ tăng nhanh theo hàm mũ.
congestion-avoidance , cửa sổ tăng tuyến tính.
sổ hiện hành và gán lại cửa sổ bằng ngưỡng (=1/2 cửa
sổ hiện hành.
lại CongWin = 1 MSS.
Trang 46Chương 4-Giao thức TCP 3-46
HẾT CHƯƠNG 4