Mạng máy tính

Содержание

Слайд 2

1-

Chương 4: Tầng giao vận

Mục đích:
Hiểu các nguyên tắc bên trong

1- Chương 4: Tầng giao vận Mục đích: Hiểu các nguyên tắc
dịch vụ của tầng giao vận:
Multiplexing/Demultiplexing
Truyền dữ liệu tin cậy
Điều khiển luồng
Điều khiển tắc nghẽn
Học về giao thức tầng giao vận trong Internet:
UDP: không hướng kết nối
TCP: hướng kết nối
Điều khiển tắc nghẽn của TCP

Слайд 3

1-

Chương 4: Tầng giao vận

4.1 Các dịch vụ tầng giao vận
4.2 Multiplexing

1- Chương 4: Tầng giao vận 4.1 Các dịch vụ tầng giao
và demultiplexing
4.3 Dịch vụ không hướng kết nối: UDP
4.4 Các nguyên tắc của truyền dữ liệu tin cậy

4.5 Dịch vụ 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
Quản lý kết nối
4.6 Các nguyên tắc của điều khiển tắc nghẽn
4.7 Điều khiển tắc nghẽn của TCP

Слайд 4

1-

Các giao thức và dịch vụ tầng giao vận

Cung cấp truyền thông

1- Các giao thức và dịch vụ tầng giao vận Cung cấp
lô-gíc giữa các tiến trình ứng dụng chạy 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, chuyển tới tầng mạng
Bên nhận: ghép các segment thành bản tin, chuyển lên tầng ứng dụng
Nhiều hơn một giao thức giao vận cho ứng dụng
Internet: TCP và UDP

Слайд 5

1-

Tầng giao vận và tầng mạng

Tầng mạng: truyền thông lô-gíc giữa các

1- Tầng giao vận và tầng mạng Tầng mạng: truyền thông lô-gíc
host
Tầng giao vận: truyền thông lô-gíc giữa các tiến trình
dựa trên dịch vụ của tầng mạng

Tương tự hộ gia đình:
12 đứa trẻ gửi thư cho 12 đứa trẻ
Các tiến trình = các đứa trẻ
Các bản tin ứng dụng = các bức thư
host = nhà
Giao thức giao vận = Ann và Bill
Giao thức tầng mạng = dịch vụ chuyển thư

Слайд 6

1-

Các giao thức tầng giao vận của Internet

Truyền tin cậy, có

1- Các giao thức tầng giao vận của Internet Truyền tin cậy,
thứ tự (TCP)
Điều khiển tắc nghẽn
Điều khiển luồng
Thiết lập kết nối
Truyền không có thứ tự, không tin cậy: UDP
Các dịch vụ không có:
Đảm bảo độ trễ
Đảm bảo băng thông

Слайд 7

1-

Chương 4: Tầng giao vận

4.1 Các dịch vụ tầng giao vận
4.2 Multiplexing

1- Chương 4: Tầng giao vận 4.1 Các dịch vụ tầng giao
và demultiplexing
4.3 Dịch vụ không hướng kết nối: UDP
4.4 Các nguyên tắc của truyền dữ liệu tin cậy

4.5 Dịch vụ 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
Quản lý kết nối
4.6 Các nguyên tắc của điều khiển tắc nghẽn
4.7 Điều khiển tắc nghẽn của TCP

Слайд 8

1-

Multiplexing/demultiplexing

= tiến trình

= socket

Chuyển các segment đã nhận
tới đúng socket

Thu thập

1- Multiplexing/demultiplexing = tiến trình = socket Chuyển các segment đã nhận
dữ liệu từ các socket,
đóng gói dữ liệu bởi header
(sau đó sẽ dùng để
demultiplexing)

Слайд 9

1-

Thực hiện demultiplexing

Host nhận gói dữ liệu IP
Mỗi gói dữ liệu

1- Thực hiện demultiplexing Host nhận gói dữ liệu IP Mỗi gói
có địa chỉ IP nguồn, địa chỉ IP đích
Mỗi gói dữ liệu mang một segment của tầng giao vận
Mỗi segment có giá trị cổng nguồn và cổng đích (giá trị cổng cố định cho các kiểu ứng dụng cụ thể)
Host sử dụng địa chỉ IP và giá trị cổng để chuyển segment tới socket thích hợp

source port #

dest port #

32 bits

Dữ liệu ứng dụng
(bản tin)

Các trường header

Định dạng TCP/UDP segment

Слайд 10

1-

Chương 4: Tầng giao vận

4.1 Các dịch vụ tầng giao vận
4.2 Multiplexing

1- Chương 4: Tầng giao vận 4.1 Các dịch vụ tầng giao
và demultiplexing
4.3 Dịch vụ không hướng kết nối: UDP
4.4 Các nguyên tắc của truyền dữ liệu tin cậy

4.5 Dịch vụ 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
Quản lý kết nối
4.6 Các nguyên tắc của điều khiển tắc nghẽn
4.7 Điều khiển tắc nghẽn của TCP

Слайд 11

1-

UDP: User Datagram Protocol [RFC 768]

Dịch vụ “best effort”, UDP segment có

1- UDP: User Datagram Protocol [RFC 768] Dịch vụ “best effort”, UDP
thể:
mất
chuyển không theo thứ tự đến ứng dụng
Không hướng kết nối:
Không có bắt tay giữa bên gửi và bên nhận
Mỗi UDP segment được điều khiển độc lập

Tại sao có UDP?
Không thiết lập kết nối (thiết lập có thể tăng độ trễ)
Đơn giản: không có trạng thái kết nối tại bên gửi, bên nhận
Header của segment nhỏ
Không điều khiển tắc nghẽn: UDP có thể gửi ra với tốc độ mong muốn

Слайд 12

1-

UDP (tiếp)

Thường sử dụng cho các ứng dụng đa phương tiện truyền

1- UDP (tiếp) Thường sử dụng cho các ứng dụng đa phương
dòng
Chấp nhận mất gói
Nhạy cảm với tốc độ
Ứng dụng khác sử dụng UDP
DNS
SNMP
Truyền tin cậy qua UDP: thêm sự tin cậy tại tầng ứng dụng
Khôi phục lỗi do ứng dụng cụ thể

source port #

dest port #

32 bits

dữ liệu
của ứng dụng
(bản tin)

Định dạng của UDP segment

length

checksum

Length tính
theo byte của
UDP
segment,
bao gồm
header

Слайд 13

1-

UDP checksum

Bên gửi:
Đối xử với nội dung các segment như chuỗi các

