traceroute 路由跟踪是利用IP数据包的TTL值来实现的
一、原理分析
1)首先,基于TCP的traceroute 发送TTL = 1 的syn 包,第一个路由器将 TTL 减 1 得 0 后就不再继续转发此数据包,而是返回一个 ICMP 超时报文,traceroute 从超时报文中即可提取出数据包所经过的第一个网关的 IP 地址。
2)然后又发送了一个 TTL = 2 的 SYN 数据包,由此可获得第二个网关的 IP 地址。
3)依次递增 TTL 便获得了沿途所有网关的 IP 地址。
TCP模式:TCP [SYN]探测数据包(假设:目标端口为Web服务的80) + 中间网关发回 ICMP TTL 超时数据包 + 目标主机发回TCP [SYN ACK] 数据包。
TCP traceroute 向外发送的是 TCP SYN 数据包,这样做最大的好处就是穿透防火墙的几率更大因为 TCP SYN 看起来是试图建立一个正常的 TCP 连接。

二、基于TCP路由跟踪:traceroute www.baidu.com -p 80 -nT
默认发SYN包,抓包验证:

三、traceroute 可以伪造TCP报文进行路由连通性验证
可以根据指定不同TCP选项,发送伪造数据包进行验证,TCP选项如下:

3.1 伪造SYN,ACK包
方式1:traceroute IP -p 80 -nT -O syn,ack
方式2:traceroute IP -p 80 -nT -O flags=0x012
抓包验证:
