目录
一、数据链路层概述
二、封装成帧
三、差错检测
(一)奇偶校验
(二)循环冗余校验CRC
四、可靠传输
(一)停止-等待协议SW
(二)后退N帧协议GBN
(三)选择重传协议SR
五、点对点协议PPP
(一)点对点协议PPP的帧格式
(二)透明传输- 面向字节的异步链路采用插入转义字符的字节填充法
(三)透明传输-面向比特的同步链路采用插入比特0的比特填充法
(四)点对点协议PPP的工作状态
六、媒体接入控制MAC
(一)静态划分信道
1、频分复用FDM
2、时分复用TDM
3、波分复用WDM
4、码分复用CDM
(二)动态接入控制
1、随机接入-总线局域网使用的协议:CSMA/CD(载波监听多址接入/碰撞检测)
2、随机接入-无线局域网使用的协议:CSMA/CA(载波监听多址接入/碰撞避免)
一、数据链路层概述
数据链路层在网络体系结构中所处的地位如下,当我们专门研究数据链路层时,可以视为,数据直接在数据链路层上通过链路传输
链路(Link)就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点。
数据链路(Data Link)是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路。
数据链路层的三个重要问题:
① 封装成帧
经过层层封装后,到达数据链路层时加上帧头和帧尾形成帧
封装后的格式如下:
② 差错检测
帧在传输过程中遭遇干扰后可能出现误码(比特0变成比特1,反之亦然)
此时接收方如何知道产生了误码呢? 可以利用检错码,发送方发送数据之前可以基于待发送的数据和检错算法计算出检错码,将其封装于帧尾。接收方接收到数据后就可以通过帧尾中的检错码和检错算法检测帧中是否有误码。
③ 可靠传输
当接受方接收到的数据有误码出现时,如果是基于非可靠传输协议发送的数据,那么直接丢弃而不做任何措施。如果是可靠传输协议,则发送方需要重新发送使接收方能正确的接收到数据
上述是基于点对点的协议,如果是使用广播信道的数据链路层,那么除上述外还需要解决发送目的和碰撞问题
即如何知道数据是发送给C的,可以将帧发送的目的地址添加在帧中一起传输
碰撞问题是共享式局域网不可避免的,可以使用以太网的媒体接入控制协议CSMA/CD
二、封装成帧
封装成帧是指数据链路层给上层交付的协议数据单元添加顿头和帧尾使之成为帧
- 帧头和帧尾中包含有重要的控制信息。
- 帧头和帧尾的作用之一就是帧定界
当数据链路层将帧交付到物理层,物理层将构成帧的各比特转换为电信号发送到传输媒体后,接收方如何从物理层交付的比特流中提取出一个个的帧呢?这就是帧头和帧尾存在的意义之一了,即帧定界
如PPP帧的格式,在帧头和帧尾会加上帧定界标志
但并不是每一种数据链路层的帧都包含帧定界标志,比如以太网版本2的MAC帧格式,是通过物理层在帧的前面添加前导码,并规定帧发送帧间间隔时间
透明传输是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。
- 面向字节的物理链路使用字节填充(或称字符填充)的方法实现透明传输
- 面向比特的物理链路使用比特填充的方法实现透明传输
面向字节的物理链路:
那当上层交付的数据中也包含了和帧定界一样的数据时,此时接收方会错误接收帧。解决方法是对数据进行扫描,每出现一个和帧定界一样的数据或者转义字符则在其后添加转义字符、接收端物理层在遇到第一个帧定界符时知道是帧的开始,接下来遇到转义字符就知道之后的1字节虽然与帧定界符相同,但其内容是数据了。
面向比特的物理链路:
在和帧定界一样的数据中使用零比特填充法,保证帧定界在整个帧中的唯一性
为了提高帧的传输效率,应当使帧的数据部分的长度尽可能大些
考虑到差错控制等多种因素,每一种数据链路层协议都规定了帧的数据部分的长度上限,即最大传送单元MTU(Maximum Transfer Unit) 。
三、差错检测
实际的通信链路都不是理想的,比特在传输过程中可能会产生差错:1可能会变成0,而0也可能变成1。这称为比特差错
在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(Bit Error Rate)。
使用差错检测码来检测数据在传输过程中是否产生了比特差错,是数据链路层所要解决的重要问题之一。
如下所示的帧中都包含了帧检验序列FCS字段,其作用是让接收方的数据链路层检测接收到的数据是否产生误码。
接下来介绍校验方法
(一)奇偶校验
在待发送的数据后面添加1位奇偶校验位使整个数据(包括所添加的校验位在内)中“1”的个数为奇数(奇校验)或偶数(偶校验)。
- 如果有奇数个位发生误码则奇偶性发生变化可以检查出误码,
- 如果有偶数个位发生误码则奇偶性不发生变化不能检查出误码(漏检)
(二)循环冗余校验CRC
- 收发双方约定好一个生成多项式G(x);
- 发送方基于待发送的数据和生成多项式计算出差错检测码,将其添加到待传输数据的后面一起传输
- 接收方通过生成多项式来计算收到的数据是否产生了误码;
练习题
1、检错码只能检测出帧在传输过程中出现了差错,但并不能定位错误,因此无法纠正错误。
2、要想纠正传输中的差错,可以使用冗余信息更多的纠错码进行前向纠错。但纠错码的开销比较大,在计算机网络中较少使用。
3、循环元余校验CRC有很好的检错能力(检率非常低),虽然计算比较复杂,但非常易于用硬件实现,因此被广泛应用于数据链路层
4、在计算机网络中通常采用我们后续课程中将要讨论的检错重传方式来纠正传输中的差错或者仅仅是丢弃检测到差错的帧,这取决于数据链路层向其上层提供的是可靠传输服务还是不可靠传输服务
四、可靠传输
当接收方检测出帧中出现误码,如果数据链路层向上层提供的服务类型不同做法也不同
- 不可靠传输服务,那么仅仅丢弃有误码的帧,其他什么也不做;
- 可靠传输服务,实现发送方发送什么,接收方就收到什么。
一般情况下,有线链路的误码率比较低,为了减小开销,并不要求数据链路层向上提供可靠传输服务。即使出现了误码,可靠传输的问题由其上层处理。
无线链路易受干扰,误码率比较高,因此要求数据链路层必须向上层提供可靠传输服务。
可靠传输的三种实现机制
(一)停止-等待协议SW
停止等待协议的信道利用率
当往返时延RTT远大于数据帧发送时延To时 (例如使用卫星链路),信道利用率非常低。
若出现重传,则对于传送有用的数据信息来说,信道利用率还要降低
为了克服停止-等待协议信道利用率很低的缺点,就产生了另外两种协议,即后退N帧协议GBN和选择重传协议SR。
(二)后退N帧协议GBN
停止-等待协议的利用率很低,当出现超时重传,其利用率更低。而使用流水线传输可提高信道利用率
回退N帧协议就是基于流水线传输,每次发送窗口内的组,得到接收方的ACK后,发送窗口往后移动
接收方接收后给发送方发送ACK确认后,发送窗口往后移动
接收方不一定要对收到的数据分组逐个发送确认,而是可以在收到几个数据分组后 (由具体实现决定),对按序到达的最后一个数据分组发送确认。ACKn表示序号为n及以前的所有数据分组都已正确接收,即累计确认。如下图,接收方接收到数据后向发送方发送了ACK1和ACK4,而ACK1在发送过程中丢失了,但此时不需要重传,因为ACK4被收到了,代表着接受方确认了ACK4前面的分组
当出现差错时,比如下图,分组5出现错误被接收方丢弃,此时因为接收方的窗口序号为5,后面的1076分组都不匹配,都被丢弃,此时接收方每丢弃一个分组就会发给发送方一个ACK,该ACK是最后一个正确接收分组的序号,即ACK4。发送方接收到ACK4后就知道刚才发送的几个分组都被丢弃了,此时根据发送方设置的接收重复ACK个数来决定是否立即重传,或者等待超时计时器超时结束再重传。
可以看到该过程中1076也连带被丢弃了,这就是所谓的回退N帧,可见,当通信线路不好时,回退N帧协议的利用率并不比停止-等待协议高。
总结
(三)选择重传协议SR
回退N帧协议的接收窗口尺寸Wr只能等于1,因此接收方只能按序接收正确到达的数据分组。
一个数据分组的误码就会导致其后续多个数据分组不能被接收方按序接收而丢弃 (尽管它们无乱序和误码)。这必然会造成发送方对这些数据分组的超时重传,显然这是对通信资源的极大浪费。
可设法只重传出现误码的数据分组。因此,接收窗口的尺寸Wr不应再等于1 (而应大于1),为了进一步提高性能,以便接收方先收下失序到达但无误码并目序号(使用逐一确认而不是累计确认)落在接收窗口内的那些数据分组,等到所缺分组收齐后再一并送交上层,这就是选择重传协议。
当2号分组出现差错,接收方丢弃后,由于发送方只接收到3号分组的ACK,此时窗口不能往前滑动,等2号分组的重传计时器超时,重新发送2号分组
总结
五、点对点协议PPP
点对点协议PPP(Point-to-Point Protocol)是目前使用最广泛的点对点数据链路层协议
PPP协议是因特网工程任务组IETF在1992年制定的。经过1993年和1994年的修订,现在的PPP协议已成为因特网的正式标准[RFC1661,RFC1662]。
PPP协议为在点对点链路传输各种协议数据报提供了一个标准方法,主要由以下三部分构成:
- 对各种协议数据报的封装方法 (封装成顿)
- 链路控制协议LCP 用于建立、配置以及测试数据链路的连接
- 一套网络控制协议NCPs 其中的每一个协议支持不同的网络层协议
(一)点对点协议PPP的帧格式
当数据中出现和帧定界相同的数据时
(二)透明传输- 面向字节的异步链路采用插入转义字符的字节填充法
(三)透明传输-面向比特的同步链路采用插入比特0的比特填充法
(四)点对点协议PPP的工作状态
六、媒体接入控制MAC
共享信道要着重考虑的一个问题就是如何协调多个发送和接收站点对一个共享传输媒体的占用,即媒体接入控制MAC(Medium Access Control)。
随着技术的发展,交换技术的成熟和成本的降低,具有更高性能的使用点对点链路和链路层交换机的交换式局域网在有线领域已完全取代了共享式局域网,但由于无线信道的广播天性,无线局域网仍然使用的是共享媒体技术
(一)静态划分信道
复用(Multiplexing)是通信技术中的一个重要概念。复用就是通过一条物理线路同时传输多路用户的信号。
当网络中传输媒体的传输容量大于多条单一信道传输的总通信量时,可利用复用技术在一条物理线路上建立多条通信信道来充分利用传输媒体的带宽。
1、频分复用FDM
将传输线路的频带资源划分成多个子频带,形成多个子信道、各子信道需要划分隔离频带,以免造成子信道间的干扰。当多路信号输入一个多路复用器时,这个复用器将每一路信号调制到不同的载波上,接收端由相应的分用器通过滤波将各路信号分开,将合成的复用信号恢复成原始的多路信号。
很显然,频分复用的所有用户同时占用不同的频带资源进行通信
2、时分复用TDM
时分复用技术将传输线路的带宽资源按时隙轮流分配给不同的用户,每对用户只在所分配的间隙里使用线路传输数据、时分复用技术将时间划分为了一段段等长的时分复用帧。每一个时分复用的用户在每一个时分复用帧中占用固定序号的时隙,如下图所示,每一个用户所占用的时隙是周期性出现的,其周期就是时分复用帧的长度。很显然,时分复用的所有用户在不同时间占用同样的频带宽度。
3、波分复用WDM
波分复用就是光的频分复用,下图是8路传输速率均为2.5Gbit/s的光载波,其波长均为1310nm,经光调制后,分别将波长变换到1550~1561.2nm,每个光载波相隔1.6nm。这8个很接近的光载波经过光复用器(或称合波器),就在一根光纤上传输,因此在一根光纤上传输的速率就达到了8*2.5Gbit/s=20Gbit/s。光信号传输一段时间后会衰减,需要对衰减了的信号进行放大才能继续传输,这就是掺铒光纤放大器的作用。
4、码分复用CDM
(二)动态接入控制
1、随机接入-总线局域网使用的协议:CSMA/CD(载波监听多址接入/碰撞检测)
CSMA/CD协议-争用期
CSMA/CD协议-最小帧长
CSMA/CD协议-最大帧长
CSMA/CD协议-帧发送流程
CSMA/CD协议-帧接收流程
2、随机接入-无线局域网使用的协议:CSMA/CA(载波监听多址接入/碰撞避免)
隐蔽站问题
帧间间隔IFS
CSMA/CA的工作原理
问题1:源站为什么在检测到信道空闲后还要再等待一段时间DIFS?
就是考虑到可能有其他的站有高优先级的帧要发送。若有,就要让高优先级帧先发送
问题2:目的站为什么正确接收到数据帧hou还要等待一段时间SIFS才能发送ACK帧?
SIFS是最短的帧间间隔,用来分隔开属于一次对话的各帧在这段时间内,一个站点应当能够从发送方式切换到接收方式。
问题3:信道由忙转为空闲且经过DIFS时间后,还要退避一段随机时间才能使用i信道?
防止多个站点同时发送数据产生碰撞
CSMA/CA的退避算法
CSMA/CA的信道预约和虚拟载波监听
为了尽可能减少碰撞的概率和降低碰撞的影响,802.11标准允许要发送数据的站点对信道进行预约
- 源站在发送数据之前先发送一个短的控制帧,称为请求发送RTS(Resquest to Send),它包括地址,目的地址以及这次通信(包括相应确认帧)所需的持续时间。
- 若目的站正确收到源站发来的RTS帧,且媒体空闲,就发送一个响应控制帧,称为允许发送CTS(Clear To Send),它也包括这次通信所需的持续时间 (从RTS顿中将此持续时间复制到CTS帧中)。
- 源站收到CTS倾后,再等待一段时间SIFS后,就可发送其数据帧
- 若目的站正确收到了源站发来的数据帧,在等待时间SIFS后,就向源站发送确认帧ACK.