Chương 4

Giao thức TCP

1

NỘI DUNG

m Cấu trúc segment

r Tổng quan Giao thức truyền tải hướng kết nối, TCP

Chương 4-Giao thức TCP

3-2

r Truyền tải số liệu tin cậy r Điều khiển luồng (flow control) r Quản lý liên kết r Kiểm soát nghẽn r Kiểm soát nghẽn TCP

Tổng quan TCP

r RFCs: 793, 1122, 1323, 2018,

r Song công hoàn toàn:

m Luồng số liệu chạy trên cả hai chiều của cùng kết nối

2581

r point-to-point:

(connection-oriented): m Bắt tay thông qua tra đổi

r Kết nối có hướng

m Một truyền và một thu r Tin cậy, giữ đúng thứ tự r Cơ chế ống dẫn (pipeline): m Kiểm soát nghẽn và điều

thông điệp điều khiển

m Máy phát không làm tràn

r Điều khiển luồng: khiển luồng, cài đặt cửa sổ

r Sử dụng bộ đệm truyền và

nhận

Ưng dụng đọc data

Ứng dụng ghi data

socket door

socket door

TCP bộ đệm thu

TCP bộ đệm truyền

segment

Chương 4-Giao thức TCP

3-3

bộ đệm máy thu

Cấu trúc TCP segment

32 bits

URG: urgent data, báo có data khẩn trong segment được chỉ ra bởi data pointer

Đếm theo byte số liệu

source port # dest port # sequence number

ACK: ACK # là hợp lệ

FSRPAU

Receive window

head len

PSH: chuyển data lên trên ngay

not used checksum

Urg data pointer

Số byte (# bytes) Máy thu sẵn sàng nhận

acknowledgement number

RST, SYN, FIN: Thiết lập kết nối

Options (chiều dài thay đổi)

Internet checksum (như UDP)

Chương 4-Giao thức TCP

3-4

Số liệu của ứng dụng (chiều dài thay đổi)

Chỉ số tuần tự và báo nhận ACK

(cid:1) TCP xem toàn bộ khối số liệu là một dòng các byte liên tục (cid:1) 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 (cid:1) 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

Server

Client

Seq=42, ACK=79, data = ‘C’

User Gõ ký tự ‘C’

Nhận 'C' và truyền lại ‘C’

‘ C ’

d a t a =

A C K = 4 3 ,

S e q = 7 9 ,

Seq=43, ACK=80

Nhận 'C' và phản hồi với data trống

time

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

Chương 4-Giao thức TCP

3-6

Khái niệm: r Piggyback r Cumulative ACK

Tham số RTT và Timeout (1)

Tính RTT? r Đo lường thời gian từ khi truyền

Giá trị timeout? r Phải lớn hơn thời gian

segment đến khi nhận ACK r Thời gian này thay đổi--> trung

r Quá ngắn? r Quá dài?

Chương 4-Giao thức TCP

3-7

hành trình RTT (round trip time) m RTT thay đổi bình

Tham số RTT và Timeout (2)

r Exponential weighted moving average r Ảnh hưởng của mẫu quá khứ giảm nhanh theo hàm mũ r Giá trị tiêu biểu là: αααα = 0.125

Chương 4-Giao thức TCP

3-8

EstimatedRTT = (1- αααα)*EstimatedRTT + αααα*SampleRTT

Ví dụ

RTT: gaia.cs.umass.edu to fantasia.eurecom.fr

350

300

250

) s d n o c e s

i l l i

m