1- UDP checksum Bên gửi: Đối xử với nội dung các segment
số nguyên 16 bít
checksum: cộng (tổng bù của 1) của nội dung segment
Phía gửi đặt giá trị checksum trong trường checksum của UDP

Bên nhận:
Tính toán checksum của segment nhận được
Kiểm tra xem checksum đã tính có bằng giá trị trường checksum:
KHÔNG BẰNG– Phát hiện có lỗi
BẰNG – không phát hiện ra lỗi. Nhưng có thể có lỗi?

Mục đích: phát hiện lỗi trong segment đã truyền

Слайд 14

1-

Ví dụ Checksum

Chú ý
Khi cộng các số, giá trị bít nhớ cần

1- Ví dụ Checksum Chú ý Khi cộng các số, giá trị
thêm vào kết quả
Ví dụ: cộng hai số nguyên 16 bít

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

Tổng

checksum

Слайд 15

1-

Chương 4: Tầng giao vận

4.1 Các dịch vụ tầng giao vận
4.2 Multiplexing

1- Chương 4: Tầng giao vận 4.1 Các dịch vụ tầng giao
và demultiplexing
4.3 Dịch vụ không hướng kết nối: UDP
4.4 Các nguyên tắc của truyền dữ liệu tin cậy

4.5 Dịch vụ 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
Quản lý kết nối
4.6 Các nguyên tắc của điều khiển tắc nghẽn
4.7 Điều khiển tắc nghẽn của TCP

Слайд 16

1-

Các nguyên tắc của truyền dữ liệu tin cậy

Tầm quan trọng của

1- Các nguyên tắc của truyền dữ liệu tin cậy Tầm quan
tầng liên kết dữ liệu, tầng giao vận, tầng ứng dụng

Đặc điểm của kênh truyền không tin cậy xác định sự phức tạp của giao thức truyền dữ liệu tin cậy (rdt)

(a) Dịch vụ cung cấp (b) Cài đặt dịch vụ

Слайд 17

1-

Truyền dữ liệu tin cậy

Bên gửi

Bên nhận

deliver_data(): được gọi bởi rdt để

1- Truyền dữ liệu tin cậy Bên gửi Bên nhận deliver_data(): được
truyền dữ liệu lên tầng trên

Слайд 18

1-

Truyền dữ liệu tin cậy

Sử dụng máy trạng thái hữu hạn (FSM)

1- Truyền dữ liệu tin cậy Sử dụng máy trạng thái hữu
để xử lý bên nhận và bên gửi

Sự kiện gây ra chuyển trạng thái

Hành động khi chuyển trạng thái

state: khi trong 1 trạng thái, trạng thái tiếp theo là duy nhất đối với 1 sự kiện

Слайд 19

1-

rdt1.0: Truyền tin cậy qua kênh tin cậy

Tầng dưới là truyền tin

1- rdt1.0: Truyền tin cậy qua kênh tin cậy Tầng dưới là
cậy
Không có lỗi bít
Không mất gói tin
FSM của bên gửi và bên nhận:
Bên gửi chuyển dữ liệu xuống kênh phía dưới
Bên nhận đọc dữ liệu từ kênh bên dưới

Đợi cuộc
gọi từ
phía trên

packet = make_pkt(data)
udt_send(packet)

rdt_send(data)

extract (packet,data)
deliver_data(data)

đợi cuộc gọi từ phía dưới

rdt_rcv(packet)

Bên gửi

Bên nhận

Слайд 20

1-

Rdt2.0: kênh có lỗi bít

Kênh phía dưới có thể có lỗi
checksum để

1- Rdt2.0: kênh có lỗi bít Kênh phía dưới có thể có
phát hiện lỗi
Cách khôi phục lỗi
Báo nhận (ACK): bên nhận chỉ rõ cho bên gửi gói tin nhận thành công
Báo lỗi (NAK): bên nhận chỉ rõ cho bên gửi gói tin có lỗi
Bên nhận truyền lại gói tin nếu nhận NAK
Cơ chế rdt2.0:
Phát hiện lỗi
Phản hồi cho bên nhận: bản tin điều khiển (ACK, NAK: bên nhận -> bên gửi)

Слайд 21

1-

rdt2.0: Máy trạng thái

Đợi cuộc gọi từ trên

snkpkt = make_pkt(data, checksum)
udt_send(sndpkt)

extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)

rdt_rcv(rcvpkt) &&

1- rdt2.0: Máy trạng thái Đợi cuộc gọi từ trên snkpkt =

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) && isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) &&
isNAK(rcvpkt)

Bên gửi

Bên nhận

rdt_send(data)

Слайд 22

1-

rdt2.0: Trường hợp không lỗi

đợi cuộc gọi từ phía trên

snkpkt = make_pkt(data,

1- rdt2.0: Trường hợp không lỗi đợi cuộc gọi từ phía trên
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)

đợi cuộc gọi từ phía dưới

rdt_send(data)

Λ

Слайд 23

1-

rdt2.0: Trường hợp có lỗi

đợi cuộc gọi từ phía trên

snkpkt = make_pkt(data,

1- rdt2.0: Trường hợp có lỗi đợi cuộc gọi từ phía trên
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)

đợi cuộc gọi từ phía dưới

rdt_send(data)

Λ

Слайд 24

1-

rdt2.1: Bên gửi, điều khiển ACK/NAK lỗi

đợi cuộc gọi 0 từ trên

sndpkt

1- rdt2.1: Bên gửi, điều khiển ACK/NAK lỗi đợi cuộc gọi 0
= make_pkt(0, data, checksum)
udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||
isNAK(rcvpkt) )

sndpkt = make_pkt(1, data, checksum)
udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt)
&& isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||
isNAK(rcvpkt) )

rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt)
&& isACK(rcvpkt)

Λ

Слайд 25

1-

rdt2.1: Bên nhận, điều khiển ACK/NAK lỗi

sndpkt = make_pkt(NAK, chksum)
udt_send(sndpkt)

rdt_rcv(rcvpkt) &&

1- rdt2.1: Bên nhận, điều khiển ACK/NAK lỗi sndpkt = make_pkt(NAK, chksum)
not corrupt(rcvpkt) &&
has_seq0(rcvpkt)

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)
&& has_seq1(rcvpkt)

extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt)

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)
&& has_seq0(rcvpkt)

extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt)

rdt_rcv(rcvpkt) && (corrupt(rcvpkt)

sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt)

rdt_rcv(rcvpkt) &&
not corrupt(rcvpkt) &&
has_seq1(rcvpkt)

rdt_rcv(rcvpkt) && (corrupt(rcvpkt)

sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt)

sndpkt = make_pkt(NAK, chksum)
udt_send(sndpkt)

