☰
一个数据包的“打包“之旅:网络分层与数据封装图解
2026/10/7 16:30:45 网站建设 项目流程

关键词:网络分层、OSI、TCP/IP、数据封装、Wireshark、抓包、TCP三次握手
本文为安全学习与授权测试用途,所有操作均在本地环境完成,请勿用于未授权目标。

文章目录

    • 0. 一个每天都在发生、却少有人看透的过程
    • 1. 为什么要分层
    • 2. 两个模型:OSI 七层 vs TCP/IP 四层
      • OSI 七层(理论模型)
    • 3. 数据封装:数据包是怎么"打包"的
      • 一次访问网页的完整封装
      • 接收方:解封装
      • 关键:传输途中哪些变、哪些不变
    • 4. PDU:每层数据单位的名字
    • 5. 用 Wireshark 看真实封装
    • 6. 分层排障:哪一层出了问题
    • 7. 动手实验
    • 8. 写在最后

0. 一个每天都在发生、却少有人看透的过程

你在浏览器输入一个网址、按下回车,几百毫秒后网页就显示出来了。这几百毫秒里,数据从你的电脑出发,经过家里路由器、运营商、骨干网络,到达千里外的服务器,再原样返回。

这件事复杂到惊人:信号怎么传、数据怎么找到对方、出错怎么办、网页内容怎么组织……那它为什么还能如此稳定?答案就两个字——分层。

而理解分层最关键的机制,叫数据封装:你发出的数据,会被一层层"套信封"打包出去。这篇文章我们用图解的方式,把这个过程彻底讲清。它是你看懂抓包、排查网络问题、学习内网渗透的地基。

1. 为什么要分层

如果让一个协议把"传信号、找地址、保可靠、组织网页"所有事全管了,那么任何一个环节变化(网线换 Wi-Fi、IPv4 换 IPv6),整个系统都得推倒重来。

分层的思路是:把通信过程切成若干层,每层只解决一个明确问题、为上一层服务,且不关心其他层的内部实现。

这带来三个直接好处:

  1. 职责清晰:信号、寻址、可靠性、应用数据各有归属,出问题能按层定位;
  2. 可独立替换:网线换光纤、以太网换 Wi-Fi,只影响最底层,上面的 TCP、HTTP 毫无感知;
  3. 标准化互通:不同厂商设备只要遵守同一层协议就能对接。

寄快递是个好类比:你只关心包裹内容和收件人,网点负责揽收,干线负责城际转运,分拣中心按地址路由。每一层都不关心包裹里是什么,只在外面套上自己这层的单据。

2. 两个模型:OSI 七层 vs TCP/IP 四层

OSI 七层(理论模型)

层名称主要职责典型协议/设备
7应用层面向应用的数据语义HTTP、DNS、SSH
6表示层格式、编码、加密TLS、JPEG
5会话层建立管理会话RPC
4传输层端口、可靠传输TCP、UDP
3网络层跨网络寻址路由IP、ICMP;路由器
2链路层同链路帧传输、MAC以太网、Wi-Fi、ARP;交换机
1物理层比特、信号网线、光纤、网卡

OSI 适合教学,但上三层在真实互联网里没严格分开。实际跑的是更精简的 TCP/IP 模型:

TCP/IP 层对应 OSI核心协议数据单位
应用层5/6/7HTTP、DNS、SSH数据 data
传输层4TCP、UDP段 segment / 数据报
网际层3IP、ICMP包 packet
网络接口层1/2以太网、Wi-Fi帧 frame / 比特

教学中常画成五层(把网络接口拆成链路层 + 物理层),它和 Wireshark 的展示完全吻合。记忆要点:越往上越靠近人和程序,越往下越靠近硬件。

3. 数据封装:数据包是怎么"打包"的

这是全文核心。发送数据时,数据从应用层自上而下,每经过一层就加上自己这层的头部,像套信封。

一次访问网页的完整封装

假设浏览器产生一个 HTTP 请求,逐层打包过程如下:

① 应用层(数据)
浏览器生成 HTTP 请求报文:

GET /index.html HTTP/1.1 Host: example.com

这层只关心"要什么资源",不管怎么送到。

② 传输层(TCP 段 segment)
加上 TCP 头部,关键字段:

TCP 头字段作用
源端口 / 目的端口标识哪个进程发出、交给服务器哪个进程(HTTP=80,HTTPS=443)
序号给字节编号,保证按序重组、发现丢失
确认号 ACK告诉对方"收到哪了",实现可靠传输
标志位 SYN/ACK/FIN建立连接、确认、关闭(握手挥手靠它)
窗口流量控制

加完成为一个TCP 段。如果是 UDP,只加极简头(端口、长度、校验和)。

③ 网络层(IP 包 packet)
加上 IP 头部:

IP 头字段作用
源 IP / 目的 IP端到端标识"谁发给谁",跨网络寻址核心
TTL每经过一个路由器减 1,减到 0 丢弃,防止无限环路(traceroute 原理)
协议号上层是 TCP(6)、UDP(17) 还是 ICMP(1)
首部校验和检查 IP 头损坏

加完成为IP 包,负责让数据跨网络被路由器正确转发。

④ 链路层(以太网帧 frame)
在当前这段链路上加帧头帧尾:

帧字段作用
目的 MAC这一跳交给谁(先给默认网关 MAC)
源 MAC这一跳谁发出(你的网卡 MAC)
类型 EtherType上层是 IPv4(0x0800)、IPv6(0x86DD)、ARP(0x0806)
帧尾 FCS校验这一帧有没有传错

