1.6.2 理解开放系统互连(OSI)模型

国际标准化组织(International Organization for Standardization,ISO)在20世纪80年代早期开发了开放系统互连(OSI)模型。此模型描述了网络协议和组件在一起工作的形式。OSI模型把网络功能分为七层,每层表现为一群相关的规格、功能和活动。虽然看起来很复杂,但这些术语已被广泛地应用在网络、系统和开发社区中。

图1-7所示为OSI模型的层次结构,在后续的章节中将会简要介绍这些层次。

1.6.2 理解开放系统互连(OSI)模型 - 图1

图 1-7 OSI模型的七层结构

1.物理层

OSI模型的第一层为物理层,该层规范了传输介质(如网线)的电气与机械特性。它包括发送与接收介质上的数据流,载体可使用电(网线)、光(光纤)、无线、红外、激光等信号。物理层的规范主要包括下列内容:

❑电压变化;

❑电压变化的时间;

❑数据率;

❑最大传输距离;

❑连接传输介质的物理连接器(接头);

❑网络的拓扑与部署。

有许多复杂的问题要在物理层中进行研讨,包括是使用数字的还是模拟的信号,使用的是基带还是宽带信号,是数据同步还是异步传输,以及信号如何被分配到信道上(如多路复用)等问题。

物理层上的设备包括NIC上的收发器、中继器、基本集线器(basic hub)与连接器等。物理层的数据由0与1组成,以光脉冲或电压变化脉冲的状态(通常on代表1,off代表0)表示。这些比特位的安排与管理,是OSI模型数据链路层要实现的功能。

2.数据链路层

既然物理层只负责网络介质中数据的物理传输,那么接收并管理与数据包物理传输相关错误信息的工作就交给OSI模型的数据链路层了。

数据链路层负责维护两台计算机(典型的说法为主机或结点)之间的数据链接。它定义并管理接收、发送的数据帧中比特位的顺序。数据帧是一个按特定组织方式安排好的数据序列,其为接收方与发送方在介质间有顺序、一致地传输数据提供了一个方法。如果没有这样的控制,数据将会以随机的大小与配置方式发送,这样的数据在另一端(接收端)是无法解码的。数据链路层管理物理地址与数据包的同步,也对物理层的流量控制与错误提示负责。流量控制是指管理发送与接收数据的时间,使数据传输的相关指标不超过物理连接的容量(包括速度、内存等)。

数据链路层所涉及的网络设备为两层交换机与网桥。两层交换机通过只发送数据到与目标计算机相关的端口而不是发送到交换机的所有端口上来降低网络拥塞。网桥则把网络划分为两部分并过滤流量,它会基于MAC地址建立一个表,从而定义哪台计算机在网桥的哪一边。

数据链路层又分为两个子层:介质访问控制(MAC)子层与逻辑链路控制(LLC)子层。

(1)MAC子层

MAC子层提供对访问传输介质的控制。它负责把在一个共享传输介质(如以太网线或光纤线)上的数据包从一个NIC移动到另一个NIC上。物理地址是MAC子层的地址。每一个NIC有一个唯一的MAC地址(又称物理地址),此地址用于标识网络上特定的NIC。

注意 在以太网的NIC中,物理或MAC地址被表示为12个十六进制的数字,每两个一组且用“:”分隔开(又称12:3A:4D:66:3A:1C)。开始的三组为制造商编号,后三组代表该制造商制造的唯一NIC的编号。

一个NIC的MAC地址通常会烧录到一个只读内存(ROM)的芯片中。制造商为每一个网卡提供了一个唯一的MAC地址,所以从理论上说,每个被制造的NIC具有唯一的MAC地址。为了避免混乱,MAC地址被永久地烧录到NIC的只读内存中。

有一些方法会使用MAC地址来分配网络访问的计算机,防止它们在同一时间传输从而致使数据冲突。比如采用MAC地址的方法包括以太网使用的载波监听多点接入/冲突检测(CSMA/CD)方法、AppleTalk网络使用的载波监听多点接入/冲突避免(CSMA/CA)方法、令牌环网与光纤分布式数据接口(FDDI)网络使用的令牌传递方法等。

(2)LLC子层

LLC子层为数据链路层提供逻辑控制,它用于实现数据链路层的同步、流量控制与错误检查等功能。该层主要管理面向连接的传输,不过,它也能提供非连接的服务。LLC定义了三种数据通信操作类型:

❑无连接。该方式不保证发送的信息一定可以收到。

❑面向连接。该方式提供了四种服务:连接的建立、确认和数据到达响应、差错恢复(通过请求重发接收到的错误数据实现)、滑动窗口(系数:128)。滑动窗口用来提高数据传输速率。

❑无连接应答响应服务。

在面向连接的通信方式中,每一个LLC帧发送的内容都会被确认。LLC子层在接收LLC帧(又称协议数据单元,PDU)结束时需要检测在传输时是否有帧丢失了,如果丢失,则会给发送端发送一个请求,请求重新开始传输,此次传输将从没有到达的PDU开始。

