☰
90DaysOfDevOps 网络专题:OSI 七层模型详解与数据封装/解封装全流程(Day 22)
2026/10/8 19:22:50 网站建设 项目流程
  • 文档/教程

【免费下载链接】90DaysOfDevOps

This repository started out as a learning in public project for myself and has now become a structured learning map for many in the community. We have 3 years under our belt covering all things DevOps, including Principles, Processes, Tooling and Use Cases surrounding this vast topic.

项目地址:https://gitcode.com/gh_mirrors/90/90DaysOfDevOps
点击查看免费下载

本篇是 90DaysOfDevOps 项目 2022 年课程网络专题(Day 21~Day 27)的第二天,接续 Day 21 网络基础概念,完整拆解 OSI 参考模型的七层结构:每一层解决什么问题、使用什么地址与设备、数据在发送端如何被逐层封装(Encapsulation)、在接收端如何被逐层解封装(De-encapsulation),以及段(Segment)、包(Packet)、帧(Frame)等 PDU 命名的由来。读完本篇,你将能够把"主机 A 到主机 B 的一次通信"从头到尾讲清楚,并理解 MAC 与 IP 两套寻址体系为什么缺一不可。

为什么网络需要一套"通用规则"

网络这个行业存在的根本目的,是让两台主机之间能够共享数据。在没有网络的年代,要把数据从这台主机搬到那台主机,你只能把存储介质插到这台机器上,走过去插到另一台机器上,再拷贝过去——完全是人工搬运。网络的出现让这一过程自动化:主机之间通过介质(线缆或无线)自动交换数据。

但自动化有一个前提:所有参与通信的主机必须遵守同一套规则。这与人类语言没有本质区别——两个说英语的人必须遵循英语的语法规则才能互相理解,西班牙语、法语各有各的规则体系,网络通信同样有自己的"语法"。网络世界的这套规则被划分为七个不同的层级,这就是 OSI 模型(Open Systems Interconnection Model,开放系统互连模型)。

OSI 模型:把通信拆成七个抽象层

OSI 模型是一个用来描述网络系统功能的框架。它将计算系统的通信功能归纳为一套通用的规则与需求,目标是让来自不同厂商、不同软件的产品之间能够互操作(Interoperability)。在 OSI 参考模型中,计算机系统之间的通信被拆分为七个抽象层次,自上而下分别是:

层号名称(英文)名称(中文)核心职责
Layer 7Application应用层面向应用程序提供网络服务
Layer 6Presentation表示层数据格式转换、加密与压缩
Layer 5Session会话层建立、管理与拆除会话
Layer 4Transport传输层服务到服务(Service to Service)的交付,使用端口
Layer 3Network网络层端到端(End to End)的交付,使用 IP 地址
Layer 2Data Link数据链路层节点到节点(Hop to Hop)的交付,使用 MAC 地址
Layer 1Physical物理层在物理介质上传输原始比特流

下面我们逐层展开,看看每一层具体解决什么问题。

物理层(Physical,Layer 1):比特流的搬运工

物理层是 OSI 模型的第 1 层,负责通过某种物理手段把数据从一台主机传到另一台主机。这里的手段既包括物理线缆(如以太网线、光纤),也包括我们常说的 Wi-Fi 无线传输。在较早期的网络设备中,我们还会看到**集线器(Hub)和中继器(Repeater)**这类相对传统的设备,它们的作用就是在物理层上把信号从一个主机转发到另一个主机。

可以这样理解:物理层只关心"比特(1 和 0)能不能过去、信号能不能被识别",它不关心比特的含义。

数据链路层(Data Link,Layer 2):节点到节点,数据打包成帧

数据链路层是第 2 层,它实现了节点到节点(node to node)的传输,此时数据被打包成帧(Frame)。这一层还承担了一部分对物理层可能出现的错误进行纠错的工作。更重要的是,MAC 地址正是在这一层被首次引入。

这也是我们第一次正式提到交换机(Switch)——在 Day 21 的网络基础概念中我们介绍过:交换机负责网络内部的通信,将数据包直接转发给目标主机。交换机正是工作在数据链路层的典型设备。

网络层(Network,Layer 3):端到端,IP 地址登场

你可能常听到"三层交换机"或"二层交换机"的说法,这里的"层"指的就是 OSI 模型。网络层(第 3 层)的目标是端到端(End to End)的交付,这一层我们看到了IP 地址——同样在 Day 21 的概览中首次提到过。

路由器(Router)和主机都存在于第 3 层。记住:路由器的作用是在多个网络之间进行路由转发;凡是拥有 IP 地址的设备,都可以视为"三层设备"。

为什么需要 MAC 和 IP 两套寻址方案?

一个很自然的问题是:既然第 2 层有 MAC 地址、第 3 层有 IP 地址,为什么不能只用一套?

想象一下数据从一台主机发往另一台主机的过程:每台主机都有 IP 地址,但数据在途中要经过多台交换机、路由器,而每一台设备都有自己的第 2 层 MAC 地址。关键在于两套地址的作用范围完全不同:

  • IP 地址(Layer 3)= 端到端交付(End to End Delivery):IP 地址会一直跟随这份数据,直到它到达最终的目标主机,中途不管经过多少台设备都不会改变。
  • MAC 地址(Layer 2)= 逐跳交付(Hop to Hop Delivery):MAC 地址只在相邻两台设备(主机 → 交换机/路由器)之间生效,每经过一跳就会根据下一跳设备重新封装,它只关心"下一跳"。

