使用wireshark抓包查看IPV4数据包和IPV6数据包的区别
实验环境:win10操作系统,安装了wireshark软件,能正常链接互联网。
一、IPV4数据包
1、开始抓包。双击打开wireshark软件,双击以太网。可以看到许多的不同协议的数据包。


2、生成并查找目标流量。ping baidu.com,在wireshark搜索栏输入icmp就可以看到当前的数据包。(因为ping是ICMP协议中的一个命令)

3、查看IPV4数据报的结构。双击第一个数据报,number为6888这个,显示:
数据链路层:展开 “Ethernet II” 部分,这里记录的是物理地址信息,包含源和目标的 MAC 地址。
网络层:展开Internet Protocol Version 4,Wireshark以清晰的键值对形式显示了整个IPv4报头.
| Pv4 报头字段 | 在 Wireshark 中的含义和查看要点 |
|---|---|
| 0100 … = Version | IP 版本号,固定为 4,表明这是一个 IPv4 数据报。 |
| … 0101 = Header Length | IP 报头长度。值为 5 代表 5 * 4 = 20 字节(无选项),若大于5则意味着有选项字段。 |
| Differentiated Services Field | 服务类型(ToS)字段,包含用于 QoS 的 DSCP 和 ECN 信息。 |
| Total Length | IP 报文总长度(报头 + 数据),单位是字节。 |
| Identification | 标识字段,用于分片重装。 |
| Flags | 标志字段,如 0x02 表示“不分片 (DF)”。 |
| Fragment Offset | 片偏移,指示分片在原报文中的位置。 |
| Time to Live | 生存时间(TTL),每经过一跳减 1,从初始值(如 64)可大致推断操作系统。 |
| Protocol | 上层协议,常见值如 6 (TCP)、17 (UDP)、1 (ICMP)。 |
| Header Checksum | 报头校验和,Wireshark通常用“正确”或“错误”标记。 |
| Source Address | 发送方 IPv4 地址。 |
| Destination Address | 接收方 IPv4 地址 |
展开 Internet Control Protocol:
数据包本身就是 ICMP(Internet Control Message Protocol,互联网控制消息协议) 报文,它和 TCP、UDP 一样都是 IP 的“上层协议”,但 ICMP 不依赖传输层,而是直接承载在 IPv4 报头之后。
| CMP 字段 | 含义 | 常见值 |
|---|---|---|
| Type | 消息类型 | 8 = Echo 请求,0 = Echo 应答,3 = 目的不可达,11 = 超时 |
| Code | 类型下的细分代码 | 通常为 0,部分类型(如目的不可达)有不同 Code(0=网络不可达,1=主机不可达等) |
| Checksum | ICMP 报文校验和 | Wireshark 会自动验证并标记“正确”或“错误” |
| Identifier | 标识符(用于 Ping) | 通常为进程 ID,帮助匹配请求和应答 |
| Sequence Number | 序列号 | 每发一个 Ping 请求递增 1 |
| Data | 可选负载数据 | 通常是时间戳或填充字符,用来计算往返时延 |
保存结果
抓取完感兴趣的数据包后,可以从 File (文件) → Save (保存) 菜单,将当前捕获的所有数据包保存为一个 .pcap 或 .pcapng 文件,方便下次用 Wireshark 打开继续分析。
二、IPV6数据包
使用ipconfig /all命令查看发现,我的电脑只有 fe80::4a3:f50c:35c7:bcc%15 这一个 IPv6 地址,这是一个本地链路地址,只能在同一个广播域内通信,没有分配任何公网 IPv6 地址(例如 240e: 开头的那种)。因此只能通过捕获本机回环(Loopback)的 IPv6 流量(无需外网)
1、重新打开wireshark,选择npcap loopback adapter。双击打开。


