You are on page 1of 104

1-1

Mng my tnh
B mn K thut my tnh v Mng
Khoa Cng ngh Thng tin
i hc S phm H Ni
1-2
Chng 4: Tng giao vn
Mc ch:
Hiu cc nguyn tc
bn trong dch v ca
tng giao vn:
Multiplexing/Demultiple
xing
Truyn d liu tin cy
iu khin lung
iu khin tc nghn

Hc v giao thc tng giao
vn trong Internet:
UDP: khng hng kt ni
TCP: hng kt ni
iu khin tc nghn ca
TCP

1-3
Chng 4: Tng giao vn
4.1 Cc dch v tng
giao vn
4.2 Multiplexing v
demultiplexing
4.3 Dch v khng
hng kt ni: UDP
4.4 Cc nguyn tc ca
truyn d liu tin cy
4.5 Dch v hng kt
ni: TCP
Cu trc segment
Truyn d liu tin cy
iu khin lung
Qun l kt ni
4.6 Cc nguyn tc ca
iu khin tc nghn
4.7 iu khin tc nghn
ca TCP
1-4
Cc giao thc v dch v tng giao vn
Cung cp truyn thng l-gc
gia cc tin trnh ng dng
chy trn cc host khc nhau
Cc giao thc giao vn chy
trn cc h thng cui
Bn gi: chia cc bn tin
ng dng thnh cc
segment, chuyn ti tng
mng
Bn nhn: ghp cc
segment thnh bn tin,
chuyn ln tng ng dng
Nhiu hn mt giao thc giao
vn cho ng dng
Internet: TCP v UDP
application
transport
network
data link
physical
application
transport
network
data link
physical

network
data link
physical

network
data link
physical

network
data link
physical

network
data link
physical
network
data link
physical
1-5
Tng giao vn v tng mng
Tng mng: truyn thng l-
gc gia cc host
Tng giao vn: truyn thng
l-gc gia cc tin trnh
da trn dch v ca tng
mng
Tng t h gia nh:
12 a tr gi th cho 12 a
tr
Cc tin trnh = cc a tr
Cc bn tin ng dng = cc
bc th
host = nh
Giao thc giao vn = Ann
v Bill
Giao thc tng mng = dch
v chuyn th
1-6
Cc giao thc tng giao vn ca Internet
Truyn tin cy, c th t
(TCP)
iu khin tc nghn
iu khin lung
Thit lp kt ni
Truyn khng c th t,
khng tin cy: UDP
Cc dch v khng c:
m bo tr
m bo bng thng
application
transport
network
data link
physical
application
transport
network
data link
physical

network
data link
physical

network
data link
physical

network
data link
physical

network
data link
physical
network
data link
physical
1-7
Chng 4: Tng giao vn
4.1 Cc dch v tng
giao vn
4.2 Multiplexing v
demultiplexing
4.3 Dch v khng
hng kt ni: UDP
4.4 Cc nguyn tc ca
truyn d liu tin cy
4.5 Dch v hng kt
ni: TCP
Cu trc segment
Truyn d liu tin cy
iu khin lung
Qun l kt ni
4.6 Cc nguyn tc ca
iu khin tc nghn
4.7 iu khin tc nghn
ca TCP
1-8
Multiplexing/demultiplexing
application
transport
network
link
physical
P1
application
transport
network
link
physical
application
transport
network
link
physical
P2
P3
P4
P1
host 1 host 2
host 3
= tin trnh = socket
Chuyn cc segment nhn
ti ng socket
Demultiplexing ti host nhn:
Thu thp d liu t cc socket,
ng gi d liu bi header
(sau s dng
demultiplexing)
Multiplexing ti host gi:
1-9
Thc hin demultiplexing
Host nhn gi d liu IP
Mi gi d liu c a ch IP
ngun, a ch IP ch
Mi gi d liu mang mt
segment ca tng giao vn
Mi segment c gi tr cng
ngun v cng ch (gi tr
cng c nh cho cc kiu
ng dng c th)
Host s dng a ch IP v gi
tr cng chuyn segment ti
socket thch hp
source port # dest port #
32 bits
D liu ng dng
(bn tin)
Cc trng header
nh dng TCP/UDP segment
1-10
Chng 4: Tng giao vn
4.1 Cc dch v tng
giao vn
4.2 Multiplexing v
demultiplexing
4.3 Dch v khng
hng kt ni: UDP
4.4 Cc nguyn tc ca
truyn d liu tin cy
4.5 Dch v hng kt
ni: TCP
Cu trc segment
Truyn d liu tin cy
iu khin lung
Qun l kt ni
4.6 Cc nguyn tc ca
iu khin tc nghn
4.7 iu khin tc nghn
ca TCP
1-11
UDP: User Datagram Protocol [RFC 768]
Dch v best effort, UDP
segment c th:
mt
chuyn khng theo th
t n ng dng
Khng hng kt ni:
Khng c bt tay gia
bn gi v bn nhn
Mi UDP segment c
iu khin c lp

Ti sao c UDP?
Khng thit lp kt ni (thit
lp c th tng tr)
n gin: khng c trng
thi kt ni ti bn gi, bn
nhn
Header ca segment nh
Khng iu khin tc nghn:
UDP c th gi ra vi tc
mong mun

