【TCP/IP 教程·第七弹】《Ping & Traceroute:网络界的“雷达”与“高德”》
58
0
0
上回 DNS 刚把电话簿撕完,今天玩探测神器。
Ping 像雷达——“滴,前方 42 ms 无丢包”;
Traceroute 像高德——“第 5 跳堵死,建议绕行”。
但雷达会遭防火墙隐身,高德也会故意指错路,
个中骚操作,比旅游团购物店还多。
1. ICMP 协议:IP 的“小纸条”
- 类型 8 → Echo Request(喂,在吗?)
- 类型 0 → Echo Reply(在,活得好好的)
- 类型 3 → Destination Unreachable(此路不通)
- 类型 11 → Time Exceeded(TTL 用完,超时)
ICMP 不承载数据,只传控制信息,
就像快递里夹的“包裹单”,本身不装奶茶。
2. Ping 工作流程:三秒相亲
- 源主机封装 ICMP 8 号包,TTL=64(Linux)/128(Windows)
- 每过一站 TTL-1,减到 0 被扔,返回 11 号报错
- 目标收到 TTL>0,回 0 号 Reply
- 源主机统计时延、丢包、抖动
防火墙一句deny icmp就能让 Ping 石沉大海,
所以“Ping 不通 ≠ 网络断”,可能只是“对方不理你”。
3. 大小包与分片:别把光纤挤爆
默认 32/56 字节,一旦加到 65500,
加上 DF(Don't Fragment)位 = 1,
路径上 MTU < 包大小 → 返回 ICMP 3/4(需要分片但 DF 置位)
利用这点可探测整条路径最小 MTU,
这就是 Path MTU Discovery,VPN 掉线排障必用。
4. Ping 选项大全(背)
| 系统 | 命令 | 功能 |
|---|---|---|
| Windows | ping -t -l 1000 8.8.8.8 | 不停、指定长度 |
| Linux | ping -s 1000 -M do 8.8.8.8 | 强制 DF,探测 MTU |
| macOS | ping -D -s 2000 1.1.1.1 | 同样 DF 置位 |
记住-M do(Linux)/-D(macOS)DF 置位,
否则中间悄悄分片,测不到真实 MTU。
5. Traceroute 原理:连环 TTL 爆炸
发 3 组 UDP 高端口(33434 起),TTL 从 1 递增:
- TTL=1 → 第一跳返回 ICMP 11(超时)
- TTL=2 → 第二跳返回 11
- …
直到目标返回 ICMP 3/3(端口不可达)→ 到达!
所以 traceroute 显示“ *”不一定断,
可能只是不回 ICMP 11(防火墙丢弃)。
6. 不同实现差异
| 工具 | 默认协议 | 可改 |
|---|---|---|
| Linux traceroute | UDP | -I ICMP, -T TCP |
| Windows tracert | ICMP | 不可改 |
| macOS traceroute | UDP | -I ICMP |
| mtr | ICMP | 实时刷新,丢包雷达 |
遇到UDP 被禁,立刻-I上 ICMP,
或者-T 80走 TCP,伪装 HTTP 流量。
7. 看懂输出:每跳 3 个时间
1 192.168.1.1 1.123 ms 1.020 ms 1.110 ms
2 100.64.0.1 3.456 ms 3.321 ms 3.490 ms
3 * * *
4 202.96.123.45 8.765 ms 8.654 ms 8.721 ms- 星号 = 没收到 ICMP 11,被墙或限速丢弃
- 第 3 跳全 * 但第 4 跳出现 → 路径正常,只是第 3 跳低调
- 延迟突增(3 ms→200 ms)→ 通常跨运营商或海底光缆
8. 延迟抖动与 Starlink
延迟三因子:
传播延迟 = 距离 / 光速(≈5 μs/km 光纤)
排队延迟 = 路由器拥塞程度
处理延迟 = 设备性能 + 策略(NAT、QoS、防火墙)
上海→洛杉矶 11 000 km,理论单向 55 ms,
实际 160 ms 左右,排队+处理吃掉 100 ms。
Starlink 低轨 550 km,单程仅 2 ms,
但上星→落地多跳网关,总延迟 25~45 ms,仍比海底光缆快。
9. 安全攻防:Ping of Death & Traceroute Flood
- Ping of Death(90 年代):>65535 字节分片重组崩溃 → 已修复
- Ping Flood:ICMP 64 k 大包 1 Mpps,打爆带宽
Tracert Flood:频繁 TTL 递增扫描,触发路由器 CPU 高
现在防火墙默认限速/丢弃 ICMP/UDP 33434,
所以扫描前先-T 80伪装 TCP,穿透率↑
10. 排查口诀
Ping 先测通,MTU 后分片;
Traceroute 看跳数,星号别慌神;
延迟突增跨运营商,* * * 被墙藏;
`-I` 改 ICMP,`-T` 走 HTTP;
记住三延迟:传播、排队、处理。下集预告
第八弹《TCP 三次握手:处女座外卖员的爱情协议》
- SYN、SYN-ACK、ACK 怎样像相亲?
- 为什么握手 3 次、挥手 4 次?
- 同时打开、SYN Flood、半连接队列是什么鬼?
- 一键算 MSS、Window Scale,让下载飙车!
关注不迷路,下回继续握手!
0
快来点个赞吧
发表评论
评论列表