抓包软件抓的数据包由哪些部分组成
2026/6/11 16:49:55 网站建设 项目流程

目录

一、整体层级结构(总览)

二、第一层:数据链路层 —— 以太网帧(Ethernet Frame)

标准以太网帧结构(头部 14 字节 + 载荷 + 尾部 CRC)

1. 头部(14 字节,固定)

2. 载荷

3. 尾部 CRC(4 字节)

实战示例(Wireshark 原始帧)

三、第二层:网络层 —— IPv4 数据包(IP Packet)

IPv4 头部(基础 20 字节,可选扩展字段,最大 60 字节)

核心字段 + 释义 + 抓包实例

IP 包整体示例(精简)

四、第三层:传输层 —— 分 TCP / UDP 两大主流

(一)TCP 段(面向连接、可靠传输,HTTP/HTTPS 底层)

TCP 头部核心字段

TCP 抓包实战片段

(二)UDP 段(无连接、不可靠、轻量,DNS / 直播 / 语音 / 短视频)

UDP 头部字段(固定 8 字节)

UDP 抓包示例(DNS 查询包)

五、第四层:应用层数据(业务真实数据)

案例 1:HTTP 明文数据(基于 TCP 80 端口)

完整 HTTP 请求包(应用层载荷)

HTTP 响应包

案例 2:HTTPS 加密数据(TCP 443 端口)

案例 3:DNS 数据(基于 UDP 53 端口)

六、完整串联:一个真实 HTTP 数据包全流程拆解

1. 整体封装

2. 分层完整内容(精简版)

七、补充关键知识点

快速记忆口诀


结合以太网帧、IP 数据包、TCP/UDP 段、应用层数据四层结构,从底层到应用层拆解数据包完整组成,搭配真实抓包示例、字段释义,同时区分TCP 包、UDP 包、HTTP 包三种最常见场景。

前提:日常抓包(Wireshark/Charles/Fiddler)看到的数据包,遵循TCP/IP 五层模型,物理层忽略,核心四层:以太网帧(数据链路层) → IP 包(网络层) → TCP/UDP 段(传输层) → 应用层数据(HTTP/HTTPS/DNS 等)


一、整体层级结构(总览)

一个完整网络数据包封装关系:

[以太网帧头部] + [IP 头部] + [TCP/UDP 头部] + [应用层数据]

每层头部是协议控制信息,后面是载荷(数据);上层数据整体作为下层的载荷。

下面逐层拆解,附字段、作用、实例。


二、第一层:数据链路层 —— 以太网帧(Ethernet Frame)

网卡在局域网传输的最小单元,所有局域网抓包必带,Wireshark 最外层就是它。

标准以太网帧结构(头部 14 字节 + 载荷 + 尾部 CRC)

1. 头部(14 字节,固定)

字段长度作用示例值说明
目的 MAC 地址6 字节接收方网卡物理地址ff:ff:ff:ff:ff:ff= 广播地址(全网设备接收)
源 MAC 地址6 字节发送方网卡物理地址00:1a:2b:3c:4d:5e本机网卡地址
类型 / 长度2 字节标识上层协议0x0800= 上层是IPv40x0806= ARP

2. 载荷

承载上层IP 数据包,长度可变。

3. 尾部 CRC(4 字节)

校验码,检测传输中数据是否损坏,抓包工具一般不展示。

实战示例(Wireshark 原始帧)

Destination: ff:ff:ff:ff:ff:ff (Broadcast) Source: 00:88:99:aa:bb:cc Type: IPv4 (0x0800)

解读:广播帧,本机发出,上层为 IPv4 协议。

补充:跨公网传输时,沿途路由器会不断改写以太网头部(MAC 地址),但 IP 头部全程不变。


三、第二层:网络层 —— IPv4 数据包(IP Packet)

负责跨网段寻址,核心作用:根据 IP 地址把数据路由到目标主机。

IPv4 头部(基础 20 字节,可选扩展字段,最大 60 字节)