1-12
UDP (tip)
Thng s dng cho cc
ng dng a phng tin
truyn dng
Chp nhn mt gi
Nhy cm vi tc
ng dng khc s
dng UDP
DNS
SNMP
Truyn tin cy qua UDP:
thm s tin cy ti tng ng
dng
Khi phc li do ng
dng c th
source port # dest port #
32 bits
d liu
ca ng dng
(bn tin)
nh dng ca UDP segment
length checksum
Length tnh
theo byte ca
UDP
segment,
bao gm
header
1-13
UDP checksum
Bn gi:
i x vi ni dung cc
segment nh chui cc s
nguyn 16 bt
checksum: cng (tng b
ca 1) ca ni dung
segment
Pha gi t gi tr
checksum trong trng
checksum ca UDP
Bn nhn:
Tnh ton checksum ca
segment nhn c
Kim tra xem checksum
tnh c bng gi tr trng
checksum:
KHNG BNG Pht hin
c li
BNG khng pht hin ra
li. Nhng c th c li?

Mc ch: pht hin li trong segment truyn

1-14
V d Checksum
Ch
Khi cng cc s, gi tr bt nh cn thm vo kt
qu
V d: cng hai s nguyn 16 bt
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
Tng
checksum
1-15
Chng 4: Tng giao vn
4.1 Cc dch v tng
giao vn
4.2 Multiplexing v
demultiplexing
4.3 Dch v khng
hng kt ni: UDP
4.4 Cc nguyn tc ca
truyn d liu tin cy
4.5 Dch v hng kt
ni: TCP
Cu trc segment
Truyn d liu tin cy
iu khin lung
Qun l kt ni
4.6 Cc nguyn tc ca
iu khin tc nghn
4.7 iu khin tc nghn
ca TCP
1-16
Cc nguyn tc ca truyn d liu tin cy
Tm quan trng ca tng lin kt d liu, tng giao vn, tng
ng dng


c im ca knh truyn khng tin cy xc nh s phc tp
ca giao thc truyn d liu tin cy (rdt)
(a) Dch v cung cp (b) Ci t dch v
1-17
Truyn d liu tin cy
Bn gi Bn nhn
rdt_send(): c gi bi tng trn.
D liu chuyn c chuyn ti
tng trn ca bn nhn
udt_send(): gi bi rdt,
truyn gi tin qua knh khng
tin cy ti bn nhn
rdt_rcv(): gi khi gi tin n pha
bn nhn
deliver_data(): c gi bi rdt
truyn d liu ln tng trn
1-18
Truyn d liu tin cy
S dng my trng thi hu hn (FSM) x l
bn nhn v bn gi
state
1
state
2
S kin gy ra chuyn trng thi
Hnh ng khi chuyn trng thi
state: khi trong 1 trng
thi, trng thi tip
theo l duy nht i
vi 1 s kin
s kin
hnh ng
1-19
rdt1.0: Truyn tin cy qua knh tin cy
Tng di l truyn tin cy
Khng c li bt
Khng mt gi tin
FSM ca bn gi v bn nhn:
Bn gi chuyn d liu xung knh pha di
Bn nhn c d liu t knh bn di
i cuc
gi t
pha trn
packet = make_pkt(data)
udt_send(packet)
rdt_send(data)
extract (packet,data)
deliver_data(data)
i cuc
gi t
pha di
rdt_rcv(packet)
Bn gi
Bn nhn
1-20
Rdt2.0: knh c li bt
Knh pha di c th c li
checksum pht hin li
Cch khi phc li
Bo nhn (ACK): bn nhn ch r cho bn gi gi tin nhn
thnh cng
Bo li (NAK): bn nhn ch r cho bn gi gi tin c li
Bn nhn truyn li gi tin nu nhn NAK
C ch rdt2.0:
Pht hin li
Phn hi cho bn nhn: bn tin iu khin (ACK, NAK: bn
nhn -> bn gi)
1-21
rdt2.0: My trng thi
i cuc
gi t trn
snkpkt = make_pkt(data, 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)
udt_send(NAK)
rdt_rcv(rcvpkt) &&
corrupt(rcvpkt)
i ACK
hoc
NAK
i cuc
gi t pha
di
Bn gi
Bn nhn
rdt_send(data)
1-22
rdt2.0: Trng hp khng li
i cuc
gi t pha
trn
snkpkt = make_pkt(data, 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)
udt_send(NAK)
rdt_rcv(rcvpkt) &&
corrupt(rcvpkt)
i ACK
hoc
NAK
i cuc
gi t pha
di
rdt_send(data)
A
1-23
rdt2.0: Trng hp c li
i cuc
gi t pha
trn
snkpkt = make_pkt(data, 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)
udt_send(NAK)
rdt_rcv(rcvpkt) &&
corrupt(rcvpkt)
i ACK
hoc
NAK
i cuc
gi t pha
di
rdt_send(data)
A
1-24
rdt2.1: Bn gi, iu khin ACK/NAK li
i cuc
gi 0 t
trn
sndpkt = make_pkt(0, data, checksum)
udt_send(sndpkt)
rdt_send(data)
i ACK
hoc NAK
0
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)
i cuc
gi 1 t
trn
i ACK
hoc NAK
1
A
1-25
rdt2.1: Bn nhn, iu khin ACK/NAK li
i 0
t di
sndpkt = make_pkt(NAK, chksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
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)
i 1
t di
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)
1-26
rdt2.1
Bn gi:
seq # c thm vo
gi tin
Hai seq. #s (0,1)
Phi kim tra nu
ACK/NAK nhn c
li
Hai ln -> n nh
Bn nhn:
Phi kim tra gi tin
nhn c lp khng
Trng thi ch nh pkt
seq # mong i l 0 hay
1
1-27
rdt2.2: Giao thc NAK-free
Tng t rdt2.1, ch s dng ACK
Thay v NAK, bn nhn phi gi ACK cho pkt cui
nhn OK
ACK lp ti bn nhn s nh x l nh nhn NAK:
truyn li pkt hin ti
1-28
rdt2.2: Phn mnh ti bn gi v bn nhn
i cuc
gi 0 t
trn
sndpkt = make_pkt(0, data, 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)
i ACK
0
FSM bn gi
i 0
t di
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 bn nhn
L
1-29
rdt3.0: knh c li v mt gi
Gi s: knh pha di c
th mt gi (d liu
hoc ACK)
checksum, seq. #, ACK,
truyn li l khng
Cch tip cn: bn nhn i
ACK mt thi gian
Truyn li nu khng c ACK
nhn ti thi im ny
Nu gi tin (hoc ACK) tr
(khng mt):
Truyn li -> lp, s dng
seq# gii quyt
Bn nhn phi gn seq #
ca gi tin c ACK
i hi b m thi gian
ngc
1-30
rdt3.0 Bn gi
sndpkt = make_pkt(0, data, checksum)
udt_send(sndpkt)
start_timer
rdt_send(data)
i
ACK 0
rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||
isACK(rcvpkt,1) )
i cuc gi
1 t trn
sndpkt = 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)
i cuc gi
0 t trn
i
ACK 1
A
rdt_rcv(rcvpkt)
A
A
A
1-31
rdt3.0
(a) Khng mt gi (b) Mt gi
1-32
rdt3.0
(c) Mt ACK (c) Timeout
1-33
Hiu nng ca rdt3.0
Hiu nng ca rdt3.0 b nh hng
V d: ng truyn 1 Gbps, lan truyn 15 ms, gi tin 1KB:

