You are on page 1of 17

Chương 4

Giao thức TCP

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
❒ Truyền tải số liệu tin cậy
❒ Điều khiển luồng (flow control)
❒ Quản lý liên kết
❒ Kiểm soát nghẽn TCP

Chương 4-Giao thức TCP 3-2

1
Tổng quan TCP
❒ RFCs: 793, 1122, 1323, 2018, ❒ Song công hoàn toàn:
2581
❍ Luồng số liệu chạy trên cả
❒ point-to-point: hai chiều của cùng kết nối
❍ Một truyền và một thu ❒ Kết nối có hướng
❒ Tin cậy, giữ đúng thứ tự (connection-oriented):
❒ Cơ chế ống dẫn (pipeline): ❍ Bắt tay thông qua tra đổi
thông điệp điều khiển
❍ Kiểm soát nghẽn và điều
khiển luồng, cài đặt cửa sổ ❒ Điều khiển luồng:
❒ Sử dụng bộ đệm truyền và ❍ Máy phát không làm tràn
nhận bộ đệm máy thu
Ứng dụng Ưng dụng
socket ghi data đọc data
socket
door door
TCP TCP
bộ đệm truyền bộ đệm thu
segment

Chương 4-Giao thức TCP 3-3

Cấu trúc TCP segment


