开放式系统互联模型(OSI)是1984年由国际标准化组织(ISO)提出的一个参考模型。作为一个概念性框架,它是不同制造商的设备和应用软件在网络中进行通信的标准。现在此模型已成为计算机间和网络间进行通信的主要结构模型。目前使用的大多数网络通信协议的结构都是基于 OSI 模型的。OSI 将通信过程定义为七层,即将连网计算机间传输信息的任务划分为七个更小、更易于处理的任务组。每一个任务或任务组则被分配到各个 OSI 层。每一层都是独立存在的,因此分配到各层的任务能够独立地执行。这样使得变更其中某层提供的方案时不影响其他层。
OSI 七层模型的每一层都具有清晰的特征。基本来说,第七至第四层处理数据源和数据目的地之间的端到端通信,而第三至第一层处理网络设备间的通信。另外,OSI 模型的七层也可以划分为两组:上层(层7、层6和层5)和下层(层4、层3、层2和层1)。OSI 模型的上层处理应用程序问题,并且通常只应用在软件上。最高层,即应用层是与终端用户最接近的。OSI 模型的下层是处理数据传输的。物理层和数据链路层应用在硬件和软件上。最底层,即物理层是与物理网络媒介(比如说,电线)最接近的,并且负责在媒介上发送数据。
各层的具体描述如下:
第七层:应用层
- 定义了用于在网络中进行通信和数据传输的接口 - 用户程式;
- 提供标准服务,比如虚拟终端、文件以及任务的传输和处理;
第六层:表示层
- 掩盖不同系统间的数据格式的不同性;
- 指定独立结构的数据传输格式;
- 数据的编码和解码;加密和解密;压缩和解压缩
第五层:会话层
- 管理用户会话和对话;
- 控制用户间逻辑连接的建立和挂断;
- 报告上一层发生的错误
第四层:传输层
- 管理网络中端到端的信息传送;
- 通过错误纠正和流控制机制提供可靠且有序的数据包传送;
- 提供面向无连接的数据包的传送;
第三层:网络层
- 定义网络设备间如何传输数据;
- 根据唯一的网络设备地址路由数据包;
- 提供流和拥塞控制以防止网络资源的损耗
第二层:数据链路层
- 定义操作通信连接的程序;
- 封装数据包为数据帧;
- 监测和纠正数据包传输错误
第一层:物理层
- 定义通过网络设备发送数据的物理方式;
- 作为网络媒介和设备间的接口;
- 定义光学、电气以及机械特性。
通过 OSI 层,信息可以从一台计算机的软件应用程序传输到另一台的应用程序上。例如,计算机 A 上的应用程序要将信息发送到计算机 B 的应用程序,则计算机 A 中的应用程序需要将信息先发送到其应用层(第七层),然后此层将信息发送到表示层(第六层),表示层将数据转送到会话层(第五层),如此继续,直至物理层(第一层)。在物理层,数据被放置在物理网络媒介中并被发送至计算机 B 。计算机 B 的物理层接收来自物理媒介的数据,然后将信息向上发送至数据链路层(第二层),数据链路层再转送给网络层,依次继续直到信息到达计算机 B 的应用层。最后,计算机 B 的应用层再将信息传送给应用程序接收端,从而完成通信过程。下面图示说明了这一过程。
计算机网络中的通信图解
OSI 的七层运用各种各样的控制信息来和其他计算机系统的对应层进行通信。这些控制信息包含特殊的请求和说明,它们在对应的 OSI 层间进行交换。每一层数据的头和尾是两个携带控制信息的基本形式。
对于从上一层传送下来的数据,附加在前面的控制信息称为头,附加在后面的控制信息称为尾。然而,在对来自上一层数据增加协议头和协议尾,对一个 OSI 层来说并不是必需的。
当数据在各层间传送时,每一层都可以在数据上增加头和尾,而这些数据已经包含了上一层增加的头和尾。协议头包含了有关层与层间的通信信息。头、尾以及数据是相关联的概念,它们取决于分析信息单元的协议层。例如,传输层头包含了只有传输层可以看到的信息,传输层下面的其他层只将此头作为数据的一部分传递。对于网络层,一个信息单元由第三层的头和数据组成。对于数据链路层,经网络层向下传递的所有信息即第三层头和数据都被看作是数据。换句话说,在给定的某一OSI 层,信息单元的数据部分包含来自于所有上层的头和尾以及数据,这称之为封装。
各层数据封装结构
例如,如果计算机 A 要将应用程序中的某数据发送至计算机 B ,数据首先传送至应用层。 计算机 A 的应用层通过在数据上添加协议头来和计算机 B 的应用层通信。所形成的信息单元包含协议头、数据、可能还有协议尾,被发送至表示层,表示层再添加为计算机 B 的表示层所理解的控制信息的协议头。信息单元的大小随着每一层协议头和协议尾的添加而增加,这些协议头和协议尾包含了计算机 B 的对应层要使用的控制信息。在物理层,整个信息单元通过网络介质传输。
计算机 B 中的物理层收到信息单元并将其传送至数据链路层;然后 B 中的数据链路层读取计算机 A 的数据链路层添加的协议头中的控制信息;然后去除协议头和协议尾,剩余部分被传送至网络层。每一层执行相同的动作:从对应层读取协议头和协议尾,并去除,再将剩余信息发送至上一层。应用层执行完这些动作后,数据就被传送至计算机 B 中的应用程序,这些数据和计算机 A 的应用程序所发送的完全相同。
一个 OSI 层与另一层之间的通信是利用第二层提供的服务完成的。相邻层提供的服务帮助一 OSI 层与另一计算机系统的对应层进行通信。一个 OSI 模型的特定层通常是与另外三个 OSI 层联系:与之直接相邻的上一层和下一层,还有目标联网计算机系统的对应层。例如,计算机 A 的数据链路层应与其网络层,物理层以及计算机 B 的数据链路层进行通信。下面的图表可以解释这个例子:
对应层间的数据通信