/proc/net/netstat
和中有一长串统计数据/proc/net/snmp
,我认为它们都来自 net-tools 项目。有关于这些字段的官方或非官方文档吗?或者甚至是有助于识别它们的网络术语的良好来源?
有些看起来很清楚:
SyncookiesSent
SyncookieFailed
TCPTimeouts
TCPKeepalive
其他不太清楚的:
ActiveOpens
PassiveOpens
有些对我来说完全神秘:
EmbryonicRsts
RcvPruned
... many more ...
更新:我在中找到了定义来源但仍然想知道这些描述去哪里了。它们在任何地方编译和出版吗?
答案1
这些/proc/net/*
文件由内核生成:条目位于net/ipv4/proc.c
内核源代码中,条目列表位于include/uapi/linux/snmp.h
.它从内核保存的各种 MIB 数据库中获取值。
根据snmp.h
头文件,MIB定义来自以下文档:
- RFC 1213:MIB-II
- RFC 2011(更新 1213):SNMPv2-MIB-IP
- RFC 2863:接口组 MIB
- RFC 2465:IPv6 MIB:常规组
draft-ietf-ipv6-rfc2011-update-10.txt
:IP 的 MIB:IP 统计表
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
条目,则必须四处搜索。这些文件中并没有详细列出相当多的项目。如果您想要的不仅仅是简短的摘要,您必须在内核源代码中搜索您所描述的一些条目。
EmbryonicRsts
被修改为net/ipv4/tcp_minisocks.c
,至少在 Linux 4.16 中的第 796 行,并且似乎计数无效 SYN 重置非快速打开的连接。除非您处于 SYN cookie 泛滥之中,否则这种情况不太可能发生。
答案2
netstat -s
每行都有注释