// 杂记 · 2026-07-25

网络路径探测三大技术:原理、缺陷与选型指南

一、为什么需要路径探测?

想知道你的数据包从电脑到服务器,经过了哪些路由器。


二、三种技术原理对比

flowchart TD
    A[开始路径探测] --> B{选择探测协议}

    B -->|ICMP| C[发送 TTL=1/2/3... 的 UDP/ICMP 包]
    C --> D[中间路由器 TTL 耗尽]
    D --> E[返回 ICMP 超时消息]
    E --> F[源端获取该跳 IP]
    F --> G{到达目标?}
    G -->|否| C
    G -->|是| H[目标返回 ICMP 端口不可达/应答]
    H --> I[✅ 获得完整路径]

    B -->|TCP| J[发送 TTL=1/2/3... 的 SYN 包]
    J --> K[中间路由器 TTL 耗尽]
    K --> L[返回 ICMP 超时消息]
    L --> M[源端获取该跳 IP]
    M --> N{到达目标?}
    N -->|否| J
    N -->|是| O[目标返回 SYN-ACK 或 RST]
    O --> P[✅ 获得完整路径]

    B -->|正常会话| Q[在已建立的 TCP 连接中<br>发送 TTL递增的 ACK 包]
    Q --> R[中间路由器 TTL 耗尽]
    R --> S[返回 ICMP 超时消息]
    S --> T[源端获取该跳 IP]
    T --> U{到达目标?}
    U -->|否| Q
    U -->|是| V[目标正常接收 ACK<br>不影响业务]
    V --> W[✅ 获得完整路径]

三、三种技术核心对比(一图看懂)

flowchart BT
    subgraph ICMP方案
        I1[发送 UDP/ICMP] --> I2[TTL递增] --> I3[靠ICMP超时回显]
    end

    subgraph TCP方案
        T1[发送 SYN] --> T2[TTL递增] --> T3[靠ICMP超时回显]
    end

    subgraph 0trace方案
        O1[发送 ACK] --> O2[TTL递增] --> O3[靠ICMP超时回显]
    end

    ICMP方案 --> P1[❌ 设备禁用ICMP就废]
    TCP方案 --> P2[❌ NAT设备丢包]
    0trace方案 --> P3[⚠️ 依赖已有会话]

四、优缺点速查表

方案 工具示例 原理一句话 ✅ 优势 ❌ 缺陷
ICMP traceroute TTL递增,靠ICMP超时报文反推路径 简单通用,所有系统自带 路径设备禁用ICMP则完全失效
TCP traceroute -T
tcptraceroute
TTL递增的SYN包,靠ICMP超时报文反推路径 可穿透仅允许TCP的防火墙 不完整握手被NAT/状态防火墙丢弃
0trace 0trace 在已有TCP会话中发TTL递增的ACK包 伪装成正常流量,可探测内网段,绕过防火墙 必须有现存的TCP连接,建议多次运行

五、三种场景下的路径可见性

flowchart TD
    subgraph 场景1[场景1: 目标禁用ICMP]
        A1[ICMP traceroute] --> A1R[❌ 终点无响应]
        A2[TCP traceroute] --> A2R[✅ 可到达]
        A3[0trace] --> A3R[✅ 可到达]
    end

    subgraph 场景2[场景2: 路径中有NAT/状态防火墙]
        B1[ICMP traceroute] --> B1R[⚠️ 可能断在NAT前]
        B2[TCP traceroute] --> B2R[❌ NAT丢包]
        B3[0trace] --> B3R[✅ 利用已有会话穿透]
    end

    subgraph 场景3[场景3: 路径中有IDS/IPS]
        C1[ICMP traceroute] --> C1R[⚠️ 可能告警]
        C2[TCP traceroute] --> C2R[❌ 易被识别为扫描]
        C3[0trace] --> C3R[✅ 隐蔽性最高]
    end

六、什么情况下永远探不到完整路径?

flowchart LR
    D1[防火墙丢弃所有出站ICMP] --> R[❌ 收不到任何回显]
    D2[防火墙重写TTL值] --> R
    D3[路径中有七层代理/负载均衡] --> R
    D4[目标后无三层设备<br>如容器/虚拟网络] --> R
    D5[IPS主动检测并干扰] --> R
    R --> Z[结论: 路径探测不是万能的<br>需结合业务拓扑综合判断]

七、一句话选型建议

flowchart TD
    Start[我要探测路径] --> Q1{目标是否允许ICMP?}
    Q1 -->|是| Use1[✅ 直接用 traceroute<br>最快最简单]
    Q1 -->|否| Q2{是否有已有的TCP会话?}
    Q2 -->|是| Use2[✅ 用 0trace<br>最隐蔽]
    Q2 -->|否| Use3[⚠️ 用 traceroute -T<br>但可能被NAT丢包]

八、核心结论

没有万能的路径探测工具,ICMP最快但最容易被禁,TCP能绕过ICMP限制但怕NAT,0trace最隐蔽但依赖已有会话。实际工作中,三种方法结合使用,并接受“某些路径永远看不到”的现实。

原文 https://blog.csdn.net/2301_79518550/article/details/163198833