摘要
第3章数据链路
层
本章将介绍网络模型中的第二层———数据链路层的设计原则。本章内容涉及两台相邻
计算机实现可靠、有效的完整信息单元(称为帧)通信的一些算法,而不像物理层那样只关注
单个比特传输。这里的相邻是指两台计算机通过一条通信信道连接起来,通信信道在概念
上就像一条线路(比如同轴电缆、电话线或者无线信道)。信道像一条线路的本质之处在于
信道上传递的比特顺序与发送顺序接近相同。
刚开始,你可能认为这个问题非常简单,似乎没有什么内容需要学习———计算机A把
比特放到线路上,然后计算机B将这些比特取下来。不幸的是,通信信道偶尔会出错。而
且,它们只有有限的数据传输率,并且在比特的发送时间和接收时间之间存在一个非零延
迟。这些对数据传输的效率有非常重要的影响。通信采用的协议必须考虑所有这些因
素。这些协议正是本章的主题。
在介绍了数据链路层的关键设计问题以后,本章将通过考察错误的本质以及如何检测
和纠正这些错误来开始数据链路层协议的学习。然后,本章将学习一系列复杂性逐步递增
的例子协议,每个协议解决了本层中越来越多的问题。最后,本章将给出一些数据链路层协
议的例子。
3.数据链路层的设计问题
1
数据链路层使用其下面的物理层提供的服务在通信信道(可能是不可靠的)上发送和接
收比特。它要实现以下功能:
3.1节)。
(1)向网络层提供一个定义良好的服务接口(1.
(2)将字节序列组成帧,3.3节)。
3.2节)。
成为自包含的数据段(1.
(3)检测和纠正传输错误(1.
(4)调节数据流, 3.4节)。
确保慢速的接收方不会被快速的发送方淹没(1.
为了实现这些目标,数据链路层从网络层获得数据包,然后将这些数据包封装成帧
(frame)以便传输。每个帧包含一个帧头、一个有效载荷(用于存放数据包)以及一个帧尾,
如图3-1所示。帧的管理构成了数据链路层工作的核心。在后面的几节中将详细地讨论上
面提到的所有问题。而且,当使用了不可靠的无线网络时,使用协议增强数据链路层通常也
会提高性能。
图3- 1
数据包和帧的关系
第3章数据链路层157
虽然本章主要讨论数据链路层及其协议,但是,本章中介绍的许多原理,比如错误控制
和流量控制等,同样可以在传输层和其他协议中寻觅到类似的踪迹。这是因为可靠性是一
个总目标,这个目标的实现需要各层的紧密配合。实际上,在许多网络中,这些功能最常出
现的地方是上层,数据链路层只做最少的一点“足够好”的工作。然而,不管它们出现在哪
里,其原理是一致的。在数据链路层中,它们通常表现出最为简单和纯粹的形式,因此,数据
链路层是详细学习这些原理的不错之地。
3.1
提供给网络层的服务
1.
数据链路层的功能是为网络层提供服务。数据链路层最主要的服务是将数据从源主机
的网络层传输到目标主机的网络层。在源主机的网络层有一个实体(称为进程), 它将一些
数据包交给数据链路层,要求传输到目标主机。数据链路层的任务是将这些数据传输给目
标主机,然后这些数据再被进一步交付给网络层,如图3-2(a)所示。实际的传输过程则是沿
着图3-2(b)所示的路径进行的,但很容易将这个过程想象成两个数据链路层的进程使用一
个数据链路层协议进行通信。基于这个原因,在本章中将隐式使用图3-2(a)的模型。
图3-
2
数据路径
数据链路层可以设计成提供各种不同的服务。实际提供的服务因具体协议的不同而有
所差异。下面依次考虑3种合理的可能性:
(1)无确认的无连接服务。
(2)有确认的无连接服务。
(3)有确认的面向连接服务。
无确认的无连接服务是指源主机向目标主机发送独立的帧,目标主机并不对这些帧进
行确认。以太网就是一个提供此类服务的数据链路层的不错实例。事先不需要建立逻辑连
接,事后也不用释放逻辑连接。若由于线路的噪声造成某一帧的丢失,数据链路层并不会试
图检测这样的丢帧情况,也不会试图恢复丢失的帧。当错误率很低时,这类服务是非常合适
的,此时差错恢复过程可以留给上面的层完成。对于实时流量,比如语音或者视频,这类服
务也是合适的,因为在实时流量的情况下数据迟到比数据受损更糟糕。 这正是很多协议标准所做的,它们一次又一次采用了同样的编码方法。在下面的内容中,将
详细地介绍一个简单的编码,然后再简要描述优选的编码。这样,就可以从简单编码理解如
何权衡,并且通过优选编码讨论实际使用的编码。
164
计算机网络(第6版)
3.1
纠错码
2.
本节将考察以下4种不同的纠错码:
(1)海明码。
(2)二进制卷积码。
(3)里德-所罗门码。
(4)低密度奇偶校验码。
上述所有编码都将冗