【网络安全】从IP头部看网络通信:IPv4、IPv6与抓包工具 Wireshark 实战

发布于:2025-06-25 ⋅ 阅读:(14) ⋅ 点赞:(0)

从IP头部看网络通信:IPv4、IPv6与抓包工具 Wireshark实战

在网络安全分析和数据通信的世界中,一切都始于“数据包”。数据包是网络上传输的基本单位,而数据包的结构与内容,正是我们理解网络行为的核心。本文将带你深入了解 IP 协议中两种主流版本(IPv4 与 IPv6)的报文头结构,并介绍如何使用 Wireshark 等网络抓包工具高效分析这些数据包。


1. 什么是IP协议?

IP(Internet Protocol,互联网协议)是互联网通信的基石。它负责将数据包从源地址发送到目标地址。IP 协议规定了数据包的格式和路由方式,是实现不同设备之间通信的“邮递系统”。

目前,互联网上主要使用两个版本的 IP 协议:

  • IPv4(Internet Protocol version 4)
  • IPv6(Internet Protocol version 6)

它们的核心区别除了地址长度外,也体现在头部结构的不同设计上。


2. IPv4头部结构解析

在这里插入图片描述

IPv4 是目前最广泛使用的 IP 版本,其报文头部由 13 个字段组成:

字段名 说明
Version 指明协议版本(4)
IHL(Header Length) 头部长度,单位为 4 字节
Type of Service(ToS) 指定服务质量,决定优先级
Total Length 包含头部与数据的总长度
Identification 数据包唯一 ID,用于分片重组
Flags 分片控制位
Fragment Offset 分片偏移量
Time to Live(TTL) 生存时间,防止包在网络中无限循环
Protocol 数据部分所用的上层协议(如 TCP、UDP)
Header Checksum 头部校验和
Source Address 源 IP 地址
Destination Address 目的 IP 地址
Options(可选) 安全性、记录路由等附加信息

IPv4 的设计虽然精巧,但随着互联网发展,地址资源逐渐枯竭,这也促使了 IPv6 的推广。


3. IPv6头部结构解析

在这里插入图片描述

IPv6 相较于 IPv4 更为简洁高效,仅包含 8 个字段:

字段名 说明
Version 协议版本(6)
Traffic Class 类似 IPv4 的 ToS,用于服务分类
Flow Label 流标签,标记数据流以便路由器识别
Payload Length 数据部分长度
Next Header 下一个头部类型(如 TCP、UDP)
Hop Limit 与 TTL 类似,防止无限转发
Source Address 源 IPv6 地址
Destination Address 目的 IPv6 地址

IPv6 采用 128 位地址,极大地扩展了地址空间,并简化了处理流程。


4. 网络抓包实战:Wireshark的使用

要理解或调查网络中发生了什么,仅靠理论还不够。Wireshark 是一款开源网络协议分析工具,能够实时捕捉网络流量,并以人类可读的方式展示每个数据包的详细内容。

Wireshark基本功能

  • 实时捕获网络数据包
  • 展示每个包的协议、源/目的地址、端口、长度等
  • 支持协议层级解析(链路层、IP层、传输层、应用层)
  • 使用强大的过滤器进行精确分析

常用显示过滤器

Wireshark 提供强大的显示过滤器功能,可以从海量数据包中筛选出你感兴趣的信息。
在这里插入图片描述

协议过滤器

协议过滤是使用显示过滤器最简单的方法之一。您只需输入要过滤的协议名称即可。例如,要过滤 DNS 数据包,只需在过滤器工具栏中输入dns即可。以下是一些可以过滤的协议列表:

  1. dns
  2. http
  3. ftp
  4. ssh
  5. arp
  6. telnet
  7. icmp

过滤 IP 地址

您可以使用显示过滤器来定位具有特定 IP 地址的数据包。

例如,如果要过滤包含特定 IP 地址的数据包,请使用ip.addr,后跟空格、等号==比较运算符以及 IP 地址。以下是针对 IP 地址172.21.224.2进行过滤的显示过滤器示例:

ip.addr == 172.21.224.2

要过滤来自特定源 IP 地址的数据包,可以使用ip.src过滤器。以下示例查找源 IP 地址10.10.10.10 :

ip.src == 10.10.10.10

要过滤发往特定目标 IP 地址的数据包,可以使用ip.dst过滤器。以下示例搜索目标 IP 地址4.4.4.4 :

ip.dst == 4.4.4.4

过滤 MAC 地址

您还可以根据媒体访问控制 (MAC) 地址过滤数据包。MAC 地址是分配给网络上每个物理设备的唯一字母数字标识符。

eth.addr == 00:70:f4:23:18:c4

端口过滤器

端口过滤用于根据端口号过滤数据包。当您想要隔离特定类型的流量时,此功能非常有用。DNS 流量使用 TCP 或 UDP 端口 53,因此这将仅列出与 DNS 查询和响应相关的流量。

例如,如果想过滤 UDP 端口:

udp.port == 53

同样,也可以过滤 TCP 端口:

tcp.port == 25

使用比较运算符

运算类型 符号 示例
相等(equal) ==eq ip.src == 8.8.8.8
不等(not equal) !=ne ip.dst != 192.168.1.1
大于(greater than) >gt tcp.port > 1000
小于(less than) <lt udp.port < 1024
大于等于(>=) >=ge tcp.port >= 80
小于等于(<=) <=le tcp.port <= 443

Follow TCP/UDP Stream:追踪会话流

Wireshark 提供“Follow Stream”功能,可以将某个会话的数据包重新组合成完整的通信内容,非常适合分析 HTTP 请求与响应等应用层数据。

在这里插入图片描述
操作步骤:

  • 右键点击任意相关数据包
  • 选择 Follow > TCP StreamUDP Stream
  • 查看重组后的对话内容

Reference

[1] https://www.wireshark.org/docs/wsug_html/