( T T R

200

150

100

1

8

15

22

29

36

43

50

57

64

71

78

85

92

99

106

time (seconnds)

SampleRTT

Estimated RTT

Chương 4-Giao thức TCP

3-9

Tham số RTT và Timeout (3)

Cài đặt timeout r EstimtedRTT cộng với “gia số an toàn”

m EstimatedRTT thay đổi nhiều -> gia số lớn hơn

r Trước hết xác định độ lệch của mẫu so với EstimatedRTT:

DevRTT = (1-ββββ)*DevRTT +

ββββ*|SampleRTT-EstimatedRTT|

(giá trị tiêu biểu ββββ = 0.25)

Sau đó gán giá trị timeout interval:

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

TimeoutInterval = EstimatedRTT + 4*DevRTT

NỘI DUNG

m Cấu trúc segment

r Tổng quan Giao thức truyền tải hướng kết nối, TCP

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

r Truyền tải số liệu tin cậy r Điều khiển luồng (flow control) r Quản lý liên kết r Kiểm soát nghẽn r Kiểm soát nghẽn TCP

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

r TCP thực hiện dịch vụ

r Việc truyền lại được

kích hoạt bởi: m Sự kiện timeout m Nhận ack trùng

r Các segment được chuyển

truyền số liệu tin cậy ngay trên dịch vụ chuyển datagram không bảo đảm IP

r Dùng báo nhận kiểu tích lũy đại diện (cumulative ack) r TCP dùng một bộ định thời

theo cơ chế ống dẫn (Pipeline)

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

truyền lại

timeout: r Truyền lại segment gây

Các sự kiện phía TCP sender Nhận data từ ứng dụng: r Tạo segment với chỉ số tuần tự kế tiếp (seq #)

ra timeout

r Khởi động lại timer Nhận ACK: r Nếu ack cho các

segment cũ chưa có báo nhận m Cập nhật m Khởi động timer nếu còn

r Khởi động timer nếu chưa chạy (như cho segment cũ nhất chưa có báo nhận) r Khoảng thời gian timeout được gán: TimeOutInterval

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

segment đang đợi

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

Host A

Host B

Host A

Host B

Seq=92, 8 bytes data

Seq=92, 8 bytes data Seq=100, 20 bytes data

A C K = 1 0 0

=

0

2

K

t u o e m i t

1

C

A

t u o e m i t 2 9 = q e S

X loss

0 0 1 A C K = Seq=92, 8 bytes data

Seq=92, 8 bytes data

0

2

Sendbase = 100 SendBase = 120

1

A C K =

A C K = 1 0 0

t u o e m i t 2 9 = q e S

SendBase = 100

SendBase = 120

Timeout sớm

time

time

Mất ACK

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

Kịch bản truyền lại (2)

Host A

Host B

Seq=92, 8 bytes data A C K = 1 0 0 Seq=100, 20 bytes data

t u o e m i t

X loss

A C K = 1 2 0

SendBase = 120

time

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

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

Phát sinh ACK

Đặc tả theo RFC 1122, RFC 2581

Hành vi tại máy thu

Sự kiện tại máy thu

Chậm ACK. Đợi segment kế trong 500ms. Nếu không có segment kế, gửi ACK

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

Gửi ngay một ACK đại diện báo nhận cho cả hai một lúc

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

Gửi ngay ACK trùng chỉ số để chỉ ra byte đang đợi kế tiếp

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

Gửi ngay ACK,báo chờ segment với byte bắt đầu tại chỗ thiếu đầu tiên

Segment đến bổ sung vào một phần hay toàn bộ số bị mất

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

Truyền lại nhanh (Fast Retransmit)

đối dài: m Chậm truyền lại segment

r Khoảng time out tương

bị mất

r Phát hiện mất segment

qua ACK trùng. m Sender gửi nhiều segment liên tiếp

m Nếu segment bị mất sẽ có nhiều ACK trùng.

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

r Nếu máy phát nhận 3 ACK trùng cho cùng data, xem như segmnet kế tiếp đã bị mất: m Truyền lại nhanh : truyền lại trước khi timer hết hạn

Host A

Host B

X

Truyền lại lần 2

t u o e m i t

time

Truyền lại sau khi nhận ba ACK trùng

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

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

}

Truyền lại nhanh

Một ACK trùng cho segment được báo nhận

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

NỘI DUNG

m Cấu trúc segment

r Tổng quan Giao thức truyền tải hướng kết nối, TCP

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

r Truyền tải số liệu tin cậy r Điều khiển luồng (flow control) r Quản lý liên kết r Kiểm soát nghẽn r Kiểm soát nghẽn TCP

Điều khiển luồng (Flow Control

thu:

r Máy thu có bộ đệm

r Điều chỉnh tốc độ phù hợp: tốc độ truyền và tốc độ lấy data

Data trong bộ đệm

Vùng trống

Quá trình ứng dụng

Data từ IP

Đ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

thể chậm lấy data từ bộ đệm thu để xử lý

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

r Quá trình ứng dụng có

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

r Máy thu quảng cáo

Data trong bộ đệm

Vùng trống

Quá trình ứng dụng

Data từ IP

khoảng trống bằng cách gắn giá trị RcvWindow trong segment

(giả sử máy thu loại bỏ các segment không đúng thứ tự)

r Máy phát giới hạn số data chưa báo nhận trong phạm vi RcvWindow m Đảm bảo máy thu không

bị tràn

r Khoảng trống trong bộ đệm = RcvWindow = RcvBuffer-[LastByteRcvd -

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

LastByteRead]

NỘI DUNG

m Cấu trúc segment

r Tổng quan Giao thức truyền tải hướng kết nối, TCP

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

r Truyền tải số liệu tin cậy r Điều khiển luồng (flow control) r Quản lý liên kết r Kiểm soát nghẽn r Kiểm soát nghẽn TCP

Quản lý liên kết TCP (1/5)

Bắt tay ba bước:

Nhắc lại: máy phát và máy thu tạo cầu nối trước khi truyền data r Khởi tạo các biến:

m seq. #s m buffers, flow control (ví

Bước 1: client gửi TCP SYN segment đến server m Chỉ ra seq # ban đầu m Không có data

m server cấp phát bộ đệm m Chỉ ra seq # ban đầu Bước 3: client nhận SYNACK,

Bước 2: server nhận SYN, phản dụ RcvWindow) hồi SYNACK segment

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

phản hồi ACK segment, có thể chứa data

Quản lý liên kêt TCP (2/5): Bắt tay ba bước

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

Quản lý liên kết TCP(3/5)

client

server

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

close

FIN

Step 1: client gửi TCP FIN

A C K

close

F I N

Step 2: server nhận FIN, phản hồi ACK. Tiến hành đóng kết nối và gửi FIN.

ACK

t i a w d e m i t

closed

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

đến server

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

client

server

Step 3: client nhận FIN,

closing

FIN

m Vào trạng thái “timed wait” - gửi ACK cho server (báo nhận FIN)

A C K

closing

F I N

Step 4: server nhận ACK,

phản hồi ACK.

ACK

closed

t i a w d e m i t

closed

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

cắt kết nối thực sự.

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

Chu kỳ của TCP server

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

Chu kỳ của TCP client

NỘI DUNG

m Cấu trúc segment

r Tổng quan Giao thức truyền tải hướng kết nối, TCP

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

r Truyền tải số liệu tin cậy r Điều khiển luồng (flow control) r Quản lý liên kết r Kiểm soát nghẽn r Kiểm soát nghẽn TCP

Kiểm soát nghẽn

Hiện tượng nghẽn: r Thông thường: “quá nhiều nguồn gửi quá nhiều data và quá nhanh vào mạng, quá khả năng chịu đựng” r Một khía cạnh khác biệt với điều khiển luồng, điều

khiển luồng chỉ giải quyết phần ngọn!

m Mất gói (bộ đệm tại node bị tràn) m Quá trễ (xếp hàng dài trong bộ đệm tại node) r Một trong 10 vấn đề hàng đầu của mạng!

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

r Các biểu hiện của nghẽn:

Nguyên nhân và phí tổn: kịch bản 1

Host A

λout

λin : số liệu nguồn

receiver

Host B

Bộ đệm đầu ra không giới hạn

r hai sender, hai

r Một router, bộ đệm vô hạn

r Không truyền lại

nghẽn

r Quá trễ khi

lượng

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

r Tối đa thông

Nguyên nhân và phí tổn: kịch bản 2

Host A

λout

λin : số liệu nguồn

λ'in : số liệu nguồn+ data truyền lại

Host B

Bộ đệm hữu hạn

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

r Một router, bộ đệm hữu hạn r sender truyền lại gói bị mất

Nguyên nhân và phí tổn: kịch bản 2 r Luôn luôn:

λ

λ

λ

λ

= in

> in

λ

r 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

out r Chỉ truyền lại khi mất: out

in

λ

R/2

R/2

R/2

R/3

R/4

t u o λ

t u o λ

t u o λ

R/2

R/2

R/2

λin

λin

λin

b.

c.

a. Phí tổn do nghẽn: r Truyền lại quá nhiều r Truyền lại không cần thiết: liên kết mang quá nhiều bản sao của

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

so với truyền lại khi mất có cùng out

gói

Nguyên nhân và phí tổn: kịch bản 3 (1/2)

Điều gì xảy ra khi

λ λ gia tăng? in

r Bốn sender r Các đường đi qua nhiều node r timeout/truyền lại

Host A

λout

λin : data nguồn λ'in : data nguồn + data truyền lại

Bộ đệm hữu hạn

Host B

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

in

Nguyên nhân và phí tổn: kịch bản 3 (2/2)

λ o u

t

H o s t A

H o s t B

Phí tổn khác: r Khi gói bị hủy, bất kỳ dung lượng truyền lên nào cho

gói đều là lãng phí!

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

Các giải pháp

Network-assisted

End-end congestion

control:

congestion control: r Các router thông báo cho

r Không có phản hồi tường

minh từ mạng

r Các host xét triệu chứng

host m Bit chỉ định nghẽn

m Tốc độ nào sender nên

(SNA, DECbit, TCP/IP ECN, ATM) mất gói và trễ r TCP dùng cách này

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

truyền vào lúc nào

NỘI DUNG

m Cấu trúc segment

r Tổng quan Giao thức truyền tải hướng kết nối, TCP

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

r Truyền tải số liệu tin cậy r Điều khiển luồng (flow control) r Quản lý liên kết r Kiểm soát nghẽn r Kiểm soát nghẽn TCP

Kiểm soát nghẽn trong TCP

r Giải pháp: tăng tốc độ truyền (window size), thăm dò băng thông

m multiplicative decrease: giảm cửa sổ đi một nửa CongWin khi

hữu dụng cho đến khi xảy ra mất gói m 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

congestion window

i

24 Kbytes

thấy mất data

16 Kbytes

i

8 Kbytes

e z s w o d n w n o i t s e g n o c

time time

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

Thăm dò băng thông

Chi tiết kiểm soát nghẽn trong TCP

Nhận thức nghẽn: r Sự kiện mất= timeout

r Máy phát giới hạn truyền theo: LastByteSent-LastByteAcked ≤≤≤≤ CongWin

hay 3 ack trùng r Máy phát giảm tốc

r Sơ bộ,

(CongWin) sau một sự kiện mất Ba cơ chế:

m AIMD: additive

rate = Bytes/sec CongWin RTT

r CongWin là động,thay đổi theo tình trạng nghẽn của mạng (hàm số của nghẽn)

increase-multiplicative decrease m slow start m Đàm phán sau các sự

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

kiện timeout

TCP Slow Start (1/2)

MSS m Ví dụ: MSS = 500 bytes

r Khi bắt đầu, CongWin = 1

và RTT = 200 msec m Tốc độ khởi động = 20

kbps

r Băng thông khả dụng có lẻ lớn hơn nhiều so với MSS/RTT m Muốn nhanh chóng đạt tốc

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

độ cao nhất có thể

TCP Slow Start (2/2)

Host A

Host B

1 segment

T T R

2 segments

chóng theo hàm mũ cho đến khi phát hiện sự kiện mất data đầu tiên: m Gấp đôi CongWin sau

r Gia tăng tốc độ nhanh

m Được thực hiện sau mỗi

mỗi RTT

4 segments

lần nhận ACK

time

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

r Tóm lại: tốc độ ban đầu chậm nhưng tăng nhanh theo hàm mũ

Hiệu chỉnh (1/2)

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 r Sau 3 ACK trùng: m CongWin giảm 1/2 m Sau đó window tăng tuyến

Lý do tính

(cid:1) 3 ACK trùng có lẻ mạng còn có khả năng chuyển phát segment (cid:1) timeout tín hiệu của tình trạng nghẽn

r Sau sự kiện timeout: m CongWin = 1 MSS; m window tăng theo hàm mũ m Đến ngưỡng (Threshold) sẽ

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

tăng tuyến tính

Hiệ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?

Thực hiện: r Dùng ngưỡng (Threshold) r 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-43

Khi CongWin đạt 1/2 giá trị của nó trước khi có timeout xảy ra

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

start , cửa sổ tăng nhanh theo hàm mũ.

r Khi CongWin < Threshold, máy phát chạy slow-

r Khi CongWin > Threshold, máy phát chạy theo 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.

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

lại CongWin = 1 MSS.

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

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

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

HẾT CHƯƠNG 4

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