2.2 OSI网络参考模型
OSI模型是每一个学习网络技术人的必修课,学习OSI模型将为以后进一步研究高深的计算机网络理论知识打下基础。学习OSI模型不足以成为一个网络专家,但是熟悉OSI模型是成为网络专家的必要条件。
2.2.1 OSI网络参考模型概述
在20世纪70年代,Internet网络得到了迅速的发展和应用,在当时的情况下已经变成一个非常巨大的网络。但是由于各种原因,许多网络的设计采用不同的硬件和软件,造成一个必然结果,就是不同的网络之间互相不兼容,互相不能通信。为了解决这个问题,国际标准化组织ISO International Organization for Standardization认识到只有制定一个网络模型,才能让所有网络设计人员设计出的网络能够互相通信,协同工作。基于此,ISO于1984年提出OSI(开放式系统互联)参考模型,即我们常讲到的OSI七层协议,OSI参考模型如图2-2所示。
图2-2
OSI模型的主要目的就是为不同的网络提供互相兼容,互相通信。在网络领域,我们虽然看不见一个网络中两个节点是如何通信的,但可以用一个模型对通信过程进行描述。通常用来描述网络通信的模型称为开放系统互连OSI模型。
2.2.2 模型将网络分解为层
最早的网络刚刚出现的时候,很多大型的公司都拥有了网络技术,公司内部计算机可以相互连接,可却不能与其他公司连接。因为没有一个统一的规范,计算机之间相互传输的信息对方不能理解,所以不能互联。
ISO为了使网络应用更好地普及,就推出了OSI参考模型。其含义就是推荐所有公司使用这个规范来控制网络。这样所有公司都有相同的规范,就能互联了。
OSI参考模型将网络分解为七层,其内容如下:
第1层物理层——处于OSI参考模型的最底层。物理层的主要功能是利用物理传输介质为数据链路层提供物理连接,以便透明地传送比特流。常用设备有(各种物理设备)集线器、中继器、调制解调器、网线、双绞线、同轴电缆。
第2层数据链路层——在此层将数据分帧,并处理流控制。屏蔽物理层,为网络层提供一个数据链路的连接,在一条有可能出差错的物理连接上,进行几乎无差错的数据传输(差错控制)。本层指定拓扑结构并提供硬件寻址。常用设备有网卡、网桥、交换机。
第3层网络层——本层通过寻址来建立两个节点之间的连接,为源端的运输层送来的分组,选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层。它包括通过互连网络来路由和中继数据;除了选择路由之外,网络层还负责建立和维护连接,控制网络上的拥塞以及在必要的时候生成计费信息。常用设备有交换机和路由器。
第4层传输层——常规数据递送——面向连接或无连接。为会话层用户提供一个端到端的可靠、透明和优化的数据传输服务机制。包括全双工或半双工、流控制和错误恢复服务;传输层把消息分成若干个分组,并在接收端对它们进行重组。不同的分组可以通过不同的连接传送到主机。这样既能获得较高的带宽,又不影响会话层。在建立连接时传输层可以请求服务质量,该服务质量指定可接受的误码率、延迟量、安全性等参数,还可以实现基于端到端的流量控制功能。
第5层会话层——在两个节点之间建立端连接。为端系统的应用程序之间提供了对话控制机制。此服务包括建立连接是以全双工还是以半双工的方式进行设置,尽管可以在层4中处理双工方式;会话层管理登入和注销过程。它具体管理两个用户和进程之间的对话。如果在某一时刻只允许一个用户执行一项特定的操作,会话层协议就会管理这些操作,如阻止两个用户同时更新数据库中的同一组数据。
第6层表示层——主要用于处理两个通信系统中交换信息的表示方式。为上层用户解决用户信息的语法问题。它包括数据格式交换、数据加密与解密、数据压缩与终端类型的转换。
第7层应用层——OSI中的最高层。为特定类型的网络应用提供了访问OSI环境的手段。应用层确定进程之间通信的性质,以满足用户的需要。应用层不仅要提供应用进程所需要的信息交换和远程操作,而且还要作为应用进程的用户代理,来完成一些为进行信息交换所必需的功能。它包括:文件传送访问和管理FTAM、虚拟终端VT、事务处理TP、远程数据库访问RDA、制造报文规范MMS、目录服务DS等协议;应用层能与应用程序界面沟通,以达到展示给用户的目的。在此常见的协议有:HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3等。
数据在发至数据流层的时候将被拆分,这时在传输层的数据叫做段,在网络层的数据叫做包,在数据链路的数据叫做帧,在物理层的数据叫做比特流,这样的叫法叫做PDU(协议数据单元)。
2.2.3 OSI网络参考模型各层的功能
在这七层中,上三层总称为应用层,用来控制软件方面。下四层总称为数据流层,用来管理硬件,各层所对应功能如图2-3所示。
图2-3
1.物理层
物理层是OSI的第一层,它虽然处于最底层,却是整个开放系统的基础。物理层为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境。
我们知道,要传递信息就要利用一些物理媒体,如双绞线、同轴电缆等,但具体的物理媒体并不在OSI的7层之内,所以有人把物理媒体当作第0层,物理层的任务就是为它的上一层提供一个物理连接,以及它们的机械、电气、功能和过程特性。如规定使用电缆和接头的类型,传送信号的电压等。在这一层,数据还没有被组织,仅作为原始的位流或电气电压处理,单位是比特。
物理层的主要功能如下:
(1)为数据端设备提供传送数据的通路
数据通路可以是一个物理媒体,也可以是多个物理媒体连接而成。一次完整的数据传输,包括激活物理连接,传送数据,终止物理连接。所谓激活,就是不管有多少物理媒体参与,都要在通信的两个数据终端设备间连接起来,形成一条通路。
(2)传输数据
物理层要形成适合数据传输需要的实体,为数据传送服务,一是要保证数据能在其上正确通过,二是要提供足够的带宽(带宽是指每秒钟内能通过的比特(BIT)数),以减少信道上的拥塞。传输数据的方式能满足点到点,一点到多点,串行或并行,半双工或全双工,同步或异步传输的需要。
(3)完成物理层的一些管理工作。
2.数据链路层
数据链路层负责在两个相邻结点间的线路上无差错地传送以帧为单位的数据。每一帧包括一定数量的数据和一些必要的控制信息。和物理层相似,数据链路层要负责建立、维持和释放数据链路的连接。在传送数据时,如果接收点检测到所传数据中有差错,就要通知发送方重发这一帧。
数据链路可以粗略地将数据链路理解为数据通道。物理层要为终端设备间的数据通信提供传输媒体及其连接。媒体是长期的,连接是有生存期的。在连接生存期内,收发两端可以进行不等的一次或多次数据通信,每次通信都要经过建立通信联络和拆除通信联络两过程,这种建立起来的数据收发关系就叫做数据链路。而在物理媒体上传输的数据难免受到各种不可靠因素的影响而产生差错,为了弥补物理层上的不足,为上层提供无差错的数据传输,就要能对数据进行检错和纠错。数据链路的建立和拆除,对数据的检错和纠错是数据链路层的基本任务。
链路层是为网络层提供数据传送服务的,这种服务要依靠本层具备的功能来实现。链路层具备如下功能:
(1)链路连接的建立、拆除、分离。
(2)帧定界和帧同步。链路层的数据传输单元是帧,协议不同,帧的长短和界面也有差别,但无论如何必须对帧进行定界。
(3)顺序控制,指对帧的收发顺序的控制。
(4)差错检测和恢复,还有链路标识,流量控制等。差错检测多用方阵码校验和循环码校验来检测信道上数据的误码,而帧丢失等用序号检测。各种错误的恢复则常靠反馈重发技术来完成。
3.网络层
在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点,确保数据及时传送。网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,其中含有逻辑地址信息、源站点和目的站点地址的网络地址。
网络层的产生也是网络发展的结果。在联机系统和线路交换的环境中,网络层的功能没有太大的意义。当数据终端增多时。它们之间有中继设备相连。此时会出现一台终端要求不只是与唯一的一台而是能和多台终端通信的情况,这就产生了把任意两台数据终端设备的数据链接起来的问题,也就是路由或者叫寻径。另外,当一条物理信道建立之后,被一对用户使用,往往有许多空闲时间被浪费掉。人们自然会希望让多对用户共用一条链路,为解决这一问题就出现了逻辑信道技术和虚拟电路技术。
网络层为建立网络连接和为上层提供服务,具备以下主要功能:
(1)路由选择和中继激活,终止网络连接。
(2)在一条数据链路上复用多条网络连接,多采取分时复用技术。
(3)差错检测与恢复。
(4)排序,流量控制。
(5)服务选择。
(6)网络管理。
在具有开放特性的网络中的数据终端设备,都要配置网络层的功能。现在市场上销售的网络层设备主要有网关和路由器。
4.传输层
传输层是两台计算机经过网络进行数据通信时,第一个端到端的层次,具有缓冲作用。当网络层服务质量不能满足要求时,它将服务加以提高,以满足高层的要求;当网络层服务质量较好时,它只用很少的工作。传输层还可进行复用,即在一个网络连接上创建多个逻辑连接。传输层也称为运输层。传输层只存在于端开放系统中,是介于低3层通信子网系统和高3层之间的一层,也是很重要的一层。因为它是源端到目的端对数据传送进行控制从低到高的最后一层。
有一个既存事实,即世界上各种通信子网在性能上存在着很大差异。例如电话交换网,分组交换网,公用数据交换网,局域网等通信子网都可互连,但它们提供的吞吐量、传输速率、数据延迟通信费用各不相同。对于会话层来说,却要求有一性能恒定的界面。传输层就承担了这一功能。它采用分流/合流、复用/介复用技术来调节上述通信子网的差异,使会话层感受不到。
综上所述,传输层的基本功能是:从会话层接收数据,并且在必要的时候将它分成较小的单元,传输给网络层,并确保到达对方的各段信息正确无误,而且这些任务必须高效地完成。通常,会话层每请求建立一个传输连接,传输层就会为其创建一个独立的网络连接。如果传输连接需要一个较高的吞吐量,传输层也可以为其创建多个网络连接,让数据在这些网络连接上分流,以提高吞吐量。另一方面,如果创建和维持一个网络连接不划算。传输层可以将几个传输连接复用到一个网络连接上,以降低费用。
传输层是真正的从源到目标的“端到端”层。也就是说,源端机上的程序,利用报文头和控制报文与目标机上的类似程序进行对话
此外传输层还要具备差错恢复,流量控制等功能,以此对会话层屏蔽通信子网在这些方面的细节与差异。传输层面对的数据对象已不是网络地址和主机地址,而是和会话层的界面端口。上述功能的最终目的是为会话提供可靠的,无误的数据传输。传输层的服务一般要经历传输连接建立阶段,数据传送阶段,传输连接释放阶段3个阶段才算完成一个完整的服务过程。而在数据传送阶段又分为一般数据传送和加速数据传送两种。传输层服务分成5种类型。基本可以满足对传送质量,传送速度,传送费用的各种不同需要。
5.会话层
会话层提供的服务可使应用建立和维持会话,并能使会话获得同步。会话层使用校验点可使通信会话在通信失效时从校验点继续恢复通信。这种能力对于传送大的文件极为重要。会话层、表示层、应用层构成开放系统的高3层,面对应用进程提供分布处理,对话管理,信息表示,恢复最后的差错等。会话层同样要担负应用进程服务要求,而传输层不能完成的那部分工作,给运输层功能差距以弥补。主要的功能是对话管理,数据流同步和重新同步。要完成这些功能,需要由大量的服务单元功能组合,已经制定的功能单元已有几十种。
会话层的主要功能如下:
(1)将会话地址映射为运输地址。
(2)选择需要的运输服务质量参数(QOS)。
(3)对会话参数进行协商。
(4)识别各个会话连接。
(5)传送有限的透明用户数据。
(6)数据传输阶段。这个阶段是在两个会话用户之间实现有组织的、同步的数据传输。用户数据单元为SSDU,而协议数据单元为SPDU。会话用户之间的数据传送过程是将SSDU转变成SPDU进行的。
(7)连接释放。连接释放是通过“有序释放”、“废弃”和“有限量透明用户数据传送”等功能单元来释放会话连接的。
6.表示层
表示层的作用之一是为异种机通信提供一种公共语言,以便能进行互相操作。这种类型的服务之所以需要,是因为不同的计算机体系结构使用的数据表示法不同。例如,IBM主机使用EBCDIC编码,而大部分PC机使用的是ASCII码。在这种情况下,便需要会话层来完成这种转换。通过前面的介绍,我们可以看出,会话层以下5层完成了端到端的数据传送,并且是可靠、无差错的传送。但是数据传送只是手段而不是目的,最终是要实现对数据的使用。由于各种系统对数据的定义并不完全相同,最容易理解的例子是键盘,其上的某些键的含义在许多系统中都有差异。这自然给利用其他系统的数据造成了障碍。表示层和应用层就担负了消除这种障碍的任务。
对于用户数据来说,可以从两个侧面来分析,一个是数据含义被称为语义,另一个是数据的表示形式,称作语法。像文字、图形、声音、文种、压缩、加密等都属于语法范畴。表示层设计了3类15种功能单位,其中上下文管理功能单位就是沟通用户间的数据编码规则,以便双方有一致的数据形式,能够互相认识。
7.应用层
应用层向应用程序提供服务,这些服务按其向应用程序提供的特性分成组,并称为服务元素。有些可为多种应用程序共同使用,有些则为较少的一类应用程序使用。应用层是开放系统的最高层,是直接为应用进程提供服务的。
其作用是在实现多个系统应用进程相互通信的同时,完成一系列业务处理所需的服务。其服务元素分为两类:公共应用服务元素CASE和特定应用服务元素SASE。CASE提供最基本的服务,它成为应用层中任何用户和任何服务元素的用户,主要为应用进程通信,分布系统实现提供基本的控制机制。特定服务SASE则要满足一些特定服务,如文卷传送、访问管理、作业传送、银行事务、订单输入等。
这些将涉及虚拟终端、作业传送与操作、文卷传送及访问管理、远程数据库访问、图形核心系统、开放系统互连管理等。
2.2.4 数据封装过程
OSI参考模型中每个层次接收到上层传递过来的数据后都要将本层次的控制信息加入数据单元的头部,一些层次还要将校验和等信息附加到数据单元的尾部,这个过程叫做封装。
每层封装后的数据单元的叫法不同,在应用层、表示层、会话层的协议数据单元统称为data(数据),在传输层协议数据单元称为segment(数据段),在网络层称为packet(数据包),数据链路层协议数据单元称为frame(数据帧),在物理层叫做bits(比特流)。OSI参考模型的数据封装过程如图2-4所示。
图2-4
当数据到达接收端时,每一层读取相应的控制信息,根据控制信息中的内容向上层传递数据单元,在向上层传递之前去掉本层的控制头部信息和尾部信息(如果有的话)。此过程叫做解封装。
这个过程逐层执行直至将对端应用层产生的数据发送给本端的相应的应用进程。下面以用户浏览网站为例说明数据的封装、解封装过程。
当用户输入要浏览的网站信息后就由应用层产生相关的数据,通过表示层转换成为计算机可识别的ASCII码,再由会话层产生相应的主机进程传给传输层。传输层将以上信息作为数据并加上相应的端口号信息以便目的主机辨别此报文,得知具体应由本机的哪个任务来处理;在网络层加上IP地址使报文能确认应到达具体某个主机,再在数据链路层加上MAC地址,转成bit流信息,从而在网络上传输。报文在网络上被各主机接收,通过检查报文的目的MAC地址判断是否是自己需要处理的报文,如果发现MAC地址与自己不一致,则丢弃该报文;若与自己一致就去掉MAC信息送给网络层判断其IP地址;然后根据报文的目的端口号确定是由本机的哪个进程来处理,这就是报文的解封装过程。