URG: urgent data,
báo có data khẩn 32 bits
trong segment được chỉ
ra bởi data pointer source port # dest port # Đếm theo byte
số liệu
sequence number
ACK: ACK #
là hợp lệ acknowledgement number
head not
PSH: chuyển data len used
UA P R S F Receive window
lên trên ngay checksum Urg data pointer
Số byte (# bytes)
RST, SYN, FIN: Options (chiều dài thay đổi) Máy thu sẵn sàng nhận
Thiết lập kết nối

Số liệu của ứng dụng


Internet (chiều dài thay đổi)
checksum
(như UDP)

Chương 4-Giao thức TCP 3-4

2
Chỉ số tuần tự và báo nhận ACK
 TCP xem toàn bộ khối số liệu là một dòng các byte liên tục
 Chỉ số tuần tự trong mỗi segment là thứ tự trong dòng byte của
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ờ.

Chương 4-Giao thức TCP 3-5

Ví dụ ứng dụng Telnet


Khái niệm: Client Server
❒ Piggyback User Seq=4
2, AC
❒ Cumulative ACK Gõ ký tự K =79, d
ata = ‘C’
‘C’
Nhận 'C' và
’ truyền lại ‘C’
ta = ‘C
3, da
CK=4
79, A
Seq=

Nhận 'C' và
phản hồi
Seq=4
với data 3, A C
K =80
trống

Giả sử client bắt đầu với tuần tự 42


time
Server bắt đầu với tuần tự 79

Chương 4-Giao thức TCP 3-6

3
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
❒ Truyền tải số liệu tin cậy
❒ Điều khiển luồng (flow control)
❒ Quản lý liên kết
❒ Kiểm soát nghẽn TCP

Chương 4-Giao thức TCP 3-7

Truyền số liệu tin cậy


❒ TCP thực hiện dịch vụ ❒ Việc truyền lại được
truyền số liệu tin cậy ngay kích hoạt bởi:
trên dịch vụ chuyển
datagram không bảo đảm IP ❍ Sự kiện timeout
❒ Các segment được chuyển
❍ Nhận ack trùng
theo cơ chế ống dẫn
(Pipeline)
❒ Dùng báo nhận kiểu tích lũy
đại diện (cumulative ack)
❒ TCP dùng một bộ định thời
truyền lại

Chương 4-Giao thức TCP 3-8

4
Các sự kiện phía TCP sender
Nhận data từ ứng dụng: timeout:
❒ Tạo segment với chỉ số ❒ Truyền lại segment gây
tuần tự kế tiếp (seq #) ra timeout
❒ Khởi động timer nếu ❒ Khởi động lại timer
chưa chạy (như cho Nhận ACK:
segment cũ nhất chưa ❒ Nếu ack cho các
có báo nhận) segment cũ chưa có
❒ Khoảng thời gian báo nhận
timeout được gán: ❍ Cập nhật
TimeOutInterval ❍ Khởi động timer nếu còn
segment đang đợi

Chương 4-Giao thức TCP 3-9

Các kịch bản truyền lại


Host A Host B Host A Host B

Seq=9 Seq=9
2, 8 b 2, 8 b
ytes d ytes d
ata ata
Seq=92 timeout

Seq=
100,
20 by
tes d
timeout

ata
= 100
ACK 0
10
X K=
A C ACK=
120
loss
Seq=9 Seq=9
2, 8 b 2, 8 b
ytes d Sendbase ytes d
ata
ata
= 100
Seq=92 timeout

SendBase
= 120 20
K= 1
=100 AC
ACK

SendBase
= 100 SendBase
= 120
time Timeout sớm
time
Mất ACK
Chương 4-Giao thức TCP 3-10

5
Kịch bản truyền lại (2)
Host A Host B

Seq=9
2, 8 b
ytes d
ata

=100
timeout

Seq=1 ACK
00, 20
bytes
data
X
loss

SendBase =120
ACK
= 120

time
ACK tích lũy đại diện

Chương 4-Giao thức TCP 3-11

Phát sinh ACK


Đặc tả theo RFC 1122, RFC 2581

Sự kiện tại máy thu Hành vi tại máy thu


Segment đến đúng thứ tự với chỉ Chậm ACK. Đợi segment kế trong
số mong đợi. Tất cả data đến chỉ 500ms. Nếu không có segment kế,
số này đều đã được báo nhận gửi ACK

Segment đến đúng thứ tự với chỉ Gửi ngay một ACK đại diện báo
số mong đợi. Một segment khác nhận cho cả hai một lúc
đang được xúc tiến báo nhận

Segment đến không đúng thứ tự Gửi ngay ACK trùng chỉ số để chỉ ra
với chỉ số lớn hơn chỉ số mong byte đang đợi kế tiếp
đợi. Phát hiện mất segment

Segment đến bổ sung vào một Gửi ngay ACK,báo chờ segment với
phần hay toàn bộ số bị mất byte bắt đầu tại chỗ thiếu đầu tiên

Chương 4-Giao thức TCP 3-12

6
Truyền lại nhanh (Fast Retransmit)
❒ Khoảng time out tương ❒ Nếu máy phát nhận 3
đối dài: ACK trùng cho cùng
❍ Chậm truyền lại segment data, xem như segmnet
bị mất kế tiếp đã bị mất:
❒ Phát hiện mất segment ❍ Truyền lại nhanh : truyền
qua ACK trùng. lại trước khi timer hết
hạn
❍ Sender gửi nhiều
segment liên tiếp
❍ Nếu segment bị mất sẽ
có nhiều ACK trùng.

Chương 4-Giao thức TCP 3-13

Host A Host B

X
timeout

Truyề
n lại lầ
n2

time

Truyền lại sau khi nhận ba ACK trùng Chương 4-Giao thức TCP 3-14

7
Giải thuật truyền lại nhanh:

sự 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
}

Một ACK trùng cho Truyền lại nhanh


segment được báo nhận

Chương 4-Giao thức TCP 3-15

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
❒ Truyền tải số liệu tin cậy
❒ Điều khiển luồng (flow control)
❒ Quản lý liên kết
❒ Kiểm soát nghẽn TCP

Chương 4-Giao thức TCP 3-16

8
Điều khiển luồng (Flow Control
❒ Máy thu có bộ đệm ❒ Điều chỉnh tốc độ phù
thu: hợp: tốc độ truyền và
tốc độ lấy data
Data
từ Data trong Quá trình
IP Vùng trống bộ đệm ứng dụng

Điều khiển luồng


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á
nhanh
❒ Quá trình ứng dụng có
thể chậm chạp trong
việc lấy data từ bộ đệm
thu
Chương 4-Giao thức TCP 3-17

Hoạt động điều khiển luồng


Máy thu quảng cáo

Data
từ Data trong Quá trình khoảng trống bằng cách
Vùng trống bộ đệm ứng dụng
IP
gắn giá trị RcvWindow
trong segment
❒ Máy phát giới hạn số
(giả sử máy thu loại bỏ các data chưa báo nhận
segment không đúng thứ trong phạm vi
tự) RcvWindow
❒ Khoảng trống trong bộ đệm ❍ Đảm bảo máy thu không
= RcvWindow bị tràn
= RcvBuffer-[LastByteRcvd -
LastByteRead]

Chương 4-Giao thức TCP 3-18

9
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
❒ Truyền tải số liệu tin cậy
❒ Điều khiển luồng (flow control)
❒ Quản lý liên kết
❒ Kiểm soát nghẽn TCP

Chương 4-Giao thức TCP 3-19

Quản lý liên kết TCP


Nhắc lại: máy phát và máy Bắt tay ba bước:
thu tạo cầu nối trước Bước 1: client gửi TCP SYN
khi truyền data segment đến server
❒ Khởi tạo các biến: ❍ Chỉ ra seq # ban đầu
❍ seq. #s ❍ Không có data
❍ buffers, flow control (ví
Bước 2: server nhận SYN, phản
dụ RcvWindow)
hồi SYNACK segment
❍ server cấp phát bộ đệm
❍ Chỉ ra seq # ban đầu
Bước 3: client nhận SYNACK,
phản hồi ACK segment, có thể
chứa data

Chương 4-Giao thức TCP 3-20

10
Bắt tay ba bước

Chương 4-Giao thức TCP 3-21

Quản lý liên kết TCP(2)

Thủ tục hủy kết nối: client server

close
Step 1: client gửi TCP FIN FIN

đến server

Step 2: server nhận FIN, ACK


close
phản hồi ACK. Tiến hành FIN
đóng kết nối và gửi FIN.
timed wait

ACK

closed

Chương 4-Giao thức TCP 3-22

11
Quản lý liên kết (3)

Step 3: client nhận FIN, client server


phản hồi ACK. closing
FIN
❍ Vào trạng thái “timed
wait” - gửi ACK cho
server (báo nhận FIN) ACK
closing
FIN
Step 4: server nhận ACK,
cắt kết nối thực sự.

timed wait
ACK

closed

closed

Chương 4-Giao thức TCP 3-23

Quản lý liên kết (4)

Chu kỳ của
TCP server

Chu kỳ của TCP client

Chương 4-Giao thức TCP 3-24

12
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
❒ Truyền tải số liệu tin cậy
❒ Điều khiển luồng (flow control)
❒ Quản lý liên kết
❒ Kiểm soát nghẽn TCP

Chương 4-Giao thức TCP 3-25

Kiểm soát nghẽn trong TCP


❒ Giải pháp: tăng tốc độ truyền (window size), thăm dò băng thông
hữu dụng cho đến khi xảy ra mất gói
❍ additive increase: tăng CongWin lên 1 MSS sau mỗi RTT
(nhận được báo nhận) cho đến khi phát hiện mất data
❍ multiplicative decrease: giảm cửa sổ đi một nửa CongWin khi
thấy mất data
congestion
window
congestion window size

24 Kbytes

Thăm dò băng thông


16 Kbytes

8 Kbytes

time
time

Chương 4-Giao thức TCP 3-26

13
Chi tiết kiểm soát nghẽn trong TCP
❒ Máy phát giới hạn truyền theo: Nhận thức nghẽn:
LastByteSent-LastByteAcked ❒ Sự kiện mất= timeout
≤ CongWin hay 3 ack trùng
❒ Sơ bộ, ❒ Máy phát giảm tốc
CongWin (CongWin) sau một sự
rate = Bytes/sec
RTT kiện mất
❒ CongWin là động,thay đổi theo Ba cơ chế:
tình trạng nghẽn của mạng (hàm ❍ AIMD: additive
số của nghẽn) increase-multiplicative
decrease
❍ slow start
❍ Đàm phán sau các sự
kiện timeout
Chương 4-Giao thức TCP 3-27

TCP Slow Start (1)


❒ Khi bắt đầu, CongWin = 1
MSS
❍ Ví dụ: MSS = 500 bytes
và RTT = 200 msec
❍ Tốc độ khởi động = 20
kbps
❒ Băng thông khả dụng có
lẻ lớn hơn nhiều so với
MSS/RTT
❍ Muốn nhanh chóng đạt tốc
độ cao nhất có thể

Chương 4-Giao thức TCP 3-28

14
TCP Slow Start (2)
❒ Khi kết nối bắt đầu gia Host A Host B
tăng tốc độ nhanh
1 segmen
chóng theo hàm mũ cho t

RTT
đến khi phát hiện sự
kiện mất data đầu tiên: 2 segmen
ts

❍ Gấp đôi CongWin sau


mỗi RTT
4 segmen
❍ Được thực hiện sau mỗi ts
lần nhận ACK
❒ Tóm lại: tốc độ ban đầu
chậm nhưng tăng nhanh
theo hàm mũ time

Chương 4-Giao thức TCP 3-29

Hiệu chỉnh (1)


❒ Sau 3 ACK trùng:
❍ CongWin giảm 1/2
Lý do
❍ Sau đó window tăng tuyến
tính
 3 ACK trùng có lẻ mạng
❒ Sau sự kiện timeout: còn có khả năng chuyển
❍ CongWin = 1 MSS; phát segment
❍ window tăng theo hàm mũ  timeout tín hiệu của
❍ Đến ngưỡng (Threshold) sẽ tình trạng nghẽn
tăng tuyến tính

Chương 4-Giao thức TCP 3-30

15
Hiệu chỉnh (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
ra
Vì vậy thực hiện:
❒ Thay đổi ngưỡng
(Threshold)
❒ Khi có sự kiện nghẽn, gán
Threshold = CongWin/2
(giá trị cửa sổ nghẽn hiện
hành ngay trước khi có
timeout) Chương 4-Giao thức TCP 3-31

Tóm tắt giải thuật kiểm soát nghẽn của


TCP
❒ Khi CongWin < Threshold, máy phát chạy slow-
start , cửa sổ tăng nhanh theo hàm mũ.

❒ Khi CongWin > Threshold, máy phát chạy theo


congestion-avoidance, cửa sổ tăng tuyến tính.

❒ Khi có 3 ACK trùng nhau, gán ngưỡng bằng 1/2 cửa


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.

❒ Khi có timeout gán ngưỡng bằng CongWin/2 và gán


lại CongWin = 1 MSS.

Chương 4-Giao thức TCP 3-32

16
Chương 4-Giao thức TCP 3-33

HẾT CHƯƠNG 4

Chương 4-Giao thức TCP 3-34

17

You might also like