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

【网安第18课】数据包的拆包与封包过程

数据在网络中传输,就像寄快递:发件人将物品层层包装(封装),每层贴上标签(协议头);收件人收到后层层拆解,最终取出物品(数据)。下图展示了数据从发送端到接收端经过的完整路径:


一、封包过程(发送端)

假设用户在浏览器访问 http://www.example.com,浏览器生成一个 HTTP GET 请求作为应用层数据。

应用层

  • 数据:HTTP 请求报文,例如:

    GET /index.html HTTP/1.1\r\nHost: www.example.com\r\n\r\n
  • 处理:应用层协议(HTTP)将数据交给传输层,不添加额外头部(某些应用协议会加头,如 SMTP)。

  • PDU 名称:报文(Message)

传输层(以 TCP 为例)

  • 功能:建立端到端连接,提供可靠传输。

  • 封装:在应用层数据前添加 TCP 头部(20~60 字节)。

  • 关键字段:

    ​ · 源端口(随机,如 54321) ​ · 目的端口(80,HTTP 默认) ​ · 序列号(Seq=1) ​ · 确认号(Ack=0,初始) ​ · 控制标志(SYN=1 或 PSH=1 等) ​ · 校验和
  • 结果:形成 TCP 段(Segment)。

  • PDU 名称:段(Segment)

网络层(IP)

  • 功能:路由和寻址,将数据从源主机发送到目的主机。

  • 封装:在 TCP 段前添加 IP 头部(20~60 字节)。

  • 关键字段:

· 版本(IPv4) · 头部长度 · 服务类型 · 总长度 · 标识、标志、片偏移(用于分片) · 生存时间(TTL,默认 64) · 协议(6 表示 TCP) · 源 IP 地址(192.168.1.100) · 目的 IP 地址(93.184.216.34) · 头部校验和
  • 结果:形成 IP 数据报(Datagram)。

  • PDU 名称:数据报 / 包(Packet)

注意:若数据报长度超过链路 MTU(如 1500 字节),IP 层会进行分片,每个分片独立传输。

数据链路层(以以太网为例)

  • 功能:在相邻网络节点之间可靠传输帧。

  • 封装:在 IP 数据报前后分别添加 以太网头部 和 尾部(FCS)。

  • 以太网头部(14 字节):

· 目的 MAC 地址(下一跳路由器的 MAC,通过 ARP 获得) · 源 MAC 地址(本机网卡 MAC) · 类型(0x0800 表示 IPv4) · 尾部(4 字节):帧校验序列(FCS,CRC 校验)
  • 结果:形成 以太网帧(Frame)。

  • PDU 名称:帧(Frame)

物理层

  • 功能:将帧转换为比特流,并通过物理介质传输。

  • 处理:

· 以太网帧被编码为电信号(双绞线)、光信号(光纤)或无线电波(WiFi)。 · 添加前导码(7 字节)和帧首定界符(1 字节)以便接收端同步。
  • PDU 名称:比特(Bit)


二、拆包过程(接收端)

数据到达目的主机后,从物理层向上逐层解封装。

物理层

  • 接收比特流,恢复成以太网帧,交给数据链路层。

数据链路层

  • 检查帧头的目的 MAC 地址是否与本机 MAC 匹配(或广播/组播)。

  • 使用 FCS 进行差错检测,若出错则丢弃请求重传。

  • 剥离以太网头部和尾部,取出 IP 数据报,根据类型字段(0x0800)交给网络层。

网络层

  • 检查 IP 头部的目的 IP 地址是否与本机 IP 匹配(或组播地址)。

  • 校验 IP 头部,丢弃损坏的数据报。

  • 检查 TTL,若为 0 则丢弃。

  • 若收到分片,则重组完整 IP 数据报。

  • 根据协议字段(6 → TCP)剥离 IP 头部,将 TCP 段交给传输层。

传输层(TCP)

  • 根据 TCP 头部的源/目的端口,将段交给对应的应用进程(如 80 端口 → HTTP 服务)。

  • 校验和验证,丢弃损坏段。

  • TCP 协议栈处理:确认收到、排序、去重、流量控制等。

  • 剥离 TCP 头部,取出 HTTP 报文,交给应用层。

应用层

  • HTTP 协议解析请求或响应,最终呈现给用户(如网页内容)。


三、封包拆包过程中的关键概念

协议数据单元(PDU)

层级PDU 名称示例
应用层报文HTTP 请求
传输层段(TCP)/ 数据报(UDP)TCP Segment
网络层数据报 / 包IP Datagram
链路层Ethernet Frame
物理层比特0/1 序列

头部信息(以典型以太网+IPv4+TCP+HTTP 为例)

  • 以太网头:14 字节(MAC 地址、类型)

  • IP 头:20 字节(无选项)

  • TCP 头:20 字节(无选项)

  • HTTP 头:可变(几十到几百字节)

  • 总封装开销:至少 54 字节(不计应用层头)

