TcpState¶
Namespace: inet::tcp
enum TcpState
TCP FSM states
Brief descriptions (cf RFC 793, page 20):
LISTEN - waiting for a connection request SYN-SENT - part of 3-way handshake (waiting for peer’s SYN+ACK or SYN) SYN-RECEIVED - part of 3-way handshake (we sent SYN too, waiting for it to be acked) ESTABLISHED - normal data transfer FIN-WAIT-1 - FIN sent, waiting for its ACK (or peer’s FIN) FIN-WAIT-2 - our side of the connection closed (our FIN acked), waiting for peer’s FIN CLOSE-WAIT - FIN received and acked, waiting for local user to close LAST-ACK - remote side closed, FIN sent, waiting for its ACK CLOSING - simultaneous close: sent FIN, then got peer’s FIN TIME-WAIT - both FIN’s acked, waiting for some time to be sure remote TCP received our ACK CLOSED - represents no connection state at all.
Note: FIN-WAIT-1, FIN-WAIT-2, CLOSING, TIME-WAIT represents active close (that is, local user closes first), and CLOSE-WAIT and LAST-ACK represents passive close.
Source code¶
//
// TCP FSM states
//
// Brief descriptions (cf RFC 793, page 20):
//
// LISTEN - waiting for a connection request
// SYN-SENT - part of 3-way handshake (waiting for peer's SYN+ACK or SYN)
// SYN-RECEIVED - part of 3-way handshake (we sent SYN too, waiting for it to be acked)
// ESTABLISHED - normal data transfer
// FIN-WAIT-1 - FIN sent, waiting for its ACK (or peer's FIN)
// FIN-WAIT-2 - our side of the connection closed (our FIN acked), waiting for peer's FIN
// CLOSE-WAIT - FIN received and acked, waiting for local user to close
// LAST-ACK - remote side closed, FIN sent, waiting for its ACK
// CLOSING - simultaneous close: sent FIN, then got peer's FIN
// TIME-WAIT - both FIN's acked, waiting for some time to be sure remote TCP received our ACK
// CLOSED - represents no connection state at all.
//
// Note: FIN-WAIT-1, FIN-WAIT-2, CLOSING, TIME-WAIT represents active close (that is,
// local user closes first), and CLOSE-WAIT and LAST-ACK represents passive close.
//
enum TcpState {
TCP_S_INIT = 0;
TCP_S_CLOSED = 1;
TCP_S_LISTEN = 2;
TCP_S_SYN_SENT = 3;
TCP_S_SYN_RCVD = 4;
TCP_S_ESTABLISHED = 5;
TCP_S_CLOSE_WAIT = 6;
TCP_S_LAST_ACK = 7;
TCP_S_FIN_WAIT_1 = 8;
TCP_S_FIN_WAIT_2 = 9;
TCP_S_CLOSING = 10;
TCP_S_TIME_WAIT = 11;
};