
一、实验目的
1.了解Ethereal的下载安装方法。
2.掌握Ethereal的简单使用方法,包结果分析方法。
3.掌握正确使用Ethereal分析ICMP协议的技能。
4.掌握ping基本命令的使用和ping命令的工作原理。
5.掌握tracert基本命令的使用和tracert命令的工作原理。
二、实验环境
1.运行Windows XP /2003 Server操作系统的PC机一台。
2.每台PC机具有以太网卡,通过双铰线与局域网相连。
3.安装winpap下载地址
http://netgroup-serv.polito.it/winpcap/install/Default.htm
4.Ethereal工具(可以从http://www.ethereal.com/下载)。
三、实验步骤
1.预习与ping命令相关的因特网控制报文协议ICMP相关的内容,通过搜索引擎了解什么是嗅探器。了解嗅探器工具Ethereal的下载、安装和使用方法。
2.下载安装并 Ethereal;(Ethereal需要用到WinPcap。一些高版本的Ethereal内置了WinPcap的安装文件,在安装Ethereal的时候选择安装一下就可以了,不需要再单独去下载WinPcap。不过如果你有更高版本的WinPcap,也可以自己单独下载安装。)
3.打开Windows命令提示符窗口,准备输入要运行的ping命令计入图(1)界面;
图1
点击确定进入图(2)界面;
图(2)
4.启动系统。启动系统后点击“Ethereal”程序组中的“Ethereal”图标,将出现以系统操作界面,如图3
图3 Ethereal系统主界面
点击“Capture/Start”菜单开始抓包。在菜单capture 下点击interfaces, 选取要抓包的网卡,这里选取这个网卡抓取数据包,如下图4:
图4
5.输入要运行的ping命令及要测试的目标主机的ip地址,等到ping命令的结果完全显示出来后,单击软件中的stop按钮,停止包的抓获;
6.输入ping指令和郑州大学“学校概况”网页的ip地址,例如图5所示ping 202.196..199。
图5
7.单击软件中的stop按钮,停止包的抓获;
图6
8.点击“Capture/Start”菜单,在菜单capture 下点击options, 在图7窗口中点击“Capture filter”,出现图8界面,在图4Filter name ,Filter string中均填写ICMP,然后点击“new”按钮,再点击“save”“ok”按钮,返回到图9界面。
图7
图8
图9
9.重新点击“Start”按钮,然后通过浏览器访问郑州大学“学校概况”网页(ip地址 202.196..199), 系统开始俘获网络分组。如图10。
图10
10.在图界面中,输入cmd命令,进入cmd.exe界面,输入ping指令和郑州大学“学校概况”网页的ip地址,例如图11所示ping 202.196..199。
图11
11.当按“Stop”(停止)按钮时,系统停止俘获分组并将已经俘获的分组信息装载在分析系统中。如图12
图12
12.ICMP协议的分析。
如图13,在Ethereal上部的窗口中,有帧编号(No.)、时间(Time)、源地址(Source)、目的地址(Destination)、协议(Protocol)和信息(Info)等列,各列下方依次排列着俘获的分组。中部的窗口给出选中的某帧的详细内容。下部窗口对应的该协议帧某字段的十六进制数值内容。
查找源是202.196..199,目的是本机IP的ICMP数据,例如选择其中第3号帧进行分析。
图13
a)数据帧说明:
Frame 1(74 bytes on wire,74 bytes captured)
表示所抓得的1674号帧是66字节
b)以太网数据帧说明:
Ethernet II, src: 00:1f:c6:22:08:66, Dst: 00:1a: a94:08: 76:61
表示源物理地址是00:1f:c6:22:08:66,目的物理地址是00:1a: a94:08: 76:61
c)ICMP数据报文说明:
首先了解一下IP数据包的格式(如图14,图15),然后参考图13中IP数据的详细内容进行说明如下:
| ICMP报文种类 | 类型的值 | ICMP报文的类型 |
| 差错报告报文 | 3 | 终点不可达 |
| 4 | 源点抑制 | |
| 11 | 时间超过 | |
| 12 | 参数问题 | |
| 5 | 改变路由 | |
| 询问报文 | 8或0 | 回送请求或回答 |
| 13或14 | 时间戳请求或回答 |
图15
Type: 8 (Echo(ping)request) 表示ICMP报文类型值为8,此帧为回送请求帧;Code: 0表示代码为0。Checksum:0X0200[correct]表示检验和为0x0200,正确。Identifer;0x0200表示标示符为0x0200。Sequence number:0x5e00表示序列号为0x5e00。Data (32 bytes) 表示数据部分为32字节。
13.ping命令的基本操作。
1)Ping本机IP
例如本机IP地址为:222.22.66.145。则执行命令Ping 222.22.66.145。如果网卡安装配置没有问题,则应有类似下列显示:
如果在MS-DOS方式下执行此命令显示内容为:Request timed out,则表明网卡安装或配置有问题。将网线断开再次执行此命令,如果显示正常,则说明本机使用的IP地址可能与另一台正在使用的机器IP地址重复了。如果仍然不正常,则表明本机网卡安装或配置有问题,需继续检查相关网络配置。
2)Ping网关IP
假定网关IP为:222.22.66.129,则执行命令Ping 222.22.66.129。在MS-DOS方式下执行此命令,如果显示类似以下信息:
则表明局域网中的网关路由器正在正常运行。反之,则说明网关有问题。
3)Ping远程IP
这一命令可以检测本机能否正常访问Internet。比如本地电信运营商的IP地址为:www.baidu.com。在MS-DOS方式下执行命令:如果屏幕显示:
则表明运行正常,能够正常接入互联网。反之,则表明主机文件(windows/host)存在问题
ping命令详解
系统内置的网络测试工具ping
1.Ping命令的语法格式
ping命令看似小小的一个工具,但它带有许多参数,要完全掌握它的使用方法还真不容易,要达到熟练使用则更是难下加难,但不管怎样我们还得来看看它的真面目,首先我们还是从最基本的命令格式入手吧!
ping命令的完整格式如下:
ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [-j -Host list] | [-k Host-list] [-w timeout] destination-list
从这个命令式中可以看出它的复杂程度,ping命令本身后面都是它的执行参数,现对其参数作一下详细讲解吧!
-t—— 有这个参数时,当你ping一个主机时系统就不停的运行ping这个命令,直到你按下Control-C。
当ping本地主机192.168.1.37时不停的发送数据包直到Control-C结束。发送19个,接收19个包。
-a——解析主机的NETBIOS主机名,如果你想知道你所ping的要机计算机名则要加上这个参数了,一般是在运用ping命令后的第一行就显示出来。
显示百度网站的地址为119.75.213.50 在第一行显示。
-n count——定义用来测试所发出的测试包的个数,缺省值为4。通过这个命令可以自己定义发送的个数,对衡量网络速度很有帮助,比如我想测试发送20个数据包的返回的平均时间为多少,最快时间为多少,最慢时间为多少就可以通过执行带有这个参数的命令获知。
Count的值设置为7,则发送7个包
-l length——定义所发送缓冲区的数据包的大小,在默认的情况下windows的ping发送的数据包大小为32byt,也可以自己定义,但有一个,就是最大只能发送65500byt,超过这个数时,对方就很有可能因接收的数据包太大而死机,所以微软公司为了解决这一安全漏洞于是了ping的数据包大小。
-f—— 在数据包中发送“不要分段”标志,一般你所发送的数据包都会通过路由分段再发送给对方,加上此参数以后路由就不会再分段处理。
-i ttl—— 指定TTL值在对方的系统里停留的时间,此参数同样是帮助你检查网络运转情况的。
-v tos—— 将“服务类型”字段设置为 “tos” 指定的值。
-r count—— 在“记录路由”字段中记录传出和返回数据包的路由。一般情况下你发送的数据包是通过一个个路由才到达对方的,但到底是经过了哪些路由呢?通过此参数就可以设定你想探测经过的路由的个数,不过在了9个,也就是说你只能跟踪到9个路由。
这个ping命令不通但是格式如上。
-s count——指定“count” 指定的跃点数的时间戳,此参数和-r差不多,只是这个参数不记录数据包返回所经过的路由,最多也只记录4个。
-j host-list ——利用“ computer-list” 指定的计算机列表路由数据包。连续计算机可以被中间网关分隔IP 允许的最大数量为 9。
-k host-list ——利用 “computer-list” 指定的计算机列表路由数据包。连续计算机不能被中间网关分隔IP 允许的最大数量为 9。
-w timeout——指定超时间隔,单位为毫秒。
destination-list ——是指要测试的主机名或IP地址
2.Ping命令的应用
(1)、测试网络的通畅
我们知道可以用ping命令来测试一下网络是否通畅,这在局域网的维护中经常用到,方法很简单,只需要在DOS或Windows的开始菜单下的“运行”子项中用ping命令加上所要测试的目标计算机的IP地址或主机名即可(目标计算机要与你所运行ping命令的计算机在同一网络或通过电话线或其它专线方式已连接成一个网络),其它参数可全不加。如要测试台IP地址为196.168.1.21的工作站与服务器是否已连网成功,就可以在服务器上运行:ping -a 196.`68.123.56 即可,如果工作站上TCP/IP协议工作正常,即会以DOS屏幕方式显示如下所示的信息:
Pinging cindy[196.168.1.21] with 32 bytes of data:
Reply from 196.168.1.21: bytes=32 time<10ms TTL=254
Reply from 196.168.1.21: bytes=32 time<10ms TTL=254
Reply from 196.168.1.21: bytes=32 time<10ms TTL=254
Reply from 196.168.1.21: bytes=32 time<10ms TTL=254
Ping statisti for 196.168.1.21:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
从上面我们就可以看出目标计算机与服务器连接成功,TCP/IP协议工作正常,因为加了“-a”这个参数所以还可以知道IP为196.168.1.21的计算机的NetBIOS名为cindy。
如果网络未连成功则显示如下错误信息:
Pinging[196.168.1.21 ] with 32 bytes of data
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Ping statistice for 196.168.1.21:
Packets:Sent=4,Received =0,Lost\\=4(100% loss),
Approximate round trip times in milli-seconds
Minimum=0ms,Maximum=0ms,Average=0ms
为什么不管网络是否连通在提示信息中都会有重复四次一样的信息呢(如上的“Reply from 196.168.1.21: bytes=32 time<10ms TTL=254 ”和“Request timed out”),那是因为一般系统默认每次用ping测试时是发送四个数据包,这些提示就是告诉你所发送的四个数据包的发送情况。
出现以上错误提示的情况时,就要仔细分析一下网络故障出现的原因和可能有问题的网上结点了,一般首先不要急着检查物理线路,先从以下几个方面来着手检查:一是看一下被测试计算机是否已安装了TCP/IP协议;二是检查一下被测试计算机的网卡安装是否正确且是否已经连通;三是看一下被测试计算机的TCP/IP协议是否与网卡有效的绑定(具体方法是通过选择“开始→设置→控制面板→网络”来查看);四是检查一下Windows NT服务器的网络服务功能是否已启动(可通过选择“开始→设置→控制面板→服务”,在出现的对话框中找到“Server”一项,看“状态”下所显示的是否为“已启动”)。如果通过以上四个步骤的检查还没有发现问题的症结,这时再查物理连接了,我们可以借助查看目标计算机所接HUB或交换机端口的批示灯状态来判断目标计算机现网络的连通情况。
(2)、获取计算机的IP地址
利用ping这个工具我们可以获取对方计算机的IP地址,特别是在局域网中,我们经常是利用NT或WIN2K的DHCP动态IP地址服务自动为各工作站分配动态IP地址,这时当然我们要知道所要测试的计算机的NETBIOS名,也即我们通常在“网络邻居”中看到的“计算机名”。使用ping命令时我们只要用ping命令加上目标计算机名即可,如果网络连接正常,则会显示所ping的这台机的动态IP地址。其实我们完全可以在互联网使用,以获取对方的动态IP地址,这一点对于黑客来说是比较有用的,当然首先的一点就是你先要知道对方的计算机名。
(3)、上述应用技巧其实重点是Ping 命令在局域网中的应用,其实Ping命令不仅在局域网中广泛使用,在Internet互联网中也经常使用它来探测网络的远程连接情况。平时,当我们遇到以下两种情况时,需要利用Ping工具对网络的连通性进行测试。比如当某一网站的网页无法访问时,可使用Ping命令进行检测。另外,我们在发送E-mail之前也可以先测试一下网络的连通性。许多因特网用户在发送E-mail后经常收到诸如“Returned mail:User unknown”的信息,这说明您的邮件未发送到目的地。为了避免此类事件再次发生,所以建议大家在发送E-mail 之前先养成Ping对方邮件服务器地址的习惯。例如,当您给163网站邮件用户发邮件时,可先键入“ping 163.com”(其实163.com就是网易的其中一台服务器名)进行测试,如果返回类似于“Bad IP address 163.com”或“Request times out”或“Unknow host 163.com”等的信息,说明对方邮件服务器的主机未打开或网络未连通。这时即使将邮件发出去,对方也无法收到。
PING的工作流程:
我们以下面一个网络为例:有A、B、C、D四台机子,一台路由RA,子网掩码均为255.255.255.0,默认路由为192.168.0.1 [1]
1.在同一网段内
在主机A上运行“Ping 192.168.0.5”后,都发生了些什么呢? 首先,Ping命令会构建一个固定格式的ICMP请求数据包,然后由ICMP协议将这个数据包连同地址“192.168.0.5”一起交给IP层协议(和ICMP一样,实际上是一组后台运行的进程),IP层协议将以地址“192.168.0.5”作为目的地址,本机IP地址作为源地址,加上一些其他的控制信息,构建一个IP数据包,并想办法得到192.168.0.5的MAC地址(物理地址,这是数据链路层协议构建数据链路层的传输单元——帧所必需的),以便交给数据链路层构建一个数据帧。关键就在这里,IP层协议通过机器B的IP地址和自己的子网掩码,发现它跟自己属同一网络,就直接在本网络内查找这台机器的MAC,如果以前两机有过通信,在A机的ARP缓存表应该有B机IP与其MAC的映射关系,如果没有,就发一个ARP请求广播,得到B机的MAC,一并交给数据链路层。后者构建一个数据帧,目的地址是IP层传过来的物理地址,源地址则是本机的物理地址,还要附加上一些控制信息,依据以太网的介质访问规则,将它们传送出去。
主机B收到这个数据帧后,先检查它的目的地址,并和本机的物理地址对比,如符合,则接收;否则丢弃。接收后检查该数据帧,将IP数据包从帧中提取出来,交给本机的IP层协议。同样,IP层检查后,将有用的信息提取后交给ICMP协议,后者处理后,马上构建一个ICMP应答包,发送给主机A,其过程和主机A发送ICMP请求包到主机B一模一样。
2.不在同一网段内
在主机A上运行“Ping 192.168.1.4”后,开始跟上面一样,到了怎样得到MAC地址时,IP协议通过计算发现D机与自己不在同一网段内,就直接将交由路由处理,也就是将路由的MAC取过来,至于怎样得到路由的MAC,跟上面一样,先在ARP缓存表找,找不到就广播吧。路由得到这个数据帧后,再跟主机D进行联系,如果找不到,就向主机A返回一个超时的信息。
Tracert命令详解
该诊断实用程序将包含不同生存时间 (TTL) 值的 Internet 控制消息协议 (ICMP) 回显数据包发送到目标,以决定到达目标采用的路由。要在转发数据包上的 TTL 之前至少递减 1,必需路径上的每个路由器,所以 TTL 是有效的跃点计数。数据包上的 TTL 到达 0 时,路由器应该将“ICMP 已超时”的消息发送回源系统。Tracert 先发送 TTL 为 1 的回显数据包,并在随后的每次发送过程将 TTL 递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。路由通过检查中级路由器发送回的“ICMP 已超时”的消息来确定路由。不过,有些路由器悄悄地下传包含过期 TTL 值的数据包,而 tracert 看不到。
tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout] target_name
使用 tracert 跟踪网络连接
Tracert(跟踪路由)是路由跟踪实用程序,用于确定 IP 数据报访问目标所采取的路径。Tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由。
Tracert 工作原理
通过向目标发送不同 IP 生存时间 (TTL) 值的“Internet 控制消息协议 (ICMP)”回应数据包,Tracert 诊断程序确定到目标所采取的路由。要求路径上的每个路由器在转发数据包之前至少将数据包上的 TTL 递减 1。数据包上的 TTL 减为 0 时,路由器应该将“ICMP 已超时”的消息发回源系统。
Tracert 先发送 TTL 为 1 的回应数据包,并在随后的每次发送过程将 TTL 递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。通过检查中间路由器发回的“ICMP 已超时”的消息确定路由。某些路由器不经询问直接丢弃 TTL 过期的数据包,这在 Tracert 实用程序中看不到。
Tracert 命令按顺序打印出返回“ICMP 已超时”消息的路径中的近端路由器接口列表。如果使用 -d 选项,则 Tracert 实用程序不在每个 IP 地址上查询 DNS。
在下例中,数据包必须通过16个路由器才能到达主机
本地主机的默认网关是192.168.1.254。经过16个路由到达主机119.75.213.51
用 tracert 解决问题
可以使用 tracert 命令确定数据包在网络上的停止位置。下例中,默认网关确定 192.168.1.0 主机没有有效路径。这可能是路由器配置的问题,或者是 192.168.1.0 网络不存在(错误的 IP 地址)。
Tracert 实用程序对于解决大网络问题非常有用,此时可以采取几条路径到达同一个点。
Tracert 命令行选项
Tracert 命令支持多种选项,如下表所示。
tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name
-d 指定不将 IP 地址解析到主机名称。
-h maximum_hops 指定跃点数以跟踪到称为 target_name 的主机的路由。
可以指定跃点数为10
-j host-list 指定 Tracert 实用程序数据包所采用路径中的路由器接口列表。
-w timeout 等待 timeout 为每次回复所指定的毫秒数。
target_name 目标主机的名称或 IP 地址。
13.思考:
1)运行Ping指令的过程中是否产生了从你的主机到目的主机的ARP包?为什么?
2)尝试其他过滤手段,如有,可列举并说明其作用(截图说明结果)。
3)试说明连通测试工具ping的实现原理。
14.实验结果分析:
