利用Ping命令推断简单的网络拓扑图

平时我们使用ping命令的时候往往会忽略它的参数,只是用来检测网络的联通情况。殊不知,ping的参数里有个参数具有强大的功能,可以让我们推断出本机到目的地的网络拓扑图。(在此感谢我们实验室的一位同仁,是其告诉我这个功能的)。下面对这个参数加以说明吧。

就以我学校的网站作为目的IP作为测试。

ping的参数表如下:

 利用Ping命令推断简单的网络拓扑图

其中关于参数r的描述:Record route for count hops(记录所经过的路由) 

下面演示下其具体的过程:

利用Ping命令推断简单的网络拓扑图 

本地主机IP:211.86.146.109

目的网站IP:202.38.64.9 

在此要说明下:ping程序是发送的一个ICMP类型8编码0的报文到指定主机的。ICMP报文是承载在IP报文中的。一个IP的报文一般首部长度是20bytes(选项为填写),若加上选项后其首部长度可以达到60bytes也就是除去那20bytes还剩40bytes,而且剩余的空间是通过每4个bytes进行加入的。通过在ping命令中加上r选项后就可以把经过的路由的“出端口”的IP地址打入IP数据包的那40个bytes中。这样算来,剩余空间一般最大能容纳9个这样的IP地址(不能是10个)。

 这样可以构造相应的网络拓扑:

211.86.146.109-->211.86.146.1-(router)-202.38.96.31-->202.38.96.33-(router)-202.38.64.126-->202.38.63.126

 为了验证IP包的头部大小是否因为r选项而发生了变化,可以利用Ethereal抓包工具对包进行分析:

为加r选项时,其包头:

利用Ping命令推断简单的网络拓扑图 

可以看出其头部长度为20bytes。

而加了r选项的呢:

利用Ping命令推断简单的网络拓扑图 

可以发现其头部大小变为60bytes了。而且在其选项中可以发现,把经过的路由的IP打入了IP数据包中了。

 

是不是很有意思呢?呵呵 

你可能感兴趣的:(ping)