值得注意的是, OSI 参考模型本身并不是一个完整的网络体系结构,因为它并未确切地描述用于各层的协议和服务,它仅仅告诉我们每层应该做什么。不过, ISO 已经为各层制定了标准,但它们并不是参考模型的一部分,而是作为独立的国际标准公布的。

OSI 各层简介

  OSI 七层模型是指从物理层到应用层这七层,它不涉及通信的物理介质。随着网络技术的发展,特别是局域网的发展,后来对 OSI 七层模型进行了改进。修订之一就是非正式地增加了一些子层和新层,如增加了第 0 层,使之覆盖了象电缆连接器和光纤这样的硬件细节。

  1. 物理层

  物理层( physical layer )是 OSI 模型的最低层,它建立在物理通信介质的基础上,作为系统和通信介质的接口,用来实现数据链路实体间透明的比特流传输。在设计上必须保证一方发送出二进制“ 1 ”时,另一方收到的也是“ 1 ”而不是“ 0 ”。

  物理层是 OSI 中唯一设计通信介质的一层,它提供与通信介质的连接,描述这种连接的机械、电气、功能和规程特性,以建 立、维护和释放数据链路实体之间的物理连接。物理层向上层提供位信息的正确传送。

  物理层协议定义了硬件接口的一系列标准,典型地如用多少伏特电压表示“ 1 ”,多少伏特表示“ 0 ”;一个比特持续多少时间;传输是双向的还是单向的;最初的连接如何建立和完成通信后连接如何终止;一次通信中发送方和接收方如何应答;设备之间连接件的尺寸和接头数;每根线的用途等。

  2. 数据链路层

  数据链路层( data link layer )的主要任务是加强物理层传输原始比特的功能,使之对网络层显现为一条无错链路。它在相邻网络实体之间建立、维持和释放数据链路连接,并传输数据链路数据单元(帧, frame )。它是将位收集起来,按包处理的第一个层次,它完成发送包前的最后封装,及对到达包进行首次检视。其主要功能为:

数据链路连接的建立与释放:在每次通信前后,双方相互联系以确认一次通信的开始和结束。数据链路层一般提供无应答无连接服务、有应答无连接服务和面向连接的服务等三种类型服务。

数据链路数据单元的构成:在上层交付的数据的基础上加入数据链路协议控制信息,形成数据链路协议数据单元。

数据链路连接的分裂:当数据量很大时,为提高传输速率和效率,将原来在一条物理链路上传输的数据改用多条物理链路来传输(与多路复用相反)。

定界与同步:从物理连接上传输数的比特流中,识别出数据链路数据单元的开始和结束,以及识别出其中的每个字段,以便实现正确的接收和控制。

顺序和流量控制:用以保证发送方发送的数据单元能以相同的顺序传输到接收方,并保持发送速率与接收速率的匹配。

