TraceRoute

TraceRoute通过故意设置特殊的TTL,来追踪去往目的地沿途经过的路由器。

注意:TraceRoute它是利用了ICMP差错报文,是在返回报文上利用了ICMP差错报文,而自己并没有使用ICMP差错报文。

它具体是怎么做的呢?(注意:它自己发的是UDP数据报)
TraceRoute的参数指向一个IP地址,那么它会发送一个UDP数据报,把TTL设置为1,那么在经过第一个路由器它的TTL就会归0,那么这个路由器就会给该主机发送一个ICMP差错报文。

差错类型就是超时。

如此反复,直到到达目标主机。这样就知道中间路由信息了。

但是有的主机却不会向源主机去发送一个ICMP差错报文。

怎么判断UDP数据报有没有到达目标主机呢?

因为TraceRoute给目标主机发送的UDP数据报的端口很刁钻,是大于30000的,这是一个不可能的值作为端口号,对于中间路由,它会发送超时额ICMP差错报文。但是对于目的主机,它在收到报文后,会发送端口不可达的ICMP差错报文,然后就知道到达目标主机了。

TraceRoute的另一个作用就是确定一个路径的MTU、

注意:是到达目的主机整条路径的MTU。也就是所有MTU的最小值

它的做法是故意设置不分片,也就是DF=1,这样某个网络的MTU小于数据帧的数据部分,路由器就会发出ICMP差错报文,回复:

需要进行分片,但是设置了DF =1 .

这里再复习一下:MTU是最大传输单元,是数据帧的数据部分(单个IP数据分片的最大值)之所以说是单个IP数据分片,是因为如果说IP数据报太大,会被切割为IP数据报片。

MSS:最大报文段大小指的是TCP报文段数据部分的最大值。

MSL最大报文段长度:指的是客户机在对服务器的FIN报文做出确认后变成TIME-WAIT状态应该等待的时间,注意:是等待2MSL。

我们来复习一下:

TraceRoute有两个作用:

1、确定到达目标主机的路由信息,2、确定该路由的最小MTU

该程序发送UDP数据报,设置的目标端口大于30000.是一个不可达的端口,而且每次发一个UDP数据报,设置TTL=1.2.3...

然后中间路由就会发ICMP差错报文,报告超时。

而目标主机也会发ICMP差错报文,报告端口不可达。

该程序发送的UDP数据报设置的是:DF = 1,这样遇到MTU更小的网络,路由器也会发ICMP差错报文,报告:需要设置分片,但是设置了DF = 1.

 

你可能感兴趣的:(计算机网络)