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

1.2.3_1 OSI参考模型

在接下来的学习中,我们会简要了解OSI参考模型和TCP/IP模型这两种最常见的计算机网络体系结构。

考研对于OSI参考模型的要求并不高,我们需要记住各层的名称和顺序,以及要了解常见的网络设备分别工作在OSI参考模型的哪些功能层次。最后,我们还需要简要的了解OSI参考模型的各个层次分别需要实现哪些功能。左边是OSI参考模型,总共有七层,右边是TCP/IP模型,总共有四层。首先需要对地方蓝色高亮的几个术语进行说明,以免大家在接下来看书的过程当中产生疑惑。可以看到OSI参考模型的第四层叫运输层,TCP/IP模型的第三层我们把它称为传输层。这是两种不同的翻译,OSI模型的第四层,英文叫Transport layer,所以很多教材会把它翻译成运输层,也有的教材会把它翻译为传输层,也就是和TCP/IP模型的这种翻译保持一致,在考研当中最常见的还是传输层这种翻译。为了尽可能的贴合考研真题,接下来我们会尽量少用运输层这种翻译,会把OSI的第四层也翻译为传输层。另外还有一对术语,OSI的第三层,在英文当中,被称为Network layer,所以通常这一层会被翻译为网络层。而TCP/IP模型的第二层在英文中被称为Internet layer,所以很多教材会把它翻译为网际层。在考研当中,我们通常使用的是网络层这种翻译,所以接下来我们尽量不使用网际层这种翻译。以后即便我们讨论的是TCP/IP模型,我们也会用网络层这种翻译去指代它的第二层。所以接下来我们把蓝色高亮的这几个术语都统一为考研常用的这种翻译形式。


接下来进入正题,我们尝试记住参考模型的各个层次。首先来熟悉一下每个层次的名字,第一层叫物理层,第二层叫数据链路层,第三层叫网络层,第四层叫传输层,第五层会话层,第六层表示层,第七层应用层。在考研中,记住层次顺序是很重要的,比如有的年份可能会这么考:问你OSI 参考模型的第五层实现了什么样的功能?这种题目你当然得记住,第五层是哪一层才可以去答题。这是关于OSI的第一个学习目标。

接下来我们还需要了解常见的网络设备分别实现了哪些功能层次?还记不记得快递网络的例子,在快递网络当中,终点站需要实现的功能层次和中转站需要实现的功能层次是不一样的,在计算机网络当中也是同样的道理。计算机网络当中有主机,有集线器,有交换机,也有路由器。这些都是很常见的网络设备。我们把每一个网络设备看作一个节点,节点和节点之间用物理传输媒体进行连接。比如网线或者光纤就是物理传输媒体,对于这四种常见的网络设备来说,他们分别实现了这样的一些层次。

首先,主机实现了OSI参考模型的全部层次。集线器仅实现第一层物理层的功能,交换机实现了物理层和数据链路层的功能,路由器实现了物理层、数据链路层和网络层的功能,各个节点之间会使用物理传输媒体进行连接。我们通常会把物理传输媒体看作第0层。这几种网络设备的功能层次,大家需要有所了解。

接下来我们会依次探讨OSI参考模型的各个层次,分别需要实现什么功能。首先来看第一层物理层。刚才我们说在网络中两个节点之间用物理传输媒体进行连接,比如网线就是一种物理传输媒体,它属于第0层。节点和节点之间有了这种物理上的连接之后,它们之间要传输数据,首先要解决的第一个问题就是如何实现两个节点之间的比特传输。为了实现比特传输,物理层需要定义电路接口的参数,比如说网线的接口长什么样子,什么形状,它里边有几个针脚?这些接口的参数需要由物理层进行定义。除了网线接口之外,一些老式的计算机还会有同轴电缆的接口,可以用同轴电缆去传输二进制的零或者一。接下来物理层还需要定义传输信号的含义、电气特性等等。比如,使用同轴电缆传输二进制0和1。物理层的协议可以规定:如果收到一个五伏的高电平信号,那么这表示的是二进制1,如果收到的是一伏的低电平信号,表示二进制的0。另外物理层的协议还需要规定每个比特的电信号持续多长时间,比如以0.1毫秒作为一个比特的信号,这样的话,当节点A给节点 B发送一串比特流的时候,节点B这边也许就会监听到这样的信号,以0.1毫秒作为一个比特,如果在0.1毫秒内监测到五伏的高电平信号,那么结点B就认为这是一个二进制比特1,如果在0.1毫秒
内监测到一个低电平信号,结点B就认为,此时传输的是一个比特0。这就是物理层需要实现的一些功能,有了物理层的功能之后,两个相邻的节点就可以以比特为单位进行数据的传输。接下来思
考这样的问题,我们的这些电信号有可能会受到一些外界噪声的干扰,最终导致电信号变形。比如说一个高电频的信号,因为受到环境噪音的干扰,它变成了低电平的信号,这样的话,本来两个节点之间要传输的是二进制的1,但是最终接收方收到的是一个低电平信号,也就是会收到错误二进制0。因此,以比特为单位的传输是有可能出错的,并且接收方无法发现这种错误。怎么办呢?