至于把 Layer 3 的 IP 地址和 Layer 2 的 MAC 地址关联起来的协议,就是ARP(Address Resolution Protocol,地址解析协议)。ARP 属于后面课程要展开讲的网络协议之一,Day 23 会专门介绍,这里先留个悬念。

传输层(Transport,Layer 4):服务到服务,用端口区分数据流

传输层(第 4 层)负责服务到服务(Service to Service)的交付,它的职责是区分不同的数据流。正如第 3 层和第 2 层各有自己的寻址方案,传输层的"寻址方案"是端口(Port)。一个主机上可能同时运行着多个应用程序(Web 服务、邮件服务、数据库服务……),正是通过源端口和目的端口,传输层才能把数据准确地交给正确的应用进程。

会话层、表示层、应用层(Layer 5/6/7):上三层的边界日渐模糊

对于第 5、6、7 层(会话层、表示层、应用层)之间的界限,业界观点其实已经变得比较模糊——现代网络实践中,这三层的功能往往被合并讨论。相比之下,TCP/IP 模型提供了更贴近当下网络实践的视角:它将网络通信简化为四层(网络接口层、互联网层、传输层、应用层),把 OSI 的上三层大致合并进一个"应用层"。要理解今天实际运行的网络,TCP/IP 模型通常是更实用的参照。

数据封装:发送端自顶向下逐层"加头"

理解了七层结构之后,关键问题是:两台主机实际通信时,数据是怎么走完整个协议栈的?这就引入了网络中最核心的机制之一——封装(Encapsulation)。

以源主机为例,一个应用程序生成了要发往另一台主机的数据,整个封装过程自上而下依次是:

  1. 数据先到达第 4 层(传输层):传输层为数据添加一个头部(Header),头部承载第 4 层的目标——服务到服务交付,因此包含源端口和目的端口,端口使用 TCP 或 UDP 协议承载。此时"数据 + 端口头部"合称段(Segment)。
  2. 段向下交给第 3 层(网络层):网络层再添加一个头部,承载第 3 层的目标——端到端交付,因此头部中包含源 IP 地址和目的 IP 地址。"IP 头部 + 数据"被称为包(Packet)。
  3. 包再交给第 2 层(数据链路层):数据链路层再次添加头部,实现第 2 层逐跳交付的目标,头部中包含源 MAC 地址和目的 MAC 地址。"第 2 层头部 + 数据"被称为帧(Frame)。
  4. 帧最终转换为 0 和 1 的比特流:经过第 1 层(物理层),通过有线线缆或 Wi-Fi 发送到线路上。

把上面"每层头部 + 数据"的命名整理成一张表,就是网络工程师口中常说的PDU(协议数据单元)命名:

层级头部内容该层"头部 + 数据"的专有名称
Layer 4 传输层源端口 / 目的端口段(Segment)
Layer 3 网络层源 IP / 目的 IP包(Packet)
Layer 2 数据链路层源 MAC / 目的 MAC帧(Frame)
Layer 1 物理层——(比特流)比特(Bits),如10101010101111...

解封装:接收端自底向上逐层"去头"

有发送就有接收。既然源主机应用层生成的数据被封装备受层层头部,那么接收端的过程恰好与之相反:数据从物理层进入接收主机后,自底向上逐层去掉对应层的头部(De-encapsulation,解封装),最终把最原始的应用程序数据还原出来,交给接收端的应用层。这正是"发送端怎么套上去的,接收端就怎么脱下来"的对称过程。

结语与课程衔接

至此,我们已经把 OSI 七层模型、每层的职责与寻址方式、以及封装/解封装的完整链路都过了一遍:

  • 物理层负责比特传输(线缆、Wi-Fi、集线器/中继器);
  • 数据链路层负责逐跳转发与帧(交换机、MAC 地址);
  • 网络层负责端到端路由(路由器、IP 地址);
  • 传输层负责服务到服务(端口、TCP/UDP);
  • 上三层(会话/表示/应用)在现代实践中界限模糊,可用 TCP/IP 模型补充理解。

这套"自顶向下封装、自底向上解封装"的心智模型,是后续一切网络知识(协议、DNS、NAT、DHCP、子网)的基础。接下来的 Day 23 将正式进入网络协议的世界,从 ARP、FTP、SMTP、HTTP/HTTPS、DNS、DHCP 等常用协议入手,继续本次网络专题的旅程。

参考资源

本篇内容为 90DaysOfDevOps 项目 2022 年课程 Day 22 的中文整理,原课程内容大量参考了 Practical Networking 的 Networking Fundamentals 系列视频教程;如需系统学习计算机网络,也可以观看完整的计算机网络安全课程(Computer Networking full course)作为补充。课程完整脉络可回顾 2022 年课程目录 与 Day 21 网络基础概念。

  • 文档/教程

【免费下载链接】90DaysOfDevOps

This repository started out as a learning in public project for myself and has now become a structured learning map for many in the community. We have 3 years under our belt covering all things DevOps, including Principles, Processes, Tooling and Use Cases surrounding this vast topic.

项目地址:https://gitcode.com/gh_mirrors/90/90DaysOfDevOps
点击查看免费下载
上一篇:3步快速定位Windows热键冲突:Hotkey Detective终极指南
下一篇:A5设备在iOS 9.3.5越狱过程中的内核panic故障深度分析:数据初始化异常的技术根源与解决方案

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

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

立即咨询