netstat -s 是唯一能直接统计网络协议类型分布的原生命令,它按 IP、ICMP、TCP、UDP 等协议分组输出累计收发、错误、重传等底层统计数据,揭示各协议运行健康状况与异常根源。

要统计网络连接的协议类型分布,关键不是看“当前有哪些连接”,而是查各协议栈的累计收发、错误、重传等底层统计数据——netstat -s 是唯一能直接给出协议类型分布的原生命令。
用 netstat -s 查协议分布
执行 netstat -s 会按协议分组输出统计汇总,包括 IP、ICMP、TCP、UDP(及 IPv6 对应版本)。每类协议下都列出关键指标,比如:
- TCP:主动/被动连接建立次数、重传报文数、连接失败数、接收/发送段数
- UDP:接收/发送数据报数、无端口错误数、内存丢包数
- ICMP:请求/响应收发数、目标不可达/超时等错误类型计数
- IP:转发数、本地交付数、分片/重组情况、输入/输出错误
这些数字本身构成“分布”——例如 TCP 重传率突然升高,说明该协议层存在丢包或拥塞;UDP 错误数持续增长,可能指向应用层端口未监听或防火墙拦截。
限定协议范围,聚焦重点
如果只关心某类协议,可用 -p 参数缩小范围:
-
netstat -s -p tcp—— 仅显示 TCP 协议统计 -
netstat -s -p udp—— 仅显示 UDP 协议统计 -
netstat -s -p ip—— 查 IP 层基础转发与错误
Windows 和 Linux 均支持该组合,但注意 Windows 中 -p 在 -s 模式下可选协议为 ip、icmp、tcp、udp 及其 v6 版本;Linux 则更灵活,还支持 ipv6、icmpv6 等。
对比连接状态与协议统计的区别
很多人混淆 netstat -a(显示所有连接)和 netstat -s(显示协议行为统计):
-
-a回答“现在有哪些 TCP 或 UDP 连接”,是瞬时快照,反映的是套接字状态(ESTABLISHED、LISTEN、TIME_WAIT 等) -
-s回答“各类协议运行得是否健康”,是累积计数,揭示长期趋势和潜在问题根源
比如你发现服务响应慢,-a 可能看到大量 TIME_WAIT 连接,但只有 -s 才能告诉你 TCP 是否在频繁重传、UDP 是否因无监听端口而持续丢包。
辅助判断异常分布的典型信号
查看 netstat -s 输出时,重点关注以下几项数值是否异常偏高:
- TCP:RetransmitFailed、EmbryonicDrops(SYN 队列溢出)、EstabResets(非正常断连)
- UDP:NoPorts(发往本机但无进程监听该端口)、RcvbufErrors(接收缓冲区满导致丢包)
- ICMP:DestUnreachs(目标不可达)、TimeExcds(TTL 超时)——若远高于正常值,可能路由或防火墙策略异常
这些不是百分比或图表,但它们就是协议级的真实分布证据:哪个协议在“出力”,哪个在“出错”,一目了然。










