利用Wireshark分析ICMP协议Word下载.docx
《利用Wireshark分析ICMP协议Word下载.docx》由会员分享,可在线阅读,更多相关《利用Wireshark分析ICMP协议Word下载.docx(12页珍藏版)》请在冰豆网上搜索。
代码(0)
检验和
为使用
数据
(图1 ICMP报头结构)
●类型:
标识生成的错误报文,它是ICMP报文中的第一个字段;
●代码:
进一步地限定生成ICMP报文。
该字段用来查找产生错误的原因;
●校验和:
存储了ICMP所使用的校验和值。
●未使用:
保留字段,供将来使用,起值设为0
●数据:
包含了所有接受到的数据报的IP报头。
还包含IP数据报中前8个字节的数据;
ICMP协议提供的诊断报文类型如表1所示。
类型
描述
回应应答(Ping应答,与类型8的Ping请求一起使用)
3
目的不可达
4
源消亡
5
重定向
8
回应请求(Ping请求,与类型8的Ping应答一起使用)
9
路由器公告(与类型10一起使用)
10
路由器请求(与类型9一起使用)
11
超时
12
参数问题
13
时标请求(与类型14一起使用)
14
时标应答(与类型13一起使用)
15
信息请求(与类型16一起使用)
16
信息应答(与类型15一起使用)
17
地址掩码请求(与类型18一起使用)
18
地址掩码应答(与类型17一起使用)
(表1 ICMP诊断报文类型)
ICMP提供多种类型的消息为源端节点提供网络层的故障信息反馈,它的报文类型可以归纳为以下5个大类:
●诊断报文(类型8,代码0;
类型0,代码0);
●目的不可达报文(类型3,代码0-15);
●重定向报文(类型5,代码0-4);
●超时报文(类型11,代码0-1);
●信息报文(类型12-18)。
Ping命令只有在安装了TCP/IP协议之后才可以使用,其命令格式如下:
ping[-t][-a][-ncount][-lsize][-f][-iTTL][-vTOS][-rcount][-scount]
[[-jhost-list]|[-khost-list]][-wtimeout]target_name
这里对实验中可能用到的参数解释如下:
-t:
用户所在主机不断向目标主机发送回送请求报文,直到用户中断;
-ncount:
指定要Ping多少次,具体次数由后面的count来指定,缺省值为4;
-lsize:
指定发送到目标主机的数据包的大小,默认为32字节,最大值是65,527;
-wtimeout:
指定超时间隔,单位为毫秒;
target_name:
指定要ping的远程计算机。
Ping和traceroute命令都依赖于ICMP。
ICMP可以看作是IP协议的伴随协议。
ICMP报文被封装在IP数据报发送。
一些ICMP报文会请求信息。
例如:
在ping中,一个ICMP回应请求报文被发送给远程主机。
如果对方主机存在,期望它们返回一个ICMP回应应答报文。
一些ICMP报文在网络层发生错误时发送。
例如,有一种ICMP报文类型表示目的不可达。
造成不可达的原因很多,ICMP报文试图确定这一问题。
例如,可能是主机关及或整个网络连接断开。
有时候,主机本身可能没有问题,但不能发送数据报。
例如IP首部有个协议字段,它指明了什么协议应该处理IP数据报中的数据部分。
IANA公布了代表协议的数字的列表。
例如,如果该字段是6,代表TCP报文段,IP层就会把数据传给TCP层进行处理;
如果该字段是1,则代表ICMP报文,IP层会将该数据传给ICMP处理。
如果操作系统不支持到达数据报中协议字段的协议号,它将返回一个指明“协议不可达”的ICMP报文。
IANA同样公布了ICMP报文类型的清单。
Traceroute是基于ICMP的灵活用法和IP首部的生存时间字段的。
发送数据报时生存时间字段被初始化为能够穿越网络的最大跳数。
每经过一个中间节点,该数字减1。
当该字段为0时,保存该数据报的机器将不再转发它。
相反,它将向源IP地址发送一个ICMP生存时间超时报文。
生存时间字段用于避免数据报载网络上无休止地传输下去。
数据报的发送路径是由中间路由器决定的。
通过与其他路由器交换信息,路由器决定数据报的下一条路经。
最好的“下一跳”经常由于网络环境的变化而动态改变。
这可能导致路由器形成选路循环也会导致正确路径冲突。
在路由循环中这种情况很可能发生。
例如,路由器A认为数据报应该发送到路由器B,而路由器B又认为该数据报应该发送会路由器A,这是数据报便处于选路循环中。
生存时间字段长为8位,所以因特网路径的最大长度为28-1即255跳。
大多数源主机将该值初始化为更小的值(如128或64)。
将生存时间字段设置过小可能会使数据报不能到达远程目的主机,而设置过大又可能导致处于无限循环的选路中。
Traceroute利用生存时间字段来映射因特网路径上的中间节点。
为了让中间节点发送ICMP生存时间超时报文,从而暴露节点本身信息,可故意将生存时间字段设置为一个很小的书。
具体来说,首先发送一个生存时间字段为1的数据报,收到ICMP超时报文,然后通过发送生存时间字段设置为2的数据报来重复上述过程,直到发送ICMP生存时间超时报文的机器是目的主机自身为止。
因为在分组交换网络中每个数据报时独立的,所以由traceroute发送的每个数据报的传送路径实际上互不相同。
认识到这一点很重要。
每个数据报沿着一条路经对中间节点进行取样,因此traceroute可能暗示一条主机间并不存在的连接。
因特网路径经常变动。
在不同的日子或一天的不同时间对同一个目的主机执行几次traceroute命令来探寻这种变动都会得到不同的结果。
为了体现Internet路由的有限可见性,许多网络都维护了一个traceroute服务器traceroute。
Traceroute服务器将显示出从本地网到一个特定目的地执行traceroute的结果。
分布于全球的traceroute服务器的相关信息可在http:
//www.traceroute.org上获得。
四、要求
1、结果分析与保存的数据一致,否则没有实验成绩
2、数据保存名称:
Icmp数据:
w09101-icmp.pcap(网络091班01号arp协议)
实验结果分析报告名称:
实验四利用Wireshark分析ICMP协议_w09101.doc
五、实验步骤
1、ICMP协议分析
步骤1:
在PC1运行Wireshark,开始截获报文,为了只截获和实验内容有关的报文,将Wireshark的CaptrueFilter设置为“NoBroadcastandnoMulticast”;
步骤2:
在PC1以为目标主机,在命令行窗口执行Ping命令,要求ping通10次;
Ping命令为:
ping–n10
将命令行窗口进行截图:
步骤3:
停止截获报文,分析截获的结果,回答下列问题:
1)将抓包结果进行截图(要求只显示ping的数据包):
2)截获的ICMP报文有几种类型?
分别是:
两种类型0和8
3)分析截获的ICMP报文,查看表5.1中要求的字段值,填入表中。
只需要填写6个报文信息。
表5.1ICMP报文分析
报文号
源IP
目的IP
报文格式
代码
标识
序列号
315
10.30.28.12
60.215.128.246
0x5a4c
256/1
316
0x2437
318
0x5a4d
512/2
319
0x2438
323
0x5a4e
768/3
324
0x2439
4)查看ping请求分组,ICMP的type是8和code是0并截图替换下图
5)查看相应得ICMP响应信息,ICMP的type是0和code是0并截图替换下图
6)若要只显示ICMP的echo响应数据包,显示过滤器的规则为icmp.type==0并根据过滤规则进行抓包截图
7)若要只显示ICMP的echo请求数据包,显示过滤器的规则为icmp.type==8并根据过滤规则进行抓包截图
2.ICMP和Traceroute
在Wireshark下,用Traceroute程序俘获ICMP分组。
Traceroute能够映射出通往特定的因特网主机途径的所有中间主机。
源端发送一串ICMP分组到目的端。
发送的第一个分组时,TTL=1;
发送第二个分组时,TTL=2,依次类推。
路由器把经过它的每一个分组TTL字段值减1。
当一个分组到达了路由器时的TTL字段为1时,路由器会发送一个ICMP错误分组(ICMPerrorpacket)给源端。
步骤4:
在PC1上运行Wireshark开始截获报文;
步骤5:
在PC1上执行Tracert命令,如:
Tracert;
将命令窗口进行截图。
图4:
命令提示窗口显示Traceroute程序结果(替换截图)
设置显示过滤器为icmp,图5显示的是一个路由器返回的ICMP超时报告分组(ICMPerrorpacket)。
注意到ICMP超时报告分组中包括的信息比PingICMP中超时报告分组包含的信息多。
图5:
一个扩展ICMP超时报告分组信息的Wireshark窗口(替换截图)
步骤6:
停止截获报文,分析截获的报文,回答下列问题:
1)截获了报文中哪几种ICMP报文?
其类型码和代码各为多少?
ICMP报文类型
类型码(type)
代码(code)
reply
request
Time-to-liveexceeded
2)在截获的报文中,超时报告报文的源地址分别是多少?
10.30.28.110.100.3.2510.100.1.1221.0.95.225221.0.71.161218.56.4.57219.158.96.33219.158.5.178219.158.13.86119.188.127.14123.129.253.98
3)查看ICMPecho分组,是否这个分组和前面使用ping命令的ICMPecho一样?
对于TTL值有什么变化规律。
这个icmp发的echo是增长的而之前的是不变的
4)查看ICMP超时报告分组,它比ICMPecho分组包括的信息多。
对照ICMP协议,分析一下ICMP超时报告分组比ICMPecho分组多包含的信息有哪些?
IP数据报的首部以及TCP或UDP协议的端口号
5)对于ICMP超时报告分组,找出与命令提示窗口截图中的第二跳路由器的接口IP地址为10.100.3.25,在Wireshark抓包图中截图与第二跳路由器的接口IP地址对应的部分并截图。
6)同理,找出第四跳路由器的接口IP地址为221.0.95.225,在Wireshark抓包图中截图与第二跳路由器的接口IP地址对应的部分并截图。
举例如下,命令提示窗口截图:
其中,第二跳路由器的接口IP地址为10.100.3.25,在Wireshark抓包图中截图与第二跳路由器的接口IP地址对应的部分并截图如下。