网络评估
Searching for quality sources
我注意到搜索结果大部分来自中文博客,这些并不是最理想的来源。我要找一些更高质量的资源。所以下一步,我会专门搜索RedHat、IBM、DigitalOcean等官方文档网站,比如搜索“site:redhat.com ip link ethtool”,“site:ibm.com linux network troubleshooting”,“digitalocean ping traceroute”,以及“site:redhat.com network troubleshooting Linux ethtool ip link”。这样可以确保找到更适合的信息。
Evaluating network commands
我知道用户提到的“传输层”包括netstat -s,但RedHat博客并没有提到这个命令。看起来我可能要提到"ss -t -i"并引用信息源。不过,netstat -s似乎在红帽博客中缺少提及。也许我可以从Unix & Linux Stackexchange获取"netstat -s"的一些通用信息。嗯,还是得去搜索 “netstat -s linux”,以找到更好的解释和引用。另外,我需要考虑到底要不要省略netstat -s?
已思考 54 秒
以下方案分为链路层、网络层、传输层和抓包分析四大维度,针对常见的网络阻塞与底层异常,给出对应的命令、应观测到的现象,以及抓包时 SACK/DSACK、重复 ACK、Delayed‑ACK 等关键分析思路。
本回答涵盖:
-
链路层:网卡状态、错误统计、内核日志
-
网络层:丢包率检测、MTU/PMTU、路由追踪
-
传输层:TCP 概览统计(重传、SACK/DSACK、Delayed‑ACK)、单连接信息
-
抓包分析:使用
tcpdump/Wireshark 识别重传、Duplicate ACK、DSACK 等
通过逐层排查,可快速定位是物理链路故障、路径 MTU 不匹配、中间路由丢包,还是高层 TCP 传输异常。下面按照维度详细说明。
一、链路层:网卡与物理链路
1. 查看网卡状态与基础统计
ip link show dev eth0
-
现象:
state DOWN或LOWER_DOWN表示物理链路中断;MTU、速率等信息也可在此查看。 citeturn1search0
ip -s -s link show dev eth0
-
-s -s显示详细的 RX/TX 错误与丢包计数。citeturn2search0
2. 驱动与 PHY 诊断
ethtool eth0
ethtool -S eth0
-
功能:
ethtool eth0显示速率、双工、协商状态;ethtool -S显示驱动统计(rx_errors、tx_errors)citeturn2search1 -
现象:
rx_errors>0或tx_errors>0表示物理层(线缆/模块)或驱动异常。
3. 内核日志检查
dmesg | grep -i eth0
-
现象:频繁的 “Link is Down/Up” 或 PHY 错误(如 CRC 校验失败)提示底层链路不稳定。 citeturn3search5
二、网络层:丢包、MTU 与路由
1. 丢包与延迟抖动
ping -c 100 -i 0.2 8.8.8.8
-
现象:丢包率 > 1% 或 RTT(最大值–最小值)波动明显,提示路径中存在丢包或中间路由不稳定。 citeturn3search7
ping -M do -s 1472 8.8.8.8
-
分析:1472 bytes + 28 bytes(IP/ICMP 头)= 1500,若失败则需减小
-s直至成功,以确定 Path MTU。 citeturn0search4
2. 路由追踪
traceroute -n 目标IP
mtr -n 目标IP
-
现象:中间某跳丢包或 RTT 突增 → 该跳的设备可能限流或丢弃 ICMP 报文。
-
工具对比:
mtr可实时显示每跳丢包/延迟,定位更直观。 citeturn1search2
三、传输层:TCP 统计与单连接信息
1. 全局 TCP 统计
netstat -s | grep -i tcp
-
关注字段:
-
segments retransmitted:重传次数 -
delayed acks:Delayed‑ACK 触发次数 -
SACKs sent/received、DSACKs sent/received:Selective/DSACK 信息
-
-
现象:重传次数过多或大量
delayed acks,暗示网络丢包、Delayed‑ACK 机制影响等。 citeturn8search2
2. 单连接视图
ss -t -i dst 目标IP:端口
-
字段解读:
-
retrans:本端本连接重传次数 -
rtt:、rttvar:平均 RTT 与抖动 -
delack:Delayed‑ACK 状态 -
snd_cwnd:拥塞窗口
-
-
解读:
retrans>0或delack频繁,说明路径丢包或 ACK 延迟。 citeturn3search7
四、抓包分析:tcpdump & Wireshark
1. 捕获命令
tcpdump -i eth0 -s 0 -w dump.pcap tcp and host 目标IP
# 实时摘要:
tcpdump -i eth0 -nn -vvv tcp and host 目标IP
-
-s 0捕获整包;-nn不解析名称;-vvv更多协议细节。 citeturn5search0
2. 重点分析过滤与现象
| 过滤/分析表达式 | 含义与现象 |
|---|---|
tcp.analysis.retransmission |
Wireshark 标记的重传包,确认路径中存在丢包。 |
tcp.analysis.duplicate_ack |
Duplicate ACK (#DUP ACK),触发快速重传的信号。 citeturn1search7 |
tcp.analysis.fast_retransmission |
三次 DUP ACK 触发的快速重传。 |
tcp.analysis.out_of_order |
接收到乱序包,提示网络抖动或多路径路由。 |
tcp.analysis.ack_lost_segment |
ACK 丢失导致的重传。 |
tcp.analysis.zero_window |
对端窗口为 0,应用层处理慢或拥塞。 |
frame.len > 1500 |
大包分片,若 MTU 不匹配则出现分片或丢包。 |
3. SACK 与 DSACK
-
SACK:接收方在选项中告知发送方哪些区间已正确接收,只重传丢失部分。
-
DSACK:接收方报告重复接收的区间,有助于分辨是包丢失还是乱序等。
-
现象:Wireshark 会标注 “DSACK SACK {n–m}”,连续 DSACK 表明路径乱序或误判丢包。 citeturn6search1turn1search6
4. Delayed‑ACK 影响
-
Linux 默认每两包才回一个 ACK,延迟约 40 ms。
-
高
delayed acks数量会引入明显延迟,尤其 RTT 很低时。 -
可临时通过
setsockopt(..., TCP_QUICKACK, 1)或全局/proc/sys/net/ipv4/tcp_quickack调优。 citeturn1search13
五、综合排查流程
-
链路检查:
ip link+ethtool -S→ 无硬件错误 -
丢包/MTU:
ping+ping -M do→ 确定路径 MTU -
路由定位:
traceroute/mtr→ 定位丢包跳点 -
TCP 统计:
netstat -s→ 是否大量重传、Delayed‑ACK 或 SACK/DSACK -
单连接:
ss -t -i→ RTT、重传、窗口状态 -
抓包验证:
tcpdump→ Wireshark 过滤tcp.analysis.*
通过以上分层方法与命令、结合抓包深度分析,即可全面评估 Linux 系统的网络阻塞与底层异常。若需自动化脚本或更细化示例,欢迎进一步交流!
浙公网安备 33010602011771号