/proc/net/tcp 中的连接状态常量的含义是什么?

/proc/net/tcp 中的连接状态常量的含义是什么?

我正在为 /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! */
};

目前的值如下:

  1. 已确立的;
  2. 同步已发送;
  3. 收到SYN;
  4. 鳍等待 1;
  5. 鳍等待2;
  6. 时间的等待;
  7. 关闭;
  8. 密切等待;
  9. 最后确认;
  10. 倾听;
  11. 关闭;
  12. 新收到的SYN。

其中大部分对应于以下州TCP/IP 状态机

相关内容