图解计算机网络的七层结构

往基础再复习一层,聊聊 OSI 七层模型。从应用层到物理层,每一层管啥、为啥要分层,我用图把这摞“千层饼”摊开讲,再拿寄快递类比一下,帮你把这个背了就忘的经典模型真正记住。

最近顺着 TCP、UDP 往下聊,越聊越觉得得往更底下的地基上翻翻。那块地基,就是 OSI 七层模型。

这东西几乎是网络课的第一节,背过的人不少,但真能说清每层干啥、为啥要这么分的,不多。我自己也是背了忘、忘了背好几轮。

这篇不求你背下来,用图把它摊开,讲清楚道理,能记住就是赚到。

为什么要分层

先别急着记七层是哪七层,先想想为啥要分层。

网络通信这事儿特别复杂:数据怎么变成电信号、怎么找到对方机器、怎么保证不丢、怎么让应用看懂……一堆问题搅在一起。

要是全糊在一坨代码里,那没法维护,改一处牵一发动全身。

于是老祖宗们想了个招:分层。每一层只管自己那摊事,层与层之间约定好接口,各干各的互不干扰。

打个比方,寄快递:

  • 你只管把东西装箱、写地址(你不用管卡车怎么开)
  • 快递员只管取件送件(他不用管你箱子里装了啥)
  • 运输队只管把车从 A 城开到 B 城(他不用管这车货是谁的)

每个环节只对接上下游,各司其职。网络分层是一个道理,这也是为啥它叫“分层设计”——软件架构里那套分层思想,根子上是相通的。

七层长什么样

话不多说,先把这摞“千层饼”摆出来。习惯从上往下看:

  第7层  应用层      Application    直接跟软件打交道
  第6层  表示层      Presentation   数据格式、加密、压缩
  第5层  会话层      Session        建立/管理会话
  --------------------------------------------
  第4层  传输层      Transport      TCP/UDP 在这层
  第3层  网络层      Network        IP 寻址、路由
  第2层  数据链路层  Data Link      相邻设备间传帧
  第1层  物理层      Physical       比特流、网线电信号
​

上面三层(应用、表示、会话)更靠近软件和用户,下面四层更靠近数据传输本身。

中间那条线是我随手划的,帮你把“偏应用”和“偏传输”大致分开,看着不那么懵。

下面从底往上,一层层过。从底下讲更顺,因为数据是从物理线路一路往上交给应用的。

底下四层管传输

物理层

最底下,最“硬”的一层。

它管的是实打实的信号:网线里的电信号、光纤里的光信号、无线电波。说白了就是把 0 和 1 变成物理世界里能传的东西。

你插网线、连 WiFi,打交道的就是这一层。它不懂数据是啥意思,只负责把比特一个个送出去。

数据链路层

往上一层,管相邻两个设备之间怎么传。

它把比特流打包成一个个“帧”,还负责在同一个局域网里,靠 MAC 地址找到隔壁那台具体的机器。

可以理解成:物理层负责“能传”,数据链路层负责“传给旁边正确的那台”。

网络层

这层管跨网络找路,主角是 IP。

数据要从你家电脑发到千里之外的服务器,中间隔着无数台路由器。网络层干的就是靠 IP 地址确定“对方在哪”,再规划出一条路把包转过去。

寄快递里,这层相当于根据收件地址决定走哪条运输线路。

传输层

这层管两个应用之间的数据怎么传,主角就是我们之前聊过的 TCP 和 UDP。

  • 要可靠、按序、丢了重传 → TCP
  • 要快、能忍丢包 → UDP

网络层负责把包送到对方机器,传输层负责把数据准确交给机器上具体的那个程序(靠端口号区分)。

上面三层管应用

会话层

管会话的建立和维护。

就是负责“开一个对话、保持着、聊完再关掉”这么个过程。哪个数据属于哪次对话,由它照看。

实际开发里这层存在感很低,多数时候被上面的应用层一起包办了。

表示层

管数据长啥样。

加密解密、压缩解压、编码格式转换,都是它的活儿。它保证一端发出的数据,另一端能按正确的格式解读出来,不至于变成乱码。

应用层

最顶上,离我们最近的一层,直接对接软件。

你熟悉的 HTTP、DNS、FTP 这些协议都在这层。浏览器发个网页请求、程序调个接口,用的就是应用层协议。

平时写业务代码,打交道最多的其实就是这一层。

数据是怎么穿过七层的

光记每层干啥还不够,得看看数据实际怎么走的。

发送的时候,数据从最上层往下走,每经过一层就被套一层“信封”(加上该层的头部信息):

发送方(从上往下,层层打包)         接收方(从下往上,层层拆开)

应用层   [数据]                         [数据]   应用层
   |                                       ^
传输层  [TCP头|数据]                 [TCP头|数据]  传输层
   |                                       ^
网络层 [IP头|TCP头|数据]         [IP头|TCP头|数据] 网络层
   |                                       ^
链路层[帧头|IP头|TCP头|数据] [帧头|IP头|TCP头|数据]链路层
   |                                       ^
物理层 ==========> 电信号在网线里跑 ==========>  物理层
​

这个过程有意思:

  • 发送方:数据从应用层出发,每往下一层,就被加上一个头部,像套娃一样一层层包起来,最后变成电信号发出去
  • 接收方:反过来,从物理层收到信号,每往上一层就拆掉一个头部,一层层剥开,最后把最里面的原始数据交给应用

这个“打包—拆包”的过程有个专门的词,叫封装和解封装。

关键在于:每一层只关心自己那个头部。传输层不用管网络层的 IP 头是啥,网络层也不用管里面的数据是啥内容。各拆各的,互不打扰。

分层的妙处到这就全体现出来了——每层只干自己的活,拼起来就完成了一次完整的通信。

顺带提一句 TCP/IP 四层

你可能还听过“TCP/IP 四层模型”,会有点混。

简单说:OSI 七层是理论上的参考模型,分得细,用来讲原理最清楚;实际工程里跑的是 TCP/IP 模型,把七层合并简化成了四层(把应用、表示、会话揉成一个应用层)。

它俩不冲突,一个偏教学、一个偏落地。

搞懂了七层,四层自然就懂了。这里点一句,不展开了。

小结

OSI 七层这块地基,抓住两条主线就不容易忘。

  • 分层是为了各管一摊:复杂问题拆开,每层只对接上下游,互不干扰
  • 数据穿层靠封装:往下发层层套头部,往上收层层拆头部

七层从下往上:物理、链路、网络、传输、会话、表示、应用。底下四层管把数据传到位,上面三层管让应用用得上。

死记硬背确实容易忘,但记住“分层各司其职 + 数据套娃式封装”这两个道理,再看那张图,七层是啥、干啥,基本就串起来了。那就对着图多瞄两眼吧。

更多推荐

章节目录