整个osi模型分哪几层,osi参考模型从哪一层开始

首页 > 经验 > 作者:YD1662022-11-08 23:26:34

今天这篇的标题是“扫盲”,也就是说:即使那些完全不懂 IT 领域,也不懂CT领域的读者,依然能看懂(至少能看懂一部分)。为了做到这点,我会尽量使用通俗的比喻,并适当加一些示意图。

另外,就算你已经比较了解网络通信领域,本文中提到的某些部分,也可能是你所不知道的。也就是说:懂行的同学,看看此文,也会有帮助。
本文的标题特地强调了【系统性】——我希望这篇教程能帮助读者对“计算机网络通信”这个领域进行系统性学习(何为“系统性学习”?)
为了做到【系统性】这个目的,这篇教程很长。建议大伙儿慢慢看,不要着急。

★基本概念

为了足够通俗,我先要介绍一些基本概念。

◇信道(channel)

这是通讯领域非常基本的概念,肯定要先聊聊它。
通俗地说,信道就是“传送信息的通道”。

◇信道的类型

首先,信道可以从广义上分为“物理信道 & 逻辑信道”。
顾名思义,“物理信道”就是直接使用某种【物理介质】来传送信息;至于“逻辑信道”——是基于“物理信道”之上抽象出来的玩意儿(待会儿讲到“协议栈”的时候再聊)。

◇信道的带宽

“带宽”指的是:某个信道在单位时间内最大能传输多少比特的信息。
请注意:
电气领域 & 计算机领域都有“带宽”这个概念,但两者的定义不太一样。电气领域所说的“带宽”指的是“模拟带宽”,单位是“赫兹/Hz”;计算机领域所说的“带宽”指“数字带宽”,单位是“比特率”或“字节率”。
后续章节提到“带宽”,都是指计算机领域的术语。

◇带宽的单位——容易把外行绕晕

“比特率”或“字节率”很容易搞混淆。用英文表示的话——大写字母 B 表示【字节】;小写字母 b 表示【比特】。

由于带宽的数字通常很大,要引入“K、M、G”之类的字母表示数量级,于是又引出一个很扯蛋的差异——“10进制”与“2进制”的差异。
【10进制】的 K 表示 1000;M 表示 1000×1000(1百万)
【2进制】的 K 表示 1024(2的10次方);M 表示 1024×1024(2的20次方)
为了避免扯皮,后来国际上约定了一个规矩:对【2进制】的数量级要加一个小写字母 i。比如说:Ki 表示 1024;Mi 表示 1024×1024 …… 以此类推。
举例:
1Kbps 表示“1000比特每秒”
1KiBps 表示“1024字节每秒”

◇信道的工作模式:单工 VS 半双工 VS 全双工

再来说说信道的工作模式。大致可以分为如下三种。为了让大伙儿比较好理解,我对每一种都举相应的例子。

单工(simplex)
比如“电台广播”就是典型的【单工】。“电台”可以发信号给“收音机”,但“收音机”【不能】发信号给“电台”。

半双工(half-duplex)
比如“单条铁路轨道”,就是典型的【半双工】。火车在单条铁轨上,可以有两种运行方向;但对于同一个瞬间,只能选其中一个方向(否则就撞车了)。

全双工(full-duplex)
比如“光纤”就是典型的【全双工】。在同一根光导纤维中,可以有多个光束【同时相向】传播,互相不会干扰对方。

◇端点

为了叙述方便,我把参与通讯的对象(主体)称作“通讯端点”,简称“端点”。
这里的“端点”是广义的,可以是硬件(比如某个网卡),也可以是软件(比如某个应用程序)。

◇单播、组播/多播、广播、选播

对于“网络通讯”,至少得有 N 个端点参与,并且【N ≥ 2】才有意义。
当 N 个端点构成一个网络,这时候就会涉及到“单播、组播、广播”这几个概念。
通俗地说:
单播(unicast)——发送给网络中的指定的【单个】端点
组播/多播(multicast)——发送给网络中的指定的【多个】端点
广播(broadcast)——发送给网络中的【所有】端点
选播(anycast)——发送给网络中随机选择的【单个】端点

◇通讯协议(protocol)