此时我们需要引入第二层数据链路层,简称链路层。链路层的首要任务就是要确保两个相邻结点之间的链路在逻辑上是无差错的。因此,数据链路层最主要的功能是差错控制,链路层的实体之间以帧为单位进行数据的传输,一个帧通常会包含多个比特。比如结点A要给结点B传送八比特的数据,数据链路层会在原始的八比特数据之外,额外的再增加比如说两个比特作为校验信息,也就是会采用某一种校验编码技术。数据链路层会把8+2也就是十比特,统一的交给物理层进行传输,结点B这边就会收到十比特的数据,把十比特数据交给节点B的数据链路层,那么节点B的数据链路层实体会根据8+2比特的信息进行数据的检错,如果发现这些数据是有问题的,数据链路层可以对这一帧的数据进行纠错。当然,也可以采取另一种更简单的处理方法,就是直接把这一帧给丢弃,让结点A重新传送这个帧。如果没有检测出数据错误,数据链路层会把两比特的这个校验信息给拆掉。然后把8比特的原始数据交给上一层处理。所以数据链路层最主要的功能就是差错控制,采用合适的校验技术就可以实现逻辑上无差错的传输,除了差错控制之外,OSI参考模型还要求链路层实现流量控制的功能,这个功能可以协调两个节点的数据链路层之间发送帧的速率,发送的速度不能太快,否则有可能会丢帧,比如节点A一秒钟可以发送十个帧,而节点B一秒钟最多只能接收和处理五个帧,那么节点B的数据链路层就会通过流量控制的协议,去要求节点A发送的慢一些,不要超过节点B的最大接收速率。这是数据链路层的两个功能,现在有了第零层,第一层和第二层之后,节点A和节点B之间就可以逻辑上无差错的去传输数据了。然而在计算机网络当中,节点和节点之间可能并不会直接相连,在大多数情况下,我们需要经过多个路由器的转发,才可以从原节点把数据传送到最终的目的节点。为了实现数据的存储转发,我们就需要再增加第三层,网络层。网络层的任务就是把分组从原结点转发到目的节点,为了完成这个任务,网络层需要包含以下的功能。

首先,最重要的功能是路由选择。在计算机网络中原节点到目的节点之间,可能会有非常复杂的路由器连接而成的网络。一个数据分组从A点转发到B点,可以转发的路径有很多条,网络层需要去规划出分组在各个节点之间转发的最佳路径。这是路由选择的功能,选择好走哪条路之后,接下来网络层还需要把分组转发到对应的一条路径上。所以网络层要实现的第二个功能叫做分组转发,网络层的对等实体之间以分组为单位进行数据的传输。在OSI参考模型中,分组又称为数据报,所以在这门课当中,大家可以把这两个术语视为等价。接下来网络层还需要实现拥塞控制和网机互联的功能,拥塞控制的功能要求网络层的这些实体之间相互协作、相互配合,发现某些节点的网络拥塞情况,并且采取相应的措施去缓解拥塞。就有点类似于城市的某个区域,如果发生了堵车,交管部门可以通知其他的司机,避开堵车的区域。这样的话,堵车的区域,车流量就会减少,堵车情况就可以慢慢的被缓解,所以可以说交管部门实现了拥塞控制的功能。接下来网际互联的功能,我们知道路由器可以把多个网络相互连接起来,每一个网络的内部构造都是相异的,不一样的,并且每个网络的内部,采用的局域网技术可能各不相同,有的可能采用以太网技术,有的可能采用令牌环网技术。无论这些网络的内部构造是怎么样的,经过路由器网络层的处理,就可以屏蔽这些网络的内部区别,从而实现异构网络的互联。这是网络层的第四个功能。