差错的检测与恢复:检测出传输、格式和操作等错误,并对错误进行恢复,如不能恢复则向相关网络实体报告。

  3. 网络层

  网络层( network layer )关系到子网的运行控制,其关键问题之一是确定分组从源端到目的端如何选择路由。本层维护路由表,并确定哪一条路由是最快捷的,及何时使用替代路由。路由既可以选用网络中固定的静态路由表,几乎保持不变,也可以在每一次会话开始时决定(如通过终端协商决定),还可以根据当前网络的负载状况,高度灵活地为每一个分组决定路由。

  网络层的另一重要功能是传输和流量控制,它在子网中同时出现过多的分组时,提供有效的流量控制服务来控制网络连接上传输的分组,以免发生信息“堵塞”或“拥挤”现象。

  网络层提供两种类型的网络服务,即无连接的服务(数据报服务)和面向连接的服务(虚电路服务)。网络层使较高层与连接系统所用的数据传输和交换技术相独立。

  IP 协议工作在本层,它提供“无连接的”或“数据报”服务。

  4. 传输层

  传输层( transport layer )的基本功能是从会话层接收数据,在必要时把它们划分成较小的单元传递给网络层,并确保到达对方的各段信息准确无误。而且,这些任务都必须高效率地完成。

  传输层是在网络层的基础上再增添一层软件,使之能屏蔽掉各类通信子网的差异,相用户进程提供一个能满足其要求的服务,其具有一个不变的通用接口,使用户进程只需了解该接口,便可方便地在网络上使用网络资源并进行通信。

  通常情况下,会话层每请求建立一个传输连接,传输层就为其创建一个独立的网络连接。如果传输连接需要较高的信息吞吐量,传输层也可以为之创建多个网络连接,让数据在这些网络连接上分流,以提高吞吐量。另一方面,如果创建或维持一个网络连接不合算,传输层可以将几个传输连接复用到一个网络连接上,以降低费用。在任何情况下,都要求传输层能使多路复用对会话层透明。

  传输层是真正的从源到目标“端到端”的层,也就是说,源端机上的某程序,利用报文头和控制报文与目标机上的类似程序进行对话。在传输层以下的各项层中,协议是每台机器和它直接相邻的机器间的协议,而不是最终的源端机和目标机之间的协议,在他们中间可能还有多个路由器。图 1-1 说明了这种区别, 1 层 -3 层是链接起来的, 4 层 -7 层是端到端的。

  TCP 协议工作在本层,它提供可靠的基于连接的服务。它在两个端点之间提供可靠的数据传送,并提供端到端的差错恢复与流控。

  5. 会话层

  会话层( session layer )允许不同机器上的用户之间建立会话关系,即正式的连接。这种正式的连接使得信息的收发具有高可靠性。会话层的目的就是有效地组织和同步进行合作的会话服务用户之间的对话,并对它们之间的数据交换进行管理。

  会话层服务之一是管理对话,它允许信息同时双向传输,或任意时刻只能单向传输。约属于后者,则类似于单线铁路,会话层将记录此时该轮到哪一方了。一种与会话有关的服务是令牌管理( token management ),令牌可以在会话双方之间交换,只有持有令牌的一方可以执行某种关键操作。

  另一种会话服务是同步( synchronization )。同步是在连续发送大量信息时,为了使发送的数据更加精细地结构化,在用户发送的数据中设置同步点,以便记录发送过程的状态,并且在错误发生导致会话中断时,会话实体能够从一个同步点恢复会话继续传送,而不必从开头恢复会话。

  TCP/IP 协议体系中没有专门的会话层,但是在其传输层协议 TCP 协议实现了本层部分功能。

  6. 表示层

  表示层( presentation layer )完成某些特定的功能,由于这些功能常被请求,因此人们希望找到通用的解决办法,而不 是要让每个用户来实现。值得一提的是,表示层以下的各层只关心可靠的传输比特流,而表示层关心的是所传输的信息的语法和语义。

  表示层尚未完整定义和广泛使用,如 TCP/IP 协议体系中就没有定义表示层。表示层完成应用层所用数据所需要的任何转换,以提供标准化的应用接口和公共的通信服务。如数据格式转换、数据压缩 / 解压和数据加密 / 解密可能在表示层进行。

  7. 应用层

  应用层( application layer )包含大量人们普遍需要的协议。本层处理安全问题与资源的可用性。最近几年,应用层协议发展很快,经常用到的应用层协议有: FTP 、 TELNET 、 HTTP 、 SMTP 等。

  OSI 模型的各层之间任务明确,它们只与上下相邻层打交道:接受下层提供的服务,向上层提供服务。由于所有的网络协议都是分层的,象堆栈一样,因此经常将协议各层统称协议栈。它们的工作模式一般为:发送时接收上层的数据,将其分割打包,然后交给下层;接收时接收下层的数据包,将其拆包重组,然后交给上层。这样,一个包的传输过程是:发送主机的应用程序将数据传递给网络协议栈实现(网络通信程序),网络协议栈实现将数据层层打包,最后交由物理层在数据链路上发送;接收主机收到数据后,逐层拆包向上传递,直到最后达到应用层,应用程序得到对等方的数据。