最可靠的方法是使用netstat -s命令,它读取/proc/net/snmp等内核文件,一次性输出TCP、UDP、ICMP等协议累计统计值,格式近似SNMP MIB-II,支持人工速查或脚本解析。

要快速获取Linux系统当前的网络协议层整体运行状况,比如TCP重传次数、UDP丢包数、ICMP错误计数等SNMP风格的统计汇总,直接调用内核暴露的统计接口最可靠。
使用netstat -s查看完整网络协议统计
执行netstat -s命令,它会一次性输出TCP、UDP、ICMP、IPv4、IPv6等所有协议栈的累计统计值,格式接近SNMP MIB-II定义的oid树结构,适合人工速查或脚本解析。
该命令读取/proc/net/snmp和/proc/net/netstat等内核虚拟文件,无需额外安装工具,但要求系统已启用对应协议栈(如IPv6未启用则不显示IPv6段)。
输出中每块以协议名开头(如“Tcp:”、“Udp:”),后跟冒号分隔的键值对,例如“segments retransmitted”即TCP重传段数,“packets received”即UDP收包总数。
用ss -s获取精简的socket级汇总
运行ss -s,它只显示当前活跃socket数量、内存占用、排队状态等轻量级汇总,不展开协议细节。
这一步操作起来很简单,直接在终端敲完回车就行,输出类似“Total: 1234 (kernel 5678)”,括号内是内核维护的socket总数,比用户态可见数多——因为部分socket处于TIME_WAIT或未完全释放状态。
【注意:ss -s不显示协议层错误计数,不能替代netstat -s做故障归因】
提取特定协议关键指标(如TCP重传率)
第一步:用netstat -s | grep -A 5 "Tcp:"截取TCP段头部及后续5行,快速定位重传相关字段。
第二步:找到“segments retransmitted”行,记录其数值;再找到“segments sent out”行,提取发送总数。
第三步:手动计算重传率 = segments retransmitted ÷ segments sent out × 100%,若结果超过2%需警惕网络拥塞或链路质量下降。
这个比率比绝对重传数更有诊断价值——一台高流量服务器每天重传万次可能正常,而一个HTTP客户端重传率0.5%就说明路径存在不稳定节点。


















