1 1 2 TCP 1 3 TCP 9 4 TCP 15 5 21 6 TCP 25 7 27
TCP 1 TCP Windows98 Linux Solaris TCP(Transmission Control Protocol) IP TCP UDP UDP TCP UDP TCP 1 TCP RFC793 RFC2581 TCP 4-1 -
DataLink header IP header TCP header TCP Data 2 16-bit source port number 16-bit destination port number 32-bit sequence number 4bit header length reserved (6bits) 32-bit acknowledgement number U R G A C K P SH R ST SY N F IN 16-bit TCP checksum options(if any) data(if any) 16-bit window size 16-bit urgent pointer 3 2.1 TCP TCP UNIX UNIX TCP UNIX TCP/IP - 2 -
2.2 Piggyback Piggyback 2.3 2.3.1 1 1500 4096 MTU MSS(Max Segment Size ) 2.3.2 2.3.3 IP 1 Web TCP TCP IP - 3 -
3Way handshake 3Way handshake (SYN) (SYN) (ACK) Piggyback (ACK) SYN ACK TCP SYN client server SYN SYN,ACK ACK 4 3Way handshake 2.3.4 4 Active Close Active Close FIN FIN ACK Active Close FIN ACK MSL(Max Segment Lifetime ) 2 2MSL Active Close - 4 -
client server FIN Active Close ACK FIN ACK Passive Close 5 TCP 6 client server S Y N S E N T SYN SYN,ACK S Y N _ R C V D E S T A B L I S H E D ACK E S T A B L I S H E D F I N _ W A I T _ 1 F I N _ W A I T _ 2 T I M E _ W A I T ACK FIN FIN ACK C L O S E _ W A I T L A S T _ A C K C L O S E D 6 2.4-5 -
2.4.1 2500 TCP 500 10000 7 Application(2500byte) TCP (Initialseqno 10000) 10001 10501 11001 11501 12001 7 2.4.2 TCP ACK(ACKnowledgement ) seqno(sequence number ) 1 ACK - 6 -
1 2 2.4.3 TCP TCP IPv6 IPv4 IP 8 32bit sender IP address 32bit receiver IP address 0 proto number TCP segment length 8 2.4.4 2-7 -
TCP TCP Sender Reciever Sender Reciever data data ack ack w indow size=1 w indow size=4 9 2 9 4 ACK 4 1-8 -
TCP Nagle SYN ACK FIN TCP 3.1 TCP 3.1.1 TCP BSD TCP 2 BSD 500msec 2MSL BSD 200msec Nagle 3.1.2 Round Trip Time Round Trip Time Round Trip Time Round Trip Time - 9 -
Round Trip Time Round Trip Time Round Trip Time ACK Round Trip Time 2 3 Round Trip Time Round Trip Time Timer data RTT ack 10 1 1 1RTT(Round Trip Time) 1 Round Trip Time rtt srtt srtt srtt srtt (1 ) rtt rtt 0 9 srtt TCP - 10 -
rto 2 srtt Round Trip Time Round Trip Time UNIX rto rtt 4 2 64 3.1.3 ( ) ACK 0 ( ) ACK 1 Sender Receiver ACK,w indow=0 ACK,window=1000 1byte Data 11 3.1.4-11 -
2 FTP Web TCP Web 3.1.5 2MSL 2MSL MSL(Max Segment Lifetime ) MSL MSL Active Close FIN ACK 2MSL(MSL 2 ) RFC793 2MSL 2 Solaris 30 3.2 ACK PiggyBack ACK - 12 -
3.3 Nagle Nagle telnet rlogin ACK Sender Reciever application kernel Data D ata Data ACK D ata 12 ( ) Sender Reciever application Data Data k ernel ACK Data 13 ( ) - 13 -
3.4 RFC813 2 1 2 1 ACK 3.5 TCP TCP TCP 6 SYN ACK ACK FIN Push RST(Reset) Push Push API RST TCP Listen( ) port RST RST Close RST Close Listen - 14 -
(Urgent Pointer) 4.1 TCP 1 1980 1980 1990-15 -
4.2 3 IP 2 FDDI ATM Web 1992 HTTP HTTP TCP 4.3 TCP TCP TCP - 16 -
4.3.1 TCP 2 TCP 88 Tahoe Fast Retransmit 90 Reno Fast Recovery ( ) 96 NewReno Fast Recovery ( ) 99 RFC2581 Fast Recovery 4.3.2 TCP TCP TCP cwnd 2 ACK 1 1 2 TCP - 17 -
2 1 ssthresh( threshold) threshold threshold 4.3.3 Fast Retransmit Fast Retransmit 3 3 Fast Retransmit Fast Retransmit Tahoe 1 1 Reno Fast Recovery 2 1 2 1 4.3.4 Fast Recovery Fast Recovery 1990 Reno Tahoe Fast Retransmit - 18 -
1 Fast Recovery Fast Retransmit 50 Fast Recovery cwnd ACK cwnd 2 1 threshold(ssthresh) Limit Window Size Optimal ssthresh Time Limit Window Size O ptimal ssthresh Time 14 Tahoe( ) Reno NewReno( ) - 19 -
4.3.5 TCP TCP TCP 2 TCP TCP 1 100 100-20 -
sender receiver sender data path receiver ack path 15 Windows98 Linux Solaris 5.1 (a) TCP RTT(Round Trip Time) (TCP = RTT) 2Mbps RTT0.5 512000 RFC793 TCP 65535 12 (b)rtt RTT 1 RTT 1000 RTT - 21 -
1000 1 (c) 2 32 2 32 TCP TCP TCP x x (2 x ) 14 65535 2 14 1073725440 (65535 RFC793 ) 3way handshake 3way handshake (SYN) (SYN) (ACK) Piggyback (ACK) 1 1 RTT(Round Trip Time) - 22 -
RTT RTT RTT 5.2 Path MTU discovery Path MTU discovery DF(Don't Fragment) MSS(Max Segment Size )2000 DF DF MSS2000 ACK MSS2000 RFC1191 10 5.3 SACK TCP SACK(Selective Acknowledgement ) SACK RFC2018 TCP SACK SACK Permitted Option SACK Option 2 SACK Permitted Option 3way handshake negotiate SACK option SYN SACK Option TCP - 23 -
KIND LEN Left Edge of First Block Right Edge of First Block Left Edge of n th Block Right Edge of n th Block 16 SACK Option SACK Option 4 4 3 5000 8500 MSS500 5500 6500 7500 SACK Option 3 SACK Option Trigger 1st block 2nd block 3rd block Segment ACK Left Right Left Right Left Right 5000 5500 5500(lost) 6000 5500 6000 6500 6500(lost) 7000 5500 7000 7500 6000 6500 7500(lost) 8000 5500 8000 8500 7000 7500 6000 6500 8500(lost) 3 Trigger Segment 5000 8500 MSS500 ACK ACK - 24 -
SACK Option 5500 SACK Option 7000 6000 5000 5.4 (Pittuburgh Supercomuting center) Path MTU discovery SACK OS Windows98 Solaris2 6 Solaris7 Path MTU discovery 2 OS FreeBSD3.3 Path MTU discovery OS Windows95 WindowsNT3.5 WindowsNT4.0 OS SunOS4.1 http://www.psc.edu/networking/perf_tune.html TCP Sequence number attack SYN flood Attack 2 IPsec Filtering Web 6.1 Sequence number attack Sequence number attack TCP TCP IP SYN SYN SYN,ACK SYN,ACK - 25 -
1 4 src adr src port dst adr dst port 6.2 SYN flood attack SYN flood attack (DoS) SYN half open SYN SYN,ACK ACK half open ACK SYN half open half open 90 60 3way handshake 6 half open queue 100 1000 half open half open SYN flood attack IP SYN SYN - 26 -
TCP Explicit Congestion Notification Initial Large Window TCPVegas NewReno Rate-Halving TCPfriendly 6 7.1 Explicit Congestion Notification Explicit Congestion Notification(ECN) RFC2481 TCP Explicit Congestion Notification Congestion Experience(CE) CE ECN echo ECN echo Congestion Window Reduce(CWR) Congestion Window Reduce ECN echo ECN echo - 27 -
Sender CWR Router CE bit Receiver ECN echo 17 ECN Explicit Congestion Notification 3way handshake (SYN) ECN echo Congestion Window Reduce (SYN) (SYN) (ACK) Piggyback ECN echo (ACK) 7.2 Large Initial Window Large Initial Window RFC2414 Large Initial Window 1MSS(Max Segment Size ) 4MSS 1MSS 1 Large Initial Window 4MSS RTT(Round Trip Time) HTTP 1RTT - 28 -
7.3 TCPVegas TCPVegas Brakmo TCP TCPVegas TCPVegas Actual Throughput Expected Throughput 2 Actual Throughput Expected Throughput Actual Throughput Expected Throughput TCPVegas Actual Throughput Expected Throughput TCPVegas Actual Throughput Expected Throughput TCPVegas TCPVegas TCPVegas 7.4 NewReno NewReno Hoe TCP Fast Retransmit Fast Recovery 1RTT RFC2582 Reno Fast Retransmit - 29 -
NewReno Fast Retransmit Reno Fast Retransmit NewReno Fast Retransmit NewReno 7.5 Rate Halving Rate Halving NewReno Hoe Mathis Rate Halving Fast recovery 2 1 ACK 2 1 Rate Halving ACK 2 1 2 2 1 TCP Rate Halving 7.6 TCPfriendly TCPfriendly ACIRI S Floyd TCP UDP UDP UDP TCPfriendly TCPfriendly UDP TCP TCP TCP TCP - 30 -
= UDP flow TCPfriendly TCPfriendly UDP flow UDP flow 7.7 TCP SACK ECN NewReno Rate halving TCPVegas TCPVegas Rate halving CBQ( ) Diffserv TCP TCP friendly UDP TCP UDP Congestion Manager TCP/IP IETF Internet Engineering Task Force 7.8 TCP RFC(Request For Comments) RFC793 RFC813 RFC1122 Silly Window Syndrome Host Requirement( ) - 31 -
RFC1323 Extention for high performance RFC2414 Large Initial Window RFC2418 ECN RFC2581 Congestion Control(Reno Congestion Control ) RFC2582 NewReno algorithm IETF TCP 4 TCP Implementation (tcpimpl) TCP Over Satellite (tcpsat) Performance Implications of Link Characteristics (pilc) Endpoint Congestion Manager TCP Implementation TCP TCP Over Satellite TCP Performance Implications of Link Characteristics Performance Implications of Link Characteristics TCP Endpoint Congestion Manager TCP TCP UDP - 32 -