应使用tcpdump、iftop和/proc/net/snmp三类工具协同诊断:tcpdump捕获原始包并统计pps与协议信息;iftop -p模式实时显示连接级包速率;/proc/net/snmp提供内核协议栈累计收发包计数,通过watch监测增量判断丢包。

您需要在统信UOS中实时观察当前网络连接收发的数据包数量与速率,而非仅看字节流量或应用级统计,以便定位丢包、重传或协议异常问题。这要求工具能按连接粒度捕获原始数据包事件,且输出必须包含每秒包数(PPS)、协议类型及源/目的地址信息。
使用tcpdump抓取并实时统计数据包
tcpdump是内核级抓包工具,可直接读取网卡驱动缓冲区,输出原始数据包头信息,适合诊断TCP重传、UDP乱序、ICMP不可达等底层问题。
1、打开终端(Ctrl+Alt+T),执行:sudo tcpdump -i any -n -c 100 —— 这会捕获任意接口前100个数据包并立即停止;-i any确保覆盖有线、无线、环回所有接口,-n禁用DNS解析避免延迟,-c 100防止无限抓包占满内存。
2、若需持续监控每秒包数,改用:sudo tcpdump -i any -q -t -c 1000 | awk '{print $1}' | uniq -c | sort -nr | head -5 —— 此命令提取时间戳字段,统计每秒出现频次最高的5个时间点,间接反映PPS峰值;注意:-q精简输出,-t去除时间戳前缀,避免awk误判。
3、按下Ctrl+C强制中断后,tcpdump会自动打印汇总行,例如“1000 packets captured, 1000 packets received by filter”,其中“captured”为实际捕获数,“received by filter”为内核传递给tcpdump的总数,二者差值过大说明网卡丢包严重。
用iftop查看连接级实时包速率
iftop以终端表格形式展示每个活跃连接的实时带宽占用,但默认只显示字节速率;启用-p参数后可切换为数据包计数模式,适用于识别高频小包攻击或DNS泛洪。
方法一:启动即显示包速率
1、终端中执行:sudo iftop -P -p —— -P显示端口,-p启用包计数模式(单位为packets/sec);此时第三列(sent)和第四列(received)数值含义变为每秒发送/接收的数据包数量,而非字节数。
2、按Shift+S切换排序依据为“sent”,快速定位发送包最多的连接;若某条目sent值持续高于1000,而received接近0,极可能是SYN Flood攻击特征。
方法二:动态切换显示模式
1、先运行sudo iftop -P进入常规字节模式。
2、在界面中直接按p键——界面右上角状态栏将从“KB/s”变为“pkts/s”,所有速率数值即时刷新为包速率;此操作无需重启进程,适合现场临时切换。
【注意】iftop -p模式下无法显示包大小,仅反映频率;若需同时分析包长分布,必须配合tcpdump使用。
通过/proc/net/snmp获取内核级协议包统计
/proc/net/snmp文件由内核实时维护,记录IPv4/ICMP/TCP/UDP各协议栈的收发包计数器,数值为自系统启动以来的累计总量,适合判断协议层是否异常丢包。
第一步:提取TCP协议关键计数器
1、执行:cat /proc/net/snmp | grep -A 1 'Tcp:' —— 输出两行:第一行为字段名(Tcp: RtoAlgorithm...),第二行为对应数值;重点关注“InSegs”(接收段数)、“OutSegs”(发送段数)、“EstabResets”(非正常断连次数)。
第二步:计算每秒增量
1、运行:watch -n 1 'cat /proc/net/snmp | grep -A 1 Tcp: | tail -1 | awk "{print \$2, \$3, \$12}"' —— 每秒刷新一次,显示InSegs、OutSegs、EstabResets三列数值;观察InSegs与OutSegs差值是否持续扩大,若每秒差值>100,说明存在接收端丢包或ACK未及时返回。
第三步:检查ICMP异常
1、执行:cat /proc/net/snmp | grep -A 1 'Icmp:' | tail -1 | awk '{print $4,$5}' —— 输出“IcmpInErrors IcmpOutErrors”,若IcmpInErrors非零且持续增长,表明本机IP层校验失败或缓冲区溢出。











