!"!#$%$#&'($)**$+$,-..$/0))$ - - PowerPoint PPT Presentation
!"!#$%$#&'($)**$+$,-..$/0))$ - - PowerPoint PPT Presentation
!"!#$%$#&'($)**$+$,-..$/0))$ 1234$5.6745$8923$:;9254$-<7$=255>$ !"#$%&'()*'&+"(,-./ >$? @A $!76@62<$ ! !"#$%&'( ! B9-<5C29@$"-D49$EFG(%B#(H$ ! )*+#,*-.(/(&$$012#%( ! !3"-$%&'( !
! !"#$%&'( ! B9-<5C29@$"-D49$EFG(%B#(H$ ! )*+#,*-.(/(&$$012#%( ! !3"-$%&'( ! B9-<5C29@$"-D49$ ! 4#56(!"#$%&'( ! )*+#,*-.(/(%"#( ! 12IJ4@$C92K9-336<K$@;@296-.5$
/$
! 701(0$$"#$(,063(8-*9:#+(;(<=-*6*>*:(
%*>"+#26&60*2?(02(3*+#,*-.@@(
! L<5@9;I@62<5$
! #A2254$L'M($29$,B($ ! (92N674$O@9-I4P$28$C92@2I2.$2C49-@62<$@2$-II23C.65A$
5C4I6Q47$@-5J5$
! #2332<$!==&=1R$
! (92N6747$@9-I4$28$SBB($ ! (92N6747$@9-I4$28$,B($I233-<7T.6<4$C92K9-3>$<2@$
C92@2I2.$
! A==*-6"206'(6*(-#$"9+06(=-*9:#+(;(*2:'(
! G;4$,967-D$UD$367<6KA@$+$1-J-6$94T2C4<47$
V$
W$
MCC.6I-@62<$"-D49$ B9-<5C29@$"-D49$ X4@Y29J$"-D49$ "6<J$"-D49$ (AD56I-.$"-D49$
?$
MCC.6I-@62<$"-D49$ B9-<5C29@$"-D49$ X4@Y29J$"-D49$ "6<J$"-D49$ (AD56I-.$"-D49$
OZ6@5$2<$-$Y694P$ B2>*%021($>3#+#$(QKA@[$
- @@4<;-@62<$
765@29@62<$ >:*>.($.#,(
\$
MCC.6I-@62<$"-D49$ B9-<5C29@$"-D49$ X4@Y29J$"-D49$ "6<J$"-D49$ (AD56I-.$"-D49$
,9-36<K$ !9929$G4@4I@62<$ '476-$MII455$ #2<@92.$ B63#-2#6@( 'M#$-77945545$ S;U5$]$1Y6@IA45$ B9-<5849$ U4@Y44<$ <46KAU295$
*$
MCC.6I-@62<$"-D49$ B9-<5C29@$"-D49$ X4@Y29J$"-D49$ "6<J$"-D49$ (AD56I-.$"-D49$
C8$+$L<@49<4@$(92@2I2.^$ (-IJ4@$S4-7495$ L($M77945545$ L#'($829$49929$ 94C29@6<K$-<7$ 92;@49$56K<-.6<K$ =2;@495$ =2;@6<K$(92@2I2.5$ !<7T@2T!<7$ C-IJ4@$ @9-<5849$
_$
MCC.6I-@62<$"-D49$ B9-<5C29@$"-D49$ X4@Y29J$"-D49$ "6<J$"-D49$ (AD56I-.$"-D49$
B#($ FG($ SBB($ GX1$ E3-<D$2@A495^H$ !<7T@2T!<7$ +#$$&1#( @9-<5849$
12IJ4@5$
,.2Y$#2<@92.$ #2<K45@62<$#2<@92.$
`$
! F<7495@-<7$C96<I6C.45$U4A6<7$@9-<5C29@$.-D49$
549N6I45[$
! ';.@6C.4a6<K%743;.@6C.4a6<K$ ! =4.6-U.4$7-@-$@9-<5849$ ! ,.2Y$I2<@92.$ ! #2<K45@62<$I2<@92.$
! "4-9<$-U2;@$@9-<5C29@$.-D49$C92@2I2.5$6<$@A4$
L<@49<4@[$
! FG([$I2<<4I@62<.455$@9-<5C29@$ ! B#([$I2<<4I@62<T2964<@47$@9-<5C29@$
! ,.2Y$I2<@92.$b$I2<K45@62<$I2<@92.$
)0$
! (92N674)0"/-120)1"##%.-12&-".$
U4@Y44<$-CC.6I-@62<$C92I45545$ 9;<<6<K$2<$76c494<@$A25@5$
! B9-<5C29@$C92@2I2.5$9;<$6<$4<7$
5D5@435$$
! 14<7$5674[$U94-J5$-CC$
3455-K45$6<@2$54K34<@5>$ C-5545$@2$$<4@Y29J$.-D49$
! =4I46N4$5674[$94-5543U.45$
54K34<@5$6<@2$3455-K45>$ C-5545$@2$-CC$.-D49$
! '294$@A-<$2<4$@9-<5C29@$
C92@2I2.$-N-6.-U.4$@2$-CC5$
! L<@49<4@[$B#($-<7$FG($
- CC.6I-@62<$
@9-<5C29@$ <4@Y29J$ 7-@-$.6<J$ CAD56I-.
- CC.6I-@62<$
@9-<5C29@$ <4@Y29J$ 7-@-$.6<J$ CAD56I-.
))$
! !"#$%&'"()*#+,"-(.2K6I-.$
I233;<6I-@62<$U4@Y44<$ =-*>#$$#$((
! =4.645$2<$-<7$4<A-<I45$
<4@Y29J$.-D49$549N6I45$
! .,(/'"0)*#+,"-(.2K6I-.$
I233;<6I-@62<$U4@Y44<$ 3*$6$( S2;54A2.7$-<-.2KD[$ 34),-56)6'.5-./)0'&&'(6)&")34) ,-56$
! (92I45545$d$J675$ ! MCC$3455-K45$d$.4@@495$6<$
4<N4.2C45$
! S25@5$d$A2;545$ ! B9-<5C29@$C92@2I2.$d$M<<$
- <7$Z6..$
! X4@Y29JT.-D49$C92@2I2.$d$
C25@-.$549N6I4$ $
)/$
! F<94.6-U.4>$;<2974947$74.6N49D$
EFG(H$
! X2T896..5$4a@4<562<$28$OU45@T
4c29@P$L($
! =4.6-U.4>$6<T29749$74.6N49D$
EB#(H$
! #2<K45@62<$I2<@92.$$ ! ,.2Y$I2<@92.$ ! #2<<4I@62<$54@;C$ ! 149N6I45$<2@$-N-6.-U.4[$$ ! G4.-D$K;-9-<@445$ ! Z-<7Y67@A$K;-9-<@445$
- CC.6I-@62<$
@9-<5C29@$ <4@Y29J$ 7-@-$.6<J$ CAD56I-. $ <4@Y29J$ 7-@-$.6<J$ CAD56I-. $ <4@Y29J$ 7-@-$.6<J$ CAD56I-. $ <4@Y29J$ 7-@-$.6<J$ CAD56I-. $ <4@Y29J$ 7-@-$.6<J$ CAD56I-. $ <4@Y29J$ 7-@-$.6<J$ CAD56I-. $ <4@Y29J$ 7-@-$.6<J$ CAD56I-.
- CC.6I-@62<$
@9-<5C29@$ <4@Y29J$ 7-@-$.6<J$ CAD56I-.
)V$
- CC.6I-@62<$
@9-<5C29@$ <4@Y29J$ .6<J$ CAD56I-.$ ()$
- CC.6I-@62<$
@9-<5C29@$ <4@Y29J$ .6<J$ CAD56I-.$
- CC.6I-@62<$
@9-<5C29@$ <4@Y29J$ .6<J$ CAD56I-.$ (/$ (V$ (W$ ()$
A25@$)$ A25@$/$ A25@$V$
d$C92I455$ d$52IJ4@$
G4.6N496<K$94I46N47$54K34<@5$ @2$I2994I@$52IJ4@$ G43;.@6C.4a6<K$-@$94IN$A25@[$ e-@A496<K$7-@-$8923$3;.@6C.4$ 52IJ4@5>$4<N4.2C6<K$7-@-$Y6@A$$ A4-749$E.-@49$;547$829$$ 743;.@6C.4a6<KH ';.@6C.4a6<K$-@$54<7$A25@[$
)W$
! S25@$94I46N45(C8(%&6&1-&+$( ! !-IA$7-@-K9-3$A-5$52;9I4$
- <7$745@6<-@62<$L($-77945545$
! !-IA$7-@-K9-3$I-99645$)$
6-&2$=*-6D:&'#-($#1+#26(
! !-IA$54K34<@$A-5$52;9I4$-<7$
745@6<-@62<$=*-6(2"+9#-((
! S25@$;545$L($-77945545$]$
C29@$<;3U495$@2$7694I@$ 54K34<@$@2$-CC92C96-@4$ 52IJ4@$
52;9I4$C29@$f 745@$C29@$f V/$U6@5
- CC.6I-@62<$
7-@-$$ E3455-K4H 2@A49$A4-749$Q4.75 !E8FGH8($#1+#26(I*-+&6
)?$
! #94-@4$52IJ4@5$Y6@A$C29@$<;3U495$ ! FG($52IJ4@$674<@6Q47$UD$$@Y2$J4D5[$ ! <%#$6(C8(&%%-#$$J(%#$6(=*-6(2"+9#-?( ! gA4<$A25@$94I46N45$FG($54K34<@[$ ! #A4IJ$745@6<-@62<$C29@$<;3U49$6<$54K34<@$ ! G694I@$FG($54K34<@$@2$52IJ4@$Y6@A$@A-@$C29@$
<;3U49$
! L($7-@-K9-35$Y6@A$76c494<@$52;9I4$L($
- 77945545$-<7%29$52;9I4$C29@$<;3U495$-94$
7694I@47$@2$5-34$52IJ4@$2<$94I46N49$
)\$
149N49$#$65$.65@4<6<K$2<$C29@$\W/_$ #.64<@$
L([Z$ (/$
I.64<@$ $L([$M$
()$ ()$ (V$
549N49$ L([$#$
1([$\W/_$ G([$`)?*$ 1([$`)?*$ G([$\W/_$ 1([$\W/_$ G([$?**?$ 1([$?**?$ G([$\W/_$
12;9I4$(29@$E1(H$C92N6745$O94@;9<$-779455P$
)*$
! B#($52IJ4@$674<@6Q47$
UD$W$J4D5[$$
! 12;9I4$L($-779455$ ! 12;9I4$C29@$<;3U49$ ! G45@$L($-779455$ ! G45@$C29@$<;3U49$
! =4I46N6<K$A25@$;545$-..$
82;9$N-.;45$@2$7694I@$ 54K34<@$@2$
- CC92C96-@4$52IJ4@$
! 149N49$3-D$5;CC29@$
3-<D$563;.@-<42;5$B#($ 52IJ4@5[$
! !-IA$52IJ4@$674<@6Q47$UD$
6@5$2Y<$W$J4D5$
! g4U$549N495$A-N4$
76c494<@$52IJ4@5$829$4-IA$ I2<<4I@6<K$I.64<@$
! X2<TC49565@4<@$SBB($Y6..$
A-N4$76c494<@$52IJ4@$829$ 4-IA$94h;45@$
)_$
#.64<@$
L([Z$ ()$
I.64<@$ $L([$M$
()$ (/$ (W$
549N49$ L([$#$
1([$`)?*$ G([$_0$ 1([$`)?*$ G([$_0$ (?$ (\$ (V$ GTL([#$ 1TL([$M$ GTL([#$ 1TL([$Z$ 1([$?**?$ G([$_0$ GTL([#$ 1TL([$Z$
)`$
#.64<@$
L([Z$ ()$
I.64<@$ $L([$M$
()$ (/$
549N49$ L([$#$
1([$`)?*$ G([$_0$ 1([$`)?*$ G([$_0$ (W$ (V$ GTL([#$ 1TL([$M$ GTL([#$ 1TL([$Z$ 1([$?**?$ G([$_0$ GTL([#$ 1TL([$Z$
/0$
#2<<4I@62<.455$B9-<5C29@$
/)$
! OX2$896..5>$U-94$U2<45P$
L<@49<4@$@9-<5C29@$ C92@2I2.$
! OZ45@$4c29@P$549N6I4$ ! FG($54K34<@5$3-D$U4[$
! "25@$ ! G4.6N4947$2;@$28$29749$@2$
- CC$
! #2<<4I@62<.455$
! X2$A-<75A-J6<K$U4@Y44<$
FG($54<749>$94I46N49$
! !-IA$FG($54K34<@$
A-<7.47$6<74C4<74<@.D$28$ 2@A495$
! gAD$65$@A494$-$FG(R$
! X2$I2<<4I@62<$
45@-U.65A34<@$EYA6IA$I-<$
- 77$74.-DH$
! 163C.4[$<2$I2<<4I@62<$
5@-@4$-@$54<749>$94I46N49$
! 13-..$54K34<@$A4-749$ ! X2$I2<K45@62<$I2<@92.[$
FG($I-<$U.-5@$-Y-D$-5$8-5@$
- 5$7456947$
//$
! &8@4<$;547$829$
5@94-36<K$$ 3;.@63476-$-CC5$
! "255$@2.49-<@$ ! =-@4$54<56@6N4$ ! &@A49$FG($;545$ ! GX1$ ! 1X'($ ! =4.6-U.4$@9-<5849$2N49$
FG([$-77$94.6-U6.6@D$-@$
- CC.6I-@62<$.-D49$
! MCC.6I-@62<T5C4I6QI$
49929$94I2N49D^$
52;9I4$C29@$f 745@$C29@$f V/$U6@5
MCC.6I-@62<$ 7-@-$$ E3455-K4H FG($54K34<@$8293-@
.4<K@A IA4IJ5;3 "4<K@A>$6<$ UD@45$28$FG($ 54K34<@>$ 6<I.;76<K$ A4-749
/V$
! K#2%#-(
! B94-@$54K34<@$I2<@4<@5$
- 5$54h;4<I4$28$)\TU6@$
6<@4K495$
! #A4IJ5;3[$-776@62<$E)i5$
I23C.434<@$5;3H$28$ 54K34<@$I2<@4<@5$
! 14<749$C;@5$IA4IJ5;3$
N-.;4$6<@2$FG($ IA4IJ5;3$Q4.7$
! L#>#0M#-(
! #23C;@4$IA4IJ5;3$28$
94I46N47$54K34<@$
! #A4IJ$68$I23C;@47$
IA4IJ5;3$4h;-.5$ IA4IJ5;3$Q4.7$N-.;4[$
! X&$T$49929$74@4I@47$ ! j!1$T$<2$49929$74@4I@47k$ Z;@$3-DU4$499295$ <2<4@A4.455R$7"(')02&'()89)
N*&:O(74@4I@$O499295P$E4kKk>$l6CC47$U6@5H$6<$@9-<536@@47$54K34<@$ $
/W$
1@4CC6<K$@A92;KA$@A4$7456K<$28$B#($
/?$
! =4.6-U6.6@D$65$63C29@-<@$6<$-CC.6I-@62<>$@9-<5C29@>$-<7$.6<J$.-D495$
!
#A-9-I@4965@6I5$28$;<94.6-U.4$IA-<<4.$Y6..$74@4936<4$I23C.4a6@D$28$94.6-U.4$7-@-$ @9-<5849$C92@2I2.$E97@H$
/\$
!
#A-9-I@4965@6I5$28$;<94.6-U.4$IA-<<4.$Y6..$74@4936<4$I23C.4a6@D$28$94.6-U.4$7-@-$ @9-<5849$C92@2I2.$E97@H$ ! =4.6-U6.6@D$65$63C29@-<@$6<$-CC.6I-@62<>$@9-<5C29@>$-<7$.6<J$.-D495$
/*$
!
#A-9-I@4965@6I5$28$;<94.6-U.4$IA-<<4.$Y6..$74@4936<4$I23C.4a6@D$28$94.6-U.4$7-@-$ @9-<5849$C92@2I2.$E97@H$ ! =4.6-U6.6@D$65$63C29@-<@$6<$-CC.6I-@62<>$@9-<5C29@>$-<7$.6<J$.-D495$
/_$
54<7$ 5674 94I46N4$ 5674
rdt_send(): I-..47$8923$-U2N4>$ E4kKk>$UD$-CCkHk$(-5547$7-@-$@2$$ 74.6N49$@2$94I46N49$;CC49$.-D49 udt_send(): I-..47$UD$97@>$ @2$@9-<5849$C-IJ4@$2N49$$ ;<94.6-U.4$IA-<<4.$@2$94I46N49 rdt_rcv(): I-..47$YA4<$C-IJ4@$
- 996N45$2<$9INT5674$28$IA-<<4.
deliver_data(): I-..47$UD$ rdt$@2$74.6N49$7-@-$@2$-CCk
/`$
! BA4$C.-<[$C2>-#+#26&::'(74N4.2C$54<749$%$94I46N49$56745$28$
- #:0&9:#(%&6&(6-&2$I#-(=-*6*>*:(<-%6?J(&(P>60*2&:(=-*6*>*:(
! !E8(0$($0+0:&-(6*(LH!(9"6(6**(>*+=:#5(6*(%#$>-09#(&::(&6(*2>#( ! #2<56749$2<.D$;<67694I@62<-.$7-@-$@9-<5849$ ! U;@$I2<@92.$6<82$Y6..$l2Y$2<$U2@A$7694I@62<5^$ ! F54$P206#($6&6#(+&>302#$(<QKR?((@2$5C4I68D$54<749>$
94I46N49$
5@-@4$ )$ 5@-@4$ /$
4N4<@$I-;56<K$5@-@4$@9-<56@62<
- I@62<5$@-J4<$2<$5@-@4$@9-<56@62<
4N4<@
- I@62<5
K6&6#O$gA4<$6<$@A65$ O5@-@4P>$$<4a@$5@-@4$ ;<6h;4.D$74@4936<47$ UD$<4a@$4N4<@$ !"
E;CC49I-54$"-3U7-$d$43C@D$54@H$
V0$
! F<749.D6<K$IA-<<4.$C4984I@.D$94.6-U.4$ ! X2$U6@$499295$ ! X2$.255$28$C-IJ4@5$ ! 14C-9-@4$,1'5$829$54<749>$94I46N49[$ ! 14<749$54<75$7-@-$6<@2$;<749.D6<K$IA-<<4.$ ! =4I46N49$94-75$7-@-$8923$;<749.D6<K$IA-<<4.$
Wait for call from above
packet = make_pkt(data) udt_send(packet) rdt_send(data) extract (packet,data) deliver_data(data)
Wait for call from below
rdt_rcv(packet)
54<749$ 94I46N49$
V)$
! F<749.D6<K$IA-<<4.$3-D$S0=(906$(6<$C-IJ4@$ ! #A4IJ5;3$@2$74@4I@$U6@$499295$ ! Z;@>$A2Y$72$Y4$94I2N49$8923$499295R$ ! T>.2*,:#%1#+#26$(<TEU$?[$94I46N49$4aC.6I6@.D$@4..5$
54<749$@A-@$C-IJ4@$94I46N47$&:$
! 4#1&60M#(&>.2*,:#%1#+#26$(<4TU$?O(94I46N49$4aC.6I6@.D$
@4..5$54<749$@A-@$C-IJ4@$A-7$499295$
! 14<749$94@9-<536@5$C-IJ4@$2<$94I46C@$28$XM:$ ! X4Y$34IA-<6535$6<$rdt2.0$EU4D2<7$rdt1.0H[$ ! !9929$74@4I@62<$ ! =4I46N49$8447U-IJ$
! #2<@92.$35K5$EM#:>XM:H$K2$8923$94I46N49$@2$54<749$
V/$
Wait for call from above
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)
Wait for ACK or NAK Wait for call from below
54<749$ 94I46N49$
rdt_send(data) !"
VV$
Wait for call from above
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)
Wait for ACK or NAK Wait for call from below
rdt_send(data) !"
VW$
Wait for call from above
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)
Wait for ACK or NAK Wait for call from below
rdt_send(data) !"
V?$
! gA-@$A-CC4<5$68$TEUF
4TU(>*--"=6#%R$
! 14<749$7245<i@$J<2Y$
YA-@$A-CC4<47$-@$ 94I46N49^$
! #-<i@$m;5@$94@9-<536@[$
94I46N49$36KA@$K4@$ 7;C.6I-@4$7-@-$
! S-<7.6<K$7;C.6I-@45[$$
! 14<749$94@9-<536@5$I;994<@$
C-IJ4@$68$M#:%XM:$K-9U.47$
! 14<749$-775$$#V"#2>#(
2"+9#-$@2$4-IA$C-IJ4@$$
! =4I46N49$765I-975$E7245<i@$
74.6N49H$7;C.6I-@4$C-IJ4@$
! K6*=(&2%(,&06(%#$012(
! 14<749$54<75$)$C-IJ4@>$
@A4<$Y-6@5$829$94I46N49$ 945C2<54$
V\$
Wait for call 0 from above
sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) rdt_send(data)
Wait for ACK or 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)
Wait for call 1 from above Wait for ACK or NAK 1
!" !" K#V"#2>#(W@(
V*$
K#V"#2>#(W@(
Wait for 0 from below 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) Wait for 1 from below 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)
V_$
K#2%#-O(
! 14h$f$-7747$@2$CJ@$ ! BY2$54hk$fi5$E0>)H$Y6..$
5;nI4k$$X3'Y(
! ';5@$IA4IJ$68$94I46N47$
M#:%XM:$I299;C@47$$
! BY6I4$-5$3-<D$5@-@45$
! 1@-@4$3;5@$O94343U49P$
YA4@A49$OI;994<@P$C-IJ4@$A-5$ 54h;4<I4$<;3U49$28$0$29$)$
L#>#0M#-O(
! ';5@$IA4IJ$68$94I46N47$
C-IJ4@$65$7;C.6I-@4$
! 1@-@4$6<76I-@45$YA4@A49$0$29$)$
65$4aC4I@47$C-IJ4@$54h;4<I4$ <;3U49$
! =4I46N49$I-<$."&$J<2Y$68$6@5$
.-5@$M#:%XM:$94I46N47$&:$
- @$54<749$
V`$
! 1-34$:%.1&-".20-&;$-5$97@/k)$ ! X2$XM:5^$ ! =4I46N49$6<5@4-7$54<75$M#:$829$.-5@$C-IJ4@$
94I46N47$&:$
! =4I46N49$3;5@$4aC.6I6@.D$6<I.;74$54h$f$28$C-IJ4@$
U46<K$M#:47$$
! G;C.6I-@4$M#:$-@$54<749$945;.@5$6<$5-34$
- I@62<$-5$XM:$
! =4@9-<536@$I;994<@$C-IJ4@$
W0$
Wait for call 0 from above
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)
Wait for ACK
54<749$,1'$ 89-K34<@$
Wait for 0 from below
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)
94I46N49$,1'$ 89-K34<@$
!"
W)$
! X4Y$-55;3C@62<$
! F<749.D6<K$IA-<<4.$I-<$
- .52$:*$#(=&>.#6$((
E7-@-$*-(M#:5H$
! #A4IJ5;3>$54hk$f>$M#:5>$
- <7$94@9-<5365562<5$Y6..$
A4.C$U;@$-94$<2@$ 5;nI64<@$
! X4Y$-CC92-IA$
! 14<749$Y-6@5$O94-52<-U.4P$
- 32;<@$28$@634$829$M#:$$
! =4@9-<536@5$68$<2$M#:$
94I46N47$6<$@A65$@634$
! L8$CJ@$E29$M#:H$65$m;5@$
74.-D47$U;@$<2@$.25@[$
! =4@9-<5365562<$Y6..$U4$$ 7;C.6I-@4>$U;@$54hk$fi5$52.N45$ @A65$C92U.43$ ! =4I46N49$3;5@$5C4I68D$54h$f$ 28$CJ@$U46<K$M#:47$
! =4h;6945$I2;<@72Y<$@6349$
W/$
sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) start_timer rdt_send(data) Wait for ACK0 rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isACK(rcvpkt,1) ) Wait for call 1 from above 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) Wait for call 0 from above Wait for ACK1
!"
rdt_rcv(rcvpkt)
!" !" !"
WV$
WW$
W?$
! 97@Vk0$Y29J5>$U;@$=#-I*-+&2>#($602.$( ! ,29$)$eUC5$.6<J>$)?$35$C92Ck$74.-D>$_000$U6@$C-IJ4@[$ ! F$54<749[$;@6.6o-@62<$[$89-I@62<$28$@634$54<749$U;5D$54<76<K$ ! ):Z$C-IJ4@$4N49D$V0$354I$ ! ;;.7F$#>(63-*"13="6(*M#-(Z(N9=$(:02.( ! X4@Y29J$C92@2I2.$.636@5$;54$28$CAD56I-.$9452;9I45^$
U
sender
= .008
30.008
= 0.00027
microsec
L / R RTT + L / R =
$
ds microsecon 8 bps 10 bits 8000
9
= = = R L dtrans
<"+)0"./)-&)&2,'6)&")$%6=) $21,'&)"%&)".&")+-(')
W\$
first packet bit transmitted, t = 0 sender receiver RTT last packet bit transmitted, t=L / R first packet bit arrives last packet bit arrives, send ACK ACK arrives, send next packet, t = RTT + L / R
U
sender
= .008
30.008
= 0.00027
microsec
L / R RTT + L / R =
W*$
80=#:02021O(54<749$-..2Y5$3;.@6C.4>$O6<Tl6KA@P>$D4@T@2TU4T
- IJ<2Y.47K47$C-IJ4@5$
! =-<K4$28$54h;4<I4$<;3U495$3;5@$U4$6<I94-547$ ! Z;c496<K$-@$54<749$-<7%29$94I46N49$
! BY2$K4<496I$82935$28$C6C4.6<47$C92@2I2.5[$$
/">?21,>*)2.5)6'0'1&-@')('$'2&)
W_$
first packet bit transmitted, t=0
sender receiver RTT
last bit transmitted, t=L / R first packet bit arrives last packet bit arrives, send ACK
ACK arrives, send next packet, t = RTT + L / R
last bit of 2nd packet arrives, send ACK last bit of 3rd packet arrives, send ACK
U
sender
= .024
30.008
= 0.0008
microsecon
3 * L / R RTT + L / R =
L<I94-54$;@6.6o-@62<$ UD$-$8-I@29$28$V^$
W`$
NAD7TEUD4(
! 14<749$
! FC$@2$X$;<M#:47$CJ@5$6<$
C6C4.6<4$
! =4I46N49$
! &<.D$54<75$I;3;.-@6N4$M#:5$ ! G245<i@$M#:$CJ@$68$@A494i5$-$
K-C$
! 14<749$
! S-5$@6349$829$2.745@$;<M#:47$
CJ@$
! L8$@6349$4aC6945[$94@9-<536@$-..$
;<M#:47$C-IJ4@5$
KB[BE!C\B(LB8BT!(
! 14<749$
! FC$@2$X$;<M#:47$C-IJ4@5$6<$
C6C4.6<4$
! =4I46N49$
! M#:5$6<76N67;-.$CJ@5$
! 14<749$
! '-6<@-6<5$@6349$829$4-IA$
;<M#:47$CJ@$
! L8$@6349$4aC6945[$94@9-<536@$
2<.D$;<M#:47$C-IJ4@$
?0$
! JTU6@$54h;4<I4$f$6<$C-IJ4@$A4-749$ ! Og6<72YP$28$;C$@2$X>$I2<54I;@6N4$;<M#:47$CJ@5$-..2Y47$ ! M#:E<H[$M#:5$-..$CJ@5$;C$@2>$6<I.;76<K$54h$f$<$ ! =4849947$@2$-5$-$OI;3;.-@6N4$M#:P$ ! '-D$94I46N4$7;C.6I-@4$M#:5$A6'')('1'-@'(B) ! B6349$829$2.745@$6<Tl6KA@$C-IJ4@$ ! @6342;@E<H[$94@9-<536@$C-IJ4@$<$&2%(&::(3013#-(54h$f$
C-IJ4@5$6<$Y6<72Y$
?)$
Wait
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) start_timer nextseqnum++ } else refuse_data(data) base = getacknum(rcvpkt)+1 If (base == nextseqnum) stop_timer else start_timer rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) base=1 nextseqnum=1 rdt_rcv(rcvpkt) && corrupt(rcvpkt)
!" !"
?/$
! M#:T2<.D[$-.Y-D5$54<7$M#:$829$I2994I@.DT94I46N47$CJ@$Y6@A$A6KA45@$
1$2'"3,"(54h$f$
! '-D$K4<49-@4$7;C.6I-@4$M#:5$ ! X447$2<.D$94343U49$expectedseqnum ! &;@T28T29749$CJ@[$$ ! G65I-97$E72<i@$U;c49H$Tp$<2$94I46N49$U;c496<K^$E947;I45$I23C.4a6@DH$ ! =4TM#:$CJ@$Y6@A$A6KA45@$6<T29749$54h$f$
Wait
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)
!"
?V$
?W$
! =4I46N49$-.5-@-5%200;)-IJ<2Y.47K45$-..$
I2994I@.D$94I46N47$C-IJ4@5$
! Z;c495$C-IJ4@5>$-5$<44747>$829$4N4<@;-.$6<T29749$
74.6N49D$@2$;CC49$.-D49$
! 14<749$2<.D$9454<75$C-IJ4@5$829$YA6IA$M#:$
<2@$94I46N47$
! 14<749$@6349$829$4-IA$;<M#:47$C-IJ4@5$ ! 14<749$Y6<72Y$ ! X$I2<54I;@6N4$54h$fi5$ ! MK-6<$.636@5$54h$f5$28$54<@>$;<M#:47$C-IJ4@5$
??$
?\$
KB4HBL(
! G-@-$8923$-U2N4$[$
! L8$<4a@$-N-6.-U.4$54h$f$6<$
Y6<72Y>$54<7$CJ@$
! @6342;@E<H[$
! =454<7$CJ@$<>$945@-9@$@6349$
! M#:E<H$6<$
q54<7U-54>54<7U-54bXr[$
! '-9J$CJ@$<$-5$94I46N47$ ! L8$<$65$53-..45@$;<M#:47$CJ@>$
- 7N-<I4$Y6<72Y$U-54$@2$<4a@$
;<M#:47$54h$f$$
LBEBC\BL(
! CJ@$<$6<$$
q9INU-54>$9INU-54bXT)r$
! 14<7$M#:E<H$ ! &;@T28T29749[$U;c49$ ! L<T29749[$74.6N49$E-.52$74.6N49$
U;c4947>$6<T29749$CJ@5H>$
- 7N-<I4$Y6<72Y$@2$<4a@$<2@T
D4@T94I46N47$CJ@$
! CJ@$<$6<$$
q9INU-54TX>9INU-54T)r$
! M#:E<H$A&=-6)-6)2)$21,'&)&=2&)+26)
$('@-"%60;)('1'-@'58B$
! &@A49Y654[$$ ! LK<294$$
?*$
?_$
! !a-3C.4$
!
54h$fi5[$0>$)>$/>$V$
!
Y6<72Y$56o4dV$ ! =4I46N49$5445$<2$
76c494<I4$6<$@Y2$ 5I4<-9625^$
!
L5$6@$-$94@9-<536@@47$C-IJ4@>$ 29$-$<4Y$C-IJ4@R$
!
L<I2994I@.D$C-5545$7;C.6I-@4$ 7-@-$-5$<4Y$6<$E-H$
s[$gA-@$94.-@62<5A6C$65$ <44747$U4@Y44<$54h$f$ 56o4$-<7$Y6<72Y$56o4R$ M[$BY6I4$-5$3-<D$54h$fi5$
?`$
\0$
! ,;..$7;C.4a$7-@-[$
! Z6T7694I@62<-.$7-@-$l2Y$6<$
5-34$I2<<4I@62<$
! '11[$3-a63;3$54K34<@$
56o4$
! #2<<4I@62<T2964<@47[$$
! S-<75A-J6<K$E4aIA-<K4$28$
I2<@92.$35K5H$6<6@6-.6o45$ 54<749>$94I46N49$5@-@4$U48294$ 7-@-$4aIA-<K4$
! ,.2Y$I2<@92..47[$
! 14<749$Y6..$<2@$2N49YA4.3$
94I46N49$
! (26<@T@2TC26<@[$
! &<4$54<749>$2<4$94I46N49$$
! =4.6-U.4>$6<T29749$C;&')
6&'2#D)
! X2$O3455-K4$U2;<7-9645P$
! (6C4.6<47[$
! B#($I2<K45@62<$-<7$l2Y$
I2<@92.$54@$Y6<72Y$56o4$
! E'.5)F)('1'-@')C%G'(6)
socket door TCP send buffer TCP receive buffer socket door
segment
application writes data application reads data
\)$
\/$
52;9I4$C29@$f 745@$C29@$f
V/$U6@5
- CC.6I-@62<$
7-@-$$ EN-96-U.4$.4<K@AH 54h;4<I4$<;3U49
- IJ<2Y.47K434<@$<;3U49
=4I46N4$Y6<72Y F9K$7-@-$C26<@49 IA4IJ5;3 , 1 = ( M F
A4-7$ .4< <2@$ ;547
&C@62<5$EN-96-U.4$.4<K@AH
F=e[$;9K4<@$7-@-$$ EK4<49-..D$<2@$;547H M#:[$M#:$f$ N-.67 (1S[$C;5A$7-@-$<2Y$ EK4<49-..D$<2@$;547H$ =1B>$1jX>$,LX[$ I2<<4I@62<$45@-U$ E54@;C>$@4-972Y<$ I233-<75H$ f$UD@45$$ 94I46N49$Y6..6<K$ @2$-II4C@$ I2;<@6<K$ UD$UD@45$$ 28$7-@-$ E<2@$54K34<@5^H$ L<@49<4@$ IA4IJ5;3$ E-5$6<$FG(H$
14hk$fi5[$
! UD@4$5@94-3$O<;3U49P$
28$Q95@$UD@4$6<$ 54K34<@i5$7-@-$ M#:5[$
! 54h$f$28$<4a@$UD@4$
4aC4I@47$8923$2@A49$ 5674$
! I;3;.-@6N4$M#:$
s[$A2Y$94I46N49$A-<7.45$ 2;@T28T29749$54K34<@5$
! M[$B#($5C4I$7245<i@$
5-D>$T$;C$@2$ 63C.434<@49$
S25@$M S25@$Z
Seq=42, ACK=79, data = ‘C’ S e q = 7 9 , A C K = 4 3 , d a t a = ‘ C ’ Seq=43, ACK=80
F549$ @DC45$ t#i A25@$M#:5$ 94I46C@$$ 28$4IA247$ t#i A25@$M#:5$ 94I46C@$28$ t#i>$4IA245$ U-IJ$t#i @634 563C.4$@4.<4@$5I4<-962
\V$
! )*,(6*($#6(!E8(60+#*"6(
M&:"#Y(
! 1A2;.7$U4$.2<K49$@A-<$
=BB$E92;<7T@96CT@634H$
! Z;@$=BB$N-9645u$
! L8$6@$65$@22$5A29@$
! (943-@;94$@6342;@$ ! F<<4I455-9D$
94@9-<5365562<5u$
! L8$6@$65$@22$.2<K$
! 1.2Y$94-I@62<$@2$54K34<@$
.255$
! )*,(>&2(,#(#$60+&6#(
L!!Y(
! '4-5;94$@634$8923$
54K34<@$@9-<5365562<$ ;<@6.$M#:$94I46C@$
! LK<294$94@9-<5365562<5$ ! #-..$@A65$O1-3C.4=BBP$
! 1-3C.4=BB$Y6..$N-9D$
! g4$Y-<@$-$O5322@A49P$
45@63-@47$=BB$
! MN49-K4$54N49-.$94I4<@$
34-5;9434<@5>$<2@$m;5@$ I;994<@$1-3C.4=BB$
\W$
! !aC2<4<@6-.$Y46KA@47$32N6<K$-N49-K4$ ! L<l;4<I4$28$C-5@$5-3C.4$74I94-545$
4aC2<4<@6-..D$8-5@$
! BDC6I-.$N-.;4[$#$d$0k)/?$
\?$
EstimatedRTT = (1- #)*EstimatedRTT + #*SampleRTT
\\$
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) RTT (milliseconds) SampleRTT Estimated RTT
! 14@@6<K$@A4$B#($@6342;@$ ! !5@63@47=BB$C.;5$O5-84@D$3-9K6<P$ ! BA4$.-9K49$@A4$N-96-@62<$6<$!5@63-@47=BB>$@A4$
.-9K49$@A4$5-84@D$3-9K6<$
\*$
! B#($I94-@45$97@$549N6I4$
2<$@2C$28$;<94.6-U.4$L($
! ,4-@;945$28$B#($$
! (6C4.6<47$54K34<@5$ ! #;3;.-@6N4$M#:5$
! B#($;545$56<K.4$
94@9-<5365562<$@6349$
! =4@9-<5365562<5$-94$
@96KK4947$UD$
! @6342;@$4N4<@5$ ! 7;C.6I-@4$M#:5$
! L<6@6-..D$I2<56749$
563C.6Q47$B#($54<749[$
! LK<294$7;C.6I-@4$M#:5$ ! LK<294$l2Y$I2<@92.$ ! LK<294$I2<K45@62<$
I2<@92.$
\_$
! G-@-$94I46N47$8923$-CC[$
! #94-@4$54K34<@$Y6@A$54h$f$ ! 54h$f$65$UD@4T5@94-3$
<;3U49$28$Q95@$7-@-$UD@4$6<$$ 54K34<@$
! 1@-9@$@6349$68$<2@$-.94-7D$
9;<<6<K$E@A6<J$28$@6349$-5$ 829$2.745@$;<M#:47$ 54K34<@H$
! !aC69-@62<$6<@49N-.[$
B634&;@L<@49N-.$$ ! B6342;@[$ ! =4@9-<536@$54K34<@$@A-@$
I-;547$@6342;@$
! =45@-9@$@6349$
! $M#:$94I46N47[$
! L8$-IJ<2Y.47K45$
C94N62;5.D$;<M#:47$ 54K34<@5$
! FC7-@4$YA-@$65$J<2Y<$@2$ U4$M#:47$ ! 1@-9@$@6349$68$@A494$-94$$ 2;@5@-<76<K$54K34<@5$
\`$
*)$
S25@$M
Seq=100, 20 bytes data
@634 C943-@;94$@6342;@$5I4<-962 S25@$Z
Seq=92, 8 bytes data Seq=92, 8 bytes data 14hd`/$@6342;@
S25@$M
Seq=92, 8 bytes data ACK=100
.255 @6342;@ .25@$M#:$5I4<-962 S25@$Z
X
Seq=92, 8 bytes data A C K = 1
@634$
14hd`/$@6342;@
14<7Z-54$ d$)00$ 14<7Z-54$ d$)/0$ 14<7Z-54$ d$)/0$ 14<7U-54$ d$)00$
*/$
S25@$M
Seq=92, 8 bytes data ACK=100
.255 @6342;@ #;3;.-@6N4$M#:$5I4<-962 S25@$Z
X
Seq=100, 20 bytes data A C K = 1 2
@634$ 14<7Z-54$ d$)/0$
*V$
Event at Receiver
Arrival of in-order segment with expected seq #. All data up to expected seq # already ACKed Arrival of in-order segment with expected seq #. One other segment has ACK pending Arrival of out-of-order segment higher-than-expect seq. # . Gap detected Arrival of segment that partially or completely fills gap
TCP Receiver action
Delayed ACK. Wait up to 500ms for next segment. If no next segment, send ACK Immediately send single cumulative ACK, ACKing both in-order segments Immediately send duplicate ACK, indicating seq. # of next expected byte Immediate send ACK, provided that segment starts at lower end of gap
! B634T2;@$C49627$$28@4<$
94.-@6N4.D$.2<K$
! "2<K$74.-D$U48294$
9454<76<K$.25@$C-IJ4@$
! G4@4I@$.25@$54K34<@5$N6-$
7;C.6I-@4$M#:5k$
! 14<749$28@4<$54<75$3-<D$
54K34<@5$U-IJT@2TU-IJ$
! L8$54K34<@$65$.25@>$@A494$
Y6..$.6J4.D$U4$3-<D$ 7;C.6I-@4$M#:5$829$@A-@$ 54K34<@$ ! L8$54<749$94I46N45$V$
M#:5$829$5-34$7-@->$6@$
- 55;345$@A-@$54K34<@$
- 8@49$M#:47$7-@-$Y-5$
.25@[$
! Q&$6(-#6-&2$+06[$9454<7$
54K34<@$U48294$@6349$ 4aC6945$
*W$
S25@$M @6342;@ S25@$Z @634$
X
resend seq X2
54h$f$a)$ 54h$f$a/$ 54h$f$aV$ 54h$f$aW$ 54h$f$a?$ M#:$a)$ M#:$a)$ M#:$a)$ M#:$a)$ @96C.4$ 7;C.6I-@4$ M#:5$
*?$
! =4I46N4$5674$28$B#($
I2<<4I@62<$A-5$-$94I46N4$ U;c49[$
L($ 7-@-K9-35$
B#($7-@-$ E6<$U;c49H$ EI;994<@.DH$ ;<;547$U;c49$ 5C-I4$
- CC.6I-@62<$
C92I455$
**$
! MCC.6I-@62<$C92I455$3-D$U4$
5.2Y$-@$94-76<K$8923$U;c49$
! gA-@$68$U;c49$Q..5$;CR$
( Q:*,(E*26-*:O(
$ (94N4<@5$$#2%#-$8923$ *M#-S*,021(-#>#0M#-]$( 9"^#-$UD$@9-<536@@6<K$@22$ 3;IA>$@22$8-5@$ $ K=##%(+&6>3021($#-M0>#O( 3-@IA6<K$54<7$9-@4$@2$ 94I46N6<K$-CC.6I-@62<x5$79-6<$ 9-@4$
! 1;CC254$B#($94I46N49$
765I-975$2;@T28T29749$ 54K34<@5u$
! F<;547$U;c49$5C-I4$
d$9Y<7$ d$=INZ;c49Tq"-5@ZD@4=IN7$T$"-5@ZD@4=4-7r$
! =4I46N49$<2@6Q45$
54<749$28$;<;547$ U;c49$5C-I4$
! 14K34<@$A4-749$
6<I.;745$@A4$rwnd$N-.;4$$
! 14<749$.636@5$f$28$
;<M#:47$UD@45$@2$ rwnd
! e;-9-<@445$94I46N49i5$
U;c49$7245<i@$2N49l2Y$
*_$
L($ 7-@-K9-35$
B#($7-@-$ E6<$U;c49H$ EI;994<@.DH$ ;<;547$U;c49$ 5C-I4$
- CC.6I-@62<$
C92I455$
9Y<7$ =INZ;c49$
! B#($54<749$-<7$94I46N49$
45@-U.65A$OI2<<4I@62<P$ U48294$4aIA-<K6<K$7-@-$ 54K34<@5$
! #.64<@$6<6@6-@45$I2<<4I@62<$
! #-..5$I2<<4I@EH$@2$-<$L(%C29@$
! 149N49$65$I2<@-I@47$UD$I.64<@$
! #-..5$-II4C@EH$
! B#($N-96-U.45$6<6@6-.6o47$
YA6.4$45@-U.65A6<K$ I2<<4I@62<$
! 14h;4<I4$f5$ ! Z;c495$-<7$l2Y$I2<@92.$6<82$
E4kKk$=INg6<72YH$
! BA944$Y-D$A-<75A-J4[$ ! K6#=(ZO(I.64<@$A25@$54<75$
B#($1jX$54K34<@$@2$ 549N49$
! 1C4I6Q45$6<6@6-.$54h$f$ ! X2$7-@-$
! K6#=(/O(549N49$A25@$94I46N45$
1jX>$94C.645$Y6@A$1jXM#:$ 54K34<@$
! 149N49$-..2I-@45$U;c495$ ! 1C4I6Q45$549N49$6<6@6-.$54hk$f$
! K6#=(;O$I.64<@$94I46N45$
1jXM#:>$94C.645$Y6@A$M#:$ 54K34<@>$YA6IA$3-D$ I2<@-6<$7-@-$
*`$
_0$
#.256<K$-$I2<<4I@62<[$
I.64<@$I.2545$52IJ4@$N6-$I.254EH[$
1@4C$)[$I.64<@$5D5@43$54<75$B#($
,LX$I2<@92.$54K34<@$@2$549N49$$
1@4C$/[$549N49$94I46N45$,LX>$
94C.645$Y6@A$M#:k$#.2545$ I2<<4I@62<>$54<75$,LXk$$
I.64<@
FIN
549N49
A C K ACK F I N
I.254$ I.254$ I.2547$ @6347$Y-6@$
_)$
1@4C$V[$I.64<@$94I46N45$,LX>$94C.645$
Y6@A$M#:k$$
! !<@495$O@6347$Y-6@P$T$Y6..$
945C2<7$Y6@A$M#:$@2$94I46N47$ ,LX5$$
! gAD$<2@$I.254$633476-@4.DR$
MN2675$C2@4<@6-.$C92U.435$68$-$ .'+$52IJ4@$EY6@A$5-34$C29@5$
- <7$L(5H$65$I94-@47>$-<7$@A4<$
2.7$74.-D47$7-@-$65$ 74.6N4947u$
1@4C$W[$549N49>$94I46N45$M#:k$$
#2<<4I@62<$I.2547$
I.64<@
FIN
549N49
A C K ACK F I N
I.254$ I.254$ I.2547$ @6347$Y-6@$
_/$
B#($I.64<@$.684IDI.4 B#($549N49$.684IDI.4
(96<I6C.45$-<7$B#($1C4I6QI5$
_V$
! gA-@$65$I2<K45@62<R$ ! L<8293-..D[$O@22$3-<D$52;9I45$54<76<K$@22$3;IA$
7-@-$@22$8-5@$829$2#6,*-.(@2$A-<7.4P$
! G6c494<@$8923$l2Y$I2<@92.^$ ! '-<6845@-@62<5$ ! "25@$C-IJ4@5$EU;c49$2N49l2Y$-@$92;@495H$ ! "2<K$74.-D5$Eh;4;46<K$6<$92;@49$U;c495H$
_W$
! BY2$54<7495>$@Y2$
94I46N495$
! &<4$92;@49>$
02P206#$U;c495$$
! X2$94@9-<5365562<$ ! "6<J$Zg$28$=$ ! [&-1#(%#:&'$(
YA4<$ I2<K45@47$
! '-a63;3$
- IA64N-U.4$
@A92;KAC;@$
_?$
unlimited shared
- utput link buffers$
Host A$
$in : original data$
Host B$
$out$
=%/$ =%/$ =%/$
! &<4$92;@49>$P206#(U;c495$$ ! 14<749$94@9-<5365562<$28$.25@$C-IJ4@$
_\$
finite shared output link buffers$ Host A$
$in : original data$
Host B$ $out$
$'in : original data, plus retransmitted data$
_*$
R/2 R/2
$in $out
b.
R/2 R/2
$in $out
a.
R/2 R/2
$in $out
c.
R/4 R/3
! #-54$-[$14<749$2<.D$@9-<536@5$YA4<$6@$J<2Y5$U;c49$5C-I4$65$
- N-6.-U.4$6<$92;@49$E;<94-.65@6IH$
! #-54$U[$14<749$94@9-<536@5$2<.D$YA4<$C-IJ4@$65$J<2Y<$@2$U4$.25@$ ! X4Y$I25@$28$I2<K45@62<[$'294$54<749$Y29J$E94@9-<5H$829$K6N4<$
OK227C;@P$
! #-54$I[$M55;34$54<749$-.52$94@9-<536@5$YA4<$-$C-IJ4@$65$74.-D47$
E<2@$.25@H>$6k4k$-$C943-@;94$@6342;@$EU6KK49$$6<iH$$
! X4Y$I25@$28$I2<K45@62<[$92;@49$2;@C;@$.6<J$I-99645$3;.@6C.4$I2C645$28$
C-IJ4@$
$"in $"out
=
$"in $"out
>
$"in $"out
>
__$
! ,2;9$54<7495$ ! ';.@6A2C$C-@A5$ ! B6342;@%94@9-<536@$
$"in
s[$YA-@$A-CC4<5$-5$$$$$$
- <7$$$$$$$$$$6<I94-54R$
$"in
finite shared
- utput link
buffers$
Host A$
$in : original data$
Host B$
$out$ $'in : original data, plus retransmitted data$
! M$<4Y$I25@$28$I2<K45@62<$$ ! gA4<$C-IJ4@$792CC47>$-<D$;C5@94-3$@9-<5365562<$
I-C-I6@D$;547$829$@A-@$C-IJ4@$Y-5$Y-5@47^$
_`$
H
- st
A$ H
- st
B$
$
- u
t
$
! B2%D#2%(>*21#$60*2(
>*26-*:O(
! X2$4aC.6I6@$8447U-IJ$
8923$<4@Y29J$
! #2<K45@62<$6<849947$
8923$4<7T5D5@43$ 2U549N47$.255>$74.-D$
! T==-*&>3(6&.#2(9'(!E8(
! 4#6,*-.D&$$0$6#%(
>*21#$60*2(>*26-*:O(
! =2;@495$C92N674$
8447U-IJ$@2$4<7$5D5@435$
! 16<K.4$U6@$6<76I-@6<K$
I2<K45@62<$E1XM>$ G!#U6@>$B#(%L($!#X>$ MB'H$
! !aC.6I6@$9-@4$54<749$
5A2;.7$54<7$-@$
`0$
!,*(9-*&%(&==-*&>3#$(6*(>*21#$60*2(>*26-*:O(
! e2-.[$$B#($54<749$5A2;.7$@9-<536@$&$(I&$6(&$(
=*$$09:#>$U;@$Y6@A2;@$I2<K45@6<K$<4@Y29J$
! S2Y$72$Y4$Q<7$@A4$9-@4$m;5@$U4.2Y$
I2<K45@62<$.4N4.R$
! G4I4<@9-.6o47$-CC92-IA$+$4-IA$B#($54<749$54@5$6@5$
2Y<$9-@4>$U-547$2<$-#$0-1-&$8447U-IJ[$$
! M#:$6<76I-@45$54K34<@$94I46N47$E-$K227$@A6<K^H$
! X4@Y29J$<2@$I2<K45@47>$52$6<I94-54$54<76<K$9-@4$
! "25@$54K34<@$+$-55;34$.255$65$7;4$@2$I2<K45@47$
<4@Y29J>$52$74I94-54$54<76<K$9-@4$
`)$
! (92U6<K$829$U-<7Y67@A$ ! L<I94-54$@9-<5365562<$9-@4$2<$94I46C@$28$M#:>$;<@6.$
4N4<@;-..D$.255$2II;95>$@A4<$74I94-54$@9-<5365562<$9-@4$$
`/$
M#:5$U46<K$94I46N47>$$ 52$6<I94-54$9-@4$ _( _( _( _( _( .255>$52$74I94-54$9-@4$ 54<76<K$9-@4$ @634$
B#(i5$ O5-Y@22@AP$ U4A-N629$
! S2Y$8-5@$@2$6<I94-54$29$74I94-54R$
! 14<749$.636@5$9-@4$UD$.636@6<K$<;3U49$28$
;<M#:47$UD@45$O6<$C6C4.6<4P[$
! cwnd: 76c495$8923$rwnd EA2Y>$YADRH$ ! 54<749$.636@47$UD min(cwnd,rwnd)
! =2;KA.D>$ ! cwnd$EI2<K45@62<$Y6<72YH$65$-$8;<I@62<$28$
C49I46N47$<4@Y29J$I2<K45@62<$
! rwnd$E94I46N49$Y6<72YH$65$4aC.6I6@.D$
IA-<K47$UD$94I46N49$
9-@4$d IY<7 =BB UD@45%54I LastByteSent-LastByteAcked % cwnd
$ cwnd UD@45$ =BB$ M#:E5H$
`V$
7THO(HT!T([AKK(
! ;(%"=:0>&6#(TEU$Y(
! M@$.4-5@$5234$54K34<@5$
K4@@6<K$@A92;KA$E('1200):26&) ('&(2.6#-&H$
! #;@$cwnd$6<$A-.8$
! !0+#*"6Y(
! X2$945C2<54$8923$94I46N49$ ! #;@$cwnd$@2$)$ ! y49D$-KK94556N4$5.2Y72Y<^$
NAAHO(TEU(LBEBC\BH(
! K:*,$6&-6(=3&$#(
EI2<<4I@62<$5@-9@$29$-8@49$ @6342;@H[$$
! L<I94-54$cwnd$4aC2<4<@6-..D$
8-5@$$
! BA6<J$<-34$65$U-IJY-975R$
BA6<J$O-N2676<K$-$5.2Y$5@-9@P$
! E*21#$60*2(&M*0%&2>#$
! L<I94-54$cwnd$.6<4-9.D$
`W$
! gA4<$I2<<4I@62<$U4K6<5>$
cwnd$d$)$'11$
! !a-3C.4[$'11$d$?00$UD@45$]$
=BB$d$/00$354I$
! L<6@6-.$9-@4$d$/0$JUC5$
! MN-6.-U.4$U-<7Y67@A$3-D$$
U4$pp$'11%=BB$
! e2-.[$h;6IJ.D$9-3C$;C$@2$
945C4I@-U.4$9-@4$
! C2>-#&$#(-&6#(#5=*2#260&::'(;<@6.$
Q95@$.255$4N4<@$29$YA4<$@A945A2.7$ 94-IA47$
! G2;U.4$cwnd$4N49D$=BB$ ! G2<4$UD$6<I9434<@6<K$cwnd$UD$
)$829$4N49D$M#:$94I46N47$
S25@$M
- ne segment
=BB
S25@$Z @634
two segments four segments
`?$
! 1.2Y$5@-9@$CA-54$3;5@$4<7$
! L8$Y4$J44C$4aC2<4<@6-..D$6<I94-56<K$2;9$U-<7Y67@A$
;5-K4>$Y4i94$5;94$@2$I-;54$I2<K45@62<^$
! gA4<$72$Y4$5@2C$6<I94-56<K$9-C67.DR$
! Z-547$2<$-$<4Y$N-.;4[$ssthresh
! 1.2Y$5@-9@$@A945A2.7$3-6<@-6<47$UD$B#($ ! gA4<$cwnd$pd$ssthresh[$@9-<56@62<$8923$5.2Y5@-9@$@2$ I2<K45@62<$-N267-<I4$CA-54$
! 1@-9@5$2c$A6KA$-@$Q95@$ ! 14@$@2$ssthresh=cwnd/2$YA4<$7-@-$.255$
2II;95$
! =4343U49$EA-.8$28H$B#($9-@4$YA4<$I2<K45@62<$.-5@$2II;9947
`\$
! X4Y$CA-54[$YA4<$$
cwnd > ssthresh>$$ K92Y$cwnd$.6<4-9.D$
! L<I94-54$cwnd UD$)$'11$
C49$=BB$$
! MCC92-IA$C2556U.4$
I2<K45@62<$5.2Y49$@A-<$6<$ 5.2Y5@-9@$
$ $
! M#:5[$6<I94-54$cwnd UD$
)$'11$C49$=BB[$-776@6N4$ 6<I94-54$
! .255[$I;@$cwnd$6<$A-.8$
E<2<T@6342;@T74@4I@47$ .255$H[$3;.@6C.6I-@6N4$ 74I94-54$ $
ML'G$
ML'G[$M776@6N4$L<I94-54$ ';.@6C.6I-@6N4$G4I94-54$
`_$
``$
slow start congestion avoidance fast recovery cwnd > ssthresh loss: timeout loss: timeout new ACK loss: 3dupACK loss: 3dupACK loss: timeout
! gA4<$cwnd$<$ssthresh>$54<749$6<$$
$:*,D$6&-6(=3&$#(
! g6<72Y$K92Y5$4aC2<4<@6-..Dk$ ! gA4<$cwnd$>=$ssthresh>$54<749$65$6<$$
>*21#$60*2D&M*0%&2>#(=3&$#(
! g6<72Y$K92Y5$.6<4-9.Dk$ ! gA4<$V$7;C.6I-@4$M#:5$94I46N47$ ! ssthresh$54@$@2$cwnd/2 ! cwnd$54@$@2$z$ssthresh ! gA4<$@6342;@$2II;95$ ! ssthresh$54@$@2$cwnd/2 ! cwnd$54@$@2$)$'11k$$
)0)$
)0/$
8-69<455$K2-.[$68$:$B#($545562<5$5A-94$5-34$U2@@.4<4IJ$.6<J$ 28$U-<7Y67@A$=>$4-IA$5A2;.7$A-N4$-N49-K4$9-@4$28$=%:$
B#($I2<<4I@62<$) U2@@.4<4IJ$ 92;@49$ I-C-I6@D$= B#($$ I2<<4I@62<$/
BY2$I23C4@6<K$545562<5[$
! M776@6N4$6<I94-54$K6N45$5.2C4$28$)>$-5$@A92;KA2;@$6<I94-545$ ! ';.@6C.6I-@6N4$74I94-54$74I94-545$@A92;KAC;@$C92C29@62<-..D$$
= =
4h;-.$U-<7Y67@A$5A-94 #2<<4I@62<$)$@A92;KAC;@ # 2 < < 4 I @ 6 2 < $ / $ @ A 9 2 ; K A C ; @ I2<K45@62<$-N267-<I4[$-776@6N4$6<I94-54 .255[$74I94-54$Y6<72Y$UD$8-I@29$28$/ I2<K45@62<$-N267-<I4[$-776@6N4$6<I94-54 .255[$74I94-54$Y6<72Y$UD$8-I@29$28$/
)0V$
B2@-.$U-<7Y67@A$28$U2@A$ I2<<4I@62<5$
! Q&0-2#$$(&2%(GH8(
! ';.@63476-$-CC5$28@4<$
72$<2@$;54$B#($
! G2$<2@$Y-<@$9-@4$@A92@@.47$ UD$I2<K45@62<$I2<@92.$
! L<5@4-7$;54$FG($
! (;3C$-;762%N6742$-@$ I2<5@-<@$9-@4$ ! B2.49-@4$C-IJ4@$.255$
! FG($I-<$OI92Y7$2;@P$
B#($
! Q&0-2#$$(&2%(=&-&::#:(
!E8(E*22#>60*2$(
! X2@A6<K$C94N4<@5$-CC$8923$
2C4<6<K$C-9-..4.$ I2<<4I@62<5$U4@Y44<$/$ A25@5k$
! g4U$U92Y5495$72$@A65$$ ! !a-3C.4[$.6<J$28$9-@4$=$
5;CC29@6<K$`$I2<<4I@62<5w$$
! X4Y$-CC$-5J5$829$)$B#(>$K4@5$ 9-@4$=%)0$ ! X4Y$-CC$-5J5$829$))$B#(5>$ K4@5$p$=%/$^$
)0W$
)0?$
! FG($65$-$I2<<4I@62<.455$7-@-K9-3$549N6I4k$ ! BA494$65$<2$I2<<4I@62<$45@-U.65A34<@[$C-IJ4@5$3-D$5A2Y$
;C$-@$-<D$@634k$$
! FG($C-IJ4@5$-94$54.8TI2<@-6<47k$$ ! FG($65$;<94.6-U.4[$ ! X2$-IJ<2Y.47K434<@5$@2$6<76I-@4$74.6N49D$28$7-@-k$ ! #A4IJ5;35$I2N49$@A4$A4-749>$-<7$2<.D$2C@62<-..D$I2N49$
@A4$7-@-k$
! #2<@-6<5$<2$34IA-<653$@2$74@4I@$36556<K$29$365T
54h;4<I47$C-IJ4@5k$$
! X2$34IA-<653$829$-;@23-@6I$94@9-<5365562<k$$ ! X2$34IA-<653$829$l2Y$I2<@92.$29$I2<K45@62<$I2<@92.$
E54<749$I-<$2N499;<$94I46N49$29$<4@Y29JH$
)0\$
! B#($65$I2<<4I@62<T2964<@47k$ ! VTY-D$A-<75A-J4$;547$829$I2<<4I@62<$54@;C$ ! B#($C92N6745$-$5@94-3T28TUD@45$549N6I4$ ! B#($65$94.6-U.4[$ ! MIJ<2Y.47K434<@5$6<76I-@4$74.6N49D$28$7-@-$ ! #A4IJ5;35$-94$;547$@2$74@4I@$I299;C@47$7-@-$ ! 14h;4<I4$<;3U495$74@4I@$36556<K>$29$365T54h;4<I47$7-@-$ ! #299;C@47$7-@-$65$94@9-<536@@47$-8@49$-$@6342;@$ ! '65T54h;4<I47$7-@-$65$94T54h;4<I47$ ! Eg6<72YTU-547H$,.2Y$I2<@92.$C94N4<@5$2N49T9;<$28$94I46N49$ ! B#($;545$I2<K45@62<$I2<@92.$@2$5A-94$<4@Y29J$I-C-I6@D$
- 32<K$;5495$
)0*$