Слайд 26

1-

rdt2.1

Bên gửi:
seq # được thêm vào gói tin
Hai seq. #’s (0,1)
Phải kiểm

1- rdt2.1 Bên gửi: seq # được thêm vào gói tin Hai
tra nếu ACK/NAK đã nhận có lỗi
Hai lần -> ổn định

Bên nhận:
Phải kiểm tra gói tin đã nhận có lặp không
Trạng thái chỉ định pkt seq # mong đợi là 0 hay 1

Слайд 27

1-

rdt2.2: Giao thức NAK-free

Tương tự rdt2.1, chỉ sử dụng ACK
Thay vì NAK,

1- rdt2.2: Giao thức NAK-free Tương tự rdt2.1, chỉ sử dụng ACK
bên nhận phải gửi ACK cho pkt cuối đã nhận OK
ACK lặp tại bên nhận sẽ như xử lý như nhận NAK: truyền lại pkt hiện tại

Слайд 28

1-

rdt2.2: Phân mảnh tại bên gửi và bên nhận

sndpkt = make_pkt(0, data,

1- rdt2.2: Phân mảnh tại bên gửi và bên nhận sndpkt =
checksum)
udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||
isACK(rcvpkt,1) )

rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt)
&& isACK(rcvpkt,0)

FSM bên gửi

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)
&& has_seq1(rcvpkt)

extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(ACK1, chksum)
udt_send(sndpkt)

rdt_rcv(rcvpkt) &&
(corrupt(rcvpkt) ||
has_seq1(rcvpkt))

udt_send(sndpkt)

FSM bên nhận

L

Слайд 29

1-

rdt3.0: kênh có lỗi và mất gói

Giả sử: kênh phía dưới có

1- rdt3.0: kênh có lỗi và mất gói Giả sử: kênh phía
thể mất gói (dữ liệu hoặc ACK)
checksum, seq. #, ACK, truyền lại là không đủ

Cách tiếp cận: bên nhận đợi ACK một thời gian
Truyền lại nếu không có ACK nhận tại thời điểm này
Nếu gói tin (hoặc ACK) trễ (không mất):
Truyền lại -> lặp, sử dụng seq# để giải quyết
Bên nhận phải gán seq # của gói tin được ACK
Đòi hỏi bộ đếm thời gian ngược

Слайд 30

1-

rdt3.0 Bên gửi

sndpkt = make_pkt(0, data, checksum)
udt_send(sndpkt)
start_timer

rdt_send(data)

rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||
isACK(rcvpkt,1) )

sndpkt

1- rdt3.0 Bên gửi sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) start_timer rdt_send(data)
= make_pkt(1, data, checksum)
udt_send(sndpkt)
start_timer

rdt_send(data)

rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt)
&& isACK(rcvpkt,0)

rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||
isACK(rcvpkt,0) )

rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt)
&& isACK(rcvpkt,1)

stop_timer

stop_timer

udt_send(sndpkt)
start_timer

timeout

udt_send(sndpkt)
start_timer

timeout

rdt_rcv(rcvpkt)

Λ

rdt_rcv(rcvpkt)

Λ

Λ

Λ

Слайд 31

1-

rdt3.0

(a) Không mất gói

(b) Mất gói

1- rdt3.0 (a) Không mất gói (b) Mất gói

Слайд 32

1-

rdt3.0

(c) Mất ACK

(c) Timeout

1- rdt3.0 (c) Mất ACK (c) Timeout

Слайд 33

1-

Hiệu năng của rdt3.0

Hiệu năng của rdt3.0 bị ảnh hưởng
Ví dụ: đường

1- Hiệu năng của rdt3.0 Hiệu năng của rdt3.0 bị ảnh hưởng
truyền 1 Gbps, lan truyền 15 ms, gói tin 1KB:

T

transmit

=

8kb/pkt

10**9 b/sec

= 8 microsec

U sender: sự sử dụng – thời gian bên gửi bận gửi
1KB pkt trong mỗi 30 msec -> 33kB/sec thông lượng qua đường truyền 1 Gbps
Giao thức mạng hạn chế sử dụng tài nguyên vật lý!

L (độ dài gói tin, bit)

R (tốc độ truyền, bps)

=

Слайд 34

1-

rdt3.0: Hoạt động stop-and-wait

gói tin đầu tiên được truyền, t =

1- rdt3.0: Hoạt động stop-and-wait gói tin đầu tiên được truyền, t
0

Bên gửi

Bên nhận

RTT

gói tin cuối cùng truyền, t = L / R

bít của gói tin đầu tiên đến

bít của gói tin cuối cùng đến, gửi ACK

ACK đến, gửi gói tin tiếp,
t = RTT + L / R

Слайд 35

1-

Các giao thức Pipeline

Pipeline: Bên gửi cho phép nhiều, tới các gói

1- Các giao thức Pipeline Pipeline: Bên gửi cho phép nhiều, tới
tin được ack
Dải giá trị sequence phải tăng
Vùng đệm tại bên gửi và bên nhận

Hai hình thức chung của các giao thức pipeline: go-Back-N, selective repeat

Слайд 36

1-

Pipelining: Tăng hiệu quả sử dụng

Bít gói tin đầu tiên được truyền,

1- Pipelining: Tăng hiệu quả sử dụng Bít gói tin đầu tiên
t = 0

Bên gửi

Bên nhận

RTT

Bít cuối cùng được truyền
t = L / R

Bít gói tin đầu tiên đến

Bít gói tin cuối cùng đến, gửi ACK

ACK đến, gửi gói tin tiếp theo,
t = RTT + L / R

Bít cuối cùng của gói tin thứ 2 đến, gửi ACK

Bít cuối cùng của gói tin 3 đến, gửi ACK

Tăng hiệu quả sử dụng lên 3 lần

Слайд 37

1-

Go-Back-N

Bên gửi:
k-bit seq # trong pkt header
“window” N, cho phép các gói

1- Go-Back-N Bên gửi: k-bit seq # trong pkt header “window” N,
tin không ack liên tiếp

ACK(n): ACK mọi gói tin tới seq # n - “ACK tích lũy”
Có thể nhầm ACK lặp
Thời gian cho mỗi gói tin
timeout(n): truyền lại gói tin n và tất cả gói tin seq# lớn hơn n trong cửa sổ
Lý do phải giới hạn N: điều khiển luồng, điều khiển tắc nghẽn

Слайд 38

1-

GBN: FSM mở rộng của bên gửi

