1、1/31,第 6讲 数据链路层(2),2/31,知识回顾,数据链路层的功能 帧定界 差错检测 循环冗余检码,3/31,CRC工作原理,4/31,举例CRC,5/31,本讲内容及教学目标,掌握PPP协议在数据链路层的工作原理 了解面向比特的链路层协议 HDLC的帧 理解停止等待协议 理想化的数据传输 具有最简单流量控制的数据链路层协议 实用的停止等待协议 理解滑动窗口协议,实现流量控制 了解传输层类似的流量控制功能,6/31,数据链路层协议分类,点到点线路 广播线路 局域网使用 Internet中主要的数据链路层协议 SLIP (Serial Line IP)运行于传输速率相对较低的串行线路上;
2、 PPP ( Point-to-Point Protocol) 点-点协议 SLIP与PPP用于串行通信的拨号线路上,是目前家庭计算机或公司用户通过ISP接到Internet主要的协议。,7/31,点对点协议 PPP,现在全世界使用得最多的数据链路层协议是点对点协议 PPP (Point-to-Point Protocol)。 用户使用拨号电话线接入因特网时,一般都是使用 PPP 协议。 PPP协议不仅在拨号电话线,并且在路由器路由器之间的专用线上广泛应用; PPP协议是在大多数家庭个人计算机和ISP之间使用的协议,它可以作为在高速广域网和社区宽带网协议族的一部分。,8/31,用户到 ISP
3、的链路使用 PPP 协议,用户,至因特网,已向因特网管理机构 申请到一批 IP 地址,ISP,接入网,PPP 协议,9/31,PPP 协议应满足的需求,简单这是首要的要求 封装成帧 透明性 多种网络层协议 多种类型链路 差错检测 检测连接状态 最大传送单元 网络层地址协商 数据压缩协商,10/31,最大传送单元,最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据报大小(以字节为单位)。因特网协议允许IP分片,这样就可以将数据报分成足够小的片段以通过那些最大传输单元小于该数据报原始大小的链路了。 以太网中MTU为1500个字节
4、。也就是IP层的数据报,传到以太网时,长度大于1500个字节就要进行分片处理。IP数据包可以达到64KB。 分片过程发生在IP层,它使用的是将分组发送到链路上的网络接口的最大传输单元的值。原始分组的分片都被加上了标记,这样目的主机的IP层就能将分组重组成原始的数据报了。,11/31,PPP 协议不需要的功能,纠错 流量控制 序号 多点线路 半双工或单工链路,12/31,PPP 协议的组成,1992 年制订了 PPP 协议。经过 1993 年和 1994 年的修订,现在的 PPP 协议已成为因特网的正式标准RFC 1661。 PPP 协议有三个组成部分 一个将 IP 数据报封装到串行链路的方法。
5、 链路控制协议 LCP (Link Control Protocol)。 网络控制协议 NCP (Network Control Protocol)。,13/31,PPP 协议的帧格式(续),标志字段 F = 0x7E (符号“0x”表示后面的字符是用十六进制表示。十六进制的 7E 的二进制表示是 01111110)。 地址字段 A 只置为 0xFF。地址字段实际上并不起作用。 控制字段 C 通常置为 0x03。 PPP 是面向字节的,所有的 PPP 帧的长度都是整数字节。,14/31,PPP 协议的帧格式,PPP 有一个 2 个字节的协议字段。 当协议字段为 0x0021 时,PPP 帧的信
6、息字段就是IP 数据报。 若为 0xC021, 则信息字段是 PPP 链路控制数据。 若为 0x8021,则表示这是网络控制数据。,IP 数据报,1,2,1,1,字节,1,2,不超过 1500 字节,PPP 帧,先发送,7E,FF,03,F,A,C,FCS,F,7E,协议,信 息 部 分,首部,尾部,15/31,PPP协议透明传输问题,当 PPP 用在同步传输链路时,协议规定采用硬件来完成比特填充。(发送方和接收方的时钟频率相同) 当 PPP 用在异步传输时,就使用一种特殊的字节填充法。 (发送方和接收方的时钟频率可以不同,但有同步信号) 将信息字段中出现的每一个 0x7E 字节转变成为 2
7、字节序列(0x7D, 0x5E)。 若信息字段中出现一个 0x7D 的字节, 则将其转变成为 2 字节序列(0x7D, 0x5D)。 若信息字段中出现 ASCII 码的控制字符(即数值小于 0x20 的字符),则在该字符前面要加入一个 0x7D 字节,同时将该字符的编码加以改变。 PPP 协议用在 SONET/SDH 链路时,是使用同步传输(一连串的比特连续传送)。这时 PPP 协议采用零比特填充方法来实现透明传输。,16/31,0 1 0 0 1 1 1 1 1 0 1 0 0 0 1 0 1 0,0 1 0 0 1 1 1 1 1 1 0 0 0 1 0 1 0,0 1 0 0 1 1 1
8、 1 1 0 1 0 0 0 1 0 1 0,信息字段中出现了和 标志字段 F 完全一样 的 8 比特组合,发送端在 5 个连 1 之后 填入 0 比特再发送出去,在接收端把 5 个连 1 之后的 0 比特删除,会被误认为是标志字段 F,发送端填入 0 比特,接收端删除填入的 0 比特,零比特填充,17/31,不提供使用序号和确认 的可靠传输,PPP 协议之所以不使用序号和确认机制是出于以下的考虑: 在数据链路层出现差错的概率不大时,使用比较简单的 PPP 协议较为合理。 在因特网环境下,PPP 的信息字段放入的数据是 IP 数据报。数据链路层的可靠传输并不能够保证网络层的传输也是可靠的。 帧
9、检验序列 FCS 字段可保证无差错接受。,18/31,PPP 协议的工作状态,当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,并建立一条物理连接。 PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧)。 这些分组及其响应选择一些 PPP 参数,和进行网络层配置,NCP 给新接入的 PC机分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机。 通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接。,19/31,设备之间无链路,链路静止,链路建立,鉴别,网络层协议,链路打开,链路终止,
10、物理链路,LCP 链路,已鉴别的 LCP 链路,已鉴别的 LCP 链路 和 NCP 链路,物理层连接建立,LCP 配置协商,鉴别成功或无需鉴别,NCP 配置协商,链路故障或 关闭请求,LCP 链路 终止,鉴别失败,LCP 配置 协商失败,链路管理,20/31,HDLC 协议概述,HDLC是一个面向比特的链路控制规程。 1974年,IBM 公司推出了面向比特的规程SDLC (Synchronous Data Link Control)。 后来 ISO 把 SDLC 修改后称为 HDLC (High-level Data Link Control),译为高级数据链路控制,作为国际标准ISO 330
11、9。 CCITT 则将 HDLC 再修改后称为链路接入规程 LAP (Link Access Procedure)。不久,HDLC 的新版本又把 LAP 修改为 LAPB,“B”表示平衡型(Balanced),所以 LAPB 叫做链路接入规程(平衡型)。,21/31,HDLC 的帧结构,标志字段 F (Flag) 为 6 个连续 1 加上两边各一个 0 共 8 bit。在接收端只要找到标志字段就可确定一个帧的位置。,比特,8,8,8,可变,16,8,信息Info,标志F,标志F,地址 A,控制C,帧检验序列FCS,透明传输区间,FCS 检验区间,22/31,HDLC的帧格式,帧标志序列:011
12、11110,作为起始和结束标志,在数据位有5个连续的1出现时,就插入1个0(位填充) 地址段:在命令帧中表示目的地址,在响应帧中表示源地址,全1为广播地址,全0为测试地址,23/31,零比特填充法,HDLC 采用零比特填充法使一帧中两个 F 字段之间不会出现 6 个连续 1。 在发送端,当一串比特流数据中有 5 个连续 1 时,就立即填入一个 0。 在接收帧时,先找到 F 字段以确定帧的边界。接着再对比特流进行扫描。每当发现 5 个连续 1 时,就将其后的一个 0 删除,以还原成原来的比特流。,24/31,一种无限制的单工协议,完全理想的条件:数据单向传输,收发双方的网络层一直处于就绪状态,处
13、理时间可忽略不计,接收缓冲空间无限大,信道不会损坏或丢失帧。 发送端无限循环地重复三个动作: 从网络层取分组。 构造帧。 发出帧。无需任何差错控制和流量控制。 接收端也是无限循环地重复三个动作: 等待事件(唯一的未损坏帧的到达)发生。 帧到达后,从硬件缓冲中取出新到的帧。 将帧的数据部分传给网络层。无需做其它任何处理。,25/31,完全理想化的数据传输,数据链路层,主 机A,缓存,主 机B,数据链路,AP2,AP1,缓存,发送方,接收方,帧,高层,帧,26/31,完全理想化的数据传输cont.,完全理想化的数据传输基于两个假定 假定 1: 链路是理想的传输信道,所传送的任何数据既不会出差错也不
14、会丢失。 假定 2: 不管发方以多快的速率发送数据,收方总是来得及收下,并及时上交主机。 假定2相当于认为:接收端向主机交付数据的速率永远不会低于发送端发送数据的速率。,27/31,具有最简单流量控制的 数据链路层协议,现在去掉上述的第二个假定,仍然保留第一个假定,即主机 A 向主机 B传输数据的信道仍然是无差错的理想信道。然而现在不能保证接收端向主机交付数据的速率永远不低于发送端发送数据的速率。 由收方控制发方的数据流,是计算机网络中流量控制的一个基本方法。,28/31,具有最简单流量控制的 数据链路层协议算法,在发送结点: 从主机取一个数据帧。 将数据帧送到数据链路层的发送缓存。 将发送缓
15、存中的数据帧发送出去。 等待。 若收到由接收结点发过来的信息(此信息的格式与内容可由双方事先商定好),则从主机取一个新的数据帧,然后转到。,29/31,具有最简单流量控制的 数据链路层协议算法cont.,在接收结点: 等待。 若收到由发送结点发过来的数据帧,则将其放入数据链路层的接收缓存。 将接收缓存中的数据帧上交主机。 向发送结点发一信息,表示数据帧已经上交给主机。 转到 。,30/31,两种情况的对比(传输均无差错),A,B,DATA,DATA,DATA,DATA,送主机 B,送主机 B,送主机 B,送主机 B,A,B,DATA,送主机 B,DATA,送主机 B,时 间,不需要流量控制,需
16、要流量控制,31/31,实用的停止等待协议,时 间,A,B,送 主 机,ACK,送 主 机,ACK,(a) 正常情况,四种情况,32/31,超时计时器的作用,结点A发送完一个数据帧时,就启动一个超时计时器(timeout timer)。 计时器又称为定时器。 若到了超时计时器所设置的重传时间 tout而仍收不到结点 B 的任何确认帧,则结点 A 就重传前面所发送的这一数据帧。 一般可将重传时间选为略大于“从发完数据帧到收到确认帧所需的平均时间”。,33/31,解决重复帧的问题,使每一个数据帧带上不同的发送序号。每发送一个新的数据帧就把它的发送序号加 1。 若结点 B 收到发送序号相同的数据帧,
17、就表明出现了重复帧。这时应丢弃重复帧,因为已经收到过同样的数据帧并且也交给了主机 B。 但此时结点 B 还必须向 A 发送确认帧 ACK,因为 B 已经知道 A 还没有收到上一次发过去的确认帧 ACK。,34/31,帧的编号问题,任何一个编号系统的序号所占用的比特数一定是有限的。因此,经过一段时间后,发送序号就会重复。 序号占用的比特数越少,数据传输的额外开销就越小。 对于停止等待协议,由于每发送一个数据帧就停止等待,因此用一个比特来编号就够了。 一个比特可表示 0 和 1 两种不同的序号。,35/31,帧的发送序号,数据帧中的发送序号 N(S) 以 0 和 1 交替的方式出现在数据帧中。 每
18、发一个新的数据帧,发送序号就和上次发送的不一样。用这样的方法就可以使收方能够区分开新的数据帧和重传的数据帧。,36/31,停止等待协议 与ARQ,优点:比较简单 。 缺点:通信信道的利用率不高,也就是说,信道还远远没有被数据比特填满。 可靠传输 虽然物理层在传输比特时会出现差错,但由于数据链路层的停止等待协议采用了有效的检错重传机制,数据链路层对上面的网络层就可以提供可靠传输的服务。 为了克服这一缺点,就产生了另外两种协议,即连续 ARQ 和选择重传 ARQ。这将在后面进一步讨论。,37/31,流量控制,当发送端的发送速度大于接收端的接收速度,或发送端所在的网络传输速率大于接收端所在的网络传输
19、速率时,就需要流量控制。 窗口机制 在任意时刻,发送方发出n帧,其中有l帧已得到确认。而同一时刻,接收方收到并应答了m帧,显然l=m = n,等待确认的帧的数目不允许超过W,即n-l =W,该W就是窗口。,l,l+W,W,n,发送方,m,m+W,接收方,38/31,滑动(slide)窗口协议,滑动窗口协议是一种非常可靠、适用于各种条件的通用流量控制协议,特别是在效率、复杂性及对缓冲区的需求等方面可作灵活调配。 主要的滑动窗口协议有出错全部重发协议和选择重发协议两种。 实际上,有噪音信道的停-等协议就是滑动窗口协议的一个特例,将停-等协议中的帧序号从1位扩展到n位(范围为02n-1),收发双方维
20、护的序号也变为一组序号表,分别称作发送窗口(sending window)和接收窗口(receiving window)。,39/31,发送窗口,发送窗口就是发送端允许不等确认而连续发送的帧的序号表。 允许连续发送的帧的数量称为发送窗口尺寸,表示为W。发送端必须有W个输出缓冲区来存放W个数据帧的副本以备数据帧的重发。 当发送端收到发送窗口下沿帧的肯定确认时,将发送窗口整体向前滑动一个序号,并从输出缓冲区中将相应的数据帧副本删除。,l,l+W,W,j,发送方,40/31,接收窗口,接收窗口是接收端允许接收的帧的序号表。 允许接收的帧的数量称为接收窗口尺寸。同样接收端也必须设置相应数量的输入缓冲区
21、来支持接收窗口。 对接收端收到的帧的序号落在接收窗口外的帧被直接丢弃。只有落在接收窗口内的帧才会被接收端进行校验处理,若校验正确: 当接收的帧不是接收窗口下沿帧时,必须暂存在输入缓冲区,不能交给网络层。 当接收到接收窗口下沿帧时,会将其连同后面连续的若干个检验过的正确帧按顺序交给网络层,在发回确认帧的同时将接收窗口向前滑动相应的数量。,l,l+W,i,接收方,W,41/31,滑动窗口示意图,0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,0,1,2,3
22、,4,5,6,7,0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,发送端,接收端,帧的序号由3位组成(07),发送窗口和接收窗口的尺寸都为3。,42/31,停-等协议的窗口机制,帧的序号由1位组成(01),发送窗口和接收窗口的尺寸都为1。,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,发送端,接收端,43/31,数据的全双工传输,在实际通信中,通常收发双方都相互发送数据。 为了提高效率,可以将确认信息放在数据帧中作为一个控制字段连同数
23、据一起发送给对方,这种方式称为捎带应答(piggybacking)。 当一方收到对方的数据帧后: 若正好也有数据需发给对方,则立即可使用捎带应答。 若暂时没有数据需发给对方或数据还未准备好,则等待一定的时间,如果在该时间内准备好了数据,则可以使用捎带应答。如果未准备好,为了防止对方等待时间过长而超时重发,必须立即发送一个单独的确认帧。 使用捎带应答就不可能对每一个帧都作确认,可以用对某一个帧的确认来代替对该帧之前的所有帧的确认。,44/31,出错全部重发协议(go-back-n),出错全部重发协议中,发送窗口的尺寸是大于1,而接收窗口的尺寸则等于1。 由于接收窗口的尺寸为1,接收端只能按顺序地
24、接受数据帧,一旦某个帧出错或丢失,只能简单地丢弃该帧及其所有的后续帧(因为发送窗口的尺寸是大于1的),不作任何确认。发送端超时后需重发出错或丢失的帧及其后续所有的帧。 发送端需要为每个待确认的帧都各自设置一个定时计数器。 发送窗口的尺寸不能超过2n-1(这里的n为序号的编码位数),否则会造成接收端无法分辨新、旧数据帧。 出错全部重发协议只要求发送端保持一定数量的缓存来保存没有确认的数据帧,对接收端没有缓存的要求。但在误码率高的情况下,会大大降低信道的利用率。,45/31,选择重发协议(selective repeat),选择重发协议中,发送和接收窗口的尺寸都大于1。 由于接收窗口的尺寸大于1,
25、接收端可存储坏帧之后的其它数据帧(落在接收窗口),接收端对错帧发否定确认帧,因此发送端只需重发出错的帧,而不需重发其后的所有后续帧。 接收端正确收到重发的帧后,可对其后连续的已接收的正确帧作一次总体确认(最大序号的确认),并交送网络层。大大提高了信道的利用率。 接收窗口的尺寸不能超过2n-1(即序号范围的1/2),否则可能造成帧的重叠。 发送窗口的尺寸一般和接收窗口的尺寸相同,发送端为每一个输出缓存区设置一个定时计数器,定时器一旦超时,相应输出缓存区中的帧就被重发。,46/31,出错全部重发协议和选择重发协议,47/31,本讲小结,PPP协议基本原理 PPP协议的基本功能 停等协议 滑动窗口协议 重传协议,48/31,作业,上交作业 P105,3-09,3-11,3-13,3-14,3-19 比较停等协议、连续ARQ及选择重传ARQ的异同。 描述滑动窗口协议如何进行流量控制。 预习局域网内容。,