除了这四个功能之外,网络层还需要实现其他的一些功能,包括差错控制、流量控制、连接的建立与释放、可靠传输管理。差错控制和流量控制,我们比较熟悉,之前我们说数据链路层之间传输数据的单位是帧,数据链路层也需要支持差错控制和流量控制的功能,只不过数据链路层是以帧为单位进行差错控制和流量控制,而网络层和网络层之间是以分组为单位,去进行差错控制和流量控制。网络层之间以分组为单位传输数据,一个分组有可能被拆分成多个帧,数据链路层以帧为单位进行差错控制和流量控制,也就是说,当接收方收到一个帧的时候,它可以确保这个帧的数据是没有错误的。现在故事是这样的,假设其中一个帧丢失了,这就会导致接收方的网络层这边事实上只会收到两个帧组合而成的一个错误的分组,所以接收方的网络层还需要对这个分组进行差错控制、流量控制,以确保整个分组是正确的。换句话说,数据链路层只能保证局部正确,每一个帧都是正确的,但是数据链路层无法保证整个分组全局是正确的。因此,网络层需要对分组这个完整的数据再一次进行差错控制、流量控制,以确保它全局正确。所以OSI参考模型会要求网络层也进行差错控制、流量控制。接下来还有连接的建立与释放,这个功能可以使得当原节点要给目的节点发送一堆数据分组的时候,先建立连接,也就会建立一条虚电路,建立好虚电路之后,原节点给目的节点发送的所有分组都可以按序,并且不重复的到达目的节点。这是连接的建立与释放带来的一个效果。最后,网络层还需要支持可靠传输管理的功能。所谓可靠传输就是指,当目的结点收到一个分组之后,需要给原结点,返回一个确认消息,以保证这个传输的过程是可靠的。比如你的老师给你通知一个很重要的事情,你是不是会给老师回复一个收到,如果你不给他回复的话,老师会以为你是不是没有看到这个消息,也就是说,这个传输过程会变得不可靠,因此如果每收到一个分组,都会给发送方返回确认消息的话,我们就可以确保分组序列的传输是可靠的。这就是OSI网络层需要实现的一些功能。有了网络层之后,我们已经可以把分组从原结点,转发到目的节点了,也就是说网络层实现了从主机到主机的数据分组的转发。但是每台主机上面会运行很多进程,数据从一个主机传给另一个主机之后,我们还需要区分这个数据是来自于哪个进程,又想要发给哪个进程。

因此,我们在主机的网络层之上,还需要增加传输层,用来实现端到端的通信,也就是要实现进程到进程的通信。我们会给每个进程绑定一个端口号,比如微信的端口号可以设置为8899,QQ 的端口号可以设置为6537。源节点的微信要给目的节点的微信传送数据的时候,我们就可以通过传输层的处理,去实现进程到进程之间的通信,比如源节点的微信,我可以指明我要给目的节点的8899端口号发送数据,传输层会完成端口号和进程之间的这种映射关系。这样就实现了进程到进程的通信。在数据的发送方多个进程可以通过端口号去请求传输层的服务,我们把这个功能称为传输层的复用。在数据的接收方,传输层又会通过端口号把收到的数据分派给对应的进程,我们把这个功能称为传输层的分用。传输层和传输层之间会以报文段为单位来传输数据,一个报文段可能被拆分成多个分组,拆成多个分组之后,网络层再把这些分组发送给目的节点。最后,再由目的节点的网络层把这些分组拼凑成一个完整的报文段,交付给目的节点的传输层。


总结一下,传输层需要实现进程到进程的通信,因此它需要包含如下的功能。首先是复用和分用,除此之外,传输层还需要实现其他功能,包括差错控制、流量控制、连接的建立与释放,可靠传输管理这几个功能,我们刚才在介绍网络层的时候,也有提到过,只不过网络层是针对分组,以分组为单位去实现差错控制、流量控制、连接的建立与释放,可靠传输管理这几个功能,而传输层会以报文段为单位去实现差错控制、流量控制、还有连接的建立与释放可靠传输管理。因为一个报文段可以被拆分成多个分组,网络层只能确保分组序列的传输是可靠的。但是一个分组,它只是报文段的一个局部,局部的数据可靠,并不意味着全局的数据可靠。所以传输层的这些功能,它针对的是报文段,是对报文段传输过程的一个保障,这是传输层。

接下来在传输层之上,还有5到7层,分别是会话层、表示层、应用层。这几个层次考试涉及的比较少,所以我们就介绍的简单一点。首先第五层会话层,它的任务是管理进程之间的会话,最主要的功能叫做会话管理,采用检查点机制,当进程之间的通信失效的时候,可以从检查点继续恢复通信,类似于文件的断点续传。比如左边这个微信给右边这个微信传一个1GB的视频,会话层会管理这个数据传输的过程,如果传了 500M 的时候,通信断了,没网了,会话层会记录这个检查点,当两个进程恢复连接的时候,文件会从这个检查点继续往后传。这是会话层的任务。主要功能是会话管理。接下来,第六层表示层的任务是要解决两台主机上信息表示不一致的问题。比如两台主机的编码格式可能不一样,左边这台主机是GBK编码,右边这台主机是utf-8 编码。这样的话,同一个汉字在左边这台主机上的二进制和右边这台主机上的二进制就会有所区别,也就是信息表示的方式不一样。因此,表示层最主要的功能就是数据格式转换,比如编码的转换或者压缩解压、加密解密
等等。第七层需要实现特定的网络应用,应用层的功能就很多了,我们可以根据应用程序的不同需求去设计。比如,应用层很出名的一个协议叫HTTP协议,我们浏览网页的时候离不开HTTP协议。对于上面这三个层次,我们简单了解一下就可以。

