网络体系结构-OSI参考模型- 张国卿的日志 - 网易博客

来源:百度文库 编辑:神马文学网 时间:2024/07/05 11:37:26

网络体系结构-OSI参考模型

默认分类   2009-07-22 10:52   阅读125   评论0   字号: 大  中  小 国际标准化组织(ISO)在1978年提出了开放系统互连参考模型(OSI:Open System Interconnection Reference Mode),该模型是设计和描述网络通信的基本框架。生产厂商根据OSI模型的标准设计自己的产品。OSI描述了网络硬件和软件如何以层的方式协同工作进行网络通信。

2.2.1 OSI七层模型

    开放系统互连参考模型(OSI)采用分层的结构化技术,共分7层,从低到高为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。OSI参考模型的每一层都定义了所实现的功能,完成某特定的通信任务,并只与相邻的上层和下层进行数据的交换。如图2.2所示。

2.2.2  OSI参考模型各层的功能

    OSI参考模型的每一层都有它自己必须实现的一系列功能,以保证数据包能从源结点传输到目的结点。下面简单介绍OSI参考模型各层的功能。

    1.物理层(Physical Layer)

    物理层是OSI参考模型的最低层,也是OSI体系结构中最重要的、最基础的一层。物理层并不是指物理设备或物理媒体,而是有关物理设备通过物理媒体进行互连的描述和规定。物理层协议定义了接口的机械特性、电气特性、功能特性、规程特性等4个基本特性。

    物理层以比特流的方式传送来自数据链路层的数据,而不去理会数据的含义或格式。同样,它接收数据后直接传给数据链路层。也就是说,物理层只能看见0和1,它没有一种机制用于确定自己所处理的比特流的具体意义,而只与数据通信的机械或电气特性有关。

    2.数据链路层(Data Link Layer)

    数据链路层是OSI模型的第二层,负责通过物理层从一台计算机到另一台计算机无差错地传输数据帧,允许网络层通过网络连接进行虚拟无差错地传输。

    通常,数据链路层发送一个数据帧后,等待接收方的确认。接收方数据链路层检测帧传输过程中产生的任何问题。没有经过确认的帧和损坏的帧都要进行重传。

    3.网络层(Network Layer)

    网络层是OSI模型的第3层,负责信息寻址和将逻辑地址与名字转换为物理地址。

    在网络层,数据传送的单位是包。网络层的任务就是要选择合适的路径和转发数据包,使发送方的数据包能够正确无误的按地址寻找到接收方的路径,并将数据包交给接收方。网络中两结点之间达到的路径可能有很多,应通过哪条路径才能将数据从源设备传送到所要通信的目的设备,在寻找最快捷花费最低的路径时,必须考虑网络拥塞程度、服务质量、线路的花费和线路有效性等诸多因素。总的来说,网络层负责选择最佳路径。

    网络层处于传输层和数据链路层之间,它负责向传输层提供服务,同时负责将网络地址翻译成对应的物理地址。网络层协议还能协调发送、传输以及接收设备的能力不平衡的问题,如网络层对数据进行分段和重组,以使得数据的长度能够满足该网络下层数据链路层所支持的最大的数据帧(MTU)的长度。

    另外,网络层还需要考虑采用不同的网络层协议的网络之间的互联问题,如TCP/IP使用的IP协议和NOVELL使用的IPX协议之间的互连。

    4.传输层(Transport Layer)

    传输层的功能是保证在不同子网的两台设备间数据包可靠、顺序、无错地传输。在传输层,数据传送的单位是段。传输层负责处理端对端通信,所谓端对端是指从一个终端(主机)到另一个终端(主机),中间可以有一个或多个交换结点。

    传输层向高层用户提供端到端的可靠的透明传输服务,为不同进程间的数据交换提供可靠的传送手段。在传输层一个很重要的工作是数据的分段和重组,即把一个上层数据分割成更小的逻辑片或物理片。换言之,也就是发送方在传输层把上层交给它的较大的数据进行分段后分别交给网络层进行独立传输,从而实现在传输层的流量控制,提高网络资源的利用率。在接收方将收到的分段的数据重组,还原成为原先完整的数据。

    另外,传输层的另一主要功能就是将收到的乱序数据包重新排序,并验证所有的分组是否都已被收到。

    5.会话层(Session Layer)

    会话层是利用传输层提供的端到端的服务,向表示层或会话用户提供会话服务。会话层的主要功能是在两个结点间建立、维护和释放面向用户的连接,并对会话进行管理和控制,保证会话数据可靠传送。

    在会话层和传输层都提到了连接,那么会话连接和传输连接到底有什么区别呢?会话连接和传输连接之间有三种关系:一对一关系,即一个会话连接对应一个传输连接;一对多关系,一个会话连接对应多个传输连接;多对一关系,多个会话连接对应一个传输关系。

    会话过程中,会话层需要决定到底使用全双工通信还是半双工通信。如果采用全双工通信,则会话层在对话管理中要做的工作就很少;如果采用半双工通信,会话层则通过一个数据令牌来协调会话,保证每次只有一个用户能够传输数据。

    会话层提供了同步服务,通过在数据流中定义检查点(Checkpoint)来把会话分割成明显的会话单元。当网络故障出现时,从最后一个检查点开始重传数据。

    常见的会话层协议有:结构化查询语言(SQL)、远程进程呼叫(RPC)、X-windows 系统、AppleTalk 会话协议、数字网络结构会话控制协议(DNA SCP)等。

    6.表示层(Presentation Layer)

    OSI模型中,表示层以下的各层主要负责数据在网络中传输时不出错。但数据的传输没有出错,并不代表数据所表示的信息不会出错。表示层专门负责有关网络中计算机信息表示方式的问题。表示层负责在不同的数据格式之间进行转换操作,以实现不同计算机系统间的信息交换。

    除了编码外,还包括数组、浮点数、记录、图像、声音等多种数据结构,表示层用抽象的方式来定义交换中使用的数据结构,并且在计算机内部表示法和网络的标准表示法之间进行转换。

    表示层还负责数据的加密,以在数据的传输过程对其进行保护。数据在发送端被加密,在接收端解密。使用加密密钥来对数据进行加密和解密。

    表示层还负责文件的压缩,通过算法来压缩文件的大小,降低传输费用。

    7.应用层(Application Layer)

    应用层是OSI参考模型中最靠近用户的一层,它直接与用户和应用程序打交道,负责对软件提供接口以使程序能使用网络。与OSI参考模型的其他层不同的是,它不为任何其他OSI层提供服务,而只是为OSI模型以外的应用程序提供服务,如电子表格程序和文字处理程序。包括为相互通信的应用程序或进程之间建立连接、进行同步,建立关于错误纠正和控制数据完整性过程的协商等。应用层还包含大量的应用协议,如虚拟终端协议(Telnet)、简单邮件传输协议(SMTP)、简单网络管理协议(SNMP)、域名服务系统(DNS)和超文本传输协议(HTTP)等。