1、生成 IPv6 流量:命令行中输入:ping ::1
2、抓包。在显示过滤器栏输入 icmpv6.type == 128,显示自己刚执行的 ping ::1 命令产生的流量
3、双击第一条数据,打开Internet Protocol Version 6:
观察 IPv6 报头的所有字段
| 字段 | 长度 | 含义 |
|---|---|---|
| Version | 4 位 | IP 版本号,对于 IPv6 固定为 6。 |
| Traffic Class | 8 位 | 流量类别,用于 QoS(服务质量),类似于 IPv4 的 Type of Service (ToS) 字段。 |
| Flow Label | 20 位 | 流标签,用于标识属于同一流量的数据包(如视频流),以便路由器特殊处理。IPv4 无此字段。 |
| Payload Length | 16 位 | 有效载荷长度,指的是 IPv6 基本报头之后 部分的字节数(包括扩展报头和上层协议数据)。不包含基本报头的 40 字节。 |
| Next Header | 8 位 | 下一个报头,功能与 IPv4 的 Protocol 字段类似。标识紧跟 IPv6 基本报头的是哪种扩展报头或上层协议。常见的值:58 = ICMPv6,6 = TCP,17 = UDP。 |
| Hop Limit | 8 位 | 跳数限制,等同于 IPv4 的 Time to Live (TTL)。每经过一个路由器减 1,减到 0 时丢弃。 |
| Source Address | 128 位 | 源 IPv6 地址。在你的 ping ::1 中,这个地址是 ::1(本机回环地址)。 |
| Destination Address | 128 位 | 目的 IPv6 地址。在你的 ping ::1 中,也是 ::1。 |
注意:IPv6 报头 没有 这些字段(与 IPv4 相比):
IHL、Identification、Flags、Fragment Offset、Header Checksum。这些功能要么被移除(校验和),要么通过扩展报头实现(分片)。
数据链路层(例如 Ethernet II 帧)在 Wireshark 中,数据链路层位于 Internet Protocol Version 6 之上,通常展开后名为 Ethernet II(如果抓的是真实网卡)。对于 Npcap Loopback Adapter 捕获的回环流量,数据链路层会显示为 “Loopback” 或 “NULL/Loopback”,结构不太标准。以最常见的以太网帧为例:
| 字段 | 长度 | 含义 |
|---|---|---|
| Destination MAC | 6 字节 | 目的设备的 MAC 地址(物理地址)。 |
| Source MAC | 6 字节 | 源设备的 MAC 地址。 |
| Type / Length | 2 字节 | 上层协议类型。对于 IPv6,该字段值为 0x86DD。 |
| Payload (Data) | 可变 | 包含网络层数据(即 IPv6 数据报)。 |
| Frame Check Sequence | 4 字节 | 帧校验序列(FCS),用于检测数据帧传输错误。 |
捕获的
ping ::1包中,由于是回环虚拟接口,看不到标准的 Ethernet II 头,而是看到 “NULL” 链路层头。这没关系,不影响观察 IPv6 报头。
网络层(就是 IPv6) Internet Protocol Version 6,负责逻辑寻址(IP 地址)、路由和分片(通过扩展报头)。
报头对比
| 特性 | IPv4 报头 | IPv6 报头 |
|---|---|---|
| 报头长度 | 可变(20-60 字节) | 固定 40 字节 |
| 分片相关字段 | 有(ID、Flags、Offset) | 无(改用扩展报头) |
| 校验和 | 有(Header Checksum) | 无 |
| 选项 | 包含在报头内 | 使用独立扩展报头 |
| 流标签 | 无 | 有(Flow Label) |
结论:IPV4数据报报头和IPV6数据报报头对应关系
| IPv4 字段 | IPv6 字段 | 对应说明 |
|---|---|---|
| Version (4位) | Version (4位) | 直接对应,但 IPv4 值为 4,IPv6 值为 6。 |
| IHL (4位) | 无 | IPv6 报头固定为 40 字节,无需长度字段。 |
| Type of Service (8位) | Traffic Class (8位) | 功能相似,均用于 QoS 和 DSCP/ECN。 |
| Total Length (16位) | Payload Length (16位) | 功能相似:IPv4 总长度 = 报头 + 数据;IPv6 有效载荷长度 = 扩展报头 + 上层数据(不含基本报头)。 |
| Identification (16位) | 无 | IPv6 不支持中间路由器分片,仅源端分片,此字段由扩展报头处理。 |
| Flags (3位) | 无 | 同上,分片控制信息由 IPv6 分片扩展报头承载。 |
| Fragment Offset (13位) | 无 | 同上。 |
| Time to Live (8位) | Hop Limit (8位) | 直接对应,功能均为限制报文最大跳数。 |
| Protocol (8位) | Next Header (8位) | 直接对应:标识上层协议或 IPv6 扩展报头类型。 |
| Header Checksum (16位) | 无 | IPv6 移除此字段,依赖链路层和上层校验。 |
| Source Address (32位) | Source Address (128位) | 直接对应,地址长度扩展。 |
| Destination Address (32位) | Destination Address (128位) | 直接对应,地址长度扩展。 |
| Options (变长) | 扩展报头 (多个) | 功能对应:IPv4 选项变长且受限;IPv6 使用独立扩展报头(如逐跳选项、路由等)。 |
| — | Flow Label (20位) | IPv6 新增字段,用于标识同一流的数据包,IPv4 无对应。 |
说明:
- IPv6 移除了
IHL、Identification、Flags、Fragment Offset、Header Checksum五个字段。 - 分片功能由 IPv6 的“分片扩展报头”实现,不作为基本报头字段。
Flow Label是 IPv6 新增字段,无 IPv4 对应项。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)