1.2.2 使用ping命令探测系统
ping命令是测试网络连接、信息发送和接收状况的实用工具,是一个系统内置的探测工具。对于一个依赖于网络的管理员或黑客,ping命令是第一个必须掌握的DOS命令。它所利用的原理是:网络上的机器都有唯一确定的IP地址,用户给目标IP地址发送一个数据包,对方就要返回一个同样大小的数据包。根据返回的数据包用户可以确定目标主机的存在,还可以初步判断目标主机的操作系统等。通过在命令提示符下输入“ping/?”命令,即可查看ping命令的详细说明,如图1.2.2-1所示。
图1.2.2-1
·-t:不断使用ping命令发送回响请求信息到目的地。要中断并退出ping,只需要按下“Ctrl+C”组合键。初级黑客常常喜欢使用这个参数对目标计算机进行攻击。
·-a:指定对目的地IP地址进行反向名称解析。如解析成功,ping将显示相应的主机名。
·-n count:指定发送回响请求消息的次数,默认值为4。
·-l size:指定发送的回响请求消息中“数据”字段的长度(以字节表示)。默认值为32,如图1.2.2-2所示。size的最大值是65527。
图1.2.2-2
·-f:指定发送的回响请求消息带有“不分段”标志(所在的IP标题设为1)。回响请求消息不能由目的地路径上的路由器进行拆分。该参数可用于检测并解决“路径最大传输单位(PMTU)”的故障。
·-i TTL:指定发送回响请求的消息的IP标题中的TTL字段值。其默认值是主机的默认TTL值。对于Win7主机该值一般是64。TTL的最大值是255。
·-v TOS:指定发送回响请求消息的IP标题中的“服务类型(TOS)”字段值。默认值是0。TOS被指定为0~255的十进制数。
·-r count:指定IP标题中“记录路由”选项用于记录由回响请求消息和相应的回响应答消息的使用路径。路径中的每个跃点都使用“记录路由”选项中的一个值。如果可能,可指定一个等于或大于来源和目的地之间跃点数的count。count最小值必须为1,最大值为9。
·-s count:指定IP标题中的“Internet时间戳”选项用于记录每个跃点的回响请求信息和相应的回响应答消息的到达时间。count的最小值必须为1,最大值为4。
·-j host-list:指定回响请求消息,使用带有hostlist的指定IP标题中的“稀疏资源路由”选项。可由一个或多个具有松散源路由的路由器分隔连接中间目的地。主机列表中的地址或名称最大数为9,主机列表是一系列由空格分开的IP地址(带点的十进制符号)。
·-k host-list:指定回响请求消息,使用带有host list的指定的中间目的地集的IP标题中的“严格来源路由”选项。使用严格来源路由,下一个中间目的地必须是直接可达的(必须是路由器接口上的邻居)。主机列表中的地址或名称的最大数为9,主机列表是一系列由空格分开的IP地址(带点的十进制符号)。
·-w timeout:指定等待回响应答消息响应的时间(以微秒计),该回响应答消息响应接收到的指定回响请求消息。如果在超时时间内未接收到回响应答消息,将会显示“请求超时”的错误消息。默认的超时时间为4000微秒(4秒)。
·Target Name:指定目的端,它既可以是IP地址,也可以是主机名。
典型示例如下。
(1)检测本机网卡驱动程序以及TCP/IP协议
以IP地址为10.114.233.123为例,若想检测本机的网卡驱动程序以及TCP/IP协议是否正常,只需要在命令提示符窗口中输入“ping 10.114.233.123”命令即可,如图1.2.2-3所示。
图1.2.2-3
(2)多参数合用检测
在命令提示符窗口中输入“ping-a-t 10.114.233.123”命令,即可对10.114.233.123这台计算机进行探测,探测结果如图1.2.2-4所示。通过反馈信息可知,上述命令中的参数“-a”检测出了该机器的NetBios名为dns.sq.js.cn;参数“-t”表示在不断向该机发送数据包。
图1.2.2-4
通常,ping命令会反馈如下两种结果:
·请求超时。表示没有收到网络设备返回的响应数据包,也就是说网络不通。出现这个结果的原因很复杂,通常是对方装有防火墙并禁止ICMP回显、对方已经关机、本机的IP设置不正确或网关设置错误、网线不通等。
·来自10.114.233.123的回复:字节=32 时间<1ms TTL=64。这表示网络畅通,探测使用的数据包大小为32字节,响应时间小于1毫秒。TTL(Time To Live,存活时间)是指一个数据包在网络中的生存期,网管可通过它了解网络环境,辅助维护工作。通过TTL值可以粗略判断出对方计算机使用的操作系统类型,以及本机到达目标主机所经过的路由数。
若要检查本机的网络连通情况,通常会使用ping命令给某个目标主机(如本机)发送ICMP数据包。在本机中生成ICMP数据包时,系统就会给这个ICMP数据包初始化一个TTL值,如Win7就会生成“64”。将这个ICMP数据包发送出去,遇到网络路由设备转发时,TTL值就会被减去“1”,最后到达目标主机。如果在转发过程中TTL值变成“0”,路由设备就会丢弃这个ICMP数据包。
TTL值在网络应用中很有用处,可以根据返回信息中的TTL值来推断发送的数据包到达目标主机所经过的路由数。路由发生在OSI网络参考模型中的第3层,即网络层。