tcp/ip学习之9: ICMP协议数据分析

tcp/ip学习之9: ICMP协议数据分析

1. 获得ICMP请求响应数据

在终端执行如下命令,如以获得ICMP数据包

C:\Users\cupid>ping 192.168.1.2 -n 1

正在 Ping 192.168.1.2 具有 32 字节的数据:

来自 192.168.1.2 的回复: 字节=32 时间<1ms TTL=255

192.168.1.2 的 Ping 统计信息:

数据包: 已发送 = 1,已接收 = 1,丢失 = 0 (0% 丢失),

往返行程的估计时间(以毫秒为单位):

最短 = 0ms,最长 = 0ms,平均 = 0ms

可以采用抓包工具如下:

2.ICMP的数据格式

ICMP 的数据包格式

ICMP 数据包封装在 IP 数据包中,其格式如下:

字段

长度(字节)

说明

类型

1

ICMP 消息类型(例如,回显请求、目标不可达等)

代码

1

ICMP 消息代码(用于进一步细化类型字段)

校验和

2

ICMP 数据包的校验和

数据

可变

ICMP 数据(例如,回显请求/响应数据、错误信息等)

ICMP 的常见消息类型

类型 0:回显响应(Echo Reply)

类型 3:目标不可达(Destination Unreachable)

类型 5:路由器重定向(Redirect)

类型 8:回显请求(Echo Request)

类型 11:超时(Time Exceeded)

类型 12:参数问题(Parameter Problem)

而ICMP包在IP包中的数据区。

总结如下: 以太网头部---->IP包头部---->ICMP

6+6+2 20 4+N

三. 数据分析

请求数据

0000 02 00 00 30 00 4a 00 e0 4c 68 03 8d 08 00 45 00

0010 00 3c f2 80 00 00 80 01 00 00 c0 a8 01 68 c0 a8

0020 01 02 08 00 4d 39 00 01 00 22 61 62 63 64 65 66

0030 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76

0040 77 61 62 63 64 65 66 67 68 69

首先,我们需要明确数据的格式和各个字段的含义。这段数据是一个完整的以太网帧,包含了以太网头部、IP 头部和 ICMP 数据。

1. 以太网头部(0000 - 0010)

以太网头部的格式如下:

字段名称

长度(字节)

描述

目的 MAC 地址

6

目的设备的 MAC 地址

源 MAC 地址

6

发送设备的 MAC 地址

类型/长度

2

表示上层协议类型(如 IPv4、IPv6)

从数据中提取:

0000 02 00 00 30 00 4a 00 e0 4c 68 03 8d 08 00

目的 MAC 地址:02:00:00:30:00:4a

源 MAC 地址:00:e0:4c:68:03:8d

类型/长度:08 00,表示 IPv4(0x0800)

2. IP 头部(0010 - 0030)

IP 头部的格式如下:

字段名称

长度(字节)

描述

版本

1/4

IP 协议版本(IPv4 为 4)

头部长度

1/4

IP 头部长度(单位为 32 位字)

服务类型

1

服务质量(现在很少用)

总长度

2

整个 IP 数据报的长度(包括头部和数据部分)

标识

2

用于分片和重组

标志

1/3

分片标志

片偏移

2/3

分片偏移量

生存时间(TTL)

1

数据报的最大跳数

协议

1

上层协议类型(如 ICMP、TCP、UDP)

头部校验和

2

IP 头部的校验和

源 IP 地址

4

发送方 IP 地址

目的 IP 地址

4

接收方 IP 地址

从数据中提取:

0010 45 00 00 3c f2 80 00 00 80 01 00 00 c0 a8 01 68

0020 c0 a8 01 02

版本:4(IPv4)

头部长度:5(单位为 32 位字,即 20 字节)

服务类型:0

总长度:00 3c(十进制为 60 字节)

标识:f2 80(十进制为 62080)

标志:0(不分片)

片偏移:0

生存时间(TTL):80(十进制为 128)

协议:01(ICMP)

头部校验和:00 00(校验和通常在发送时计算,这里可能被清零)

源 IP 地址:c0 a8 01 68(十进制为 192.168.1.104)

目的 IP 地址:c0 a8 01 02(十进制为 192.168.1.2)

3. ICMP 数据(0030 - 0040)

ICMP 数据的格式如下:

字段名称

长度(字节)

描述

类型

1

ICMP 消息类型(如回显请求为 8,回显应答为 0)

代码

1

ICMP 消息代码

校验和

2

ICMP 数据的校验和

标识符

2

用于区分不同的请求

序列号

2

用于区分同一请求中的不同数据包

数据

可变

用户数据或测试数据

从数据中提取:

0030 08 00 4d 39 00 01 00 22 61 62 63 64 65 66 67 68

0040 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 61

0050 62 63 64 65 66 67 68 69

类型:08(回显请求)

代码:00(无错误)

校验和:4d 39(十六进制为 0x4d39)

标识符:00 01(十进制为 1)

序列号:00 22(十进制为 34)

数据:61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 61 62 63 64 65 66 67 68 69(ASCII 为 abcdefghijklmnopqrstuvwabcdefghi)

总结

这段数据是一个 ICMP 回显请求(Ping 请求)消息。

以太网头部:

目的 MAC 地址:02:00:00:30:00:4a

源 MAC 地址:00:e0:4c:68:03:8d

类型:IPv4(0x0800)

IP 头部:

版本:IPv4

头部长度:20 字节

总长度:60 字节

标识:62080

TTL:128

协议:ICMP

源 IP 地址:192.168.1.104

目的 IP 地址:192.168.1.2

ICMP 数据:

类型:回显请求(8)

代码:0

校验和:0x4d39

标识符:1

序列号:34