加完成为以太网帧。注意 MAC 只在当前这段链路有意义。

⑤ 物理层(比特 bit)
帧的二进制被网卡转成电信号、光信号或无线电波,以 0/1 比特流发出。

接收方:解封装

接收完全反过来,数据自下而上,每层拆掉自己的头部、检查后把载荷上交:物理层收比特 → 链路层校验 FCS、拆帧头取出 IP 包 → 网络层检查 IP/TTL、拆 IP 头取出 TCP 段 → 传输层检查端口序号、拆 TCP 头取出 HTTP → 应用层 Web 进程解析请求。

关键:传输途中哪些变、哪些不变

数据包往往经过好几跳路由器,这是理解分层的精髓:

层经过路由器时
应用数据、TCP 头不变(端到端)
IP 头(源/目的 IP)一般不变(端到端;NAT 才改)
链路层帧头(MAC)每一跳都重新封装、会变

路由器工作在网络层,它解封装到 IP 层、查路由表决定下一跳,再用下一段链路的帧头重新封装。所以:

  • MAC 地址是逐跳的,每段链路用相邻两个接口的 MAC;
  • IP 地址是端到端的,从源到目的始终不变(除非经过 NAT)。

4. PDU:每层数据单位的名字

层数据单位英文
应用层数据 / 报文data / message
传输层段(TCP)/ 数据报(UDP)segment / datagram
网络层包packet
链路层帧frame
物理层比特bit

严谨交流时,说"一个 TCP 段"“一个以太网帧"能精确表达你指哪一层,而不是笼统地说"数据包”。

5. 用 Wireshark 看真实封装

打开 Wireshark 抓包,"包详情"面板就是按封装层次从上到下排列的,每层可展开:

Frame 1: 74 bytes on wire (592 bits) ... ← 帧层面(这一帧多大) Ethernet II, Src: xx:xx, Dst: yy:yy ← 链路层(MAC、类型) Internet Protocol Version 4, Src: 192.168.1.10 ← 网络层(IP、TTL) Src: 192.168.1.10, Dst: 93.184.216.34 TTL: 64, Protocol: TCP (6) Transmission Control Protocol, Src Port: 53000 ← 传输层(端口、序号、标志) Src Port: 53000, Dst Port: 80 Flags: SYN Hypertext Transfer Protocol ← 应用层(载荷) GET /index.html HTTP/1.1

从外到内 = 物理层到应用层 = 解封装的逆序。看懂这个对应,你就真正理解了封装。Wireshark 还能用颜色区分协议,并提供 “Follow TCP Stream” 把一次连接的包重组成完整对话。

6. 分层排障:哪一层出了问题

分层最实用的价值是系统化排障,从下往上逐层定位:

层排查动作典型故障现象
物理层看网卡灯、ip link是否 UP网线断、网卡禁用
链路层ARP 能否解析、ip neigh网关 MAC 学不到
网络层ping 网关、ping 8.8.8.8IP 不通、路由错误
传输层nc -vz IP 端口、TCP 握手端口没开、防火墙
应用层curl -v、DNS 解析HTTP 报错、DNS 失败

经典排查路径:

ping网关IP# 通 → 物理/链路/本地网络层正常ping8.8.8.8# 通 → 能出外网;不通 → 网络层/出口nslookupexample.com# ping IP 通但域名不通 → DNS(应用层)curl-vexample.com# 看 TCP 握手与 HTTP;连不上 → 传输层端口/防火墙

“能 ping 通但网页打不开”,立刻缩小到 DNS、目标端口/防火墙、或 HTTP 服务本身,不用怀疑网线。这套思路在排查反弹 Shell 为什么连不回来时同样好用。

7. 动手实验

iplink# 网卡与链路层(MAC、UP 状态)ipaddr# 各接口 IP(网络层)iproute# 路由表(默认网关 = 下一跳)ipneigh# ARP 表:MAC 与 IP 对应ping-c4<网关IP># 网络层:到网关通不通ping-c48.8.8.8# 网络层:能否出外网sudotcpdump-iany-nn-c5'tcp port 80'# 抓包看封装

有图形界面时,强烈建议打开 Wireshark 开始抓包,访问一个 http 网站,点开一个包对照第五节逐层展开——这一遍胜过读十遍理论。

8. 写在最后

这篇文章最该带走的三点:

第一,分层让每层职责单一、可独立替换,OSI 七层是理论,互联网实际跑 TCP/IP 五层。

第二,封装 = 发送时自上而下逐层加头(数据→段→包→帧→比特),解封装反过来;IP 端到端不变,MAC 逐跳重封,这是理解路由和内网的关键。

第三,Wireshark 详情面板就是封装结构的直观展示,排障时从物理层到应用层逐层定位,效率最高。

如果你想顺着网络层继续,看子网划分、路由决策、NAT 原理,以及更多从零基础到内网/域控的体系化安全文章,可以访问我的安全学习站点:

  • 站点地址:详见官网【光跃Eason·安研社】
  • 里面有完整的漏洞实战导航、成体系的网络与安全文章,以及配套靶场环境;
  • 具体联系方式见站点相关页面,也欢迎加微信交流。

我会持续更新网络基础和抓包实战内容,我们下篇文章见。

免责声明:本文仅用于网络安全研究与教学,所有测试均在本人授权的环境中进行。请严格遵守《网络安全法》,切勿对任何未授权系统测试。技术本身中立,关键在于使用它的人。

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

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

立即咨询