start_timer
udt_send(sndpkt[base])
udt_send(sndpkt[base+1])

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum < base+N) {

1- GBN: FSM mở rộng của bên gửi start_timer udt_send(sndpkt[base]) udt_send(sndpkt[base+1]) …
sndpkt[nextseqnum] = make_pkt(nextseqnum,data,chksum)
udt_send(sndpkt[nextseqnum])
if (base == nextseqnum) /* pkt chưa được ack đầu tiên */
start_timer
nextseqnum++
}
else
refuse_data(data)

base = getacknum(rcvpkt)+1
If (base == nextseqnum) /* tất cả các pkt đều được ack */
stop_timer
else /* vẫn còn gói tin chưa được ack */
start_timer

rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)

base=1
nextseqnum=1

rdt_rcv(rcvpkt)
&& corrupt(rcvpkt)

Λ

Sử dụng một timer cho gói tin đã gửi và chưa được ack và cũ nhất

Слайд 39

1-

GBN: FSM mở rộng của bên nhận

ACK: luôn gửi ACK cho gói

1- GBN: FSM mở rộng của bên nhận ACK: luôn gửi ACK
tin đã nhận đúng với gói tin đúng thứ tự seq # nhất
Có thể sinh ra ACK lặp
Chỉ cần nhớ expectedseqnum
Gói tin không đúng thứ tự:
Loại bỏ (không đưa vào bộ nhớ đệm)

đợi

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)
&& notcurrupt(rcvpkt)
&& hasseqnum(rcvpkt,expectedseqnum)

extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(expectedseqnum,ACK,chksum)
udt_send(sndpkt)
expectedseqnum++

expectedseqnum=1
sndpkt =
make_pkt(expectedseqnum,ACK,chksum)

Λ

Слайд 40

1-

GBN

Window size = 4 pkt

1- GBN Window size = 4 pkt

Слайд 41

1-

Selective Repeat

Bên nhận ack riêng cho mọi gói tin nhận đúng
Đưa gói

1- Selective Repeat Bên nhận ack riêng cho mọi gói tin nhận
tin vào vùng đệm nếu cầu, 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

Слайд 42

1-

Selective repeat: Cửa sổ bên gửi, bên nhận

1- Selective repeat: Cửa sổ bên gửi, bên nhận

Слайд 43

1-

Selective repeat

Dữ liệu từ trên:
Nếu có seq # tiếp trong cửa sổ,

1- Selective repeat Dữ liệu từ trên: Nếu có seq # tiếp
gửi gói tin
timeout(n):
Gửi lại gói tin n, khởi tạo lại bộ đếm thời gian
ACK(n) [sendbase,sendbase+N]:
Đánh dấu gói tin n đã nhận
Nếu n gói tin không được ACK nhỏ nhất, if n smallest unACKed pkt, chuyển cơ sở của cửa sổ tới seq # không được ACK tiếp

Gói tin n [rcvbase, rcvbase+N-1]
Gửi ACK(n)
Không đúng thứ tự: vùng đệm
Đúng thứ tự: chuyển lên (cũng có thể đưa vào vùng đệm, xếp thứ tự), cửa sổ chuyển tiếp tới gói tin đã nhận tiếp
pkt n [rcvbase-N,rcvbase-1]
ACK(n)
Nếu không:
Bỏ qua

Слайд 44

1-

Selective repeat

1- Selective repeat

Слайд 45

1-

Selective repeat

Ví dụ:
seq #’s: 0, 1, 2, 3
Kích thước cửa

1- Selective repeat Ví dụ: seq #’s: 0, 1, 2, 3 Kích
sổ=3
Bên nhận thấy không có sự khác nhau trong 2 kịch bản
Chuyển không đúng dữ liệu như mới (a)
Q: Quan hệ giữa kích thước seq# và kích thước cửa sổ?

Слайд 46

1-

Chương 4: Tầng giao vận

4.1 Các dịch vụ tầng giao vận
4.2 Multiplexing

1- Chương 4: Tầng giao vận 4.1 Các dịch vụ tầng giao
và demultiplexing
4.3 Dịch vụ không hướng kết nối: UDP
4.4 Các nguyên tắc của truyền dữ liệu tin cậy

4.5 Dịch vụ 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
Quản lý kết nối
4.6 Các nguyên tắc của điều khiển tắc nghẽn
4.7 Điều khiển tắc nghẽn của TCP

Слайд 47

1-

TCP: Tổng quan RFC: 793, 1122, 1323, 2018, 2581

Dữ liệu truyền song

1- TCP: Tổng quan RFC: 793, 1122, 1323, 2018, 2581 Dữ liệu
công:
Luồng dữ liệu truyền hai chiều trên cùng một kết nối
MSS: maximum segment size
Hướng kết nối:
Bắt tay (trao đổi các bản tin điều khiển), bên gửi khởi đầu
Điều khiển luồng:
Bên gửi không gửi quá khả năng bên nhận

Point-to-point:
Một bên gửi, một bên nhận
Tin cậy, có thứ tự
Pipeline:
Điều khiển tắc nghẽn và điều khiển luồng của TCP thiết lập giá trị kích thước cửa sổ
Vùng đệm gửi và nhận

Слайд 48

1-

Cấu trúc của TCP segment

URG: urgent data
(không sử dụng)

ACK: ACK #

PSH:

1- Cấu trúc của TCP segment URG: urgent data (không sử dụng)
push data
(không sử dụng)

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

# bytes
bên nhận
muốn nhận

đếm số byte
dữ liệu
(không phải
segments!)

Internet
checksum
(như trong UDP)

Слайд 49

1-

TCP seq # và ACK

Seq. #:
Giá trị của luồng byte của byte

1- TCP seq # và ACK Seq. #: Giá trị của luồng
đầu tiên trong dữ liệu của segment
ACK:
seq # của byte tiếp theo mong nhận
ACK tích lũy
Q: Bên nhận điều khiển các segment không đúng thứ tự
A: Chuẩn không chỉ rõ, tùy thuộc vào cài đặt cụ thể

Host A

Host B

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

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

Seq=43, ACK=80


‘C’

host ACK đã nhận
‘C’ báo lại

host ACK
đã nhận
‘C’, báo lại
‘C’

Kịch bản telnet

Слайд 50

1-

RTT và Timeout trong TCP

Q: Thiết lập giá trị timeout của TCP?
Lớn

1- RTT và Timeout trong TCP Q: Thiết lập giá trị timeout
hơn RTT
RTT thay đổi
Quá nhỏ: timeout sớm
Không cần thiết truyền lại
Quá lớn: xử lý chậm các segment bị mất

