【愚公系列】2022年02月 wireshark系列-数据抓包分析之ICMP协议02
一、数据抓包分析之ICMP协议02
任务描述:分析ICMP数据包
按照惯例,这里先介绍下ICMP的首部结构,让学生有个大致的了解。
一、ICMP首部
在上面的表中,ICMP首部的各字段含义如下所示:
类型(Type):ICMP消息基于RFC规范的类型域分类。
代码(Code):ICMP消息基于RFC规范的子类型
校验和(Checksum):用来保证ICMP头和数据在抵达目的地时的完整性。
可变域(Variable):依赖于类型和代码域的部分。
在上表中有个ICMP类型字段,这里详细介绍一下ICMP中可用的类型。
1.ICMP请求报文类型
ICMP请求报文可用的类型如下:
ICMP请求报文类型
2.ICMP响应报文类型
ICMP请求报文可用的类型如下:
ICMP响应报文类型
3.ICMP协议提供的诊断报文类型
ICMP协议提供的诊断报文类型
二、分析ICMP数据包—Echo Ping 请求包
下面以捕获的icmp-echo ping.pcapng文件为例,分析ICMP数据包。打开icmp-echo ping.pcapng,如下
在该文件中包含8个数据包,这里我们以前两个数据帧为例(帧号为2和3),分别分析Echo Ping请求包和Echo Ping 响应包。Echo Ping 请求包如下
以上信息显示了Echo Ping请求包的详细信息。在Wireshark的Packet Details面板中,可以看大四行信息。学习过以前Wireshark抓包分析的同学,可能对前三行信息都比较熟悉,这里不过多重复。我们来直接看ICMP首部的详细信息,并对其内容进行详细介绍,如下
Internet Control Message Protocol
Type: 8 (Echo (ping) request) #类型
Code: 0 #代码
Checksum: 0x4d35 [correct] #校验和
Identifier (BE): 1 (0x0001) #标识符(BE)
Identifier (LE): 256 (0x0100) #标识符(LE)
Sequence number (BE): 38 (0x0026) #序列号(BE)
Sequence number (LE): 9728 (0x2600) #序列号(LE)
Response frame: 3 #响应帧
Data (32 bytes) #数据
Data: 6162636465666768696a6b6c6d6e6f707172737475767761...
Length: 32
以上是ICMP首部的详细介绍。从以上信息中,可以看到Echo Ping 请求包的类型为8,代码为0,还有校验和、标识符、序列号等信息。包中的序列号是用来匹配请求和响应包的,请求包和响应包的序列号是相同的。
这里需要注意的是,echo和ping经常会被混淆,大家请记住,ping实际上是一个工具的名字,ping工具用来发送ICMP echo 请求数据包。
将该首部中的每个字段添加到ICMP首部,显示结果如下
ICMP协议首部格式
三、分析ICMP数据包—Echo Ping 响应包
Echo Ping响应包如下图
我们还是直接来分析ICMP首部,如下
Internet Control Message Protocol
Type: 0 (Echo (ping) reply) #类型
Code: 0 #代码
Checksum: 0x5535 [correct] #校验和
Identifier (BE): 1 (0x0001) #标识符(BE)
Identifier (LE): 256 (0x0100) #标识符(LE)
Sequence number (BE): 38 (0x0026) #序列号(BE)
Sequence number (LE): 9728 (0x2600) #序列号(LE)
Response frame: 2 #请求帧
Response time: 1.743 ms #响应时间
Data (32 bytes) #数据
Data: 6162636465666768696a6b6c6d6e6f707172737475767761...
Length: 32
从以上信息中,可以看到类型为0,代码为0 ,表示该包是一个Echo 响应包。在该数据包中的序列号和帧号为2的数据包的序列号是相同的,说明这个数据包是响应帧数为2的数据包的Echo 请求的。
将该首部中的每个字段添加到ICMP首部,显示结果如下
ICMP协议首部格式
四、分析ICMP数据包—请求超时数据包
下面以icmmp.pcapng文件为例,来分析请求超时数据包,打开icmmp.pcapng文件,如下
可以看到,在info列中,很多的数据包都是超时的,我们以帧数为26,对ICMP首部进行分析,如下
协议内容较多,不着急慢慢来看。
Internet Control Message Protocol #ICMP协议
Type: 11 (Time-to-live exceeded) #类型为11,表示超时
Code: 0 (Time to live exceeded in transit) #代码为0
Checksum: 0xf4ff [correct] #校验和
Internet Protocol Version 4, Src: 10.1.1.142 (10.1.1.142), Dst: 4.2.2.1 (4.2.2.1) #IPv4首部信息
Version: 4 #IP协议版本
Header Length: 20 bytes #首部长度
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport)) #服务标识符
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..00 = Explicit Congestion Notification: Not-ECT (Not ECN-Capable Transport) (0x00)
Total Length: 92 #总长度
Identification: 0x6eaa (28330) #标识符
Flags: 0x00 #标志
0... .... = Reserved bit: Not set
.0.. .... = Don't fragment: Not set
..0. .... = More fragments: Not set
Fragment offset: 0 #分片偏移
Time to live: 1 #生存期
Expert Info (Note/Sequence): "Time To Live" only 1
"Time To Live" only 1
Severity level: Note
Group: Sequence
Protocol: ICMP (1) #协议为ICMP
Header checksum: 0x3966 [validation disabled] #首部校验和
Good: False
Bad: False
Source: 10.1.1.142 (10.1.1.142) #源IP地址
Destination: 4.2.2.1 (4.2.2.1) #目标IP地址
Source GeoIP: Unknown #源IP地址地理位置
Destination GeoIP: Unknown #目标IP地址地理位置
Internet Control Message Protocol #ICMP协议
Type: 8 (Echo (ping) request) #类型
Code: 0 #代码
Checksum: 0xf7d4 #校验和
Identifier (BE): 1 (0x0001) #标识符(BE)
Identifier (LE): 256 (0x0100) #标识符(LE)
Sequence number (BE): 42 (0x002a) #序列号(BE)
Sequence number (LE): 10752 (0x2a00) #序列号(LE)
Data (64 bytes) #数据
Data: 000000000000000000000000000000000000000000000000...
Length: 64 #数据报的大小为64个字节
上面的信息比较多,同学们分析协议的时候,抓住重要部分即可。可以看出该包类型为11,代码为0,则表示该数据包是一个请求超时的数据包,并且还能发现这个数据包的TTL值为1,也就意味着这个数据包会在它遇到的第一个路由器处被丢掉。这就是因为主机(10.1.1.142)与4.2.2.1通信,之间会经过好多个路由器(至少会有一个),所以这个数据包将不会到达目的地。由此,就可以判断出该网络的链接情况了。
五、分析ICMP数据包—目标主机不可达数据包
接下来分析下主机不可达的数据包,也是本次实验的最后一部分内容。还是以icmmp.pcapng文件为例,如下
可以看出,之前说的网络不通、主机不可达、请求超时等网络情况,很多时候都是集中出现。我们以帧号44为例,具体看下ICMP信息
内容也不少,还是慢慢道来
Internet Control Message Protocol #ICMP协议
Type: 3 (Destination unreachable) #类型为3,表示目标主机不可达
Code: 3 (Port unreachable) #代码为3,表示端口不可达。为1时,表示主机不可达
Checksum: 0x1a14 [correct] #校验和
Internet Protocol Version 4, Src: 10.1.1.142 (10.1.1.142), Dst: 172.19.104.2 (172.19.104.2)
Version: 4 #IP协议版本
Header Length: 20 bytes #首部长度
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport)) #服务标识符
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..00 = Explicit Congestion Notification: Not-ECT (Not ECN-Capable Transport) (0x00)
Total Length: 78 #总长度
Identification: 0x6ec9 (28361) #标识符
Flags: 0x00 #标志
0... .... = Reserved bit: Not set
.0.. .... = Don't fragment: Not set
..0. .... = More fragments: Not set
Fragment offset: 0 #分片偏移
Time to live: 127 #生存期
Protocol: UDP (17) #协议使用UDP,此处也可以用TCP
Header checksum: 0xad31 [validation disabled] #首部校验和
Good: False
Bad: False
Source: 10.1.1.142 (10.1.1.142) #源IP地址
Destination: 172.19.104.2 (172.19.104.2) #目标IP地址
Source GeoIP: Unknown
Destination GeoIP: Unknown
User Datagram Protocol, Src Port: 137 (137), Dst Port: 137 (137)
Source Port: 137 (137) #源端口号
Destination Port: 137 (137) #目标端口号
Length: 58
Checksum: 0xe19c [unchecked, not all data available]
Good Checksum: False
Bad Checksum: False
Stream index: 6
根据以上介绍的重要字段可以看出,此包中的ICMP协议类型为3,代码为3,这表示该包是一个目标主机不可达的数据包。
- 点赞
- 收藏
- 关注作者
评论(0)