+---------+ ---------\ active OPEN
| CLOSED | \ -----------
+---------+<---------\ \ create TCB
| ^ \ \ snd SYN
passive OPEN | | CLOSE \ \
------------ | | ---------- \ \
create TCB | | delete TCB \ \
V | \ \
rcv RST +---------+ CLOSE | \
-------------------->| LISTEN | ---------- | |
/ +---------+ delete TCB | |
| rcv SYN | | SEND | |
| ----------- | | ------- | V
+---------+ snd SYN,ACK / \ snd SYN +---------+
| |<----------------- ------------------>| |
| SYN | rcv SYN | SYN |
| RCVD |<-----------------------------------------------| SENT |
| | snd SYN,ACK | |
| |------------------ -------------------| |
+---------+ rcv ACK of SYN \ / rcv SYN,ACK +---------+
| -------------- | | -----------
| x | | snd ACK
| V V
| CLOSE +---------+
| ------- | ESTAB |
| snd FIN +---------+
| CLOSE | | rcv FIN
V ------- | | -------
+---------+ snd FIN / \ snd ACK +---------+
-| FIN |<----------------- ------------------>| CLOSE |
/ | WAIT-1 |------------------ | WAIT |
| +---------+ rcv FIN \ +---------+
| | rcv ACK of FIN ------- | CLOSE |
| | -------------- snd ACK | ------- |
| V x V snd FIN V
| +---------+ +---------+ +---------+
| |FINWAIT-2| | CLOSING | | LAST-ACK|
| +---------+ +---------+ +---------+
| | rcv ACK of FIN | rcv ACK of FIN |
| | rcv FIN -------------- | Timeout=2MSL -------------- |
| | ------- x V ------------ x V
| \ snd ACK +---------+delete TCB +---------+
| ------------------------>|TIME WAIT|------------------>| CLOSED |
\ +---------+ +---------+
\ ^
\ rcv FIN,ACK /
------------------------------/
snd ACK
TCP Connection State Diagram