当前位置: 首页 > news >正文

wireshark抓包看ip协议

注意:Wireshark 中没有单独一个叫做“IP”的协议条目。

在 Wireshark 的 “Protocol” 列里,你永远不会看到一个孤零零的IP包。你看到的总是TCPUDPICMPARP等。但这并不意味着 IP 协议不存在,恰恰相反,IP 协议是所有这些数据包的“隐形骨架”——它无处不在,但从不以“主角”身份单独出现。


1. 为什么 Wireshark 不显示单独的 IP?

因为IP 协议从不单独传输。它的唯一使命就是为其他协议(TCP、UDP、ICMP 等)提供传输服务

这就像你写一封信:

  • 信纸上的内容= 应用层数据(HTTP 请求)

  • 信封上的收/发件人姓名= 传输层(TCP/UDP 端口)

  • 信封上的收/发件人地址= 网络层(IP 地址

  • 快递单号= 链路层(MAC 地址)

你永远不会收到一个只有“地址”而没有“信纸”或“收件人姓名”的空信封。同样,网络上也没有只包含 IP 头部、没有任何上层数据的“纯 IP 包”。

2. Wireshark 中的实际显示

当你抓包时,看到的是这样的:

No. Time Source Destination Protocol Info 1 0.000000 192.168.1.2 8.8.8.8 ICMP Echo (ping) request 2 0.012345 192.168.1.2 8.8.8.8 TCP 80 → 54321 [SYN] 3 0.025000 192.168.1.2 8.8.8.8 UDP 53 → 54321
  • Protocol 列显示的是“最上层”的协议ICMPTCPUDP等。Wireshark 认为这些才是这个数据包的“业务类型”。

  • IP 协议作为“基础层”,被隐藏在了细节里。你只有展开数据包,才能看到Internet Protocol Version 4这个部分。

3. 唯一的例外:IP 分片包

有一种情况,Wireshark 会在 Protocol 列显示IPv4IP:当数据包被分片时。

如果一个大包被拆成了多个 IP 分片:

  • 第一个分片:可能仍然显示为TCPUDP,因为它还包含传输层的头部。

  • 后续分片只包含 IP 头部和部分数据,没有传输层头部。Wireshark 无法判断它属于 TCP 还是 UDP,就会在 Protocol 列显示IPv4

你可以用过滤器ip.flags.mf == 1 or ip.frag_offset > 0来找到这些分片包。

4. 如何“看到”IP 协议?

在 Wireshark 中,IP 协议无处不在,只是不单独显示。你可以通过以下几种方式感受它的存在:

  • 展开任意包:选中任何一个TCPUDP包,展开Internet Protocol Version 4部分,你会看到完整的 IP 头部(源/目的 IP、TTL、总长度等)。

  • 使用ip.过滤器:这是最有力的证据。Wireshark 中大量以ip.开头的过滤器,都是针对 IP 协议字段的:

    • ip.src == 192.168.1.2(过滤源 IP)

    • ip.dst == 8.8.8.8(过滤目的 IP)

    • ip.ttl < 10(过滤 TTL 小于 10 的包)

    • ip.len > 1400(过滤大包)

  • 查看统计信息:菜单Statistics->IPv4 Statistics->All Addresses,可以看到所有 IP 地址的流量统计。

这些过滤器和统计数据的存在,恰恰证明了 IP 协议是 Wireshark 底层解析的核心。


总结

你的疑问解释
Wireshark 没有单独的 IP 协议?对,没有。IP 从不单独出现。
为什么没有?IP 是底层承载者,总是为TCPUDPICMP等上层协议服务。
那 IP 在哪里?在每一个数据包里。展开任意TCP/UDP/ICMP包,你都会看到它。
什么时候会显示IPv4IP 分片的后续分片,因为上层协议头部缺失。
如何验证它的存在?使用ip.srcip.dst等过滤器,或查看 IPv4 统计信息。

一句话总结:Wireshark 中不显示单独的 IP 协议,因为它不是一个“业务类型”,而是所有业务的“底层基础设施”。它就像空气一样,你看不到它本身,但它在每一个你抓到的包里。

抓包实战

下面通过实际操作,用Wireshark抓取真实网络流量,详细分析IPv4协议的每个字段和行为。


一、准备工作

1.1 启动抓包

  1. 打开Wireshark,选择正在使用的网卡(以太网或WLAN),点击蓝色鲨鱼鳍按钮开始抓包

  2. 设置显示过滤器(可选):在过滤器栏输入ip,只显示IP数据包

1.2 常用IP过滤器速查

过滤器表达式作用
ip显示所有IPv4数据包
ip.src == 192.168.1.2显示源IP为指定地址的包
ip.dst == 8.8.8.8显示目的IP为指定地址的包
ip.proto == 6只显示TCP包(6=TCP,17=UDP,1=ICMP)
ip.ttl < 10显示TTL小于10的包
ip.flags.df == 1显示设置了DF标志的包
ip.frag_offset > 0显示分片包
ip.len > 1400显示大于1400字节的包

二、IPv4头部结构回顾

IPv4头部通常为20字节(不含选项字段):

0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version| IHL |Type of Service| Total Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identification |Flags| Fragment Offset | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Time to Live | Protocol | Header Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

三、实战分析:ICMP包(ping)

3.1 抓包步骤

  1. 开始抓包

  2. 命令行执行ping 8.8.8.8

  3. 停止抓包

  4. 在过滤器输入icmpip.proto == 1

3.2 抓包结果分析

选中一个ICMP Echo Request包,展开Internet Protocol Version 4部分:

Internet Protocol Version 4, Src: 192.168.1.2, Dst: 8.8.8.8 0100 .... = Version: 4 .... 0101 = Header Length: 20 bytes (5) 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: 84 Identification: 0x3a2b (14955) Flags: 0x40 (Don't Fragment) 0... .... = Reserved bit: Not set .1.. .... = Don't fragment: Set ..0. .... = More fragments: Not set Fragment Offset: 0 Time to Live: 64 Protocol: ICMP (1) Header Checksum: 0x8c4a [correct] [Header checksum status: Good] Source: 192.168.1.2 Destination: 8.8.8.8

3.3 逐字段解读

字段抓包值含义
Version4IPv4,固定为4
Header Length20 bytes (5)IHL=5,表示头部5个32位字=20字节(无选项)
Differentiated Services Field0x00服务类型,未使用QoS
Total Length84IP包总长度84字节 = 20(IP头) + 8(ICMP头) + 56(数据)
Identification0x3a2b (14955)标识符,同一数据流的分片此值相同
Flags0x40 (Don't Fragment)DF=1,禁止分片
Fragment Offset0分片偏移为0,表示这是第一个分片(或唯一分片)
Time to Live64TTL=64,最多经过64跳
ProtocolICMP (1)上层协议是ICMP
Header Checksum0x8c4a [correct]头部校验和正确
Source192.168.1.2源IP地址(你的电脑)
Destination8.8.8.8目的IP地址(Google DNS)

3.4 对应的ICMP部分

Internet Control Message Protocol Type: 8 (Echo (ping) request) Code: 0 Checksum: 0x4a2b [correct] Identifier (BE): 1 (0x0001) Sequence Number (BE): 1 (0x0001) Data (56 bytes)

四、实战分析:TCP包(HTTP/HTTPS)

4.1 抓包步骤

  1. 开始抓包

  2. 浏览器访问http://www.baidu.com(注意用HTTP,不是HTTPS,便于观察)

  3. 停止抓包

  4. 在过滤器输入tcpip.proto == 6

4.2 抓包结果分析

选中一个TCP包(如HTTP GET请求),展开IP头部:

Internet Protocol Version 4, Src: 192.168.1.2, Dst: 110.242.68.66 0100 .... = Version: 4 .... 0101 = Header Length: 20 bytes (5) Total Length: 84 Identification: 0x5678 (22136) Flags: 0x40 (Don't Fragment) Time to Live: 64 Protocol: TCP (6) Header Checksum: 0x9b2a [correct] Source: 192.168.1.2 Destination: 110.242.68.66

4.3 对比ICMP包的差异

字段ICMP包TCP包说明
Protocol1 (ICMP)6 (TCP)标识上层协议类型
Total Length8484(可能变化)取决于数据大小
Destination8.8.8.8110.242.68.66不同目标地址

五、实战分析:UDP包(DNS查询)

5.1 抓包步骤

  1. 开始抓包

  2. 命令行执行nslookup google.comdig google.com

  3. 停止抓包

  4. 在过滤器输入udpip.proto == 17

5.2 抓包结果分析

Internet Protocol Version 4, Src: 192.168.1.2, Dst: 8.8.8.8 0100 .... = Version: 4 .... 0101 = Header Length: 20 bytes (5) Total Length: 64 Identification: 0x9abc (39612) Flags: 0x40 (Don't Fragment) Time to Live: 64 Protocol: UDP (17) Header Checksum: 0x7d3b [correct] Source: 192.168.1.2 Destination: 8.8.8.8

5.3 对比三种协议

协议类型Protocol字段值Wireshark显示典型用途
ICMP1ICMPping诊断
TCP6TCP网页、邮件、文件传输
UDP17UDPDNS、音视频、游戏

六、TTL分析:traceroute实战

6.1 原理

traceroute通过递增TTL值,让沿途路由器依次返回ICMP超时报文,从而发现路径上的每一跳。

6.2 抓包步骤

  1. 开始抓包

  2. Windows执行tracert 8.8.8.8,Linux执行traceroute -I 8.8.8.8

  3. 停止抓包

  4. 过滤器输入icmp

6.3 抓包结果分析

TTL=1的包(第一个路由器会丢弃)

Internet Protocol Version 4, Src: 192.168.1.2, Dst: 8.8.8.8 Time to Live: 1 ← TTL=1 Protocol: ICMP (1)

路由器返回的ICMP超时消息

Internet Protocol Version 4, Src: 192.168.1.1, Dst: 192.168.1.2 Time to Live: 64 Protocol: ICMP (1) Internet Control Message Protocol Type: 11 (Time to live exceeded in transit) Code: 0 (Time to live exceeded in transit)

TTL=2的包

Internet Protocol Version 4, Src: 192.168.1.2, Dst: 8.8.8.8 Time to Live: 2 ← TTL=2

观察要点

  • 第一个包TTL=1,到第一跳路由器后TTL变为0,被丢弃

  • 第一跳路由器返回ICMP Type=11

  • 源IP是路由器的IP(如192.168.1.1)

  • traceroute通过递增TTL,逐步发现路径上的每一跳


七、分片包分析

7.1 制造分片场景

# Linux:发送2000字节的大ping包(MTU通常是1500,会触发分片) ping -s 2000 8.8.8.8 -M dont # 不加-M dont,DF=1会失败 # 或者用 ping -s 2000 8.8.8.8

7.2 抓包过滤器

ip.frag_offset > 0 or ip.flags.mf == 1

7.3 分片包抓包结果

第一个分片(More Fragments=1,Offset=0)

Internet Protocol Version 4, Src: 192.168.1.2, Dst: 8.8.8.8 Version: 4 Header Length: 20 bytes Total Length: 1500 ← 第一个分片满载1500字节 Identification: 0xabcd (43981) Flags: 0x20 (More Fragments) ← MF=1,表示后面还有分片 0... .... = Reserved bit: Not set .0.. .... = Don't fragment: Not set ..1. .... = More fragments: Set Fragment Offset: 0 ← 偏移0,是第一个分片 Time to Live: 64 Protocol: ICMP (1)

第二个分片(More Fragments=0,Offset=185)

Internet Protocol Version 4, Src: 192.168.1.2, Dst: 8.8.8.8 Version: 4 Header Length: 20 bytes Total Length: 548 ← 最后一个分片,长度较小 Identification: 0xabcd (43981) ← 相同的ID! Flags: 0x00 (None) ← MF=0,最后一个分片 Fragment Offset: 185 ← 偏移185 × 8 = 1480字节 Time to Live: 64 Protocol: ICMP (1)

7.4 分片关键点

字段第一个分片第二个分片说明
Identification0xabcd0xabcd相同ID,用于重组
Flags.MF10MF=1表示还有后续
Fragment Offset0185偏移185×8=1480字节
Total Length1500548第一个满载,最后一个较小

八、DF标志位分析

8.1 观察DF标志

大多数现代系统发送的IP包都会设置DF=1(Don't Fragment):

Flags: 0x40 (Don't Fragment) .1.. .... = Don't fragment: Set

8.2 当DF=1且包太大时的行为

如果路由器收到一个需要分片但DF=1的包,会丢弃该包并返回ICMP错误:

Internet Control Message Protocol Type: 3 (Destination unreachable) Code: 4 (Fragmentation needed but don't fragment was set)

这就是PMTUD(Path MTU Discovery)的工作原理。


九、IP头部校验和验证

9.1 查看校验和

在Wireshark中,IP头部底部会显示校验和状态:

Header Checksum: 0x8c4a [correct] [Header checksum status: Good]

9.2 校验和错误的情况

如果看到[Header checksum status: Bad],说明IP头部在传输中损坏了。这通常表示:

  • 网卡硬件问题

  • 驱动问题

  • 中间设备损坏


十、综合实战练习

练习1:识别IP头部各字段

  • 打开Wireshark,开始抓包

  • ping 8.8.8.8,停止抓包

  • 找一个ICMP请求包,展开IP头部

  • 记录以下字段的值:

    • Version

    • Header Length

    • Total Length

    • Identification

    • Flags

    • TTL

    • Protocol

    • Source/Destination

练习2:对比不同协议的Protocol字段

  • 分别执行以下操作,抓包对比Protocol字段:

    • ping 8.8.8.8(ICMP,Protocol=1)

    • 打开浏览器访问网页(TCP,Protocol=6)

    • nslookup google.com(DNS,UDP,Protocol=17)

  • 观察并记录Protocol值的差异

练习3:观察TTL变化

  1. ping 8.8.8.8,查看TTL值

  2. ping 192.168.1.1(你的网关),查看TTL值

  3. 对比两者差异

练习4:过滤技巧练习

在Wireshark中依次输入以下过滤器,观察结果:

ip.src == 你的IP地址 ip.dst == 8.8.8.8 ip.ttl == 1 ip.flags.df == 1 ip.proto == 6 ip.len > 1400

练习5:traceroute分析

  1. 开始抓包

  2. 执行tracert 8.8.8.8(Windows)或traceroute -I 8.8.8.8(Linux)

  3. 观察TTL从1递增的过程

  4. 找到每一跳返回的ICMP Type=11包


十一、IP头部速查表(Wireshark显示)

Wireshark显示字段对应IP头字段常见值位置(字节)
Version: 4Version4第0字节高4位
Header Length: 20 bytes (5)IHL5第0字节低4位
Differentiated Services Field: 0x00ToS0第1字节
Total Length: 84Total Length变化第2-3字节
Identification: 0x3a2bIdentification随机/递增第4-5字节
Flags: 0x40 (Don't Fragment)Flags0x40(DF=1)第6字节高3位
Fragment Offset: 0Fragment Offset0第6字节低5位+第7字节
Time to Live: 64TTL64/128/255第8字节
Protocol: ICMP (1)Protocol1/6/17第9字节
Header Checksum: 0x8c4aChecksum变化第10-11字节
Source: 192.168.1.2Source Address你的IP第12-15字节
Destination: 8.8.8.8Destination Address目标IP第16-19字节

十二、常见问题排查

Q1:为什么看不到IP头部?

确保过滤器是ip而不是其他。另外,ARP包没有IP头部,需要过滤掉:ip and not arp

Q2:为什么TTL值不同?

  • Windows默认TTL=128

  • Linux默认TTL=64

  • 某些设备默认TTL=255

  • 经过路由器后TTL会递减

Q3:分片包为什么没有出现?

现代网络MTU通常足够大(以太网1500),普通包不会分片。需要发送大包(如ping -s 2000)才会触发分片。

Q4:如何找到TCP重传包?

tcp.analysis.retransmission

这些包通常TTL值较小,或者有特殊的IP标识。


十三、总结

通过Wireshark抓包分析IP协议,你可以直观地看到:

学习要点如何观察
IP头部结构展开IPv4部分,看20字节固定头部的每个字段
分片机制发送大包,观察相同ID、不同Offset和MF标志
TTL机制运行traceroute,观察TTL从1递增和ICMP超时报文
协议复用对比ICMP、TCP、UDP包的Protocol字段
校验和查看Wireshark显示的[correct][bad]状态
DF标志观察Flags字段中的Don't Fragment位

一句话总结:Wireshark是理解IP协议的最佳工具,通过抓包可以亲眼看到Version、IHL、Total Length、Identification、Flags、Fragment Offset、TTL、Protocol、Checksum、Source、Destination这11个核心字段的真实值,以及分片、TTL递减、协议复用等动态行为。

http://www.jsqmd.com/news/679744/

相关文章:

  • 3步彻底告别激活烦恼:KMS_VL_ALL_AIO智能激活方案实战指南
  • 为什么92%的团队在EF Core 10向量部署中失败?——来自37家金融/医疗客户生产环境的11项合规性避坑清单
  • 保姆级教程:在Ubuntu 22.04上快速配置Intel RealSense D405开发环境(含realsense-viewer安装)
  • AIOps探索:Hermes可能是现阶段最适合做AIOps的Agent(附可行性落地思路)
  • 如何在3分钟内完成Windows系统激活:智能激活脚本完整教程
  • 终极iOS 15-16 iCloud绕过方案:如何重新激活被锁定的苹果设备?
  • C#怎么操作WPF数据模板 C#如何用DataTemplate定义集合项的显示样式和布局【控件】
  • AI模型热更新失败?.NET 11 AssemblyLoadContext + ONNX模型热重载方案(含Assembly卸载泄漏检测工具)
  • 如何快速调整任何窗口大小:WindowResizer终极免费窗口调整工具指南
  • mysql如何配置临时账号权限_mysql带期限的用户授权
  • TVA检测技术在普通电子元器件领域的全维度解析(1)
  • 群核科技悉数行使超额配股权:额外募资1.74亿港元
  • 从麦克风阵列到声源坐标:手把手实现Python版SRP-PHAT定位(含代码)
  • 如何使用 shallowRef 优化大数据量渲染?显著提升页面性能的干货
  • 从康托集这个‘怪胎’出发,逆向理解Borel集、Sigma代数与拓扑空间的层层递进关系
  • [具身智能-406]:硅基觉醒:大模型“破壁”的三条路径,每天,这个世界上无数的生物人,在这三条主线,为硅基智能的极速的进化在孜孜不倦的努力。
  • Agent 上下文越来越长?一个 task 工具的秘密
  • 2026年可移动垃圾房怎么选:保安岗亭/可移动垃圾房/台州岗亭/嘉兴岗亭/宁波岗亭/浙江岗亭/湖州岗亭/移动卫生间/选择指南 - 优质品牌商家
  • 大疆无人机开源项目实战:用Eclipse Paho库搞定MQTT双通道通信(TCP vs WebSocket)
  • PTP协议精讲(2.16):守护时间的金库——PTP安全机制深度解析
  • Ubuntu多硬盘加密后,如何安全地自动挂载数据盘?(附开机脚本与Trim优化)
  • 3组共11人获2026科学突破奖物理学新视野奖,其中三位华人学者
  • C语言学习笔记 - 5.C概述 - C的应用领域
  • 【硬核实战】Spring AOP 从原理到落地:3 个可运行案例带你吃透切面编程
  • 良品铺子年营收55亿:同比降23% 净亏1.5亿 拟派息1亿 控股股东3500万债务违约
  • 别再只会用定向天线了!聊聊农村、郊区基站背后的‘全向高增益’技术(附5种主流结构对比)
  • STM32F407ZGT6高级定时器驱动二自由度舵机云台:从PWM原理到安装校准全解析
  • 别再为Instant-NGP发愁!Win11下用Anaconda搞定tiny-cuda-nn环境(附VS2019编译避坑指南)
  • “太空智算互联网”专家观点分享
  • 别再手动改代码格式了!用IntelliJ IDEA的CheckStyle插件,5分钟搞定团队代码规范