接下来,我们对各个层次的数据传输单位进行一个总结。最顶层应用层之间以报文为单位进行数据传输,比如两个应用程序传一个文件,一个文件就是一个报文,表示层和会话层不会对报文的数据进行拆分。直到报文数据交给传输层之后,传输层会把报文数据拆分成多个报文段,紧接着以报文段为单位进行数据传输,传输层的报文段会交给网络层进行进一步的处理,网络层又会把报文段拆分成若干个分组,然后以分组为单位,在网络层之间进行传输,而网络层的每一个分组,又会交给数据链路层,数据链路层又会把一个分组拆分成多个帧,然后在数据链路层之间以帧为单位进行传输。最后,数据链路层把一个帧交给物理层,物理层会以比特为单位去传输这些数据。可以看到,越靠上的层次,数据传输单位越大,越靠下的层次,数据传输单位越小,把一块比较大的数据拆分成多个更小的数据,这个过程叫做数据的分段。而在数据的接收方这儿,我们又会把底层收到的比较小块的数据,重新组装成更大块的数据,这个过程我们可以称为数据的重装。所以刚才提到的4、3、2、1这几个层次,都需要实现数据的分段与重装这个功能。

在这个视频中,我们介绍了OSI参考模型的各个层次,对于OSI参考模型,首先我们需要记住各个层次的顺序,每一个层次需要完成的任务各不相同,同时各个层次要实现的功能也不一样,在这个表格中已经给大家做好了总结,其中标红字的这些功能是各个层次最主要的功能,另外在传输层和网络层这儿,很多功能点看起来是完全一样的,但事实上,这两个层次的功能针对的对象不一样,
传输层的差错控制、流量控制、连接管理和可靠传输管理,针对的是报文段,而网络层针对的是数据报,也就是分组,在数据链路层也有差错控制和流量控制的功能。只不过数据链路层针对的是帧。大家可以再根据这页PPT进行回顾和梳理。OSI参考模型最有可能考察的点都在这个PPT里边了。

以上就是这个视频的全部内容。

http://www.dtcms.com/a/272171.html

相关文章:

  • STM32F103C8T6单片机内部执行原理及启动流程详解
  • vue3实现pdf文件预览 - vue-pdf-embed
  • 力扣热门算法题 127.单词接龙,128.最长连续序列,130.被围绕的区域
  • MySQL数据库基础教程:从安装到数据操作
  • 快速合并多个CAD图形为单一PDF文档的方法
  • 常见 Docker 错误及解决方法
  • (vue)前端区分接口返回两种格式,一种Blob二进制字节流,一种常规JSON,且将blob响应转为json
  • 基于Catboost算法的茶叶数据分析及价格预测系统的设计与实现
  • 多元函数的切平面与线性近似:几何直观与计算方法
  • 高数附录(1)—常用平面图形
  • 《O-PAS™标准的安全方法》白皮书:为工业自动化系统筑起安全防线
  • msf复现永恒之蓝
  • 每日一SQL 【各赛事的用户注册率】
  • Datawhale AI 夏令营:基于带货视频评论的用户洞察挑战赛 Notebook(下篇)
  • 流媒体服务
  • SIMATIC S7-1200的以太网通信能力:协议与资源详细解析
  • x86架构CPU市场格局
  • WIFI协议全解析05:WiFi的安全机制:IoT设备如何实现安全连接?
  • PHP安全编程实践系列(三):安全会话管理与防护策略
  • 【运维】串口、网络一些基本信息
  • 【超详细】CentOS系统Docker安装与配置一键脚本(附镜像加速配置)
  • Pinia 笔记:Vue3 状态管理库
  • 双模秒切,体验跃迁!飞利浦EVNIA双模游戏显示器27M2N6801M王者降临!
  • UnrealEngine5游戏引擎实践(C++)
  • 如何将多个.sql文件合并成一个:Windows和Linux/Mac详细指南
  • 字节 Seed 团队联合清华大学智能产业研究院开源 MemAgent: 基于多轮对话强化学习记忆代理的长文本大语言模型重构
  • 为了安全应该使用非root用户启动nginx
  • 相机:以鼠标点为中心缩放(使用OpenGL+QT开发三维CAD)
  • [Xmos] Xmos架构
  • 从面向对象编程语言PHP转到Go时的一些疑惑?