T
transmit
=
8kb/pkt
10**9 b/sec
= 8 microsec
U
sender
: s s dng thi gian bn gi bn gi
1KB pkt trong mi 30 msec -> 33kB/sec thng lng qua ng
truyn 1 Gbps
Giao thc mng hn ch s dng ti nguyn vt l!

U
sender
=
.008
30.008
=
0.00027
microsec
onds
L / R
RTT + L / R
=
L ( di gi tin, bit)
R (tc truyn, bps)
=
1-34
rdt3.0: Hot ng stop-and-wait
gi tin u tin c truyn, t = 0
Bn gi Bn nhn
RTT
gi tin cui cng truyn, t = L / R
bt ca gi tin u tin n
bt ca gi tin cui cng n,
gi ACK
ACK n, gi gi tin tip,
t = RTT + L / R

U
sender
=
.008
30.008
=
0.00027
microsec
onds
L / R
RTT + L / R
=
1-35
Cc giao thc Pipeline
Pipeline: Bn gi cho php nhiu, ti cc gi tin c
ack
Di gi tr sequence phi tng
Vng m ti bn gi v bn nhn
Hai hnh thc chung ca cc giao thc pipeline: go-
Back-N, selective repeat
1-36
Pipelining: Tng hiu qu s dng
Bt gi tin u tin c truyn,
t = 0
Bn gi Bn nhn
RTT
Bt cui cng c truyn
t = L / R
Bt gi tin u tin n
Bt gi tin cui cng n, gi ACK
ACK n, gi gi tin tip theo,
t = RTT + L / R
Bt cui cng ca gi tin th 2 n, gi
ACK
Bt cui cng ca gi tin 3 n, gi ACK

U
sender
=
.024
30.008
=
0.0008
microsecon
ds
3 * L / R
RTT + L / R
=
Tng hiu qu s
dng ln 3 ln
1-37
Go-Back-N
Bn gi:
k-bit seq # trong pkt header
window N, cho php cc gi tin khng ack lin tip


ACK(n): ACK mi gi tin ti seq # n - ACK tch ly
C th nhm ACK lp
Thi gian cho mi gi tin
timeout(n): truyn li gi tin n v tt c gi tin seq# ln hn n trong
ca s
L do phi gii hn N: iu khin lung, iu khin tc nghn
1-38
GBN: FSM m rng ca bn gi
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) {
sndpkt[nextseqnum] = make_pkt(nextseqnum,data,chksum)
udt_send(sndpkt[nextseqnum])
if (base == nextseqnum) /* pkt cha c ack u tin */
start_timer
nextseqnum++
}
else
refuse_data(data)
base = getacknum(rcvpkt)+1
If (base == nextseqnum) /* tt c cc pkt u c ack */
stop_timer
else /* vn cn gi tin cha c ack */
start_timer
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)

base=1
nextseqnum=1

rdt_rcv(rcvpkt)
&& corrupt(rcvpkt)

A
S dng mt
timer cho gi tin
gi v cha
c ack v c
nht
1-39
GBN: FSM m rng ca bn nhn
ACK: lun gi ACK cho gi tin nhn ng vi gi tin
ng th t seq # nht
C th sinh ra ACK lp
Ch cn nh expectedseqnum
Gi tin khng ng th t:
Loi b (khng a vo 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)


A
1-40
GBN
Window size = 4 pkt
1-41
Selective Repeat
Bn nhn ack ring cho mi gi tin nhn ng
a gi tin vo vng m nu cu, c th sp th t
chuyn ln lp trn
Bn gi ch gi li gi tin khi khng nhn ACK
B m thi gian bn gi cho mi gi tin khng c ACK
Ca s bn nhn
N seq # lin tc
Gii hn seq #s gi, gi tin khng ACK
1-42
Selective repeat: Ca s bn gi, bn nhn
1-43
Selective repeat
D liu t trn:
Nu c seq # tip trong ca s,
gi gi tin
timeout(n):
Gi li gi tin n, khi to li b
m thi gian
ACK(n) [sendbase,sendbase+N]:
nh du gi tin n nhn
Nu n gi tin khng c ACK
nh nht, if n smallest unACKed
pkt, chuyn c s ca ca s
ti seq # khng c ACK tip

