UN1L5-1——OSI模型

OSI模型

OSI(Open System Interconnection Reference Model),开放式系统互联通信参考模型,简称OSI模型,它是一种概念模型
由ISO(International Organization for Standardization)国际标准化组织提出,是一个试图使各种设备在世界范围内互联为网络的标准框架
不同公司都按照统一的标准来控制网络互联通信,那么各设备之间就能够达到真正的互联通信了

说人话:
OSI模型是人为定义的一个标准(规范),它制定了设备之间相互连接相互通信的标准(规范)
各公司按照这个标准设计的规则(协议),就可以让不同设备利用互联网进行互联通信

OSI七层模型是更偏向于理论的知识点,说实话就算我们不学习它,直接学习网络相关API的知识点,也是完全没有影响的
但是通过OSI七层模型的学习,可以帮助我们理解之后的重点知识点TCP/IP协议
对于OSI七层模型你只需要大概了解每一层定义的规则是什么,它们分别要做些什么事情
我们在实际开发的时候其实是接触不到大部分层级内容的

OSI模型的规则

由于互联网协议(规则)很庞大,很复杂,所以OSI模型采用了分而治之的设计方法,
把网络的功能划分为不同的多个模块,以分层的形式有机地组合在了一起

OSI模型将复杂的互联网实现 分成了好几层(部分)
每一层都有自己的功能,就好像建筑物一样,从上到下有很多层构成,每一层都要靠下一层的支持,
用户接触到的都只是最上面的一层,感受不到下面层级的复杂性

OSI模型把互联通信的过程抽象的分成了七个层级,不同层级的职能各有不同:

image

  1. 应用层
  2. 表示层
  3. 会话层
  4. 传输层
  5. 网络层
  6. 数据链路层
  7. 物理层

你可以简单的理解这7个层级就是在两台计算机互联通信时必经的7个步骤,每个步骤处理的内容各不相同,
那么我们接下来稍微详细一点的理解各层次是在做什么

OSI模型每层的职能

OSI七层模型相对来说是比较抽象的概念和一些硬件知识,其中每一层的内容深入后都有很多的知识点。
比如:交换机、路由器、网线等等硬件设备的工作原理、一些协议(规则)的具体内容

这些知识固然很有用,但是对于我们软件开发的程序员来说,目前没有必要过于深入的学习他们,
因为这些知识体量较大而且并不能立竿见影的提升我们完成游戏需求的能力
所以我们的学习重点放在了解每一层大概做了什么事,如果想要了解具体的实现,大家可以查阅相关资料,我们不在这里深入讲解

为了让大家更好的了解OSI七层模型,我们分成两部分:

  • 第一部分:从地基开始 物理层—>数据链路层—>网络层—>传输层

    image

    发送方从上向下传递数据时,会一层一层的添加对应的层头,
    接收方从下向上传递数据时,会一层一层的解析对应的层头

    • 物理层

      电脑要联网,第一件事要干什么?当然是先把电脑连起来,可以用光缆、电缆、双绞线、无线电波等方式。

      功能:它就是把电脑连接起来的物理手段,它主要规定了网络的一些电气特性,作用是负责传送0和1的电信号。
      物理层将2进制数据利用电脉冲,在物理媒介上实现比特流的传输

      它的主要功能是:定义传输模式、定义传输速率、比特同步、比特编码等等

      image

    • 数据链路层

      物理层用物理硬件来传输0和1,但是单纯的0和1没有任何意义,必须规定解读方式,比如多少个电信号算一组?每个信号位的意义?
      这就是数据链路层的意义,它在物理层的上方确定0和1的分组方式,并且明确信息是发送给哪台计算机的网卡(Mac地址)

      功能:将想要发送的信息构成一个数据包,叫做“帧”,每一个帧分为两个部分:标头Head + 数据Data,标头包含数据包的一些说明项
      比如:发送方和接收方的Mac地址,数据类型等等

      image

    • 网络层

      通过Mac地址定位一台计算机,理论上是可行的,但是效率非常低下,
      我们之前学习过IP地址、端口、Mac地址,我们知道我们是通过IP地址快速的定位网络上的设备的,而网络层的主要功能就和IP地址有关系

      功能:IP选址、路由选择
      在网络环境中,两台设备之间可能会经过很多个数据链路,也可能还要经过很多通信子网,网络层的主要作用就是选择一条合适的路径用

      image

    • 传输层

      有了Mac地址和IP地址,我们已经可以在互联网上任意两台主机上建立通信了,但是如果没有端口号,我们无法准确的在应用程序之间进行通信。
      传输层的功能,就是建立端口到端口的通信

      功能:建立、管理和维护端到端的连接
      传输层也称运输层,传输层负责主机中两个进程之间的通信,功能是为端到端连接提供可靠的传输服务。它也会在上一层的数据基础上添加标头
      包含信息:发送方接收方的端口信息、协议信息等等

      image

  • 第二部分:从屋顶开始 应用层—>表示层—>会话层

    image

    • 应用层

      应用层为最上层,和用户直接打交道的可以联网的应用程序就属于这一层,比如浏览器,游戏等等
      我们程序员主要开发的也是这一层,它会在原始数据的基础上添加标头

      功能:为应用程序提供服务,我们可以根据自己要传递的信息,决定使用哪一种协议(规则)来处理数据,进行传输

      包含信息:协议信息等等

      常用的协议(规则):FTP,HTTP,SMTP等等

      image

    • 表示层

      不同操作系统的应用层代码和数据可能规范都不一样,为了让信息可以在各操作系统和设备中通用,表示层做的事情就很重要了

      功能:数据格式转化、代码转换、数据加密,
      为了让不同设备之间能够有统一的规则,表示层会把数据转换为能与各系统格式兼容并且适合传输的格式
      表示层就像是个翻译,会把数据相关信息翻译成国际通用的规则

      image

    • 会话层

      有了准备好的上层数据,那么这些数据最终就是希望被传递的内容,那么在信息传递时我们需要对其进行管理,
      比如消息是否发送完毕,对方是否收到,是否断开连接等等,会话层的主要工作就是完成这些内容

      功能:建立、管理和维护会话,
      它主要负责数据传输中设置和维护网络中两台设备之间的通信连接,它不参与具体的传输,
      主要提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制

      image

image