高级网络通信原理浙江工商大学信电学院第3章数据链路层第3章数据链路层*3.1数据链路层的基本概念*3.2停止等待协议3.2.1完全理想化的数据传输3.2.2具有最简单流量控制的数据链路层协议3.2.3实用的停止等待协议3.2.4循环冗余检验的原理3.2.5停止等待协议的算法3.2.6停止等待协议的定量分析第3章数据链路层(续)*3.3连续ARQ协议3.3.1连续ARQ协议的工作原理3.3.2连续ARQ协议的吞吐量3.3.3滑动窗口的概念3.3.4信道利用率与最佳帧长3.4选择重传ARQ协议第3章数据链路层(续)*3.5面向比特的链路层协议HDLC3.5.1HDLC协议概述3.5.2HDLC的帧结构*3.6因特网的点对点协议PPP3.6.1PPP协议的工作原理3.6.2PPP协议的帧格式3.6.3PPP协议的工作状态3.1数据链路层的基本概念链路(link)是一条无源的点到点的物理线路段,中间没有任何其他的交换结点。一条链路只是一条通路的一个组成部分。数据链路(datalink)除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。现在最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件。一般的适配器都包括了数据链路层和物理层这两层的功能。数据链路层像个数字管道常常在两个对等的数据链路层之间画出一个数字管道,而在这条数字管道上传输的数据单位是帧。早期的数据通信协议曾叫作通信规程(procedure)。因此在数据链路层,规程和协议是同义语。结点结点帧帧数据链路层的主要功能(1)链路管理(2)帧定界(3)流量控制(4)差错控制(5)将数据和控制信息区分开(6)透明传输(7)寻址数据链路层所提供的服务数据链路层可以提供多种不同类型的服务,实际提供的服务因系统不同而不同,但基本上有三种:①无确认、无连接服务;②有确认、无连接服务;③面向连接服务。数据链路层所提供的服务无确认、无连接服务指的是源机器向目的地机器发出独立的帧,而目的地机器对收到的帧不作确认。事先不必建立连接,因而也不存在事后的释放。如果某个帧由于线路噪声而丢失,数据链路层并不准备恢复它,恢复工作留给上层去完成。这类服务适用于误码率很低的情况。这类服务也适用于语音这样的实时信息源,这类信息流由时延引起的不良后果比数据损坏严重。许多局域网在数据链路层都提供无确认、无连接服务。为了提高可靠性,引入了有确认、无连接服务。这种服务仍然不需要建立连接,但是对一个被发出去的帧要进行单独确认。用这种方式,发送方就可以知道一帧是否已安全到达目的地。如果在指定的时间一帧未能到达目的地,则可以重传误帧。数据链路层所提供的服务数据链路层为网络层提供的最复杂的服务是面向连接的服务。采用这种服务,源机器和目的地机器在传送任何数据之前,必须先建立一条连接。在这种连接上传送的每一个帧被编上号,数据链路层保证传送的帧被对方收到,且只收到一次,帧的先后顺序也不变。但采用无连接方式,如果确认信息丢失,将会引起一帧被多次发送,因而被多次接收。数据链路层的面向连接的服务为网络层协议实体之间的交互提供了可靠传送比特流的服务。异步传输和同步传输比特的传送和接收是通过采用定时时钟来完成的。发送计算机利用它的时钟来决定每个比特的起始和结束。在接收计算机那里,时钟被用来确定对信号进行采样取值的位置和间隔时间。一般情况下,使两个独立的时钟精确同步是不太可能的,它们都产生自己的漂移,引起两个连续采样之间的间隔比所希望的变长了或变短了。例如,对于一种产生100bps的数据流,应该每隔0.01秒有一个时钟信号;但由于时钟的漂移,偏差范围从0.01-到0.01+,的大小取决于时钟的产生方法。异步传输和同步传输异步传输和同步传输时钟漂移会引起接收方在确定一个比特的起始和结束位置时发生错误。由于接收时钟与发送时钟的差异,接收方可能对代表1位的信号采样两次,从而多产生一个比特,也可能跳过一位。例如图3-2所示,传送0010这样一串比特,因为时钟漂移,结果被接收方错误地认为是00110或010。解决上述同步问题的方法有两种。第一种称为异步法,发送方和接收方独立地产生时钟,但定期地进行同步。第二种方法称为同步法,接收端时钟完全由发送方时钟控制,也就是说,接收方时钟与发送方时钟是严格同步的。异步传输异步传输是基于这样的事实:在一定的比特数目内,时钟漂移的程度是有限的。它让接收方在某一个时间点上跟一个发送方时钟信号同步,并由此开始自己独立的时钟信号序列。由于偏移相对于一个比特时间来说是比较小的,接收方可以在偏移积累到采样发生错误之前正确地接收若干个比特。在异步传输中,数据以字符为单元发送;每个字符的长度根据所使用的编码方案可以是5到8个比特。作为例子,常用的ASCII编码每个字符7个比特;另一种在所有的IBM机器(个人计算机除外)上采用的EBCDIC(扩展的二进制编码的十进制交换码)编码是每个字符8个比特。值得注意的是,定时或同步仅仅在每个字符的范围内维持着,接收方在每个新字符的开头都被提供机会重新进行同步。异步传输异步传输如图3-3所示,当没有字符发送时,在发送方和接收方之间的线路处于空闲状态。空闲的定义等效于二进制1的信令元素。因此,对于NRZ-L信令,空闲表示在线路上存在着负电压,也称标记(mark)状态。每个异步字符以1个开启位起始,该位的信号电压等同于二进制0的值,它告诉接收设备开始测量随后的数据位串,即判定1和0的位串。接下来的就是实际地组成该字符的5到8个比特,在我们的示例中是采用ASCII编码,因此有7个比特,通常在该字符后面还有一个奇偶位,该奇偶位的值由发送方设置。取决于所使用的规约,字符中1的总数目(包括奇偶位即8个比特)应该保持偶数(偶检验)或奇数(奇检验)的属性。接收方可以使用奇偶位检查在传输过程中是否有错误发生。最后一个元素是停止位,它的信号电平等同于二进制的1。停止位至少1位,流行的实用标准有1位、1.5位和2位最小长度规范。在发送一个稳定的字符流的情况下,两个字符之间的隔离长度保持一致,都等于停止位元素。异步传输启停位使得每个被发送的字节都组成1个帧。标记信号用逻辑“1”数据线电压表示,在1位的时间周期内,数据线电压变成0,所表示的这一位称为开启位。使用停止位的目的是允许接收方有足够的时间进行重置,准备接收信息中的下一个数据字节。接收机的独立时钟与从标记状态到开启状态的转换同时发生,之后,在一个新的字节发送之前,让接收方时钟独立运行一个最大比特数的时间。异步传输的最大缺点是在线路上的额外开销(在ASCII编码的条件下至少20%),每发送8位至少要有两个附加位。这就使得它只能用于低速传送(110bps到19.2kbps)。同步传输在同步传输中,以一种稳定的流方式传送比特块,不使用开启和停止位编码。该数据块在长度上可以是许多个比特。为了防止在发送机和接收机之间的定时漂移,它们的时钟必须通过某种途径保持同步。一种可能性是在发送设备和接收设备之间提供单独的时钟线路。由一方(发送方或接收方)负责在线路上定期地加载脉冲,即每个比特周期发送一个短脉冲。另一方使用这些规则脉冲作为时钟。这种技术在短距离上工作得很好,但对于较长的距离,时钟脉冲会跟数据信号一样面临失真的问题,从而产生定时错误。另一种替代的方法是在数据信号中嵌入时钟信息;对于数字信号,这可以通过使用曼彻斯特或差分曼彻斯特编码得以实现。对于模拟信号,有多种技术可以使用;例如,可以使用载波频率本身基于载波的相位来使接收设备同步。同步传输对于同步传输,还需要进行另一个层次上的同步,使得接收设备能够确定一个数据块的开始和结束。为了取得这一目标,每个块以一个前缀比特串开始,并且一般地还用一个后缀比特串结尾。此外,还附加一些其它的比特传递在数据链路控制过程中要使用的控制信息。数据加上前缀、后缀和控制信息就形成了帧。准确的帧格式取决于所使用的数据链路控制过程。同步传输同步传输图3-4以一般的术语示出了一种典型的同步传输的帧格式。一般说来,帧用一个称为标志的前缀起始。同样的标志也用作后缀。接收方查看标志图案确定一个帧的开始。跟在前缀标志后面的是一定数目的控制段,然后是数据段(对于大多数协议都是可变长度)。在数据段后面还可以有控制段,最后重复标志段。对于可变大小的数据块,同步传输在效率上要比异步传输高得多。异步传输需要百分之二十或更多的开销。同步传输的控制信息、前缀和后缀加在一起一般情况下都小于100位。例如,广泛使用的HDLC帧包含48位的控制、前缀和后缀开销。因此,对于一个包含1000个字符的数据块,每个帧由48比特的开销和1000*8=8000比特的数据组成,开销所占的比例仅是48/8048*100%=0.6%。3.2停止等待协议3.2.1完全理想化的数据传输先研究一下数据链路层的模型。数据链路层的简单模型局域网广域网主机H1主机H2路由器R1路由器R2路由器R3电话网局域网主机H1向H2发送数据链路层应用层运输层网络层物理层链路层应用层运输层网络层物理层链路层网络层物理层链路层网络层物理层链路层网络层物理层R1R2R3H1H2从层次上来看数据的流动数据链路层的简单模型(续)局域网广域网主机H1主机H2路由器R1路由器R2路由器R3电话网局域网主机H1向H2发送数据链路层应用层运输层网络层物理层链路层应用层运输层网络层物理层链路层网络层物理层链路层网络层物理层链路层网络层物理层R1R2R3H1H2仅从数据链路层观察帧的流动3.2停止等待协议3.2.1完全理想化的数据传输数据链路层主机A缓存主机B数据链路AP2AP1缓存发送方接收方帧高层帧完全理想化的数据传输所基于的两个假定假定1:链路是理想的传输信道,所传送的任何数据既不会出差错也不会丢失。假定2:不管发方以多快的速率发送数据,收方总是来得及收下,并及时上交主机。这个假定就相当于认为:接收端向主机交付数据的速率永远不会低于发送端发送数据的速率。3.2.2具有最简单流量控制的数据链路层协议现在去掉上述的第二个假定。但是,仍然保留第一个假定,即主机A向主机B传输数据的信道仍然是无差错的理想信道。然而现在不能保证接收端向主机交付数据的速率永远不低于发送端发送数据的速率。由收方控制发方的数据流,乃是计算机网络中流量控制的一个基本方法。具有最简单流量控制的数据链路层协议算法在发送结点:(1)从主机取一个数据帧。(2)将数据帧送到数据链路层的发送缓存。(3)将发送缓存中的数据帧发送出去。(4)等待。(5)若收到由接收结点发过来的信息(此信息的格式与内容可由双方事先商定好),则从主机取一个新的数据帧,然后转到(2)。具有最简单流量控制的数据链路层协议算法(续)在接收结点:(1)等待。(2)若收到由发送结点发过来的数据帧,则将其放入数据链路层的接收缓存。(3)将接收缓存中的数据帧上交主机。(4)向发送结点发一信息,表示数据帧已经上交给主机。(5)转到(1)。两种情况的对比(传输均无差错)AB送主机B送主机B送主机B送主机BAB送主机B送主机B时间不需要流量控制需要流量控制3.2.3实用的停止等待协议时间AB送主机送主机(a)正常情况AB送主机(c)数据帧丢失重传tout丢失!AB送主机丢弃(d)确认帧丢失重传tout丢失!AB送主机(b)数据帧出错重传出错四种情况超时计时器的作用结点A发送完一个数据帧时,就启动一个超时计时器(timeouttimer)。计时器又称为定时器。若到了超时计时器所设置的重传时间tout而仍收不到结点B的任何确认帧,则结点A就重传前面所发送的这一数据帧。一般可将重传时间选为略大于“从发完数据帧到收到确认帧所需的平均时间”。解决重复帧的问题使每一个数据帧带上不同的发送序号。每发送一个新的数据帧就把它的发送序号加1。若结点B收到发送序号相同的数据帧,就表明出现了重复帧。这时应丢弃重复帧,因为已经收到过同样的数据帧并且也交给了主机B。但此时结点B还必须向A发送确认帧A