Q: Ước lượng RTT?
SampleRTT: đo thời gian từ truyền segment tới khi ACK được nhận
Bỏ qua truyền lại
SampleRTT thay đổi, ước lượng RTT chính xác hơn
Giá trị trung bình của nhiều giá trị đo gần đó

Слайд 51

1-

RTT và timeout trong TCP

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

Giá trị thường

1- RTT và timeout trong TCP EstimatedRTT = (1- α)*EstimatedRTT + α*SampleRTT
dùng: α = 0.125

Слайд 52

1-

Ví dụ ước lượng RTT

1- Ví dụ ước lượng RTT

Слайд 53

1-

RTT và timeout của TCP

Thiết lập timeout
EstimatedRTT cộng giới hạn an toàn
Sự

1- RTT và timeout của TCP Thiết lập timeout EstimatedRTT cộng giới
thay đổi lớn của EstimatedRTT -> giá trị lề an toàn lớn
Ước lượng SampleRTT kế thừa từ EstimatedRTT:

TimeoutInterval = EstimatedRTT + 4*DevRTT

DevRTT = (1-β)*DevRTT +
β*|SampleRTT-EstimatedRTT|
(thường, β = 0.25)

Rồi thiết lập timeout:

Слайд 54

1-

Chương 3: Tầng giao vận

3.1 Các dịch vụ tầng giao vận
3.2 Multiplexing

1- Chương 3: Tầng giao vận 3.1 Các dịch vụ tầng giao
và demultiplexing
3.3 Dịch vụ không hướng kết nối: UDP
3.4 Các nguyên tắc của truyền dữ liệu tin cậy

3.5 Dịch vụ 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
Quản lý kết nối
3.6 Các nguyên tắc của điều khiển tắc nghẽn
3.7 Điều khiển tắc nghẽn của TCP

Слайд 55

1-

Truyền dữ liệu tin cậy của TCP

TCP tạo dịch vụ rdt

1- Truyền dữ liệu tin cậy của TCP TCP tạo dịch vụ
trên dịch vụ không tin cậy của IP
Pipelined segment
ACK tích lũy

Truyền lại khi:
Có sự kiện timeout
Lặp ack
Xét trường hợp bên gửi:
Bỏ qua điều khiển luồng, điều khiển tắc nghẽn

Слайд 56

1-

Các sự kiện của bên gửi TCP

Nhận dữ liệu từ ứng dụng:
Tạo

1- Các sự kiện của bên gửi TCP Nhận dữ liệu từ
segment với seq #
seq # là giá trị luồng byte của byte đầu tiên trong segment
Khởi tạo bộ đếm thời gian
Chuyển segment tới IP
Tính NextSeqNum

Timeout:
Truyền lại segment bị quá hạn
Tính timeout interval cho segment truyền lại
Khởi tạo lại bộ đếm thời gian
Nhận Ack:
Nếu segment trước đó chưa được ACK
Cập nhật để biết đã ack
Nếu segment trước đó đã ACK
Tăng bộ đếm ACK lặp, lặp 3 lần thì truyền lại

Слайд 57

1-

Bên gửi TCP (đơn giản)

NextSeqNum = InitialSeqNum
SendBase = InitialSeqNum
loop (forever)

