Traceroute和Tracert

    Traceroute是Linux和Mac OS等系统默认提供的路由追踪小程序,Tracert是Windows系统默认提供的路由追踪小程序。二者的功能相同,都能探测数据包从源地址到目的地址经过的路由器的IP地址。Traceroute/Tracert的实现都借助了TTL:通过向目的地址发送一系列的探测包,设置探测包的TTL初始值分别为1,2,3…,根据返回的超时通知(ICMP Time Exceeded Message)得到源地址与目的地址之间的每一跳路由信息。

    二者两者输出结果一致,但在实现原理上有差别。traceroute发送的是UDP的探测包,tracert发送的是ICMP的请求。

image.png

  1. 从源地址发出一个UDP探测包到目的地址,并将TTL设置为1;
  2. 到达路由器时,将TTL减1;
  3. 当TTL变为0时,包被丢弃,路由器向源地址发回一个ICMP超时通知(ICMP Time Exceeded Message),内含发送IP包的源地址,IP包的所有内容及路由器的IP地址;
  4. 当源地址收到该ICMP包时,显示这一跳路由信息;
  5. 重复1~5,并每次设置TTL加1;
  6. 直至目标地址收到探测数据包,并返回端口不可达通知(ICMP Port Unreachable);
  7. 当源地址收到ICMP Port Unreachable包时停止traceroute。

注:

1. Linux和Mac OS等系统使用UDP包进行探测,目标端口号默认为33434,每次探测目标端口号加1。Traceroute故意使用了一个大于 30000 的目标端口号,以保证目标地址收到数据包后能够返回一个“端口不可达”的 ICMP 报文,于是源地址就可将端口不可达报文当作跟踪结束的标志。

2.Traceroute每跳默认发送3个探测包(发包的数量可通过-q进行设置),探测包的返回会受到网络情况的影响。如果防火墙封掉了ICMP的返回信息,那么相应的延时位置会以*显示。如果某台网关阻塞或者某台DNS出现问题,那么相应行的延时会变长。可以加-n 参数来避免DNS解析,以IP格式输出数据。

3.每个探测包都有唯一的标识号,使得Traceroute能够识别返回的包。UDP数据包使用递增的目标端口号进行标识。

Traceroute参数:

  • -d    使用Socket层级的排错功能
  • -f    设置第一个检测数据包的存活数值TTL的大小
  • -F    设置勿离断位
  • -g    设置来源路由网关,最多可设置8个。
  • -i     使用指定的网络界面送出数据包。
  • -I     使用ICMP回应取代UDP资料信息。
  • -m    设置检测数据包的最大存活数值TTL的大小。
  • -n     直接使用IP地址而非主机名称。
  • -p     设置UDP传输协议的通信端口。
  • -r     忽略普通的Routing Table,直接将数据包送到远端主机上。
  • -s     设置本地主机送出数据包的IP地址。
  • -t     设置检测数据包的TOS数值。
  • -v     详细显示指令的执行过程。
  • -w    设置等待远端主机回报的时间。
  • -x     开启或关闭数据包的正确性检验。

 

参考连接:

https://www.cnblogs.com/machangwei-8/p/10353279.html#_label0

https://www.freebuf.com/news/topnews/63148.html

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值