OSI 开放互联模型 网络分层

微信搜索“编程笔记本”,获取更多信息
------------- codingbook2020 -------------

今天我们介绍一下 OSI 网络分层

网络结构的标准模型是 ISO/OSI 开放互联模型(Open System Interconnection Reference Model),它是由国际互联网标准化组织(ISO)定义的网络分层模型。虽然目前没有完全按照这种模型实现的网络协议栈,但是这种模型对于理解网络协议的内部架构很有帮助,为学习网络协议提供了很好的参考模型。

1. OSI 网络分层结构

ISO/OSI 开放互联模型采用 7 层结构,如下图所示:

在 OSI 的 7 层模型结构中,从单个主机的角度来看,每一层与本层的上下两层从逻辑上是分开的,如 A 的网络层和数据链路层是分开的。这种方式使得每一层为上一层提供服务,依赖于下层的数据并未上一层提供接口。同时各层之间的规则是相互独立的,如数据的格式、通信的方式等,这称为本层的协议。

不同主机的相同层之间是对等的,如主机 A 中的应用层和主机 B 中的应用层是相同的层次,这两个层护卫对等层,对等层之间的规则是一致的,但实现不一定相同。例如,UNIX 网络协议栈运行在主机 A 上,Windows 的网络协议栈运行在主机 B 上,只要它们的规则一致就可以。例如,A 上的 FTP 服务器可以与 B 上的 FTP 客户端实现互相通信。

一个主机上运行的网络规则实现的集合称为协议栈。主机利用协议栈来接收和发送数据。ISO/OSI 的 7 层网络结构模型可以将网络协议栈的不同层的实现划分为不同的层次,将问题简化,方便网络协议栈的实现。同时,7 层模型为网络中不同厂商的软硬件产品的兼容性提出了解决方法。由于 7 层模型的方式实现起来太复杂,所以并没有一个实际使用的 7 层网络协议栈。

2. OSI 的 7 层网络结构

在 OSI 的 7 层网络结构中,自下而上,每一层规定了不同的特性,完成不同的功能。共有以下 7 个层次。

  • 物理层(Physical Layer)
    它规定了物理线路和设备的触发、维护、关闭物理设备的机械特性、电气特性、功能特性和过程,为上层的传输提供了一个物理介质,本层是通信端点之间的硬件接口。本层中数据传输的单位为比特 (b) 。属于本层定义的规范有 EIA/TIA RS232、EIA/TIA RS449、V.35、RT-45 等,实际使用中的设备如网卡等属于本层。
  • 数据链路层(Data Link Layer)
    数据链路层在物理介质基础之上提供可靠的数据传输,在这一层利用通信信道实现无差错传输,提供物理地址寻址、数据层帧、数据的检测重发、流量控制和链路控制等功能。在数据链路层中数据的单位为帧 (frame) 。属于本层定义的规范有 SDLC、HDLC、PPP、STP、帧中继等,实际使用中的 MAC 属于本层。
  • 网络层(NetWork Layer)
    网络层负责将各个子网之间的数据进行路由选择,将数据从一个主机传送到另一个主机,其功能包括网际互连、流量控制、拥塞控制等。在本层中数据的单位为数据包 (packet) 。属于本层定义的规范有 IP、IPX、RIP、OSPF 等,实际使用中的路由器属于本层。
  • 传输层(Transport Layer)
    传输层将上层的数据处理为分段的数据,提供可靠或者不可靠的传输,为上层掩盖下层细节,保证会话层的数据信息能够传送到另一方的会话层(但不一定传送到另一方的应用层)。在传输层数据的单位为数据段 (segment) 。属于本层定义的规范有 TCP、UDP、SPX 等。
  • 会话层(Session Layer)
    会话层管理主机之间的绘会话过程,包括绘画的建立、终止和会话过程中的管理,来提供服务请求者和提供者之间的通信。属于本层定义的规范有 TCP、UDP、SPX 等。
  • 表示层(Presentation Layer)
    表示层对网络传输的数据进行变换,使得多个主机之间传送的信息能够互相理解,包括数据的压缩、加密、格式的转换等,例如图片数据发送前的压缩和接收后的解压。属于本层定义的规范有 ASCII、JPEG、MPEG 等。
  • 应用层(Application Layer)
    应用层为应用程序提供访问网络的接口,为用户提供常用的应用,例如经常使用的电子邮件应用程序网络浏览器等都基于本层、在本层之上定义。属于本层定义的规范有 Telent、FTP、HTTP、SNMP、P2P 等应用层协议。

OSI 的 7 层结构中的底 3 层即物理层、数据链路层和网络层构成了通信子网层,它为网络的上层提供通信服务。需要注意的是,OSI 参考模型并不是一个网络结构,因为它并没有定义每个层所拥有的具体的服务和协议,它知识告诉我们每一个层应该做什么工作。但是,ISO 为所有的层次提供了标准,每个标准有其内部的标准定义。

3. OSI 参考模型中的数据传输

下图所示为一个运行于主机 A 上的应用程序,通过网络发送数据到主机 B 上的应用程序。数据流通过在主机 A 上自上而下依次经过协议栈,通过网络发送给主机 B ,在主机 B 上又自下而上地经过 OSI 的 7 层网络协议结构。

主机 A 的过程是一个封装的过程,数据从应用程序依次经过应用层、表示层、会话层、传输层、网络层、数据链路层、物理层发送到主机 B 。

  • 当主机 A 的应用程序需要发送数据时,数据由应用程序调用应用层接口,进入协议栈的应用层。
  • 在网络协议栈的应用层,应用程序将要发送的数据机上应用层的报头,包装成应用层协议数据单元,然后将数据传递给表示层。
  • 在表示层,它不关心应用层传递过来的数据内容,它把应用程序要发送的数据和应用层添加的报头作为一个整体进行处理,加上表示层的报头。然后,递交给会话层。
  • 与表示层类似,在会话层、传输层、网络层、数据链路层,分别将其上层传递的数据加上自己的报头后传递给下一层。在数据链路层,与其他层不一致的是还要加上一个数据链路层的尾部,打包成一个数据帧传递给物理层。数据链路层的尾部通常是数据的校验和,一般采用 CRC16 的校验方式。
  • 在物理层,主机 A 的网络设备将数据链路层传递过来的数据发送到网络上。

主机 B 的过程与主机 A 相反,是一个解封的过程,数据依次经过物理层、数据链路层、网络层、传输层、会话层、表示层、应用层,将主机 A 发送的数据接收和解包,最后数据传递给应用程序。

  • 主机 B 的物理层网络设备接收到数据到来的信号后,将接收到的数据保存下来,然后传递给数据链路层。
  • 数据链路层把从物理层接收到的数据去掉头部和尾部后,进行数据校验,若没有出错则将其传递给网络层。
  • 与数据链路层类似,网络层、传输层、会话层、表示层、应用层分别将其从下一层获得的数据去除相应报头后传递给上一层。
  • 最后,主机 A 发送的数据到达主机 B 上的应用程序中。

点击下方图片关注我,或微信搜索**“编程笔记本”**,获取更多信息。
OSI 开放互联模型 网络分层_第1张图片

你可能感兴趣的:(OSI 开放互联模型 网络分层)