Proc

是否有 /proc/net/netstat 和 /proc/net/snmp 的文件?

  • September 9, 2021

/proc/net/netstat和中有很長的統計數據列表/proc/net/snmp,我認為這兩個數據都來自 net-tools 項目。是否有關於這些領域的任何官方或非官方文件?或者甚至是有助於辨識它們的網路術語的良好來源?

有些看起來很清楚:

SyncookiesSent
SyncookieFailed
TCPTimeouts
TCPKeepalive

其他不太清楚:

ActiveOpens
PassiveOpens

一些對我來說完全神秘的:

EmbryonicRsts
RcvPruned 
... many more ...

**更新:**我在原始碼中找到了定義,但仍然想知道這些描述的去向。它們是否在任何地方編譯和發布?

這些/proc/net/*文件由核心生成:條目位於net/ipv4/proc.c核心原始碼中,條目列表位於include/uapi/linux/snmp.h. 它從核心保存的各種 MIB 數據庫中獲取值。

根據snmp.h標頭檔,MIB定義來自以下文件:

ActiveOpens來自 RFC 1213(第 47 頁):

tcpActiveOpens OBJECT-TYPE
         SYNTAX  Counter
         ACCESS  read-only
         STATUS  mandatory
         DESCRIPTION
                 "The number of times TCP connections have made a
                 direct transition to the SYN-SENT state from the
                 CLOSED state."
         ::= { tcp 5 }

如果在 RFC 中找不到該netstat條目,則必須四處搜尋。這些文件中沒有詳細列出相當多的項目。如果您想要的不僅僅是簡短的摘要,則必須在核心原始碼中搜尋您描述的一些條目。

EmbryonicRstsnet/ipv4/tcp_minisocks.c至少在 Linux 4.16 的第 796 行進行了修改,並且似乎計算了非快速打開的連接上的無效 SYN 重置。除非您處於 SYN cookie 氾濫中,否則這可能不會發生。

引用自:https://unix.stackexchange.com/questions/435579