1- Bên gửi TCP (đơn giản) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum
{
switch(event)
event: Nhận được dữ liệu từ tầng ứng dụng
Tạo TCP segment với giá trị sequence NextSeqNum
Khởi động timer cho segment NextSegNum
Chuyển segment tới IP
NextSeqNum = NextSeqNum + length(data)
event: timer quá hạn cho segment có sequence number = y
Truyền lại segment có sequence number = y
Tính timeout interval cho segment y
Khởi động timer cho segment y
event: Nhận được ACK, giá trị của trường ACK: y
if (y > SendBase) {
Bỏ timer của tất cả các segment có sequence number < y
SendBase = y
} else { /* ACK lặp */
Tăng số ACK lặp của segment y
if (số lần ACK lặp của segment y == 3) {
Truyền lại segment với sequence number = y
Khởi động timer cho segment y
}
}

Giải thích:
SendBase-1: byte
được ack tích lũy
cuối
Ví dụ:
SendBase-1 = 71; y= 73, rcvr muốn 73+ ; y > SendBase,
vì thế dữ liệu mới
được ack

Слайд 58

1-

TCP: Kịch bản truyền lại

SendBase
= 100

Kịch bản không truyền lại segment khi

1- TCP: Kịch bản truyền lại SendBase = 100 Kịch bản không
ACK đến trước timeout

Слайд 59

1-

Kịch bản truyền lại

SendBase
= 120

1- Kịch bản truyền lại SendBase = 120

Слайд 60

1-

Truyền dữ liệu tin cậy của TCP: GBN hay Selective Repeat

Giống GBN:
ACK tích

1- Truyền dữ liệu tin cậy của TCP: GBN hay Selective Repeat
lũy
Bên gửi của TCP chỉ cần duy trì
Sequence number nhỏ nhất của gói tin đã gửi, chưa được ack (sendbase)
Sequence number của byte tiếp theo sẽ gửi (nextseqnum)
Khác GBN:
Timeout của segment có sequence number là n chỉ gửi lại segment n
RFC 2018 - TCP Selective Acknowledgment Options

Слайд 61

1-

Chương 4: Tầng giao vận

4.1 Các dịch vụ tầng giao vận
4.2 Multiplexing

1- Chương 4: Tầng giao vận 4.1 Các dịch vụ tầng giao
và demultiplexing
4.3 Dịch vụ không hướng kết nối: UDP
4.4 Các nguyên tắc của truyền dữ liệu tin cậy

4.5 Dịch vụ 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
Quản lý kết nối
4.6 Các nguyên tắc của điều khiển tắc nghẽn
4.7 Điều khiển tắc nghẽn của TCP

Слайд 62

1-

Điều khiển luồng TCP

Bên nhận của kết nối TCP có buffer nhận:

Dịch

1- Điều khiển luồng TCP Bên nhận của kết nối TCP có
vụ tương ứng tốc độ: tương ứng tốc độ gửi với tốc độ bên nhận

Слайд 63

1-

Điều khiển luồng của TCP

(Giả sử bên nhận bỏ segment không đúng

1- Điều khiển luồng của TCP (Giả sử bên nhận bỏ segment
thứ tự)
Không gian còn thừa trong buffer
= RcvWindow
= RcvBuffer-(LastByteRcvd – LastByteRead)
RcvWindow = 0 ?

Bên nhận thông tin về không gian còn thừa trong giá trị của RcvWindow trong segment
Bên gửi hạn chế dữ liệu chưa ACK theo RcvWindow
Đảm bảo buffer nhận không bị tràn
LastByteSent - LastByteAcked <= RcvWindow

Слайд 64

1-

Chương 4: Tầng giao vận

4.1 Các dịch vụ tầng giao vận
4.2 Multiplexing

1- Chương 4: Tầng giao vận 4.1 Các dịch vụ tầng giao
và demultiplexing
4.3 Dịch vụ không hướng kết nối: UDP
4.4 Các nguyên tắc của truyền dữ liệu tin cậy

4.5 Dịch vụ 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
Quản lý kết nối
4.6 Các nguyên tắc của điều khiển tắc nghẽn
4.7 Điều khiển tắc nghẽn của TCP

Слайд 65

1-

Quản lý kết nối của TCP

Thiết lập kết nối:
Nhắc lại: Bên

1- Quản lý kết nối của TCP Thiết lập kết nối: Nhắc
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();

Bắt tay 3 đường:
Bước 1: Client gửi TCP SYN segment tới server
Chỉ định seq # ban đầu
Không có dữ liệu
Bước 2: Server 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

Слайд 66

1-

Quản lý kết nối của TCP

Thiết lập kết nối:

client

Connection request (SYN=1,

1- Quản lý kết nối của TCP Thiết lập kết nối: client
seq=client_isn)

server

Connection granted (SYN=1, seq=server_isn,
ack=client_isn+1

ack (SYN=0, seq=client_isn+1,
ack=server_isn+1

Слайд 67

1-

Quản lý kết nối của TCP

Đóng kết nối:
client đóng socket: clientSocket.close();
Bước

1- Quản lý kết nối của TCP Đóng kết nối: client đóng
1: client gửi TCP FIN tới server
Bước 2: server nhận FIN, trả lời bằng ACK. Đóng kết nối, gửi FIN

Слайд 68

1-

Quản lý kết nối của TCP

Bước 3: client nhận FIN, trả lời

1- Quản lý kết nối của TCP Bước 3: client nhận FIN,
bằng ACK.
Thời gian đợi: trả lời bằng ACK báo đã nhận FIN
Bước 4: server, nhận ACK. Kết nối đóng.

client

FIN

server

ACK

ACK

FIN

đang
đóng

đang
đóng

đóng

thời gian đợi

đã đóng

Слайд 69

1-

Quản lý kết nối của TCP

Chu kỳ hoạt động
TCP client

Chu kỳ hoạt

1- Quản lý kết nối của TCP Chu kỳ hoạt động TCP
động
TCP server

Слайд 70

1-

Chương 4: Tầng giao vận

4.1 Các dịch vụ tầng giao vận
4.2 Multiplexing

1- Chương 4: Tầng giao vận 4.1 Các dịch vụ tầng giao
và demultiplexing
4.3 Dịch vụ không hướng kết nối: UDP
4.4 Các nguyên tắc của truyền dữ liệu tin cậy

4.5 Dịch vụ 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
Quản lý kết nối
4.6 Các nguyên tắc của điều khiển tắc nghẽn
4.7 Điều khiển tắc nghẽn của TCP

Слайд 71

1-

Nguyên tắc điều khiển tắc nghẽn

Tắc nghẽn:
Quá nhiều nguồn gửi quá nhiều

1- Nguyên tắc điều khiển tắc nghẽn Tắc nghẽn: Quá nhiều nguồn
dữ liệu nhanh quá khả năng điều khiển của mạng
Khác điều khiển luồng
Đặ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)

Слайд 72

1-

Nguyên nhân, tác hại của tắc nghẽn: Kịch bản 1

Hai đối tượng

1- Nguyên nhân, tác hại của tắc nghẽn: Kịch bản 1 Hai
gửi, hai đối tượng nhận
Một router, vùng đệm không giới hạn
Không truyền lại

Độ trễ lớn khi xảy ra tắc nghẽn
Tối đa thông lượng có thể đạt được

Слайд 73

1-

Nguyên nhân, tác hại của tắc nghẽn: Kịch bản 2

Một router, vùng

1- Nguyên nhân, tác hại của tắc nghẽn: Kịch bản 2 Một
đệm giới hạn
Bên gửi truyền lại gói tin mất

vùng đệm của đường truyền đầu ra dùng chung và có giới hạn

Host A

lin : dữ liệu ban đầu

Host B

lout

l'in : dữ liệu ban đầu, dữ liệu truyền lại

Слайд 74

1-

Nguyên nhân, tác hại của tắc nghẽn: Kịch bản 2

Luôn luôn: (tốt)
Truyền

1- Nguyên nhân, tác hại của tắc nghẽn: Kịch bản 2 Luôn
lại “hoàn hảo”: truyền lại chỉ khi mất
Sự truyền lại của gói tin bị trễ (không mất) làm lớn hơn (trường hợp hoàn hảo) so với

“Tác hại” của tắc nghẽn:
Xử lý nhiều hơn (truyền lại)
Truyền lại không cần thiết: đường truyền mang nhiều bản sao chép của gói tin

Слайд 75

1-

Nguyên nhân, tác hại của tắc nghẽn: Kịch bản 3

Bốn đối tượng

1- Nguyên nhân, tác hại của tắc nghẽn: Kịch bản 3 Bốn
gửi
Nhiều đường
timeout/truyền lại

Q: Điều gì xảy ra khi và tăng?

vùng đệm của đường truyền ra dùng chung và có giới hạn

λin : dữ liệu ban đầu

λout

λ'in : dữ liệu ban đầu, và dữ liệu truyền lại

Слайд 76

1-

Nguyên nhân, tác hại của tắc nghẽn: Kịch bản 3

Tác hại khác

1- Nguyên nhân, tác hại của tắc nghẽn: Kịch bản 3 Tác
của tắc nghẽn:
Khi gói tin bị loại bỏ, khả năng truyền đường lên sử dụng cho gói tin đó đã lãng phí

λout

Слайд 77

1-

Các cách tiếp cận để điều khiển tắc nghẽn

Điều khiển tắc nghẽn

1- Các cách tiếp cận để điều khiển tắc nghẽn Điều khiển
cuối-cuối:
Không có phản hồi chính thức từ mạng
Tắc nghẽn suy ra từ hệ thống cuối theo dõi mất gói và độ trễ
Cách tiếp cận sử dụng bởi TCP

Điều khiển tắc nghẽn với sự giúp đỡ của mạng:
Router cung cấp phản hồi tới hệ thống cuối
Một bít chỉ ra tắc nghẽn (SNA, DECbit, TCP/IP, ECN, ATM)
Chỉ rõ tốc độ bên gửi nên gửi

Hai cách tiếp cận chính để điều khiển tắc nghẽn:

Слайд 78

1-

Trường hợp nghiên cứu: Điều khiển tắc nghẽn ATM ABR

ABR: Available

1- Trường hợp nghiên cứu: Điều khiển tắc nghẽn ATM ABR ABR:
Bit Rate:
“Dịch vụ co dãn”
Nếu đường đi của bên gửi chưa đến giới hạn tải:
Bên gửi nên sử dụng băng thông khả dụng
Nếu đường đi của bên gửi bị tắc nghẽn:
Bên gửi điều chỉnh tốc độ đảm bảo tối thiểu

RM cell (Resource Management):
Được gửi bởi bên gửi, rải rác cùng với cell dữ liệu
Các bít trong RM cell do switch thiết lập (có sự tham gia của mạng)
NI bit: không tăng tốc độ (tắc nghẽn nhẹ)
CI bit: tắc nghẽn
RM cell trả về cho bên gửi bởi bên nhận với các bít không thay đổi

Слайд 79

1-

Trường hợp nghiên cứu: Điều khiển tắc nghẽn ATM ABR

Hai byte

1- Trường hợp nghiên cứu: Điều khiển tắc nghẽn ATM ABR Hai
ER (Explicit Rate) trong RM cell
Switch tắc nghẽn có thể giảm giá trị ER trong cell
Vì vậy, tốc độ gửi của bên gửi tối thiểu tốc độ hỗ trợ trên đường
Bít EFCI trong cell dữ liệu: đặt bằng 1 trong switch bị tắc nghẽn
Nếu cell dữ liệu, trước cell RM, có EFCI thiết lập, bên gửi thiết lập bít CI trong cell RM trả về

Слайд 80

1-

Chương 4: Tầng giao vận

4.1 Các dịch vụ tầng giao vận
4.2 Multiplexing

1- Chương 4: Tầng giao vận 4.1 Các dịch vụ tầng giao
và demultiplexing
4.3 Dịch vụ không hướng kết nối: UDP
4.4 Các nguyên tắc của truyền dữ liệu tin cậy

4.5 Dịch vụ 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
Quản lý kết nối
4.6 Các nguyên tắc của điều khiển tắc nghẽn
4.7 Điều khiển tắc nghẽn của TCP

Слайд 81

1-

Điều khiển tắc nghẽn của TCP

Điều khiển end-end (không có hỗ

1- Điều khiển tắc nghẽn của TCP Điều khiển end-end (không có
trợ của mạng)
Bên gửi giới hạn truyền:
LastByteSent-LastByteAcked
≤ CongWin
LastByteSent - LastByteAcked <= min{CongWin, RcvWin}
Gần đúng,
CongWin thay đổi động, chức năng nhận biết sự tắc nghẽn của mạng

Cách bên gửi nhận biết sự tắc nghẽn?
Sự kiện mất gói = timeout hoặc lặp lại 3 ack
Bên gửi TCP giảm tốc độ (CongWin) sau sự kiện mất gói
Ba cơ chế:
AIMD
slow start
Không thay đổi sau sự kiện timeout

Слайд 82

1-

TCP AIMD

Giảm cấp số nhân: Giảm CongWin một nửa sau sự kiện

1- TCP AIMD Giảm cấp số nhân: Giảm CongWin một nửa sau
mất gói

Tăng cấp số cộng: Tăng CongWin 1 MSS mỗi RTT khi không có sự kiện mất gói

Kết nối TCP trong thời gian dài

Слайд 83

1-

TCP Slow Start

Khi kết nối bắt đầu, CongWin = 1 MSS
Ví dụ:

1- TCP Slow Start Khi kết nối bắt đầu, CongWin = 1
MSS = 500 byte & RTT = 200 msec
Tốc độ ban đầu = 20 kbps
Băng thông khả dụng có thể >> MSS/RTT
Mong muốn nhanh tới tốc độ đáng kể

Khi kết nối bắt đầu, tăng tốc độ nhanh theo hàm mũ cho đến khi có sự kiện mất gói đầu tiên

Слайд 84

1-

TCP Slow Start (tiếp)

Khi kết nối bắt đầu, tăng tốc độ hàm

1- TCP Slow Start (tiếp) Khi kết nối bắt đầu, tăng tốc
mũ tới khi có sự kiện mất gói đầu tiên:
Gấp đôi CongWin mỗi RTT
Thự hiện bằng cách tăng CongWin cho mọi ACK nhận được
Tóm lại: tốc độ ban đầu là chậm nhưng nhanh chóng tăng theo hàm mũ

Host A

1 segment

RTT

Host B

2 segments

4 segments

Слайд 85

1-

Quá trình tinh chỉnh

Sau 3 ACK lặp lại:
CongWin giảm một nửa
window tăng

1- Quá trình tinh chỉnh Sau 3 ACK lặp lại: CongWin giảm
tuyến tính
Nhưng sau sự kiện timeout:
CongWin thay vì thiết lập 1 MSS;
window tăng hàm mũ
Tới ngưỡng thì giảm tuyến tính
3 ACK lặp chỉ rằng khả năng của mạng chuyển một số segment
timeout trước 3 ACK lặp là đáng chú ý hơn

Triết lý:

Слайд 86

1-

Quá trình tinh chỉnh (tiếp)

Q: Khi nào tăng theo số mũ chuyển

1- Quá trình tinh chỉnh (tiếp) Q: Khi nào tăng theo số
thành theo tuyến tính?
A: Khi CongWin có giá trị bằng 1/2 giá trị của nó trước khi timeout.

Thực hiện:
Variable Threshold
Tại sự kiện mất gói, Threshold đặt bằng ½ CongWin ngay trước sự kiện mất gói

Слайд 87

1-

Tổng kết: Điều khiển tắc nghẽn của TCP

Khi CongWin nhỏ hơn

1- Tổng kết: Điều khiển tắc nghẽn của TCP Khi CongWin nhỏ
Threshold, bên gửi trong pha slow-start, window lớn theo hàm mũ.
Khi CongWin lớn hơn Threshold, bên gửi trong pha congestion-avoidance, window lớn theo hàm tuyến tính.
Khi xảy ra lặp 3 ACK, Threshold đặt bằng CongWin/2 và CongWin đặt bằng Threshold.
Khi timeout xảy ra, Threshold đặt bằng CongWin/2 và CongWin đặt bằng 1 MSS.

Слайд 88

1-

Điều khiển tắc nghẽn bên gửi của TCP

1- Điều khiển tắc nghẽn bên gửi của TCP

Слайд 89

1-

Thông lượng của TCP

Thông lượng trung bình của TCP từ chức năng

1- Thông lượng của TCP Thông lượng trung bình của TCP từ
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

Слайд 90

1-

Tương lai của TCP

Ví dụ: 1500 byte segment, 100ms RTT, muốn 10

1- Tương lai của TCP Ví dụ: 1500 byte segment, 100ms RTT,
Gbps thông lượng
Đòi hỏi window size W = 83,333 segment
Thông lượng theo tốc độ mất gói:
➜ L = 2·10-10
Phiên bản mới của TCP cho tốc độ cao là cần thiết!

Слайд 91

1-

Mục đích của sự công bằng: Nếu K phiên TCP dùng chung

1- Mục đích của sự công bằng: Nếu K phiên TCP dùng
đường truyền thắt nút băng thông R, mỗi đường nên có tốc độ trung bình là R/K

Sự công bằng của TCP

Слайд 92

1-

Lý do TCP công bằng

Hai phiên cạnh tranh:

R

R

Chia sẻ băng thông bằng

1- Lý do TCP công bằng Hai phiên cạnh tranh: R R
nhau

Thông lượng của kết nối 1

Thông lượng của kết nối 2

tránh tắc nghẽn: tăng cộng

mất gói: giảm window hệ số 2

Слайд 93

1-

Sự công bằng (tiếp)

Sự công bằng và UDP
Các ứng dụng đa phương

1- Sự công bằng (tiếp) Sự công bằng và UDP Các ứng
tiện thường không sử dụng TCP
Không muốn tốc độ giảm bởi điều khiển tắc nghẽn
Ứng dụng sử dụng UDP:
Đẩy dữ liệu audio/video ở tốc độ hằng số, chấp nhận mất gói

Sự công bằng và các kết nối TCP song song
Không ngăn chặn ứng dụng mở song song các kết nối giữa 2 host
Trình duyệt Web thực hiện như trên

Слайд 94

1-

Mô hình độ trễ

Q: Thời gian để nhận một đối tượng từ

1- Mô hình độ trễ Q: Thời gian để nhận một đối
Web server sau khi gửi một yêu cầu?
Bỏ qua tắc nghẽn, độ trễ ảnh hưởng bởi:
Thiết lập kết nối TCP
Độ trễ truyền dữ liệu

Giả sử một đường truyền giữa client và server có tốc độ R
S: MSS (bits)
O: kích thước đối tượng (bit)
Không truyền lại (không mất gói, không lỗi)
Kích thước cửa sổ:
Cửa sổ tắc nghẽn cố định, W segment
Cửa số động, mô hình slow start

Слайд 95

1-

Cửa sổ tắc nghẽn cố định

Trường hợp 1:
WS/R > RTT + S/R:

1- Cửa sổ tắc nghẽn cố định Trường hợp 1: WS/R >
ACK cho segment đầu tiên trong cửa sổ

Độ trễ = 2RTT + O/R

Слайд 96

1-

Cửa sổ tắc nghẽn cố định

Trường hợp 2:
WS/R < RTT + S/R:

1- Cửa sổ tắc nghẽn cố định Trường hợp 2: WS/R Độ
đợi ACK sau khi gửi lượng dữ liệu của cửa sổ

Độ trễ = 2RTT + O/R
+ (K-1)[S/R + RTT - WS/R]

Слайд 97

1-

Mô hình độ trễ TCP: Slow Start (1)

Giả sử cửa sổ lớn

1- Mô hình độ trễ TCP: Slow Start (1) Giả sử cửa
theo slow start
Độ trễ cho một đối tượng là:

Trong đó, P là lượng thời gian TCP rỗi tại server

- Trong đó, Q là lượng thời gian server rỗi nếu đối tượng kích thước không giới hạn.
- Và K là số cửa sổ trùm qua đối tượng

Слайд 98

1-

Mô hình độ trễ TCP: Slow Start (2)

Ví dụ:
O/S = 15

1- Mô hình độ trễ TCP: Slow Start (2) Ví dụ: O/S
segment
K = 4 windows
Q = 2
P = min{K-1,Q} = 2
Thời gian rỗi của server P=2 times

Các thành phần trễ:
2 RTT để thiết lập kết nối và yêu cầu
O/R để truyền đối tượng
thời gian server rỗi vì slow start
Server rỗi: P = min{K-1,Q} times

Слайд 99

1-

Mô hình độ trễ TCP (3)

thời gian khi server bắt đầu gửi

1- Mô hình độ trễ TCP (3) thời gian khi server bắt
segment tới khi server nhận ack segment

thời gian để truyền cửa sổ thứ k

thời gian rỗi sau cửa sổ thứ k

Слайд 100

1-

Mô hình độ trễ TCP (4)

Tính Q, giá trị rỗi cho đối

1- Mô hình độ trễ TCP (4) Tính Q, giá trị rỗi
tượng có kích thước không giới hạn tương tự.

K = số cửa sổ bao đối tượng
Cách tính K?

Слайд 101

1-

Mô hình hóa HTTP

Giả sử trang Web chứa:
1 trang HTML cơ sở

1- Mô hình hóa HTTP Giả sử trang Web chứa: 1 trang
(kích thước O bít)
M ảnh (mỗi ảnh kích thước O bít)
Non-persistent HTTP:
M+1 kết nối TCP
Response time = (M+1)O/R + (M+1)2RTT + tổng thời gian rỗi
Persistent HTTP:
2 RTT để yêu cầu và nhận file HTML cơ sở
1 RTT để yêu cầu và nhận M ảnh
Response time = (M+1)O/R + 3RTT + tổng thời gian rỗi
Non-persistent HTTP với X kết nối song song
Giả sử M/X nguyên
1 kết nối TCP cho file cơ sở
M/X tập của các kết nối song song cho ảnh
Response time = (M+1)O/R + (M/X + 1)2RTT + tổng thời gian rỗi

Слайд 102

1-

Thời gian trả lời HTTP (giây)

RTT = 100 msec, O = 5

1- Thời gian trả lời HTTP (giây) RTT = 100 msec, O
Kbytes M=10 và X=5

Đối với băng thông thấp, thời gian kết nối và thời gian phản hồi chi phối bởi thời gian truyền

Persistent connection chỉ mang lại cải tiến thêm qua các kết nối song song

Слайд 103

1-

Thời gian phản hồi (giây)

RTT =1 sec, O = 5 Kbyte, M=10

1- Thời gian phản hồi (giây) RTT =1 sec, O = 5
and X=5

Đối với RTT lớn, thời gian phản hồi chi phối bởi thiết lập kết nối TCP và độ trễ slow start. Persistent connection đem lại cải tiến quan trọng: đặc biệt trong mạng delay, bandwidth cao.