Linux 可以使用 netstat -s 显示协议统计信息。输出内容如下:
摘抄:
7487 times unabled to send RST due to no memory
TCPDSACKIgnoredOld: 817
TCPDSACKIgnoredNoUndo: 7246527
TCPSpuriousRTOs: 4583587
TCPSackShifted: 15825
TCPSackMerged: 455582
但这些是在所有网络接口上累积的。有没有办法查看每个接口的统计数据?我知道有数据包级别的统计数据/sys/class/net/$INTERFACE/statistics
,但找不到任何与协议相关的统计数据。
答案1
Netstat -s 是一种更直观的显示方式/proc/net/netstat
。其中的计数器是全局的,而不是每个接口的。要获取此类信息,您需要使用/编写使用 libpcap 的监控工具。
答案2
捕获这些统计数据的代码在各种相关的 TCP/UDP/IP 代码路径中被调用,并增加 SNMP MIB。
没有存储有关接口或任何连接属性(例如端口或 IP)的信息,它只是输入代码路径次数的基本计数器。
netstat -s
只是读取那些计数器。