作者:irislc时间:2025-06-13 12:07:00分类:报文拆分
实验图如下:
很经典的一个点对点的单播实验图,让PC1对PC2进行发包,以这个产生的ICMP包为基础去进行报文的拆分。
物理层数据帧的情况:
Frame 3: 74 bytes on wire (592 bits), 74 bytes captured (592 bits) on interface 0 #第3号帧,对应的也是抓到的第三个包;线路74字节,实际捕获74字节。
Interface id: 0 (-) #接口ID
Interface name: -
Encapsulation type: Ethernet (1) #封装类型
Arrival Time: Jan 27, 1970 15:03:09.234000000 中国标准时间 #捕获的日期和时间(正常来说1970的中国时间戳应该是上午八点)
[Time shift for this packet: 0.000000000 seconds]
Epoch Time: 2271789.234000000 seconds
[Time delta from previous captured frame: 0.016000000 seconds] #这个包和上一个包的时间间隔
[Time delta from previous displayed frame: 0.016000000 seconds] #这个包和第一帧的时间间隔
[Time since reference or first frame: 0.016000000 seconds]
Frame Number: 3 #帧序号,也就是抓到的第三个包
Frame Length: 74 bytes (592 bits) #帧长度
Capture Length: 74 bytes (592 bits) #实际捕获长度
[Frame is marked: False] #此帧是否做了标记:否
[Frame is ignored: False] #此帧是否被忽略:否
[Protocols in frame: eth:ethertype:ip:icmp:data] #帧内封装的协议层次结构
[Coloring Rule Name: ICMP] #着色标记的协议名称
[Coloring Rule String: icmp || icmpv6] #着色规则显示的字符串
链路层-Ethernet Ⅱ帧的情况:
Ethernet II, Src: HuaweiTe_f3:08:35 (54:89:98:f3:08:35), Dst: HuaweiTe_1c:09:63 (54:89:98:1c:09:63) #可以看到源MAC和目的MAC,这里的HuaweiTe_f3:08:35是设备厂商的“组织唯一标识符”
Destination: HuaweiTe_1c:09:63 (54:89:98:1c:09:63) #DMAC,也就是接收方的MAC地址,占6个字节
Address: HuaweiTe_1c:09:63 (54:89:98:1c:09:63)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast) #IG位为0,代表单播,也就是后面的unicast
Source: HuaweiTe_f3:08:35 (54:89:98:f3:08:35) #SMAC,也就是发送方,占6个字节
Address: HuaweiTe_f3:08:35 (54:89:98:f3:08:35)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast) #IG位为0,代表单播,也就是后面的unicast
Type: IPv4 (0x0800) #协议类型,0x0800代表的是ipv4
一个完整的以太帧由以下格式组成
字段 | 长度 | 含义 |
---|---|---|
DMAC | 6字节 | 目的MAC地址,IPv4为6字节,该字段标识帧的接收者。 |
SMAC | 6字节 | 源MAC地址,IPv4为6字节,该字段标识帧的发送者。 |
Type | 2字节 | 协议类型。 |
Data | 46~1500字节 | 数据字段,标识帧的负载(可能包含填充位)。 数据字段的最小长度必须为46字节以保证帧长至少为64字节,这意味着传输1字节信息也必须使用46字节的数据字段。 如果填入该字段的信息少于46字节,该字段的其余部分也必须进行填充。数据字段的最大长度为1500字节。 以太帧的长度必须为整数字节,因此帧的负载长度不足整数字节,需插入填充字段以保证数据帧的长度为整数字节。 |
FCS | 4字节 | 帧校验序列FCS(Frame Check Sequence)是为接收者提供判断是否传输错误的一种方法,如果发现错误,丢弃此帧。 FCS只是通用叫法,具体的FCS还可以细分多种校验方法。在以太帧中,FCS通常采用循环冗余码校验CRC(Cyclical Redundancy Check)。 |
网络层-IP协议数据包情况:
Internet Protocol Version 4, Src: 10.10.10.10, Dst: 20.20.20.20
0100 .... = Version: 4 #代表IPV4协议
.... 0101 = Header Length: 20 bytes (5) #IP包头部的总长度
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT) #差分服务字段
0000 00.. = Differentiated Services Codepoint: Default (0)
.... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0)
Total Length: 60 #IP包总长度
Identification: 0x0ad4 (2772) #标记的字段
Flags: 0x4000, Don't fragment #标志位
0... .... .... .... = Reserved bit: Not set #保留位,必须为0。
.1.. .... .... .... = Don't fragment: Set #能否分片位,0表示可以分片,1表示不能分片。
..0. .... .... .... = More fragments: Not set #表示是否该报文为最后一片,0表示最后一片,1代表后面还有。
...0 0000 0000 0000 = Fragment offset: 0 #片偏移:分片重组时会用到该字段。表示较长的分组在分片后,某片在原分组中的相对位置。以8个字节为偏移单位。
Time to live: 128 #生存时间:可经过的最多路由数,即数据包在网络中可通过的路由器数的最大值。
Protocol: ICMP (1) #协议
Header checksum: 0xb3b1 [validation disabled] #首部检验和,只检验数据包的首部,不检验数据部分。这里不采用CRC检验码,而采用简单的计算方法。
[Header checksum status: Unverified]
Source: 10.10.10.10 #目的IP地址。
Destination: 20.20.20.20 #填充字段,全填0。
网络层-ICMP数据包情况:
Internet Control Message Protocol
Type: 8 (Echo (ping) request) #报文类型
Code: 0 #代码
Checksum: 0xb272 [correct] #校验和,使用和IP相同的加法校验和算法,但是ICMP校验和仅覆盖ICMP报文。
[Checksum Status: Good]
Identifier (BE): 54282 (0xd40a)
Identifier (LE): 2772 (0x0ad4)
Sequence number (BE): 1 (0x0001)
Sequence number (LE): 256 (0x0100)
[Response frame: 4]
Data (32 bytes) #ICMP数据包大小
Data: 08090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f…
[Length: 32]
ICMP消息类型代码
类型Type | 代码Code | 描述 |
---|---|---|
0 | 0 | 回显应答(ping应答) |
3 | 0 | 网络不可达 |
3 | 1 | 主机不可达 |
3 | 2 | 协议不可达 |
3 | 3 | 端口不可达 |
3 | 4 | 需要进行分片但设置不分片比特 |
3 | 5 | 源站选路失败 |
3 | 6 | 目的网络不认识 |
3 | 7 | 目的主机不认识 |
3 | 9 | 目的网络被强制禁止 |
3 | 10 | 目的主机被强制禁止 |
3 | 11 | 由于TOS,网络不可达 |
3 | 12 | 由于TOS,主机不可达 |
3 | 13 | 由于过滤,通信被强制禁止 |
3 | 14 | 主机越权 |
3 | 15 | 优先权中止生效 |
4 | 0 | 源端被关闭 |
5 | 0 | 对网络重定向 |
5 | 1 | 对主机重定向 |
5 | 2 | 对服务类型和网络重定向 |
5 | 3 | 对服务类型和主机重定向 |
8 | 0 | 请求回显(ping请求) |
9 | 0 | 路由器通告 |
10 | 0 | 路由器请求 |
11 | 0 | 传输期间生存时间为0 |
11 | 1 | 在数据报组装期间生存时间为0 |
12 | 0 | 坏的IP首部 |
12 | 1 | 缺少必须的选项 |
17 | 0 | 地址掩码请求 |
18 | 0 | 地址掩码应答 |
至此,一个点到点的单播ICMP包拆解完毕
参考资料:《华为数通报文格式描述》、《泰克徐来hcia课程讲解》、《RFC Editor》