3 -- 4 1 TCP T ransmission Control Protocol 2013 12 TCP TCP TCP TCP TCP TCP TCP TCP c 2013 1/(18)
3 -- 4 -- 1 1--1 TCP 2013 12 TCP Transmission Control Protocol TCP TCP TCP 1981 RFC 793 Request for Comments 1) RFC 2) RFC 793 TCP 3) 5) TCP TCP 6) Segment TCP 13) 1-1-2 TCP TCP 1-1-3 TCP 1-1-4 TCP 1-1-5 TCP 1-1-6 TCP 1-1-7 TCP c 2013 2/(18)
3 -- 4 -- 1 1--2 TCP 2013 12 TCP 1 1 1)2)11) TCP TCP TCP!"#$%&! $*)+,!-&! 89::;<=>?@=A!!B?:=!,$(! "'$(%)! $*)E$*)G.!7! $*)E$*)G.!7! $=AFE$*)!!B?:=!.CD<=>?@=A> E$*)! $*)+$%)&!!B?:=E1')!.!7! %$(./"'$0%&! $*)G.!7E.!7!!B?:=E1')! 1')+2.'(+3! 1')E.!7!.!7!.!7G1')E.!7! 1')E.!7! 1')+2.'(+4! 1')E.!7!!"#$%+2.'(!!B?:=E1')!!"#$')5! ".$(+.!7!.!7! (;H=?IJ>9K=L>JM?>H9N;O> HIH>:=PH=AJ>B;Q=DH=:! ('6%+2.'(!.!7!!"#$%&! 1 1 TCP 2 OPEN SEND CLOSE SYN ACK RST FIN SYN SEND ESTABLISHED SYN+ACK/ACKSYN SEND SYN ACK, SYN ACK ESTABLISHED TCP LISTEN c 2013 3/(18)
SYN SEND SYN RCVD ACK ESTABLISHED FIN WAIT 1 ACK FIN WAIT 2 CLOSE WAIT CLOSING ACK LAST ACK TIME WAIT ACK ACK 2 CLOSED CLOSED TCP 1 1 TCP 1 1 c 2013 4/(18)
3 -- 4 -- 1 1--3 TCP 2013 12 TCP TCP CLOSED SYN SEND ESTABLISHED 1 2 CLOSED LISTEN SYN RCVD ESTABLISHED TCP 3 Three-way Handshake 1 2 +01234!!25625! -BC629@A23!!"#$!%#&! %!)-.'(!/%&!!"#$1!!"#$789-+:$1;<! -+:$7;<!!!!! =>??1629@A23! '(!)%#!!"#$*+,&! %!)-.'(!/%&! 1 2 TCP 1. i SYN 2. SYN i + 1 ACK k SYN 3. k SYN k + 1 ACK 3 14) c 2013 5/(18)
1 3 2 TCP -23456!,47847! &?A84>?2@=4!!!!!!"#$%&"'$(!!"#$%&"'$1! '")*$%&"'!!"#$5! &-.$59(!!"#$:! &-.$:9(! ;<==384>?2@=4! -+/,*$%&"'! +&,'$&-.! -+/,*0! 1 3 TCP TCP FIN FIN TCP ESTABLISHED FIN WAIT 1 FIN WAIT 2 TIME WAIT CLOSED 1 1 FIN WAIT 2 ACK TIME WAIT 2 CLOSED ESTABLISHED CLOSE WAIT LAST ACK CLOSED 1 3 FIN n ACK n+1 FIN m ACK m+1 11) c 2013 6/(18)
3 -- 4 -- 1 1--4 TCP 1--4--1 TCP 2013 12 TCP Fast Retransmit SACK Selective Acknowledgment TCP MSS Maximum Segment Size MSS TCP IP 1000 1000 1460 2459 ACK Acknowledgment ACK 1000 1460 ACK 2460 ACK ACK ACK TCP ACK Cumulative ACK ACK TCP ACK 1 8 bit 1 8 byte bit 1 byte c 2013 7/(18)
ACK RTT Round Trip Time RTT RTT + 4 RTT RTT n (1 α) RTT (n 1) + α RTT n RTT n (1 β) RTT (n 1) + β RTT n RTT n n α β 0.125 0.25 RTT RTT RTT 1--4--2 Fast Retransmit TCP ACK Fast Retransmit 15) 3 ACK Fast Recovery 1-6-1 ACK TCP ACK 10 11 ACK 11 12 11 ACK 1--4--3 SACK Selective Acknowledgment SACK Selective Acknowledgment 16)17) ACK TCP ACK 1 5 5 2 2 ACK SACK TCP SACK 4 c 2013 8/(18)
3 -- 4 -- 1 1--5 TCP 2013 12 TCP Congestion Control 18) Congestion Flow Control TCP TCP TCP Reno TCP TCP *+,-*./0! "1!!!!!""!!"#$$"%$$"&$$"'$$"(!!!!")! 23456789 :;<=,>!?789@234!?7CDE! AB:;<=,>! ;<=,>! FGH! IJKL/-! "1$$""$$"#!!"%$$"&$$"'$$"($$")! 23456789 :;<=,>! 234AB!?7CDE! :;<=,>!;<=,>! FMH! 1 4 1--5--1 ACK 1 4 5 1 4(a) 11 c 2013 9/(18)
ACK 12 14 ACK 15 16 1 4(b) 12 ACK 17 ACK 1--5--2 TCP TCP TCP TCP min (1 1) TCP (1 1) (1 1) TCP 0 ACK 0 ACK ACK TCP AIMD Additive Increase Multiplicative Decrease 18)19) AIMD TCP (1 2) c 2013 10/(18)
/2 (1 2) ACK (1 3) MSS 1460 ACK 1460 + 1460 1460/1460 2920 MSS 2 2 ACK RTT MSS 2 RTT MSS 3 1 RTT 1 MSS 1 5 (1 3) + MSS MSS/ (1 3) -./! 0./!!"#"$)! "&'$)!!"#"$(!!"#"$%! "&'$(! "&'$%!!"#"$*!!"#"$+!!"#"$,! 1 5 AIMD TCP AIMD (1) Slow Start (2) Congestion Avoidance (3) ssthresh Slow Start Threshold 1 Slow Start TCP 1 MSS ssthresh c 2013 11/(18)
64 K 18)20) ACK (1 4) ssthresh 1 RTT 2 1 6 + MSS (1 4)./0! 1/0!!"#"$)! "&'$)!!"#"$(!!"#"$%! "&'$(! "&'$%!!"#"$*!!"#"$+!!"#"$,!!"#"$-! 1 6 2 Congestion Avoidance ssthresh 18)20) (1 3) 1 5 3 ssthresh ssthresh ssthresh (1 5) ssthresh 18) AIMD c 2013 12/(18)
ssthresh /2 MSS (1 5)!"#$%&'"#()*#+",(-*.%(/0123%45! '#" '!" &#" &!" %#" %!" $#" $!" #"!"#$%!&'(&%)*'+,! -#./,+&0#.%12#03'.4,%)*'+,!!"!" #" $!" $#" %!" %#" &!" 6*7%(/&5! 1 7 1 7 1 7 5 s ssthresh 20 packet TCP Reno TCP TCP Tahoe TCP Reno (1), (2), (3) ACK < ssthresh ssthresh ACK ssthresh c 2013 13/(18)
3 -- 4 -- 1 1--6 TCP 2013 12 TCP Fast Retransmit Fast Recovery 15) TCP Reno 1--6--1 Fast Retransmit TCP TCP ssthresh MSS 1 ACK ACK ACK ACK ACK 3 1--6--2 Fast Recovery (1) ACK ACK ssthresh 3 MSS ACK ssthresh /2 ssthresh + 3MSS (2) ACK ACK + MSS (3) ACK ACK ssthresh ssthresh (1) ssthresh c 2013 14/(18)
1 8 TCP Reno 1 7!"#$%&'"#()*#+",(-*.%(/0123%45! '#" '!" &#" &!" %#" %!" $#" $!" #"!"#$%!&'(&%)*'+,! -#./,+&0#.%12#03'.4,%)*'+,!!"!" #" $!" $#" %!" %#" &!" 6*7%(/&5! 1 8 TCP Reno c 2013 15/(18)
3 -- 4 -- 1 1--7 TCP 2013 12 1--7--1 TCP 1 9 TCP 1)21) 32 bit 43) 53) 643) 673) 893)!"#$%&'() *+$%&'(),%-./'() 01234!"#5'() 6789) :;<= " ( & " $>?@%) ' () ) ' * GH7IDJ)! " # +, - ',.), / 0 1 2 0 AB.CADEF) KL$E.M) NO,P.) QRB.S) TEU%C4R%M53 1 9 TCP 16 bit 16 bit 32 bit ACK 32 bit ACK 4 bit 32 bit TCP TCP 32 bit 4 bit CWR, ECE,, FIN 8 bit CWR 1 bit IP ECN Explicit Congestion Notification ECE ECN-Echo 1 ECN-Echo bit c 2013 16/(18)
ECN URG 1 bit 1 0 ACK 1 bit 1 ACK 0 ACK PSH 1 bit 1 RST 1 bit 1 SYN 1 bit 1 SYN FIN 1 bit 1 FIN 16 bit 16 bit TCP IP 1) IP 16 bit 0 0 16 bit 1 1 16 bit 1 1 16 bit 1 16 bit 8 bit SACK TCP 1--7--2 TCP IP IP IP well-known IP IP TCP 16 bit 0 c 2013 17/(18)
22) Internet Assigned Numbers Authority IANA web HTTP 80 web 80 web well-known 1) J. Postel (ed.), Transmission Control Protocol, RFC 793, 1981. 2) R. Braden (ed.), Requirements for Internet hosts - communication layers, RFC 1122, 1989. 3) V. Cerf and R. Kahn, A protocol for packet network intercommunication, IEEE Trans on Commun., vol.com-22, no.5, pp.637-648, 1974. 4) B. Leiner, R. Cole, J. Postel, and D. Mills, The DARPA internet protocol suite IEEE Communications Magazine, vol.23, no.3, pp.29-34, 1985. 5) D. D. Clark, The design philosophy of the DARPA Internet protocols, Proc. SIGCOMM 88, Computer Communication Review, vol.18, no.4, pp.106-114, 1988. 6),,,, 1999. 7),,, 1999. 8),,,, 3,, 2001. 9) D. E. Comer (, ), /IP TCP Vol. I 4,, 2002. 10),,,, 2002. 11) A. S. Tanenbaum (,,,, ), 4, BP, 2003. 12),,,, TCP/IP 4,, 2007. 13),,,, 2009. 14) R. S. Tomlinson, Selecting sequence numbers, Proc. the 1975 ACM SIGCOMM/GIGOPS Workshop on Interprocess Communications, pp.11-23, 1975. 15) V. Jacobson, Modified TCP congestion avoidance algorithm, end2end-interest mailing list, April 30, 1990. 16) M. Mathis, J. Mahdavi, S. Floyd, and A. Romanow, TCP selective acknowledgment options, RFC 2018, 1996. 17) S. Floyd, J. Mahdavi, M. Mathis, and M. Podolsky, An extension to the selective acknowledgement (SACK) option for TCP, RFC 2883, 2000. 18) V. Jacobson, Congestion avoidance and control, Proc. ACM SIGCOMM 88, pp.314-329, 1988. 19) R. Jain, K. Ramakrishnan, and D.-M., Chiu, Congestion avoidance in computer networks with a connectionless network layer, Tech. Rep. DEC-TR-506, Digital Equipment Corporation, 1987. 20) M. Allman, V. Paxson, and W. Richard Stevens, TCP Congestion Control, RFC 2581, 1999. 21) K. Ramakrishnan, S. Floyd, and D. Black, The addition of explicit congestion notification (ECN) to IP, RFC 3168, 2001. 22) J. Reynolds and J. Postel, Assigned numbers, RFC 1700, 1994. c 2013 18/(18)