核心字段 + 释义 + 抓包实例

  1. 版本(4bit)协议版本:4= IPv4,6= IPv6 示例:Version: 4

  2. 首部长度(4bit)IP 头部占多少个 4 字节单元。 示例:Header Length: 20 bytes(最常见,无扩展选项)

  3. 服务类型 TOS(1 字节)优先级、延迟、吞吐量控制,日常抓包基本为 0。

  4. 总长度(2 字节)整个 IP 包(头部 + 载荷)总字节数。 示例:Total Length: 84

  5. 标识(2 字节)数据包唯一 ID,用于IP 分片(大包拆分传输)。

  6. 标志位 + 片偏移(3bit + 13bit)控制分片:是否允许分片、当前是第几个分片包。

  7. 生存时间 TTL(1 字节)数据包在网络中最大转发跳数,防环路

    • Windows 默认 TTL:128
    • Linux 默认 TTL:64 每经过一台路由器,TTL -1,减到 0 则丢弃报文。 示例:TTL: 128
  8. 协议(1 字节)标识上层传输层协议:

    • 6= TCP
    • 17= UDP
    • 1= ICMP(ping 包) 示例:Protocol: TCP (6)
  9. 首部校验和(2 字节)校验 IP 头部完整性。

  10. 源 IP 地址(4 字节)发送方 IP。示例:Source: 192.168.1.100(内网本机)

  11. 目的 IP 地址(4 字节)接收方 IP。示例:Destination: 110.242.xx.xx(公网服务器)

IP 包整体示例(精简)

Internet Protocol Version 4 Version: 4 Header Length: 20 bytes Total Length: 84 Identification: 0x1234 TTL: 128 Protocol: TCP (6) Source: 192.168.1.100 Destination: 110.242.0.8

四、第三层:传输层 —— 分 TCP / UDP 两大主流

传输层负责端口寻址,把数据交给主机上对应的应用程序(端口区分程序)。

(一)TCP 段(面向连接、可靠传输,HTTP/HTTPS 底层)

TCP 有握手、确认、重传、流控机制,头部最小 20 字节,最大 60 字节。

TCP 头部核心字段

  1. 源端口(2 字节)客户端随机临时端口(1024~65535)。 示例:Source Port: 52018

  2. 目的端口(2 字节)服务器固定端口:

    • 80 = HTTP
    • 443 = HTTPS
    • 22 = SSH 示例:Destination Port: 443 (https)
  3. 序列号 Sequence Number(4 字节)标记当前数据字节的序号,用于有序重组、丢包重传

  4. 确认号 ACK(4 字节)告知对方:我已收到前面所有数据,下一次请发这个序号开始的数据

  5. 数据偏移(4bit)TCP 头部长度,单位 4 字节。

  6. 6 位标志位(重点,抓包高频看到)每一位代表一种控制信号,组合使用:

    • URG:紧急指针有效
    • ACK确认位(绝大多数数据包都带 ACK=1)
    • PSH:推送,立即上交应用层,不缓存
    • RST:重置连接,强制断开
    • SYN建立连接(三次握手专用)
    • FIN关闭连接(四次挥手专用) 示例:Flags: ACK, PSH
  7. 窗口大小(2 字节)流量控制:我方当前接收缓冲区剩余大小,告知对方最多能发多少数据

  8. 校验和(2 字节)校验 TCP 头部 + 数据完整性。

  9. 紧急指针(2 字节)配合 URG 标志,标记紧急数据位置。

TCP 抓包实战片段

Transmission Control Protocol Source Port: 52018 Destination Port: 443 Sequence Number: 12589 Acknowledgment: 45621 Flags: ACK, PSH Window Size: 65535

(二)UDP 段(无连接、不可靠、轻量,DNS / 直播 / 语音 / 短视频)

UDP无握手、无重传、无流控,头部固定8 字节,结构极简。

