【愚公系列】2022年02月 wireshark系列-数据抓包分析之ICMP协议02

愚公搬代码 发表于 2022/02/28 22:02:03 2022/02/28
【摘要】 一、数据抓包分析之ICMP协议02任务描述:分析ICMP数据包按照惯例,这里先介绍下ICMP的首部结构,让学生有个大致的了解。一、ICMP首部在上面的表中,ICMP首部的各字段含义如下所示: 类型(Type):ICMP消息基于RFC规范的类型域分类。 代码(Code):ICMP消息基于RFC规范的子类型 校验和(Checksum):用来保证ICMP头和数据在抵达目的地时的完整性...

一、数据抓包分析之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,这表示该包是一个目标主机不可达的数据包。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。