所谓的“通讯协议”就是:参与通讯的各方所采用的某种【约定】。只有大家都遵守这个约定,才有可能相互传递信息。
打个比方:如果两个人要用自然语言交流,前提是:双方使用相同(或相互兼容)的自然语言。
“通讯协议”就类似某种自然语言,参与通讯的多个端点,都必须能理解这个语言。

★从“分层”到“参考模型”◇分层

在聊“分层”之前,先说说“分工”。比如在一个公司中,通常设有不同的工种/岗位,这就是【分工】。
对于网络通讯也是如此,不太可能用一种通讯协议完成所有的信息传递任务(注:对于特别简单的网络,或许有可能只用单一协议;但如今的网络通讯已经很复杂,用【单个】通讯协议包办所有事情,已经不太可能)
一旦采用了多种通讯协议,这几种协议之间,该如何配合捏?
在网络通讯领域,采用的是【分层】的设计思路。多个层次的协议在一起协同工作,技术上称作“协议栈”(洋文叫做“protocol stack”)。

◇协议栈的原理

对于多层次的协议栈。每个层次都有各自的“端点”(进行通讯的主体)。处于【同一层次】的两个端点会使用该层次的协议进行通讯(注:同一个层次的协议,可能只有一个,也可能有多个)。
除了最顶层,每个层次的端点会向其【直接】上层提供“服务”;除了最底层,每个层次的端点会调用【直接】下层提供的“服务”(这里所说的“服务”指某种“编程接口”,技术行话叫 API)。

(“协议栈”的示意图)

整个osi模型分哪几层,osi参考模型从哪一层开始(1)

(“服务”与“协议”之间的关系)

◇逻辑信道

(前一个小节说了)每个层次会向上一个层次提供服务(API 调用)。对上层而言,调用下层提供的 API 发送信息,其效果相当于在使用某种【信道】进行通讯,这也就是我在 ★基本概念 那个章节所说的“逻辑信道”。

整个osi模型分哪几层,osi参考模型从哪一层开始(2)

(“逻辑信道”示意图)

◇数据格式的原理

大部分协议会把要传送的数据切割为 N 份,每一份就是一个数据包。
通常来说,数据包的格式有如下三部分:

头部
身体(也称作“有效载荷”)
尾部(注:很多协议没有尾部)

如果你收过快递,可以把“网络数据包”与“快递包裹”作一个对照——
数据包的“头/尾”,就类似于快递包裹的【包装袋】。数据包的“身体”,就类似于快递包裹里面的东西。

对于【相邻】两层的协议,【下】层包含【上】层。也就是说:下层协议的【载荷】就是上层协议的【整体】。
还是以快递举例:
假设你从网上买了一台笔记本电脑。电脑出厂时,电脑厂商肯定会提供一个包装盒。快递公司在寄送这台笔记本的时候,又会在笔记本的盒子外面再加一个包装袋。对应到网络协议——“快递公司的包装袋”相当于【下层】协议;“电脑厂商的包装盒”,相当于【上层】协议。

整个osi模型分哪几层,osi参考模型从哪一层开始(3)

(上下层协议的格式及包含关系)

◇网络分层的参考模型

上述所说的“分层 & 协议栈”只是一个抽象的(笼统的)思路。具体要分几层?每一层要干啥事儿?这些都是很有讲究滴!网络技术发展了几十年,已经有很多牛人提出了各种不同的划分方案,称之为“网络分层的参考模型”(为了打字省力,以下简称“模型”)。
在各种模型中,名气最大的当然是“OSI 模型”(洋文称作“OSI model”)。在后续的章节中,我会以这个模型为主体,进行介绍。
除了“OSI 模型”还有一个很出名的模型是“TCP/IP 模型”(因为互联网很成功,它才跟着出名)。对“TCP/IP 模型”的分层,不同的文章或书籍,说法不太一样(“3层、4层、5层”皆有),这就引发了一些争议。包括几位热心读者也在博客留言,表达不同意见。为了避免一家之言,贴出XX百科的“”,其中给出了几种比较有名的说法。
另外,我想提醒一下:
由于本文是基于【OSI 模型】进行展开。对于 TCP/IP 模型到底算几层,这方面的争论【不】影响本文后续的内容。