Bn gi
Gi tin n [rcvbase, rcvbase+N-1]
Gi ACK(n)
Khng ng th t: vng m
ng th t: chuyn ln (cng
c th a vo vng m, xp
th t), ca s chuyn tip ti
gi tin nhn tip
pkt n [rcvbase-N,rcvbase-1]
ACK(n)
Nu khng:
B qua

Bn nhn
1-44
Selective repeat
1-45
Selective repeat
V d:
seq #s: 0, 1, 2, 3
Kch thc ca s=3

Bn nhn thy khng c
s khc nhau trong 2
kch bn
Chuyn khng ng d
liu nh mi (a)

Q: Quan h gia kch
thc seq# v kch
thc ca s?
1-46
Chng 4: Tng giao vn
4.1 Cc dch v tng
giao vn
4.2 Multiplexing v
demultiplexing
4.3 Dch v khng
hng kt ni: UDP
4.4 Cc nguyn tc ca
truyn d liu tin cy
4.5 Dch v hng kt
ni: TCP
Cu trc segment
Truyn d liu tin cy
iu khin lung
Qun l kt ni
4.6 Cc nguyn tc ca
iu khin tc nghn
4.7 iu khin tc nghn
ca TCP
1-47
TCP: Tng quan RFC: 793, 1122, 1323, 2018, 2581
D liu truyn song
cng:
Lung d liu truyn hai
chiu trn cng mt kt
ni
MSS: maximum segment
size
Hng kt ni:
Bt tay (trao i cc bn
tin iu khin), bn gi
khi u
iu khin lung:
Bn gi khng gi qu
kh nng bn nhn
Point-to-point:
Mt bn gi, mt bn nhn
Tin cy, c th t
Pipeline:
iu khin tc nghn v
iu khin lung ca TCP
thit lp gi tr kch thc
ca s
Vng m gi v nhn

socket
door
TCP
send buffer
TCP
receive buffer
socket
door
segment
application
writes data
application
reads data
1-48
Cu trc ca TCP segment
source port # dest port #
32 bits
d liu ng dng
(chiu di thay i)
sequence number
acknowledgement number
Receive window
Urg data pnter
checksum
F S R P A U
head
len
not
used
Options (chiu di thay i)
URG: urgent data
(khng s dng)
ACK: ACK #

PSH: push data
(khng s dng)
RST, SYN, FIN:
thit lp kt ni
# bytes
bn nhn
mun nhn
m s byte
d liu
(khng phi
segments!)
Internet
checksum
(nh trong UDP)
1-49
TCP seq # v ACK
Seq. #:
Gi tr ca lung
byte ca byte u
tin trong d liu
ca segment
ACK:
seq # ca byte tip
theo mong nhn
ACK tch ly
Q: Bn nhn iu khin
cc segment khng
ng th t
A: Chun khng ch
r, ty thuc vo ci
t c th
Host A Host B
G
C
host ACK nhn
C bo li
host ACK
nhn
C, bo li
C
time
Kch bn telnet
1-50
RTT v Timeout trong TCP
Q: Thit lp gi tr
timeout ca TCP?
Ln hn RTT
RTT thay i
Qu nh: timeout
sm
Khng cn thit
truyn li
Qu ln: x l chm
cc segment b mt
Q: c lng RTT?
SampleRTT: o thi gian t truyn
segment ti khi ACK c nhn
B qua truyn li
SampleRTT thay i, c lng
RTT chnh xc hn
Gi tr trung bnh ca nhiu gi
tr o gn
1-51
RTT v timeout trong TCP
EstimatedRTT = (1- o)*EstimatedRTT + o*SampleRTT
Gi tr thng dng: o = 0.125
1-52
V d c lng RTT
RTT: gaia.cs.umass.edu to fantasia.eurecom.fr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
R
T
T

(
m
i
l
l
i
s
e
c
o
n
d
s
)
SampleRTT Estimated RTT
1-53
RTT v timeout ca TCP
Thit lp timeout
EstimatedRTT cng gii hn an ton
S thay i ln ca EstimatedRTT -> gi tr l an ton ln
c lng SampleRTT k tha t EstimatedRTT:
TimeoutInterval = EstimatedRTT + 4*DevRTT
DevRTT = (1-|)*DevRTT +
|*|SampleRTT-EstimatedRTT|

(thng, | = 0.25)
Ri thit lp timeout:
1-54
Chng 3: Tng giao vn
3.1 Cc dch v tng
giao vn
3.2 Multiplexing v
demultiplexing
3.3 Dch v khng
hng kt ni: UDP
3.4 Cc nguyn tc ca
truyn d liu tin cy
3.5 Dch v hng kt
ni: TCP
Cu trc segment
Truyn d liu tin cy
iu khin lung
Qun l kt ni
3.6 Cc nguyn tc ca
iu khin tc nghn
3.7 iu khin tc nghn
ca TCP
1-55
Truyn d liu tin cy ca TCP
TCP to dch v rdt trn
dch v khng tin cy
ca IP
Pipelined segment
ACK tch ly