UDP 头部字段(固定 8 字节)

  1. 源端口(2 字节)
  2. 目的端口(2 字节)
  3. 总长度(2 字节):UDP 头部 + 数据总长度
  4. 校验和(2 字节)

UDP 抓包示例(DNS 查询包)

User Datagram Protocol Source Port: 54321 Destination Port: 53 (domain) # DNS 标准端口 Length: 45 Checksum: 0xabcd

解读:本机向 DNS 服务器 53 端口发起域名查询。


五、第四层:应用层数据(业务真实数据)

TCP/UDP 的载荷部分就是应用层协议数据,也是开发 / 测试最关心的内容。 下面举HTTP、HTTPS、DNS三类最常用案例。

案例 1:HTTP 明文数据(基于 TCP 80 端口)

整个应用层就是标准 HTTP 请求 / 响应文本,明文可直接阅读

完整 HTTP 请求包(应用层载荷)

GET /index.html HTTP/1.1 Host: www.example.com User-Agent: Mozilla/5.0 Accept: */* Connection: keep-alive

拆解:

  • 请求行:请求方法 + 路径 + 协议版本
  • 请求头:各类客户端信息、连接策略
  • 无请求体(GET 请求)

HTTP 响应包

HTTP/1.1 200 OK Server: nginx Content-Type: text/html Content-Length: 128 <html> <body>Hello World</body> </html>
  • 状态行:协议 + 状态码 + 描述
  • 响应头:服务器、内容类型、长度
  • 响应体:真实业务数据

Fiddler/Charles 看到的内容,本质就是解析后的 TCP 应用层 HTTP 数据


案例 2:HTTPS 加密数据(TCP 443 端口)

默认状态下:应用层载荷是密文,肉眼全是乱码二进制。

# 原始加密载荷(示例) 16 03 01 00 48 02 00 00 44 03 03 a1 b2 c3 d4 ...

只有在抓包工具安装根证书、开启 SSL 解密后,工具才会中间人解密,展示出内部的 HTTP 明文。


案例 3:DNS 数据(基于 UDP 53 端口)

域名解析专用,UDP 载荷是结构化二进制数据,Wireshark 会自动解析:

Domain Name System (query) Transaction ID: 0x8899 Flags: standard query Questions: 1 Queries www.baidu.com: type A (IPv4), class IN

作用:查询www.baidu.com对应的 IPv4 地址。


六、完整串联:一个真实 HTTP 数据包全流程拆解

以「浏览器访问网页」为例,把四层拼在一起:

1. 整体封装

[以太网头部] + [IP 头部] + [TCP 头部] + [HTTP 请求明文]

2. 分层完整内容(精简版)

  1. 数据链路层(以太网)
    源MAC: 本机网卡 目的MAC: 网关路由器 上层类型: IPv4
  2. 网络层(IPv4)
    源IP: 192.168.1.100 目的IP: 110.242.0.8 协议: TCP(6) TTL: 128
  3. 传输层(TCP)
    源端口: 52018 目的端口: 80(HTTP) 标志位: ACK+PSH
  4. 应用层(HTTP)
    GET / HTTP/1.1 Host: www.baidu.com

七、补充关键知识点

  1. 抓包工具展示差异
    • Wireshark:展示完整四层原始报文,偏底层协议分析。
    • Fiddler/Charles:屏蔽链路层、网络层细节,只解析传输层 + 应用层,聚焦 HTTP/HTTPS 业务。
  2. 分片当 IP 包长度超过网卡 MTU(默认 1500 字节),IP 层会自动分片,接收端重组。
  3. 端口作用IP 定位主机,端口定位主机上的应用
  4. 明文 / 密文分界
    • HTTP、DNS、FTP:应用层明文
    • HTTPS、FTPS:应用层默认密文,需证书解密

快速记忆口诀

MAC 找设备,IP 找主机,端口找程序,载荷是业务

  • 二层 MAC:局域网寻址
  • 三层 IP:跨网寻址
  • 四层 端口:区分应用
  • 应用层:真实交互数据

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询