★OSI 概述◇OSI 的历史

“OSI”的全称是“Open System Interconnection”。先说说它的历史。
上世纪70年代,“国际电信联盟”(ITU)想对各国的电信系统(电话/电报)建立标准化的规格;与此同时,“国际标准化组织”(ISO)想要建立某种统一的标准,使得不同公司制造的大型主机可以相互联网。
后来,这两个国际组织意识到:“电信系统互联”与“电脑主机互联”的性质差不多。于是 ISO 与 ITU 就决定合作,两家一起干。这2个组织的2套班子,从上世纪70年代开始搞,搞来搞去,搞了很多年,一直到1984年才终于正式发布 OSI 标准。

◇OSI 标准的两个组成部分

严格来讲,OSI 包括两大部分——
其一,抽象的概念模型,也就是前面提到的【OSI model】;
其二,针对这个概念模型的具体实现(具体的通讯协议),洋文叫做【OSI protocols】。

(前面说了)OSI 是由 ISO & ITU 联手搞出来滴。这两个国际组织里面的人,要么是来自各国的电信部门,要么是来自各国的高校学者。总而言之,既有严重的官僚风气,又有明显的学究风气。(正是因为这两种风气叠加,所以搞了很多年,才搞出 OSI)
OSI 的协议实现(OSI protocols),不客气地说,就是一堆垃圾——据说把 OSI protocols 所有的协议文档,全部打印成 A4 纸,摞起来得有一米多高!是不是很吓人?协议搞得如此复杂,严重违背了 IT 设计领域的 KISS 原则。
由于 OSI protocols 实在太复杂,后来基本没人用。但 OSI model 反而广为流传,并且成为“网络分层模型”中名气最大,影响力最广的一个。
因此,本文后续章节中,凡是提到 OSI,指的是【OSI model】。

◇OSI 模型的7层

OSI 模型总共分7层,示意图参见如下表格:

层次

中文名

英文名

第7层

应用层

Application Layer

第6层

表示层

Presentation Layer

第5层

会话层

Session Layer

第4层

传输层

Transport Layer

第3层

网络层

Network Layer

第2层

数据链路层

Data Link Layer

第1层

物理层

Physical Layer

(注:为了打字省力,在后续章节把“数据链路层”直接称为“链路层”)

考虑到本文是针对一般性读者的【扫盲教程】,我重点聊第1~4层。搞明白这几个层次之后,有助于你更好地理解网络的很多概念,也有助于你更好地理解很多信息安全的概念。
网上已经有很多关于 OSI 的文章,可惜大部分写得粗糙——很多文章只是在照抄定义。
要想更好地理解 OSI 模型,你得搞明白:为啥需要引入某某层?(请注意:这是一个 WHY 型的问题)
接下来在讨论 OSI 的每个层次时,我都会专门写一个小节,谈该层次的【必要性】。搞明白【必要性】,你就知道为啥要引入这个层次。

★物理层:概述◇物理层的必要性

通俗地说:直接与物理介质打交道的层次,就是物理层。这一层的必要性比较明显。
因为所有的通讯,归根结底都要依赖于【物理介质】。与物理介质打交道,需要牵涉到很多与【物理学】相关的东东。比如:“无线电通讯”需要关心“频率/波长”;电缆通讯需要跟“电压”打交道;“光纤通讯”需要关心“玻璃的折射率&光线的入射角” ……
“物理层”的主要职责是:屏蔽这些细节,使得“物理层”之上的层次不用再去操心物理学。

◇物理信道的类型

何为“物理信道”,在本文开篇的“基本概念”已经提到了。
对于“物理信道”,还可以进一步细分为如下三大类:
1. 有线信道(比如:双绞线、同轴电缆、光纤、等等)
2. 无线信道(比如:微波通讯、电台广播、卫星通讯、等等)
3. 存储信道

“存储信道”比较少见,很多人没听说过,稍微解释一下。
假设你要把一大坨信息传送给另一个人,除了用“有线 or 无线”这两种通讯方式,还可以把信息先保存到某种【存储介质】(比如硬盘),然后再把存储介质用某种方式(比如快递)转交给对方。这就是所谓的“存储信道”。