Truyn li khi:
C s kin timeout
Lp ack
Xt trng hp bn
gi:
B qua iu khin lung,
iu khin tc nghn
1-56
Cc s kin ca bn gi TCP
Nhn d liu t ng dng:
To segment vi seq #
seq # l gi tr lung byte
ca byte u tin trong
segment
Khi to b m thi gian
Chuyn segment ti IP
Tnh NextSeqNum
Timeout:
Truyn li segment b qu
hn
Tnh timeout interval cho
segment truyn li
Khi to li b m thi gian
Nhn Ack:
Nu segment trc cha
c ACK
Cp nht bit ack
Nu segment trc
ACK
Tng b m ACK lp, lp 3
ln th truyn li
1-57
Bn gi
TCP
(n gin)
NextSeqNum = InitialSeqNum
SendBase = InitialSeqNum
loop (forever) {
switch(event)
event: Nhn c d liu t tng ng dng
To TCP segment vi gi tr sequence NextSeqNum
Khi ng timer cho segment NextSegNum
Chuyn segment ti IP
NextSeqNum = NextSeqNum + length(data)

event: timer qu hn cho segment c sequence number = y
Truyn li segment c sequence number = y
Tnh timeout interval cho segment y
Khi ng timer cho segment y

event: Nhn c ACK, gi tr ca trng ACK: y
if (y > SendBase) {
B timer ca tt c cc segment c sequence number
< y
SendBase = y
} else { /* ACK lp */
Tng s ACK lp ca segment y
if (s ln ACK lp ca segment y == 3) {
Truyn li segment vi sequence number = y
Khi ng timer cho segment y
}
}
Gii thch:
SendBase-1: byte
c ack tch ly
cui
V d:
SendBase-1 = 71;
y= 73, rcvr
mun 73+ ;
y > SendBase,
v th d liu mi
c ack
1-58
TCP: Kch bn truyn li
Host A
mt
t
i
m
e
o
u
t

Kch bn mt ACK
Host B
X
thi gian
SendBase
= 100
Host A
thi gian
timeout sm
Host B
S
e
q
=
9
2

t
i
m
e
o
u
t

S
e
q
=
9
2

t
i
m
e
o
u
t

SendBase
= 120
SendBase
= 120
Sendbase
= 100
Kch bn khng truyn li
segment khi ACK n trc
timeout
1-59
Kch bn truyn li
Host A
mt
t
i
m
e
o
u
t

Kch bn ACK tch ly
Host B
X
thi gian
SendBase
= 120
1-60
Truyn d liu tin cy ca TCP:
GBN hay Selective Repeat
Ging GBN:
ACK tch ly
Bn gi ca TCP ch cn duy tr
Sequence number nh nht ca gi tin gi, cha c ack
(sendbase)
Sequence number ca byte tip theo s gi (nextseqnum)
Khc GBN:
Timeout ca segment c sequence number l n ch gi
li segment n
RFC 2018 - TCP Selective Acknowledgment Options
1-61
Chng 4: Tng giao vn
4.1 Cc dch v tng
giao vn
4.2 Multiplexing v
demultiplexing
4.3 Dch v khng
hng kt ni: UDP
4.4 Cc nguyn tc ca
truyn d liu tin cy
4.5 Dch v hng kt
ni: TCP
Cu trc segment
Truyn d liu tin cy
iu khin lung
Qun l kt ni
4.6 Cc nguyn tc ca
iu khin tc nghn
4.7 iu khin tc nghn
ca TCP
1-62
iu khin lung TCP
Bn nhn ca kt ni
TCP c buffer nhn:
Dch v tng ng tc
: tng ng tc
gi vi tc bn nhn
Bn gi khng gi lm trn
vng m bn nhn: truyn qu
nhiu, qu nhanh
iu khin lung
1-63
iu khin lung ca TCP
(Gi s bn nhn b segment
khng ng th t)
Khng gian cn tha trong
buffer
= RcvWindow
= RcvBuffer-(LastByteRcvd
LastByteRead)
RcvWindow = 0 ?
Bn nhn thng tin v
khng gian cn tha
trong gi tr ca
RcvWindow trong
segment
Bn gi hn ch d liu
cha ACK theo
RcvWindow
m bo buffer nhn
khng b trn
LastByteSent -
LastByteAcked <=
RcvWindow
1-64
Chng 4: Tng giao vn
4.1 Cc dch v tng
giao vn
4.2 Multiplexing v
demultiplexing
4.3 Dch v khng
hng kt ni: UDP
4.4 Cc nguyn tc ca
truyn d liu tin cy
4.5 Dch v hng kt
ni: TCP
Cu trc segment
Truyn d liu tin cy
iu khin lung
Qun l kt ni
4.6 Cc nguyn tc ca
iu khin tc nghn
4.7 iu khin tc nghn
ca TCP
1-65
Qun l kt ni ca TCP
Thit lp kt ni:
Nhc li: Bn gi, bn nhn
ca TCP thit lp kt ni
trc khi trao i d liu
Khi to gi tr:
seq. #
buffer, thng tin iu
khin lung (v d:
RcvWindow)
Client: khi to kt ni
Socket clientSocket = new
Socket("hostname","port
number");
Server: lin lc bi client
Socket connectionSocket =
welcomeSocket.accept();
Bt tay 3 ng:
Bc 1: Client gi TCP SYN
segment ti server
Ch nh seq # ban u
Khng c d liu
Bc 2: Server nhn SYN, tr li
vi SYNACK segment
Server cp pht buffer
Server khi to seq. #
Bc 3: Client nhn SYNACK, tr
li bng ACK segment, c th
cha d liu

1-66
Qun l kt ni ca TCP
Thit lp kt ni:
client
server
1-67
Qun l kt ni ca TCP
ng kt ni:
client ng socket:
clientSocket.close();
Bc 1: client gi TCP FIN
ti server
Bc 2: server nhn FIN, tr
li bng ACK. ng kt ni,
gi FIN
client
server
ng
ng
ng
t
h

i

g
i
a
n


1-68
Qun l kt ni ca TCP
Bc 3: client nhn FIN, tr
li bng ACK.
Thi gian i: tr li
bng ACK bo nhn
FIN
Bc 4: server, nhn ACK.
Kt ni ng.
client
server
ang
ng
ang
ng
ng
t
h

i

g
i
a
n

i

ng
1-69
Qun l kt ni ca TCP
Chu k hot ng
TCP client
Chu k hot ng
TCP server
1-70
Chng 4: Tng giao vn
4.1 Cc dch v tng
giao vn
4.2 Multiplexing v
demultiplexing
4.3 Dch v khng
hng kt ni: UDP
4.4 Cc nguyn tc ca
truyn d liu tin cy
4.5 Dch v hng kt
ni: TCP
Cu trc segment
Truyn d liu tin cy
iu khin lung
Qun l kt ni
4.6 Cc nguyn tc ca
iu khin tc nghn
4.7 iu khin tc nghn
ca TCP
1-71
Nguyn tc iu khin tc nghn
Tc nghn:
Qu nhiu ngun gi qu nhiu d liu nhanh qu
kh nng iu khin ca mng
Khc iu khin lung
c im:
Mt gi tin (trn buffer ti router)
tr tng (xp hng ti buffer ca router)

1-72
Nguyn nhn, tc hi ca tc nghn:
Kch bn 1
Hai i tng gi,
hai i tng nhn
Mt router, vng
m khng gii
hn
Khng truyn li
tr ln khi
xy ra tc nghn
Ti a thng
lng c th t
c
unlimited shared
output link buffers
Host A
l
in
: original data
Host B
l
out

1-73
Nguyn nhn, tc hi ca tc nghn:
Kch bn 2
Mt router, vng m gii hn
Bn gi truyn li gi tin mt

vng m ca ng
truyn u ra dng
chung v c gii hn
Host A
l
in
: d liu ban u
Host B
l
out

l'
in
: d liu ban u, d liu
truyn li
1-74
Nguyn nhn, tc hi ca tc nghn:
Kch bn 2
Lun lun: (tt)
Truyn li hon ho: truyn li ch khi mt
S truyn li ca gi tin b tr (khng mt) lm ln hn (trng
hp hon ho) so vi


in

out
=

in

out
>

in

out
Tc hi ca tc nghn:
X l nhiu hn (truyn li)
Truyn li khng cn thit: ng truyn mang nhiu bn sao chp
ca gi tin
R/2
R/2

in

o
u
t

b.
R/2
R/2

in

o
u
t

a.
R/2
R/2

in

o
u
t

c.
R/4
R/3
1-75
Nguyn nhn, tc hi ca tc nghn:
Kch bn 3
Bn i tng gi
Nhiu ng
timeout/truyn li


in
Q: iu g xy ra khi
v tng?
in
vng m ca ng
truyn ra dng chung
v c gii hn
Host A

in
: d liu ban u
Host B

out

'
in
: d liu ban u, v
d liu truyn li
1-76
Nguyn nhn, tc hi ca tc nghn:
Kch bn 3
Tc hi khc ca tc nghn:
Khi gi tin b loi b, kh nng truyn ng ln s
dng cho gi tin lng ph
H
o
s
t
A
H
o
s
t
B

o
u
t

1-77
Cc cch tip cn
iu khin tc nghn
iu khin tc nghn
cui-cui:
Khng c phn hi chnh
thc t mng
Tc nghn suy ra t h
thng cui theo di mt gi
v tr
Cch tip cn s dng bi
TCP
iu khin tc nghn vi
s gip ca mng:
Router cung cp phn hi ti
h thng cui
Mt bt ch ra tc nghn
(SNA, DECbit, TCP/IP,
ECN, ATM)
Ch r tc bn gi nn
gi
Hai cch tip cn chnh iu khin tc nghn:
1-78
Trng hp nghin cu:
iu khin tc nghn ATM ABR
ABR: Available Bit Rate:
Dch v co dn
Nu ng i ca bn gi
cha n gii hn ti:
Bn gi nn s dng
bng thng kh dng
Nu ng i ca bn gi
b tc nghn:
Bn gi iu chnh tc
m bo ti thiu
RM cell (Resource
Management):
c gi bi bn gi, ri rc
cng vi cell d liu
Cc bt trong RM cell do switch
thit lp (c s tham gia ca
mng)
NI bit: khng tng tc (tc
nghn nh)
CI bit: tc nghn
RM cell tr v cho bn gi bi
bn nhn vi cc bt khng thay
i
1-79
Trng hp nghin cu:
iu khin tc nghn ATM ABR
Hai byte ER (Explicit Rate) trong RM cell
Switch tc nghn c th gim gi tr ER trong cell
V vy, tc gi ca bn gi ti thiu tc h tr trn ng
Bt EFCI trong cell d liu: t bng 1 trong switch b tc nghn
Nu cell d liu, trc cell RM, c EFCI thit lp, bn gi thit lp bt
CI trong cell RM tr v
1-80
Chng 4: Tng giao vn
4.1 Cc dch v tng
giao vn
4.2 Multiplexing v
demultiplexing
4.3 Dch v khng
hng kt ni: UDP
4.4 Cc nguyn tc ca
truyn d liu tin cy
4.5 Dch v hng kt
ni: TCP
Cu trc segment
Truyn d liu tin cy
iu khin lung
Qun l kt ni
4.6 Cc nguyn tc ca
iu khin tc nghn
4.7 iu khin tc nghn
ca TCP
1-81
iu khin tc nghn ca TCP
iu khin end-end (khng c h tr
ca mng)
Bn gi gii hn truyn:
LastByteSent-LastByteAcked
s CongWin
LastByteSent - LastByteAcked <=min{CongWin,
RcvWin}
Gn ng,



CongWin thay i ng, chc nng
nhn bit s tc nghn ca mng
Cch bn gi nhn bit s tc
nghn?
S kin mt gi = timeout
hoc lp li 3 ack
Bn gi TCP gim tc
(CongWin) sau s kin mt
gi
Ba c ch:
AIMD
slow start
Khng thay i sau s kin
timeout
rate =
CongWin
RTT
Bytes/sec
1-82
TCP AIMD
8 Kbytes
16 Kbytes
24 Kbytes
time
congestion
window
Gim cp s nhn: Gim
CongWin mt na sau
s kin mt gi
Tng cp s cng: Tng
CongWin 1 MSS mi
RTT khi khng c s
kin mt gi
Kt ni TCP trong thi gian di
1-83
TCP Slow Start
Khi kt ni bt u,
CongWin = 1 MSS
V d: MSS = 500 byte &
RTT = 200 msec
Tc ban u = 20 kbps
Bng thng kh dng c
th >> MSS/RTT
Mong mun nhanh ti tc
ng k
Khi kt ni bt u, tng
tc nhanh theo hm
m cho n khi c s
kin mt gi u tin


1-84
TCP Slow Start (tip)
Khi kt ni bt u,
tng tc hm m ti
khi c s kin mt gi
u tin:
Gp i CongWin mi
RTT
Th hin bng cch tng
CongWin cho mi ACK
nhn c
Tm li: tc ban u
l chm nhng nhanh
chng tng theo hm
m
Host A
R
T
T

Host B
time
1-85
Qu trnh tinh chnh
Sau 3 ACK lp li:
CongWin gim mt na
window tng tuyn tnh
Nhng sau s kin timeout:
CongWin thay v thit
lp 1 MSS;
window tng hm m
Ti ngng th gim
tuyn tnh

3 ACK lp ch rng kh
nng ca mng chuyn
mt s segment
timeout trc 3 ACK lp
l ng ch hn

Trit l:
1-86
Qu trnh tinh chnh (tip)
Q: Khi no tng theo
s m chuyn thnh
theo tuyn tnh?
A: Khi CongWin c gi
tr bng 1/2 gi tr
ca n trc khi
timeout.


Thc hin:
Variable Threshold
Ti s kin mt gi,
Threshold t bng
CongWin ngay trc s kin
mt gi
1-87
Tng kt: iu khin tc nghn ca TCP
Khi CongWin nh hn Threshold, bn gi trong
pha slow-start, window ln theo hm m.
Khi CongWin ln hn Threshold, bn gi trong
pha congestion-avoidance, window ln theo hm
tuyn tnh.
Khi xy ra lp 3 ACK, Threshold t bng
CongWin/2 v CongWin t bng Threshold.
Khi timeout xy ra, Threshold t bng
CongWin/2 v CongWin t bng 1 MSS.
1-88
iu khin tc nghn bn gi ca TCP
S kin Trng thi Hnh ng bn gi TCP Gii thch
Nhn ACK
cho d liu
khng c
ack trc
Slow Start
(SS)
CongWin = CongWin + MSS,
If (CongWin > Threshold)
t trng thi thnh
Congestion Avoidance
Kt qu bi gp i CongWin
mi RTT
Nhn ACK
cho d liu
khng c
ack trc
Congestion
Avoidance
(CA)
CongWin = CongWin+MSS *
(MSS/CongWin)

Tng theo cp s cng, tng
CongWin ln 1 MSS mi RTT
S kin mt
gi pht hin
bi 3 ACK lp
SS hoc CA Threshold = CongWin/2,
CongWin = Threshold,
t trng thi thnh Congestion
Avoidance
Nhanh chng phc hi, thc
hin tng cp s nhn.
CongWin s khng gim di
1 MSS.
Timeout SS hoc CA Threshold = CongWin/2,
CongWin = 1 MSS,
t trng thi thnh Slow Start
Vo slow start
ACK lp SS hoc CA Tng b m ACK lp cho
segment c ack
CongWin v Threshold khng
thay i
1-89
Thng lng ca TCP
Thng lng trung bnh ca TCP t chc
nng ca window size v RTT?
B qua slow start
Cho W l window size khi xy ra mt gi.
Khi window l W, thng lng l W/RTT
Ngay sau mt gi, window gim ti W/2,
thng lng W/2RTT.
Thng lng trung bnh: .75 W/RTT
1-90
Tng lai ca TCP
V d: 1500 byte segment, 100ms RTT, mun 10
Gbps thng lng
i hi window size W = 83,333 segment
Thng lng theo tc mt gi:



L = 210
-10

Phin bn mi ca TCP cho tc cao l cn thit!


L RTT
MSS 22 . 1
1-91
Mc ch ca s cng bng: Nu K phin TCP dng
chung ng truyn tht nt bng thng R, mi
ng nn c tc trung bnh l R/K
Kt ni TCP 1
im tht nt
kh nng R
Kt
ni TCP 2
S cng bng ca TCP
1-92
L do TCP cng bng
Hai phin cnh tranh:
R
R
Chia s bng thng bng nhau
Thng lng ca kt ni 1
trnh tc nghn: tng cng
mt gi: gim window h s 2
1-93
S cng bng (tip)
S cng bng v UDP
Cc ng dng a
phng tin thng
khng s dng TCP
Khng mun tc gim
bi iu khin tc nghn
ng dng s dng
UDP:
y d liu audio/video
tc hng s, chp
nhn mt gi

S cng bng v cc kt ni
TCP song song
Khng ngn chn ng dng
m song song cc kt ni
gia 2 host
Trnh duyt Web thc hin
nh trn


1-94
M hnh tr
Q: Thi gian nhn mt i
tng t Web server sau
khi gi mt yu cu?
B qua tc nghn, tr nh
hng bi:
Thit lp kt ni TCP
tr truyn d liu
Gi s mt ng truyn gia
client v server c tc R
S: MSS (bits)
O: kch thc i tng (bit)
Khng truyn li (khng mt
gi, khng li)
Kch thc ca s:
Ca s tc nghn c nh,
W segment
Ca s ng, m hnh slow
start


1-95
Ca s tc nghn c nh
Trng hp 1:
WS/R > RTT + S/R: ACK
cho segment u tin
trong ca s
tr = 2RTT + O/R
1-96
Ca s tc nghn c nh
Trng hp 2:
WS/R < RTT + S/R: i
ACK sau khi gi lng d
liu ca ca s
tr = 2RTT + O/R
+ (K-1)[S/R + RTT - WS/R]
1-97
M hnh tr TCP: Slow Start (1)
Gi s ca s ln theo slow start

tr cho mt i tng l:
R
S
R
S
RTT P
R
O
RTT Latency
P
) 1 2 ( 2
(

+ + + =
Trong , P l lng thi gian TCP ri ti server
} 1 , { min = K Q P
- Trong , Q l lng thi gian server ri nu i tng kch thc
khng gii hn.
- V K l s ca s trm qua i tng
1-98
M hnh tr TCP: Slow Start (2)
RTT
initiate TCP
connection
request
object
first window
= S/R
second window
= 2S/R
third window
= 4S/R
fourth window
= 8S/R
complete
transmission
object
delivered
time at
client
time at
server
V d:
O/S = 15 segment
K = 4 windows
Q = 2
P = min{K-1,Q} = 2

Thi gian ri ca server
P=2 times
Cc thnh phn tr:
2 RTT thit lp kt
ni v yu cu
O/R truyn i
tng
thi gian server ri v
slow start

Server ri:
P = min{K-1,Q} times
1-99
M hnh tr TCP (3)
R
S
R
S
RTT P RTT
R
O
R
S
RTT
R
S
RTT
R
O
idleTime RTT
R
O
P
k
P
k
P
p
p
) 1 2 ( ] [ 2
] 2 [ 2
2 delay
1
1
1
+ + + =
+ + + =
+ + =

=
=

th window after the time idle 2


1
k
R
S
RTT
R
S
k
=
(

+
+

ement acknowledg receives server until


segment send to starts server when from time = + RTT
R
S
window kth the transmit to time 2
1
=

R
S
k
RTT
initiate TCP
connection
request
object
first window
= S/R
second window
= 2S/R
third window
= 4S/R
fourth window
= 8S/R
complete
transmission
object
delivered
time at
client
time at
server
thi gian khi server bt u
gi segment ti khi server
nhn ack segment
thi gian truyn ca s
th k
thi gian ri sau
ca s th k
1-
100
M hnh tr TCP (4)
(
(
(

+ =
+ > =
> =
> + + + =
> + + + =

) 1 ( log
)} 1 ( log : { min
} 1 2 : { min
} / 2 2 2 : { min
} 2 2 2 : { min
2
2
1 1 0
1 1 0
S
O
S
O
k k
S
O
k
S O k
O S S S k K
k
k
k

Tnh Q, gi tr ri cho i tng c kch thc khng gii hn tng t.


K = s ca s bao i tng
Cch tnh K?
1-
101
M hnh ha HTTP
Gi s trang Web cha:
1 trang HTML c s (kch thc O bt)
M nh (mi nh kch thc O bt)
Non-persistent HTTP:
M+1 kt ni TCP
Response time = (M+1)O/R + (M+1)2RTT + tng thi gian ri
Persistent HTTP:
2 RTT yu cu v nhn file HTML c s
1 RTT yu cu v nhn M nh
Response time = (M+1)O/R + 3RTT + tng thi gian ri
Non-persistent HTTP vi X kt ni song song
Gi s M/X nguyn
1 kt ni TCP cho file c s
M/X tp ca cc kt ni song song cho nh
Response time = (M+1)O/R + (M/X + 1)2RTT + tng thi gian ri
1-
102
0
2
4
6
8
10
12
14
16
18
20
28
Kbps
100
Kbps
1 Mbps 10
Mbps
non-persistent
persistent
parallel non-
persistent
Thi gian tr li HTTP (giy)
RTT = 100 msec, O = 5 Kbytes M=10 v X=5
i vi bng thng thp, thi gian kt ni v thi gian phn hi chi phi bi
thi gian truyn
Persistent connection ch mang li ci tin thm qua cc kt ni song song
1-
103
0
10
20
30
40
50
60
70
28
Kbps
100
Kbps
1 Mbps 10
Mbps
non-persistent
persistent
parallel non-
persistent
Thi gian phn hi (giy)
RTT =1 sec, O = 5 Kbyte, M=10 and X=5
i vi RTT ln, thi gian phn hi chi phi bi thit lp kt ni TCP v tr
slow start. Persistent connection em li ci tin quan trng: c bit trong mng
delay, bandwidth cao.
1-
104
Chng 4: Tng kt
Cc nguyn tc bn trong
cc dch v tng giao vn:
multiplexing,
demultiplexing
Truyn d liu tin cy
iu khin lung
iu khin tc nghn
S thc hin trong Internet
UDP
TCP
Tip theo:
Dng tm hiu phn bn
ngoi ca mng (tng
ng dng, tng giao
vn)
Tm hiu vo trong li
ca mng

You might also like