分片与重组

当 IP 数据报长度超过链路 MTU 时,网络层会将数据报分成多个较小的片(片偏移字段标识位置),每个片独立传输,到达目的主机后再由 IP 层重组。

地址解析

网络层需要目的 IP 地址,但数据链路层需要目的 MAC 地址。发送端通过 ARP(地址解析协议) 获取下一跳设备的 MAC 地址,并缓存。

封装嵌套示例

封装内容层级
以太网头TCP头[FCS]完整帧
IP头[HTTP数据]IP 数据报
TCP头TCP 段
[HTTP数据]HTTP 报文

四、实际场景举例:访问网页

  1. 浏览器(应用层)生成 HTTP GET 请求。

  2. 传输层(TCP)将请求分割为合适大小的段,加上 TCP 头(源端口随机,目的端口 80)。

  3. 网络层(IP)封装 IP 头(源 IP 为客户端 IP,目的 IP 为服务器 IP)。

  4. 数据链路层(以太网)封装以太网头(源 MAC 为本机,目的 MAC 为默认网关 MAC,通过 ARP 获取)。

  5. 物理层将帧转为电信号发送。

  6. 数据经过路由器:每跳路由器在数据链路层拆包、查路由表、重新封装新的链路层头(源和目的 MAC 改变)再转发。

  7. 最终到达服务器,物理层接收,逐层解封装,服务器获取 HTTP 请求并响应。

  8. 响应数据再以同样方式封装返回客户端。


五、常见问题

  • 为什么需要多层封装?

每层关注不同功能(寻址、可靠传输、差错控制),解耦设计便于标准化和替换(例如将以太网换成 Wi-Fi,上层不受影响)。
  • 封装是否增加额外开销?

是,但换来的是通用性和灵活性,且现代网络带宽足够支撑。
  • UDP 封装有何不同?

UDP 头部更简单(8 字节),没有可靠性机制,但过程类似。

封包拆包是网络通信的基础,理解这个过程能帮助分析网络故障、优化性能以及理解安全攻击(如分片攻击、ARP 欺骗等)。

http://www.gsyq.cn/news/1299802.html

相关文章:

  • 用Markdown构建结构化开发者技能树:系统化学习与团队知识管理实践
  • Arm Cortex-A处理器缓存架构与优化实践
  • 为你的 AI 应用选择模型时,如何利用 Taotoken 模型广场进行快速选型
  • 开源项目仪表盘开发指南:基于React、Next.js与GitHub API的实践
  • GPT-4 API交互式实验场:开发者如何自建安全可控的Playground
  • 终极开源跨平台压缩神器:CompressO如何让你的视频图片体积缩小95%?
  • 量子优化基准测试库QOBLIB:原理、实现与应用
  • 从零构建AI编程助手:核心架构、技术选型与实战指南
  • 现代前端架构解析:模块化状态管理与数据流实践
  • 在济宁,随着设备搬运服务需求的持续增长,市面上涌现出众多设
  • SQL学习指南——背景知识
  • Shinkai Node:构建自主AI Agent的去中心化操作系统内核
  • API到TypeScript接口自动化工具:提升前后端协作效率
  • 别再只会用Console线了!华为ENSP交换机Telnet远程登录的三种密码配置方式(含AAA模式详解)
  • Solon框架:微内核驱动的Java全栈云原生应用开发实践
  • 基于Slack Bolt与OpenAI API构建企业级AI助手:从集成部署到高级应用
  • 2026年Q2河北钢板桩租赁市场深度解析与专业服务商甄选 - 2026年企业推荐榜
  • 菲律宾电商App接入ElevenLabs语音的最后72小时:零延迟播报、方言适配、GDPR+菲律宾Data Privacy Act双合规方案
  • 2026年第二季度广东精密注塑市场优质服务商推荐:惠州市拓谱智为科技有限公司 - 2026年企业推荐榜
  • AI应用开发实战:从RAG系统到多模型API调用的开源项目解析
  • 基于规则引擎的Markdown笔记自动化归档工具设计与实现
  • 影刀RPA跨境电商矩阵架构:基于Python的控制面板与执行端解耦调度实战
  • Python工具库HHXG:网络重试、配置管理与异步编程实战解析
  • 基于RP2040的USB HID重映射与连发控制器实战指南
  • ingress流量控制与灰度金丝雀发布​​
  • AutoTrader开源项目解析:Python自动化交易框架架构与实战
  • Go语言高性能Web爬虫框架weclaw:架构解析与实战应用
  • 基于TI DRV8301与C2000的无刷直流电机速度控制实战指南
  • 基于ESP32-S2与MAX17048的物联网电池监控系统设计与实现
  • 智能合约赋能AI代理:构建可验证、可审计的自动化工作流