LLC子层位于MAC子层的上面,它在上层与MAC子层的协议(如以太网、令牌环网等)之间扮演着一个联络人的角色。

3.网络层

接下来的一层为网络层,在这一层数据包会被顺序化,同时会被赋予逻辑地址。逻辑地址是通过软件赋予的地址,不是永久性的。TCP/IP协议在互联网上使用的IP地址就是逻辑地址。

网络层也负责在点或结点之间创建一个虚拟链路(这里指的一个逻辑连接,而不是一个物理连接)。其中结点是具有MAC地址的设备,包含计算机、打印机或路由器等。

这一层也负责路由与推进数据包。路由是指从一个网络或子网推进数据包到另一个网络或子网。如果没有路由器,计算机只能与同一网段中的计算机通信。对于互联网来说,路由是一个关键,同时也是网络层最重要的任务。

网络层还提供流量控制与差错控制功能。在该层操作的设备是路由器与三层交换机。从这一层开始,实现OSI模型的基本方法将与软件密切关联,而不再是硬件。

4.传输层

OSI模型的第四层为传输层,这一层负责从一个结点传输数据到另一个结点上。它在结点间提供透明的数据传输,并管理端到端的流量控制、错误检测与错误恢复。

首先,传输层协议在不同计算机的特定端口之间发起联系,并设置虚拟的链路。每台主机的传输协议确认应用程序发送的数据是否是被授权访问的,并且两个端点是否都准备好开始数据传输了。当该同步完成时,数据将被发送。在数据传送的过程中,每台主机上的传输协议会监控数据流并监视传输错误。如果传输检测到错误,传输协议将提供错误恢复。

对网络通信而言,传输层所提供的功能非常重要。前面提到数据链路层提供了底层可靠性与面向连接或非连接的通信,传输层做了同样的工作,只不过是在更高的层次上。

面向连接的传输控制协议(TCP)与面向非连接的用户数据包协议(UDP)是传输层常见的两种协议。

传输层也管理端口的逻辑地址,比如,决定所接收的数据属于哪个应用程序,一台计算机上可能会同时运行几个网络应用程序。

传输层还会处理域名解析,如使用域名系统(Domain Name System,DNS)就是处理该问题的一种方法。

5.会话层

在传输层建立了一个虚拟的连接后,两台不同计算机上的进程之间就会建立一个通信会话。会话层负责建立、监视与终止会话,同时会使用传输层建立的虚拟链路。

会话层也负责给数据包添加协议头信息,指明一个消息的起点与终点。一旦该头信息被添加到数据包上,会话层就会在发送者会话层与接收者会话层之间执行同步,利用确认(ACKnowledgment,ACK)标识协调会话层的数据传输。

会话层的另一个重要功能是决定在一个会话中的通信是采用全双工还是半双工通信方式。

传输层是在两台计算机之间建立一个连接,而会话层则在两个进程之间建立一个连接。传输层在两台计算机之间建立连接后,会话层就会在一台计算机上的一个进程与另一台计算机上的一个进程之间建立连接。一个应用程序可同时运行多个进程来完成相应的工作。

6.表示层

数据传输是表示层的基本活动,协议转换就是在这一层进行的。当数据从发送者传送到接收者处时,它就会在表示层上进行转换(比如,发送者的应用程序把数据向下传送到表示层时,会在表示层将数据转换为一种通用格式)。待数据被另一端接收时,表示层又会把它从通用格式转回为应用程序使用的格式。

表示层也是网关服务操作的地方。网关是不同平台或应用的网络之间的连接点,通常通过软件实现网关的功能。软件重定向器也是在该层进行操作的,同时该层也是数据压缩发生的地方,它会最小化网络介质需要传送到接收器的比特数量。另外,数据加密与解密也在表示层进行。

7.应用层

应用层是用户应用程序与网络交互的位置。不要把网络模型与应用程序本身混淆了。应用程序的进程是在一个用户应用程序中开始的,进程所创建的数据会被递交到网络软件的应用层中。

在该层所发生的所有事情都是特定于应用的。

OSI模型是通用的,可被用来解释所有的网络协议。为了达到此目的,各种协议簇经常被映射到OSI模型上。对OSI模型深入的理解可帮助网络分析和比较,以及问题的解决。

注意,不是所有的协议都能很好地映射到OSI模型上。比如TCP/IP协议簇在OSI模型之前就已经开发了,TCP/IP协议簇被设计为映射到美国国防部(DoD)的模型上,因此TCP/IP协议簇的层次无法与OSI模型准确地对应。TCP/IP协议簇由五层组成:物理层、数据链路层、网络层、运输层和应用层。前四层与OSI模型的前四层对应,提供物理标准、网络接口、网际互连和传输功能。不过,OSI模型的最高三层在TCP/IP中则是用第五层“应用层”表示的。