我正在为 /proc/net/tcp 创建一个解析器,我想知道连接状态(第四列)的所有可能常量是什么?我知道 0A 意味着聆听,但 Google 结果没有给我所需的其余答案。
sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode
0: 3500007F:0035 00000000:0000 0A 00000000:00000000 00:00000000 00000000 101 0 21384 1 ffff987636718000 100 0 0 10 0
1: 0100007F:0277 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 78109 1 ffff98762c4dd000 100 0 0 10 0
2: 800AA8C0:B9CC 70FD1EC0:0016 06 00000000:00000000 03:000005EF 00000000 0 0 0 3 ffff987518bb7cf0
答案1
enum
状态内容对应于第一个中的条目net/tcp_states.h
:
enum {
TCP_ESTABLISHED = 1,
TCP_SYN_SENT,
TCP_SYN_RECV,
TCP_FIN_WAIT1,
TCP_FIN_WAIT2,
TCP_TIME_WAIT,
TCP_CLOSE,
TCP_CLOSE_WAIT,
TCP_LAST_ACK,
TCP_LISTEN,
TCP_CLOSING, /* Now a valid state */
TCP_NEW_SYN_RECV,
TCP_MAX_STATES /* Leave at the end! */
};
目前的值如下:
- 已确立的;
- 同步已发送;
- 收到SYN;
- 鳍等待 1;
- 鳍等待2;
- 时间的等待;
- 关闭;
- 密切等待;
- 最后确认;
- 倾听;
- 关闭;
- 新收到的SYN。
其中大部分对应于以下州TCP/IP 状态机。