2.2 OSI七层模型
OSI 七层模型的全称是开放系统互连参考模型(Open System Interconnection Reference Model),它是由国际标准化组织(International Organization for Standardization,ISO)在20 世纪 80 年代提出的一个网络系统互连模型,如图 2-16 所示,其是网络技术的基础,也是分析、评判各种网络技术的依据。
图2-16 OSI七层模型
OSI 七层模型是一个逻辑上的定义,其是一个规范,把网络从逻辑上分为 7 层,每一层都有相对应的物理设备,如路由器和交换机等。建立七层模型的主要目的是解决不同类型网络互连时可能遇到的兼容性问题,其优点是将服务、接口和协议 3 个概念明确地区分开来,服务说明某一层为上一层提供一些什么功能,接口说明上一层如何使用下层的服务,而协议涉及如何实现本层的服务。这样各层之间具有很强的独立性,互连网络中各实体采用什么样的协议是没有限制的,只要向上提供相同的服务并且不改变相邻层的接口就可以。
OSI七层模型的基本原则简要概括如下:
● 每当需要一个不同抽象体的时候,应创建一层。
● 每一层都应该执行一个明确定义的功能。
● 每一层功能的选择应该向定义国际标准化协议的目标看齐。
● 层与层边界的选择应该使跨越接口的数据流最小。
● 层数够多,保证不同的功能在不同层中,但层数又不能太多,以免体系结构变得过于庞大。
在市场化方面OSI七层模型却失败了,原因包括:
● OSI七层模型的专家们在完成其标准时没有商业驱动力。
● OSI七层模型的协议实现起来过分复杂,且运行效率很低。
● OSI 七层模型标准的制定周期太长,因而使得按其标准生产的设备无法及时进入市场。
● OSI七层模型的层次划分并不太合理,有些功能在多个层次中重复出现。
2.2.1 OSI七层模型的介绍
1.物理层
在 OSI 七层模型中,物理层(Physical Layer)是底层,也是第一层。物理层的主要功能是:利用传输介质为数据链路层提供物理连接,实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉传输介质和物理设备的差异,使其上面的数据链路层不必考虑网络的传输介质是什么。“透明传送”表示经实际电路传送后的比特流没有发生变化。
物理层的任务就是为它的上一层提供一个物理连接,如规定使用电缆和接头的类型、所传送信号的电压等。在物理层数据没有被组织,仅作为原始的位流或电气电压处理,单位是bit(比特流,就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为 1、0,即模数转换与数模转换)。物理层的介质包括有线介质,如双绞线、光纤;无线介质,如无线电、微波等。
2.数据链路层
数据链路层(Datalink Layer)是 OSI 七层模型的第二层,其是控制网络层与物理层之间通信的一个桥梁。其主要功能是如何在不可靠的物理线路上进行数据的可靠传输,为了保证传输,从网络层接收到的数据被分割成特定的可被传输的帧。
数据帧是用来传输数据的结构包,它包括原始数据、发送方、接收方的物理地址(确定了帧将发送到何处)、纠错和控制信息(确保帧无差错到达)。如果在传送数据时,接收方检测到所传数据中有差错,就要通知发送方重发这一帧。该层的作用包括物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。
3.网络层
网络层(Network Layer)是 OSI 七层模型的第三层,其主要功能是将网络地址翻译成对应的物理地址,并决定如何将数据从发送方路由到接收方。网络层通过综合考虑发送优先权、网络拥塞程度、服务质量及可选路由的花费来决定从一个网络中的节点 A 到另一个网络中的节点 B 的最佳路径。简单来说就是在网络中找到一条路径,一段一段地传送,由于数据链路层保证两点之间的数据是正确的,因此源到目的地的数据也是正确的,这样一台机器上的信息就能传到另一台了,但计算机网络的最终用户不是主机,而是主机上的某个应用进程,这个过程是由传输层实现的。
4.传输层
传输层(Transport Layer)是OSI 七层模型的第四层,其主要功能是传输协议同时进行流量控制,或是基于接收方可接收数据的快慢程度调整发送速率。除此之外,传输层按照网络能处理的最大尺寸将较长的数据包进行强制分割(标记整理成有序的包)。
例如,以太网无法接收大于1500B的数据包。发送方节点的传输层将数据包分割成较小的数据片,对数据片添加序列号,以便当数据到达接收方节点的传输层时,能以正确的顺序重组,该过程被称为排序。传输层中常见的两个协议为传输控制协议(TCP)和用户数据报协议(UDP)。传输层提供逻辑连接的建立、传输层寻址、数据传输、传输连接释放、流量控制、拥塞控制、多路服用和解复用、崩溃恢复等服务。网络层把数据交给传输层后,传输层必须标识该服务是哪个进程请求的、要交给谁。
5.会话层
会话层(Session Layer)是OSI七层模型的第五层,负责在网络中的两个节点之间建立、维持和终止通信。会话层的功能包括建立通信连接、保持会话过程通信连接的畅通、同步两个节点之间的对话、决定通信是否被中断,以及通信中断时决定从何处重新发送。
你可能常常听到有人把会话层称作网络通信的“交通警察”。当通过拨号向你的 ISP (互联网服务提供商)请求连接到互联网时,ISP服务器上的会话层将你与你的PC上的会话进行协商连接。若你的电话线偶然从插孔脱落,你终端机上的会话层将检测到连接中断并重新发起连接,会话层通过决定节点通信的优先级和通信时间的长短来设置通信期限。
会话层是服务提供者接口,管理用户间的会话和对话,控制用户间的连接和挂断连接,报告上层错误。正如两个人对话,对方听到了也能理解,但如果对方是外国人,他听到了我的声音,他理解了吗?他不能理解。那对于计算机网络而言,客户机发了一个请求给服务器,服务器应该能理解这个请求到底是什么。这个问题怎么样理解?这个理解有两个层次,我讲中国话,它只能懂英文,这当中应该有一个翻译,把汉语翻译成英语,而这个工作就交给表示层来做了。
6.表示层
表示层(Presentation Layer)是OSI七层模型的第六层,它是应用程序和网络之间的翻译官,在表示层,数据将按照网络能理解的方式进行格式化,这种格式化因网络的类型不同而不同,表示层管理数据的解密与加密。例如,在 Internet 上查询银行账户,使用的是一种安全连接。账户数据在发送前被加密,在网络的另一端,将接收到的数据解密。除此之外,表示层协议还对图片和文件格式信息进行解码和编码。
表示层为应用程序提供 API(Application Programming Interface,应用程序接口,使用/调用该接口去完成某个目标)负责SPI(Service Provider Interface,继承/实现的接口)与应用程序之间的通信,定义不同体系间不同的数据格式,具体说明独立结构的数据传输格式,编码/解码数据、加密/解密数据、压缩/解压数据。
7.应用层
应用层(Application Layer)是 OSI 七层模型的最高层,即第七层,它为应用程序提供服务以保证通信,但不是进行通信的应用程序本身。应用层直接和应用程序接口一起提供网络应用服务,其作用是在实现多个系统应用进程相互通信的同时,完成一系列业务处理所需的服务。其服务元素分为两类:公共应用服务元素(CASE)和特定应用服务元素(SASE)。CASE 提供基本的服务,它成为应用层中任何用户和任何服务元素的用户,主要为应用进程通信、分布系统实现提供基本的控制机制。
SASE 则要满足一些特定服务,如文卷传送、访问管理、作业传送、银行事务、订单输入等。这些将涉及虚拟终端、作业传送与操作、文卷传送及访问管理、远程数据库访问、图形核心系统、开放系统互连管理等。
2.2.2 数据封装与解封
通过网络发送的信息称为数据或数据包,如果一台计算机要向另一台计算机发送数据,则先执行封装,这个过程是将数据打包。数据的封装是自上而下的过程,即从最高层到最低层进行封装,如图2-17所示。
图2-17 封装
当远程设备接收到比特序列时,远程设备的物理层便将比特序列传送到数据链路层进行处理,依次传送到网络层、传输层,最后至应用层,该过程称为解封。解封是自下而上的过程,即从最低层到最高层进行解封,如图2-18所示。
以发电子邮件为例,主机A向主机B发送数据,该数据肯定是由一个应用层的程序产生的,如IE浏览器或Email的客户端等。这些程序在应用层需要有不同的接口,IE浏览网页使用的是 HTTP,HTTP 是应用层为浏览网页的软件留下的网络接口。Email 客户端使用 SMTP和POP3来收发电子邮件,故SMTP和POP3就是应用层为电子邮件的软件留下的接口。
图2-18 解封
(1)应用层:假设A向B发送了一封电子邮件,A会使用SMTP来处理该数据,即在数据前加上SMTP的标记,以便B在收到后知道使用什么软件来处理该数据。
(2)表示层:应用层将数据处理完成后会交给表示层,表示层会进行必要的格式转换,使用一种通信双方都能识别的编码来处理该数据,同时将处理数据的方法添加在数据中,以便对端知道怎样处理数据。
(3)会话层:表示层处理完成后,将数据交给会话层,会话层会在 A 和 B 之间建立一条只用于传输的会话通道,并监视其连接状态,直到数据同步完成,才断开该会话。注意:A 和 B 之间可以同时有多条会话通道出现,但每一条和其他通道都不能混淆。会话层的作用就是区别不同的会话通道。
(4)传输层:建立会话通道后,为了保证数据传输的可靠性,需要在数据传输过程中对数据进行处理,如分段、编号、差错校验、确认、重传等。这些方法的实现必须依赖通信双方的控制,传输层的作用就是在通信双方之间利用上面的会话通道传输控制信息,从而完成数据的可靠传输。
(5)网络层:网络层是实际传输数据的层次,在网络层将传输层中处理完成的数据再次封装,添加上自己的地址信息和接收者的地址信息,并且要在网络中找到一条由自己到接收者最好的路径,然后按照最佳路径发送到网络。
(6)数据链路层:在数据链路层将网络层的数据再次进行封装,该层会添加能唯一标识每台设备的硬件地址信息(MAC 地址),使该数据在相邻的两个设备之间一段一段地传输,直到到达目的地。
(7)物理层:物理层将数据链路层的数据转换成电流传输的物理线路,通过物理线路传递到 B 后,B 会将电信号转换成数据链路层的数据,然后数据链路层去掉本层的硬件地址信息和其他对端添加的内容上交给网络层,网络层同样去掉添加的内容后上交给自己的上层。最终数据到达 B 的应用层,应用层看到数据使用 SMTP 封装,就知道应用电子邮件的软件来处理。