数据:abcdefghijklmnopqrstuvwabcdefghi

这个 ICMP 回显请求是从 IP 地址为 192.168.1.104 的主机发送到 IP 地址为 192.168.1.2 的主机的。

数据响应

0000 00 e0 4c 68 03 8d 02 00 00 30 00 4a 08 00 45 00

0010 00 3c f2 80 00 00 ff 01 45 85 c0 a8 01 02 c0 a8

0020 01 68 00 00 55 39 00 01 00 22 61 62 63 64 65 66

0030 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76

0040 77 61 62 63 64 65 66 67 68 69

我们来逐步解析这段 ICMP 数据。这段数据是一个完整的以太网帧,包含了以太网头部、IP 头部和 ICMP 数据。以下是详细的解析过程:

1. 以太网头部(0000 - 0010)

以太网头部的格式如下:

字段名称

长度(字节)

描述

目的 MAC 地址

6

目的设备的 MAC 地址

源 MAC 地址

6

发送设备的 MAC 地址

类型/长度

2

表示上层协议类型(如 IPv4、IPv6)

从数据中提取:

0000 00 e0 4c 68 03 8d 02 00 00 30 00 4a 08 00

目的 MAC 地址:00:e0:4c:68:03:8d

源 MAC 地址:02:00:00:30:00:4a

类型/长度:08 00,表示 IPv4(0x0800)

2. IP 头部(0010 - 0030)

IP 头部的格式如下:

字段名称

长度(字节)

描述

版本

1/4

IP 协议版本(IPv4 为 4)

头部长度

1/4

IP 头部长度(单位为 32 位字)

服务类型

1

服务质量(现在很少用)

总长度

2

整个 IP 数据报的长度(包括头部和数据部分)

标识

2

用于分片和重组

标志

1/3

分片标志

片偏移

2/3

分片偏移量

生存时间(TTL)

1

数据报的最大跳数

协议

1

上层协议类型(如 ICMP、TCP、UDP)

头部校验和

2

IP 头部的校验和

源 IP 地址

4

发送方 IP 地址

目的 IP 地址

4

接收方 IP 地址

从数据中提取:

0010 45 00 00 3c f2 80 00 00 ff 01 45 85 c0 a8 01 02

0020 c0 a8 01 68

版本:4(IPv4)

头部长度:5(单位为 32 位字,即 20 字节)

服务类型:0

总长度:00 3c(十进制为 60 字节)

标识:f2 80(十进制为 62080)

标志:0(不分片)

片偏移:0

生存时间(TTL):ff(十进制为 255)

协议:01(ICMP)

头部校验和:45 85(十六进制为 0x4585)

源 IP 地址:c0 a8 01 02(十进制为 192.168.1.2)

目的 IP 地址:c0 a8 01 68(十进制为 192.168.1.104)

3. ICMP 数据(0030 - 0040)

ICMP 数据的格式如下:

字段名称

长度(字节)

描述

类型

1

ICMP 消息类型(如回显请求为 8,回显应答为 0)

代码

1

ICMP 消息代码

校验和

2

ICMP 数据的校验和

标识符

2

用于区分不同的请求

序列号

2

用于区分同一请求中的不同数据包

数据

可变

用户数据或测试数据

从数据中提取:

0030 00 00 55 39 00 01 00 22 61 62 63 64 65 66 67 68

0040 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 61

0050 62 63 64 65 66 67 68 69

类型:00(回显应答)

代码:00(无错误)

校验和:55 39(十六进制为 0x5539)

标识符:00 01(十进制为 1)

序列号:00 22(十进制为 34)

数据:61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 61 62 63 64 65 66 67 68 69(ASCII 为 abcdefghijklmnopqrstuvwabcdefghi)

总结

这段数据是一个 ICMP 回显应答(Ping 响应)消息,具体信息如下:

以太网头部:

目的 MAC 地址:00:e0:4c:68:03:8d

源 MAC 地址:02:00:00:30:00:4a

类型:IPv4(0x0800)

IP 头部:

版本:IPv4

头部长度:20 字节

总长度:60 字节

标识:62080

TTL:255

协议:ICMP

源 IP 地址:192.168.1.2

目的 IP 地址:192.168.1.104

ICMP 数据:

类型:回显应答(0)

代码:0

校验和:0x5539

相关推荐

《王者荣耀》S38赛季王者峡谷调整内容
365篮球直播吧App

《王者荣耀》S38赛季王者峡谷调整内容

📅 12-29 👁️ 9463
海尔空调如何清洗 海尔空调的清洗方法【详解】
365bet提款多久到账

海尔空调如何清洗 海尔空调的清洗方法【详解】

📅 07-24 👁️ 8686
2024办理大专学历证需要多少钱?学费1500
365bet提款多久到账

2024办理大专学历证需要多少钱?学费1500

📅 09-20 👁️ 7700
杨延昭为什么被称作杨六郎?和排行无关,就因为这颗著名的星座
《神武5》封系门派常用命格封印命中率测试
365bet提款多久到账

《神武5》封系门派常用命格封印命中率测试

📅 09-15 👁️ 3794
瑞典点球胜韩国VAR再显威 视频裁判如何平反冤假错案
365篮球直播吧App

瑞典点球胜韩国VAR再显威 视频裁判如何平反冤假错案

📅 07-10 👁️ 2652
淘宝返款多久?(怎么返?)
48365大写

淘宝返款多久?(怎么返?)

📅 08-07 👁️ 6813
文件系统、常见类型及其特点
48365大写

文件系统、常见类型及其特点

📅 10-04 👁️ 4613
吃鸡到底为什么叫吃鸡?为什么不是吃牛吃羊吃猪?突然袭来的好奇心,原来真的有典故!