+---------+ ---------\ 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