◇信噪比(Signal-to-noise ratio)

信噪比这个概念是从通信领域借用的术语。
对于“物理信道”,总是会存在某些环境干扰,称之为“噪声”(Noise)。“信道传输的有用信息”与“无用的干扰噪声”,这两者的比值就是“信噪比”。
“信噪比”单位是【分贝】。“分贝”英文叫做“decibel”(简写为 dB)。“deci”表示“十进制”;“bel”是为了纪念大名鼎鼎的贝尔(电话它爹)。

◇带宽的限制因素

“物理信道”要依赖于物理传输介质。不管使用何种物理介质,都要受限于某些基本的物理学定律(比如“光速上限”)。另外,不管何种物理介质,总是会有或多或少的环境干扰(噪声)。这两个因素导致了:任何“物理信道”的最大传输率总是有限滴。
由于物理层是最底下的一层,物理层之上的其它层次总是要直接或间接地依赖【物理信道】。因此,其它层次建立的“逻辑信道”,其带宽只会比“物理信道”的最大带宽更小。换句话说:“物理信道”的带宽上限也就是整个协议栈的带宽上限。

◇多路复用(Multiplexing)

一般来说,凡是能实现【长距离】通讯的“物理信道”,都有相当的经济成本。比如铺设“光纤、同轴电缆”都要花钱。无线电通讯虽然免去了铺设线路的成本,但需要竞标购买频段。因此,物理信道非常强调“多路复用”。
所谓的“多路复用”,通俗地说就是:尽可能地共享物理信道,不要浪费了。
“多路复用”有很多种类型;不同的类型,原理也不同。为了展示各种不同的原理,我拿【无线通信】来说事儿。
无线通信领域的“多路复用”,【至少】有如下几种:

频分多路复用/FDM(Frequency-Division Multiplexing)
这个最简单,就是根据频率拆分。不同的线路占用不同的频段,互不干扰。(电台广播用的就是这个思路)
但这个思路的缺点很明显——
其一,要依赖足够宽的频段(频段是稀缺资源);
其二,不同线路的流量可能会动态变化。如果某个线路空闲,其占用的频段就浪费了。
(注:光纤通讯中有个“波分多路复用/WDM”,本质上就是 FDM)

时分多路复用/TDM(Time-Division Multiplexing)
这种思路只用一个很窄的频段。为了在同一个频道发送多个信道,采用【分时机制】,把时间切割成很小的时间片,每个线路占用一个时间片。周而往复。
这个思路有点像十字路口的红绿灯——每隔一段时间,其中一条路可以通行。
这个思路的优点是:可以只使用一个很窄的频段。缺点是:线路越多,每条线路等待越久;即使某个线路空闲,依然会占用时间片(浪费了资源)。

码分多路复用/CDM(Code-Division Multiplexing)
这种思路采用某种【编码】的技巧,使得多个端点可以在同一个时间点使用同一频段发送数据;由于他们采用不同的编码方式,不会相互干扰。
一般来说,CDM 要依赖于“扩频技术”(spread spectrum),需占用一个比较宽的频道范围。这算是缺点。但其优点很明显——
其一,可以支持 N 个线路(N 动态变化);
其二,即使任何一个线路的流量动态变化,也不会浪费物理信道的资源。
显然,这种思路明显优于 FDM & TDM。如今在移动通讯领域大名鼎鼎的 CDMA(码分多址),采用的就是这个思路。

★物理层:具体实例◇物理层的【协议】

物理层的协议主要有如下:
USB 协议
蓝牙协议的一部分
IEEE 802.11 的一部分(Wi-Fi)
IEEE 802.16(WiMAX)
IEEE 1394(火线接口)
RS-232 协议(串行接口/串口)
……
(考虑到篇幅)我不可能具体细聊这些协议,只是贴出每个的XX百科链接,感兴趣的同学自己点进去看。

◇物理层的【协议实现】

对于电脑主机(含移动设备),“网卡硬件”包含了物理层的协议实现(参见如下示意图)
另外,还有一些专门的【1层】网络设备,也提供物理层的功能(参见下一个小节)。

整个osi模型分哪几层,osi参考模型从哪一层开始(4)

首页 12345下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.