4285ch01.fm Draft Document for Review May 4, 2007 11:35 am
32 Linux Performance and Tuning Guidelines
Figure 1-28 TCP connection state diagram
You can see the connection state of each TCP/IP session using netstat command. For more
detail, see 2.3.11, “netstat” on page53.

Traffic control

TCP/IP implementation has a mechanism that ensures efficient data transfer and guarantees
packet delivery even in time of poor network transmission quality and congestion.
TCP/IP transfer window
The principle of transfer windows is an important aspect of the TCP/IP implementation in the
Linux operating system in regard to performance. Very simplified, the TCP transfer window is
the maximum amount of data a given host can send or receive before requiring an
acknowledgement from the other side of the connection. The window size is offered from the
receiving host to the sending host by the window size field in the TCP header. Using the
transfer window, the host can send packets more effectively because the sending host doesn’t
have to wait for acknowledgement for each sending packet. It enables the network to be
utilized more. Delayed acknowledgement also improve efficiency. TCP windows start small
and increase slowly with every successful acknowledgement from the other side of the
connection. To optimize window size, see 4.7.4, “Increasing network buffers” on page127

CLOSED

LISTEN

SYNSENT

ESTAB

SYNRCVD
rcv SYN
snd ACK
FINWAIT-1CLOSEWAITCLOSINGTIME WAITFINWAIT-2 CLOSED

LAST-ACK

rcv ACK of FIN
x
rcv FIN
snd
ACK
rcv FIN
snd
ACK
rcv ACK of
FIN
x
CLOSE
snd FIN CLOSE
snd FIN
rcv ACK of
SYN
x
rcv SYN
snd
SYN,ACK
passive
OPEN
create TCB
CLOSE
delete
TCB
SEND
snd SYN
CLOSE
delete TCB
active OPEN
create TCB
snd SYN
rcv
SYN,ACK
snd ACK
rcv FIN
snd
ACK
Timeout=2MSL
delete TCB
CLOSE
snd FIN
rcv ACK of
FIN
x