数据链路层把网络层交下来的数据构成帧发送到链路上,以及把收到的帧数据取出并上交给网络层。链路层属于计算机网络的底层。数据链路层使用的信道主要由以下两种类型:
链路:从一个节点到相邻节点的一段物理线路(有线或无线),而中间没有任何其他的交换节点。
数据链路:把实现数据传输的协议的硬件和软件加到链路上,就构成了数据链路。现在最常用的方法是使用网络适配器(既有硬件,也包括软件)来实现这些协议。
一般的适配器都包括了数据链路层和物理层这两层的功能
帧:数据链路层的协议数据单元。
数据链路层协议有很多种,但是有三个基本问题原则是共同的。这三个基本问题是:封装成帧、透明传输、差错检查
共享式以太网的媒体接入控制协议CSMA/CD
802.11局域网的媒体接入控制协议CSMA/CA
网桥和交换机的工作原理
集线器(物理层互连设备)与交换机的区别
封装成帧是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之称为帧。
当数据是由可打印的ASCII码组成的文本内容时,帧定界可以使用特殊的帧定界符。ASCII码时7位编码,一共可组合成128个不同的ASCII码,其中可打印的有95个,而不可打印的有33个。控制字符SOH(十六进制是01)放在一帧的最前面,表示帧的首部开始。另一个控制字符EOT(十六进制是04)表示帧的结束。
假定发送端在尚未发送完一个帧时突然出故障,中断了发送。但随后很快又恢复正常,于是重新从头开始发送刚才未发送完的帧。由于使用了帧定界符,接收端就知道前面收到的数据是个不完整的帧,必须丢弃。而后面收到的数据有明确的帧定界符(SOH和EOT),因此这是一个完整的帧,应当收下。
透明传输是指数据链路层对上层交付的传输数据没有任何限制
,就好像数据链路层不存在一样。
当传送的帧时文本文件组成的帧时(文本文件中的字符都是从键盘上输入的),其数据部分显然不会出现像SOH或EOT这样的帧定界控制符。从键盘上不管输入什么字符串都可以放在这样的帧中传输过去,因此这样的传输就是透明传输。
当数据是非ASCII码的文本文件时(如二进制代码的计算机程序或图像等),情况就会有所不同。如果数据中的某个字节的二进制代码恰好和SOH或EOT这种控制字符一样,数据链路层就会中断,把剩下的数据丢下。
解决方法:
字节填充
发送端地数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制是1B,二进制是00011011)。而在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。这种方法称位字节填充或字符填充
比特填充
在发送前可以采用零比特填充法,对数据部分进行扫描,每5个连续1后面就插入一个比特0,这样就确保了帧定界在整个帧中的唯一性。
接收方的数据链路层在提取帧时,将帧的数据部分中的每5个连续的比特1后面的那个比特0剔除即可。
为了提高帧的传输效率,应当使帧的数据部分的长度尽可能大些
。考虑到差错控制等多种因素,每一种数据链路层协议都规定了帧的数据部分的长度上限,即最大传送单元MTU(Maximum Transfer Unit)。
传输差错可分为两大类:
比特在传输过程中可能会出现差错:1可能会变成0,而0也可能会变成1,这就叫做比特差错。在一段时间内传输错误的比特占所传输比特总数的比率称为误码率。为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检查措施,目前在数据链路层广泛使用了循环冗余检测 CRC的检错技术。
循环冗余校验CRC:
在数据链路层,发送端帧检测序列FCS的生成和接收端的CRC检验都是用硬件完成的,处理很迅速,因此并不会耽误数据的传输。
传输差错分为帧丢失、帧重复或帧失序
假设,在发送放连续传送三个帧:【#1】、【#2】、【#3】
数据链路层向上层提供的服务类型:
一般情况下,有线链路的误码率比较低,为了减小开销,并不要求数据链路层向上提供可靠传输服务。即使出现了误码,可靠传输的问题由其上层处理。
无线链路易受干扰,误码率比较高,因此要求数据链路层必须向上层提供可靠传输服务。
停止等待就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。
停止-等待协议信道利用率:
当往返时延RTT远大于数据帧发送时延TD时(例如使用卫星链路),信道利用率非常低。若出现重传,则对于传送有用的数据信息来说,信道利用率还要降低。
为了克服停止-等待协议信道利用率很低的缺点,就产生了另外两种协议,即回退N帧协议GBN和选择重传协议SR
回退N帧协议允许发送方连续发送多个帧(即发送窗口可以大于1
),以解决停等协议信道利用率低的问题。
发送方可在未收到接收方确认分组的情况下,将序号落在发送窗口内的多个数据分组全部发送出去;但接收方的接收窗口大小仅为1
,也就是只有接收到了此窗口所代表的序号的分组,接收方才会回复ACK
并且移动接收窗口。同理,发送方收到了发送窗口中最早的那个序号对应分组的ACK
,才会移动发送窗口。
接收方不一定要对收到的数据分组逐个发送确认,而是可以在收到几个数据分组后(由具体实现决定)对按序到达的最后一个数据分组发送确认。ACKn表示序号为n及以前的所有数据分组都已正确接收。
当通信线路质量不好时,GBN协议并不比SW协议效率高。
回退N帧协议
的接收窗口尺寸
W
R
W_R
WR?只能等于1,因此接收方只能按序接收正确到达的数据分组
一个数据分组的误码就会导致其后续多个数据分组不能被接收方按序接收而丢弃(尽管它们无乱序和误码)。这必然会造成发送方对这些数据分组的超时重传,显然这是对通信资源的极大浪费。
为了进一步提高性能,可设法只重传出现误码的数据分组。因此,接收窗口的尺寸 W R W_R WR?不应再等于1(而应大于1),以便接收方先收下失序到达但无误码并且序号落在接收窗口内的那些数据分组,等到所缺分组收齐后再一并送交上层。这就是选择重传协议。
互联网用户通常都要连接到某个ISP才能接入到互联网。PPP协议就是用户计算机和ISP进行通信时所使用的数据链路层协议。
(1)简单
(2)封装成帧
(3)透明性
(4)多种网络层协议
(5)多种类型链路
(6)差错检测
(7)检测连接状态
(8)最大传送单元
(9)网络层地址协商
(20)数据压缩协商
PPP帧的首部和尾部分别为四个字段和两个字段。
F7E:表示一个帧的开始或结束
A FF:地址字段(没有携带PPP帧的信息)
C03:控制字段(没有携带PPP帧的信息)
协议:当协议字段为 0 x 0021时,PPP帧的信息字段就是 IP 数据报。若为 0 x C021,则信息字段时PPP链路控制协议LCP的数据,而 0 x 8021表示这是网络层的控制数据
信息部分:信息字段的长度使可变的,最多不超过1500字符
FCS:使用CRC的帧检验序列FCS
当信息字段中出现和标志字段一样的比特组合时,就必须采取一些措施使这种形式上和标志字段一样的比特组合不出现在信息字段里
当PPP使用异步传输时,我们使用0x7D(01111101)作为转义符,转义的规则如下:
PPP协议在同步传输时,采用零比特填充方式来实现透明传输
零比特填充法的具体做法是:在发送端,当一串比特流尚未加上标志字段时,先用硬件扫描整个帧。只要发现5个连续1,则立即填入一个0。因此经过这种零比特填充后的数据,就可以保证不会出现6个连续1。在接收一个帧时,先找到F字段以确定帧的边界。接着再用硬件对其中的比特流进行扫描。每当发现5个连续1时,就将这5个连续1后的一个0删除,以还原成原来的比特流。这样就保证了在所传送的比特流中,不管出现什么样的比特组合,也不至于引起帧边界的判断错误。
共享信道要着重考虑的一个问题就是如何协调多个发送和接受站点对一个共享传输媒体的占用,即媒体介入控制MAC
(Medium Access Control)。
媒体接入控制可分为静态划分信道、动态接入控制:
5139770502)
信道复用
复用就是通过一条物理线路同时传输多路用户的信号。当网络中传输媒体的传输容量大于多条单一信道传输的总通信量时,可利用复用技术在一条物理线路上建立多条通信信道来充分利用传输媒体的带宽。
常见的信道复用技术有:频分复用FDM、时分复用TDM、波分复用WDM、码分复用CDM。
频分复用FDM
将传输线路的频带资源划分成多个子频带,形成多个子信道,各子信道之间需要留出隔离频带,以免造成子信道间的干扰。当多路信号输入一个多路复用器时,这个复用器将每一路信号调制到不同频率的载波上。接收端由相应的分用器通过滤波将各路信号分开,将合成的服用信号恢复成原始的多路信号。
时分复用TDM
时分复用技术将传输线路的带宽资源,按时隙轮流分配给不同的用户,每对用户只在所分配的时隙里使用线路传输数据。
时分复用技术将时间划分成了一段段等长的时分复用帧。每一个时分复用的用户在每一个时分复用帧中占用固定序号的时隙。
每一个用户所占用的时隙是周期性出现的,其周期就是时分复用帧的长度。
波分复用WDM
波分复用是利用多个激光器在单条光纤上同时发送多束不同波长激光的技术。每个信号经过数据(文本、语音、视频等)调制后都在它独有的色带内传输。
码分复用CDM
码分复用CDM是另一种共享信道的方法。实际上,由于该技术主要用于多址接入,更常用的名词是码分多址CDMA(Code Division Multiple Access)。
复用和多址的区别:
在CDMA中,每一个比特时间再划分为m个短的间隔,称为码片(Chip)。通常m的值是64或128。为了简单起见,在后续的举例中,我们假设m为8。
使用CDMA的每一个站被指派一个唯一的m bit码片序列利(Chip Sequence)。
码片序列的挑选原则如下:
码片序列必须各不相同
,实际常采用伪随机码序列。总线局域网使用的协议:CSMA/CD
无线局域网使用的协议:CSMA/CA