2.2.3  OSI的层次间关系

    在同一台计算机的层间交互过程与在同一层上不同计算机之间的相互通信过程是相互关联的。

  l         每一层向其协议规范中的上层提供服务。

  l         每层都与其他计算机中相同层的软件和硬件交换一些信息。

  1. OSI模型每一层数据的名称

  为了使数据分组从源主机传送到目的主机,源主机OSI模型的每一层要与目标主机的每一层进行通信,如图2.3中所示。用Peer-to-peer communications(对等实体间通信)表示源主机与目的主机对等层间的通信。在这一过程中,每一层的协议交换的信息称为协议数据单元(PDU,Protocol Data Unit),通常在该层的PDU前面增加一个单字母的前缀,表示为哪一层数据。如会话层通过传送SPDU和对等的会话层进行通信。相应地,应用层数据称为应用层协议数据单元(APDU,Application PDU),表示层数据称为表示层协议数据单元(PPDU,Presentation PDU),会话层数据称为会话层协议数据单元(SPDU,Session PDU);通常,把传输层数据称为段(segment),网络层数据称为数据包(Packet),数据链路层数据称为帧(Frame),物理层数据称为比特流(Bit)。他们的具体分别其实并不明显,都是对数据在不同层次的描述,数据位于的OSI模型的层次不同,名字也就不同。

  在网络通信中,通过传输该层的PDU到对方的同一层(对等层),以实现通信。例如会话层通过传送SPDU和对端的会话层进行通信。从逻辑上讲,对等层间的通信,是两个设备的同一层直接通信。而物理上,每一层都只与自己相邻的上下两层直接通信。下层通过服务访问点(SAP)为上一层提供服务。两个设备建立对等层的通信连接,即在各个对等层间建立逻辑信道,对等层使用功能相同的协议实现对话,如主机A的第二层不能和对方的第三层通信。同时,同一层之间的不同协议也不能通信,如主机A的E-Mail应用程序不能和对方的Telnet应用程序通信。

    2. 数据封装

    在了解了OSI层次参考模型的每一层的功能之后,进一步来学习层次间是如何实现数据传递的。如图2.4所示简单示意了两个实现OSI七层功能的网络设备之间是如何进行通信的。任务从主机A的应用层开始,按规定的格式逐层封装数据,直至数据包达到物理层,然后通过网络传输线路到主机B。主机B的物理层获取数据,向上层发送数据,直到到达主机B的应用层。

    封装(Encapsulation)是指网络结点将要传送的数据用特定的协议头打包来传送数据,有时候也可能在数据尾部加上报文。OSI七层模型的每一层都对数据进行封装,以保证数据能够正确无误的到达目的地,并被终端主机理解及处理。下面来看一下数据从主机A到主机B的封装过程。

    首先,主机的应用层信息转化为能够在网络中传播的数据,能够被对端应用程序识别;然后数据在表示层加上表示层报头,协商数据格式,是否加密,转化成对端能够理解的数据格式;数据在会话层加上会话层报头;依此类推,传输层加上传输层报头,这时数据称为段(Segment),网络层加上网络层报头,称为数据包(Packet),数据链路层加上数据链路层报头称为帧(Frame);在物理层数据转化为比特流,传送到交换机,通过交换机将数据帧发向路由器;同理,路由器也逐层解封装:剥去数据链路层帧头部,依据网络层数据包头信息查找去往主机B的路径,然后封装数据发向主机B。主机B从物理层到应用层,依次解封装,剥去各层封装报头,提取出发送主机发来的数据,完成数据的发送和接收过程。图2.5示意了数据封装的过程,图2.6示意了数据解封装的过程。

   

   

    3. 同一台计算机之间相邻层的通信

    OSI模型描述了在不同计算机上应用程序的信息是如何通过网络介质传送的。对于一个给定的系统的各层,当要发送的信息逐层向下传送时,信息越往低层就越不同于人类的语言,而是计算机能够理解的“1”和“0”。

 

    为了向相邻的高层提供服务,每一层必须知道两层之间定义的标准接口。为了使N层获得服务,这些接口定义N+1层应须向N层提供哪些信息,以及N层应向N+1层提供何种返回信息。

    如图2.7所示是OSI类型通信的一个例子。主机A发送信息给主机B。主机A的应用层与主机B的应用层通信,主机A的应用层再与主机A的表示层通信,主机A的表示层再与主机A的会话层通信,等等,直到到达主机A的物理层。物理层把信息放到网络物理介质上并把信息从网络物理介质上送走。信息在网络物理介质上传送并被主机B接收后,会以相反的方向向上通过主机B的各层(先是物理层,然后是数据链路层,等等),直到最终到达主机B的应用层。

   

    数据是由主机A中的一些应用程序生成的。例如用户输入一条e-mail消息。每层生成一个头部及所传数据一并传到下一层(图2.7中步骤1的箭头,表示数据在不同层的传递过程)。将数据传到下一层意味着下一层需要为上一层提供某种服务。要完成这些服务,下一层需要在包头或包尾中加入一些信息。例如,传输层发送其数据和包头;网络层在其包头中加入正确的网络层目的地址,以使包能被传送到其他计算机上。

 

    从各层的观点来看,在该层包头之后的比特被认为是数据。例如,第4层认为第5层、第6层和第7层的包头与原始的用户数据一起是一个大的数据字段。

    在应用程序生成数据之后,实现每层功能的软、硬件完成各自的工作,加入适当的包头和包尾。为实现在物理媒体上传输,物理层能够实现媒体发送信号,如图2.7中步骤2。

    当接收时(步骤3),主机B启动其上的相邻层协议进行通信,如图2.7中的步骤4 ,指明了接收数据在协议栈中逐层向上递交处理的过程。具体步骤如下:

    步骤A:物理层(第1层)保证比特的同步,并将接收的二进制数据放到缓存中。在将接收到的信号解码成比特流后,通知数据链路层已经收到一个帧。因此,第1层在媒体上已经提供了传递的比特流。

    步骤B:数据链路层(第2层)检查帧尾的帧校验序列(FCS),判断传输过程中是否有错误发生(差错控制)。如果有错误发生,丢弃此帧。检查数据链路层的地址,使主机B决定是否需要进一步处理这些数据。如果这个地址是主机B的地址,那么将在第2层的包头和尾之间的数据传递给第3层的软件。从而,数据链路层通过该链路实现了数据的传输。

    步骤C:检查网络层(第3层)的目的地址。如果该地址是主机B的地址(逻辑地址),处理过程将会继续进行,将在第3层包头之后的数据传递给传输层(第4层)的软件。从而,第3层实现了端到端的数据传输服务。

    步骤D:如果传输层(第4层)选择了差错恢复,标识这段数据的计数器与确认信息(差错恢复)一起在第4层的包头中进行编码。在差错恢复和对输入数据进行重新排序后,将这些数据传递给会话层。

    步骤E:会话层(第5层)可以用来保证一系列消息的完整性。如果没有完成后续的通信,收到的数据可能没有任何意义。第5层的包头中包含有标识字段意味着是一个不连续数据链的中间流而不是结束流。在会话层保证所有的流都完成后,将在第5层包头之后的数据传递给第6层的软件。

    步骤F:表示层(第6层)定义 并维护数据的格式。例如,如果数据是二进制数据而不是字符数据,包头会指明这一点。接收方并不会用主机B中缺省的ASCII字符集转换这些数据。通常,此类包头只包括在初始流中,而不包含在每个被传输的流(数据格式)中。在完成了数据格式的转换后,将数据传递给应用层的软件。

    步骤G:应用层(第7层)处理最后的包头,然后检查真正的终端用户数据。这个包头指明了主机A与主机B已协商好的应用程序所使用的运行参数,该包头用于交换所有参数值。因此,通常只在应用程序初始化时才发送和接收这个包头。例如,在文件传输时,会相互传递所传输文件的长度和文件格式(应用参数)。

    4. 不同计算机上同等层之间的通信

    如图2.3所示提供了同等层之间通信的概念模型。主机A的应用层与主机B的应用层通信。同样,主机A的传输层、会话层和表示层也与主机B的对等层进行通信。

    OSI参考模型的分层禁止了不同主机间的对等层之间的直接通信。因此,主机A的每一层必须依靠主机A相邻层提供的服务来与主机B的对应层通信。假定主机A的第4层必须与主机B的第4层通信。那么,主机A的第4层就必须使用主机A的第3层提供的服务。第4层叫服务用户,第3层叫服务提供者。第3层通过一个服务接入点(SAP)给第4层提供服务。这些服务接入点使得第4层能要求第3层提供服务。