大家好,又见面了,我是你们的朋友全栈君。
traceroute,路由跟踪,用来跟踪一个分组从源点到终点的整个过程。
原理分析
traceroute是通过ICMP协议中的时间超时差错报告报文来实现的,他从源主机到目的主机发送一连串的IP数据报p1-pn,并且数据报是无法交付的udp数据报。第一个数据报的TTL设置为1,这样当这个数据报转发到第一个路由器的时候,路由器收到后TTL减1,减完1之后发现TTL变为0,路由器会向源主机发送一个超时差错报告报文。
然后是第二个,第二个数据报的TTL设置为2,这样转发到第二个路由器的时候,TTL变为0,并会向源主机在发送一个超时差错报告报文,依次进行此操作。直到第n个数据报pn到达目的主机,但是由于数据报无法交付,因此目的主机会向源主机发送终点不可达差错报告报文。
通过这种方式,源主机就可以通过发送过来的超时差错报告报文和终点不可达差错报告报文来的得到经过的路由器以及往返时间等信息,达到路由跟踪的目的。
使用方法
- 命令的格式
traceroute [option ...] host
以跟踪百度为例
从图中可以看出按照顺序到达的路由,后面的时间是一次往返时间,有三次是因为连续发了三个IP数据报。
- 参数的类型
通过Linux的man traceroute 查看手册得到以下信息
-f <存活数值>设置第一个检测数据包的存活数值TTL的大小。
-F 设置勿离断位。
-g <网关>设置来源路由网关,最多可设置8个。
-I 使用ICMP响应取代UDP资料信息。
-m <存活数值>设置检测数据包的最大存活数值TTL的大小。
-p <通信端口>设置UDP传输协议的通信端口。
-t <服务类型>设置检测数据包的TOS数值。
-w <超时秒数>设置等待远端主机回报的时间。
下面对一些常用的参数的功能进行演示
-m设置IP数据报的最大存活数值TTL
通过-m进行数量设置之后,最多发送10此IP数据报后结束操作
-f设置第一个检测数据包的存活数值TTL的大小
这张图和第一张相比,说明数据报是从第三个开始发的,也就是第一个数据包的TTL为3,所以数据报传递三次之后才会返回ICMP。
-q 设置探测包的个数
通过-q设置后探测包发送四个
-w 设置等待远端主机回报的时间
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/162547.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...