利用Ping命令推断简单的网络拓扑图 - 心之镇
平时我们使用ping命令的时候往往会忽略它的参数,只是用来检测网络的联通情况。殊不知,ping的参数里有个参数具有强大的功能,可以让我们推断出本机到目的地的网络拓扑图。(在此感谢我们实验室的一位同仁,是其告诉我这个功能的)。下面对这个参数加以说明吧。
就以我学校的网站作为目的IP作为测试。
ping的参数表如下:
其中关于参数r的描述:Record route for count hops(记录所经过的路由)
下面演示下其具体的过程:
本地主机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选项时,其包头:
可以看出其头部长度为20bytes。
而加了r选项的呢:
可以发现其头部大小变为60bytes了。而且在其选项中可以发现,把经过的路由的IP打入了IP数据包中了。
是不是很有意思呢?呵呵