计算机网络第三章——数据链路层
数据链路层使用的信道类型
点对点信道
使用一对一的点对点通信方式
广播信道
使用一对多的广播通信方式,当我们在发送数据时会广播到在信道中的主机
随后若主机为目标主机则会发送成功接收反馈,若不是则发还接收失败反馈
数据链路层位置
在5层结构中,位于物理层和网络层中间
数据链路层的3个基本问题
- 封装成帧
- 透明传输
- 检错
数据链路和帧
链路
一条无源的点到点的物理线路段,中间没有任何其他的交换结点
数据链路
把实现通信协议的硬件和软件加到链路上,就构成了数据链路
现在最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件
一般的适配器都包括了数据链路层和物理层这两层的功能
数据链路层传输的是帧
封装成帧
在一段数据的前后添加首部和尾部就形成了帧
其中首部和尾部是用来进行帧定界的
透明传输问题
当帧数据部分出现帧结束符时会导致透明传输的问题(即:将部分数据丢弃)
解决:
发送端的数据链路层在数据中出现控制字符“SOH"或“EOT"”的前面插入一个转义字符“ESC"(其十六进制编码是1B)。
字节填充(byte stuffing)或字符填充(character stuffing)——接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
如果转义字符也出现数据当中,那么应在转义字符前面插入一个转义字符。当接收端收到连续的两个转义字符时,就删除其中前面的一个。
差错检测
在传输过程中可能会出现0和1之间互相转变的比特差错
误码率
一段时间内,传输错误的比特占所传输比特总数的比率称为误码率
误码率和信噪比有很大的关系,所以必须要有差错检测保证传输正确率
循环冗余检验
在数据链路层传输的帧中广泛使用了循环冗余检验CRC的检错技术
在发送端,先把数据划分为组。假定每组k个比特。
假设待传送的一组数据M= 101001(现在k = 6)。我们在M的后面再添加供差错检测用的n位冗余码一起发送。
冗余码计算
用二进制的模⒉运算进行2n乘M的运算,这相当于在M后面添加n个0。
得到的(k +n)位的数除以事先选定好的长度为(n + 1)位的除数P,得出商是Q而余数是R,余数R比除数P少1位,即R是n位。
帧检验序列FCS
在数据后添加冗余码称为帧检验序列
接收端CRC检验
接收方接收到数据后,同样使用CRC检验来判断接收到的数据是否有差错
若得出的余数R=0,则判定这个帧没有差错,就接受(accept)
若余数R≠0,则判定这个帧有差错,就丢弃
但这种检测方法并不能确定究竟是哪一个或哪几个比特出现了差错
只要经过严格的挑选,并使用位数足够多的除数P,那么出现检测不到的差错的概率就很小很小
进行CRC只能进行无差错接受,要做到可靠传输必须要进行确认和重传机制
可靠传输
可靠传输的底层是不可靠传输
停止等待协议
是一个提供流量和差错控制的面向连接协议
注意点:
在发送完一个帧后,必须暂时保留已发送的帧的副本。数据帧和确认帧都必须进行编号。
只要超过了一段时间还没有收到确认,就认为已发送的帧出错或丢失了,因而重传已发送过的帧。这就叫做超时重传。
超时计时器的重传时间应当比数据在分组传输的平均往返时间更长一些。
自动重传请求ARQ
ARQ表明重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组。
连续ARQ
发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认。
由于信道上一直有数据不间断地传送,这种传输方式可获得很高的信道利用率。
限制连续发送的数目
使用滑动窗口
正常:
添加滑动:
回退n帧协议(Go-Back-N)
如果发送方发送了前5个分组,而中间的第3个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。这就叫做Go-back-N(回退N),表示需要再退回来重传已发送过的个分组。
选择重传协议
GBN协议存在一个缺点:一个分组的差错可能引起大量分组的重传,这些分组可能已经被接收方正确接收了,但由于未按序到达而被丢弃。
可设法只重传出现差错的分组。但必须加大接收窗口,以便先收下失序到达但仍然处在接收窗口中的那些分组,等到所缺分组收齐后再一并送交上层。这就是选择重传SR(Selective Repeat)协议。
数据链路层的可靠传输
为实现可靠传输需要付出代价
因此,应当根据链路的具体情况来决定是否需要让链路层向上提供可靠传输服务。
当链路误码率非常低时,在数据链路层可不实现可靠传输,而是由上层协议(例如,运输层的TCP协议)来完成。
但是在使用无线信道传输数据时,由于信道质量较差,在数据链路层仍需要实现可靠传输(例如使用停止等待协议)。
PPP点对点协议
PPP是目前使用最多的数据链路层协议,当用户使用拨号电话线接入因特网时常用
PPP的特点
- 简单
- 封装成帧
- 透明性
- 多种网络层协议
- 多种类型链路
- 差错检测
- 检测连接状态
PPP协议组成
- 一个将IP数据报封装到串行链路的方法
- 链路控制协议
- 网络控制协议
PPP协议的帧格式
PPP协议的同步和异步传输
同步传输
规定采用硬件来完成比特填充
零比特填充
51+10 ==》五一加一零
异步传输
使用一种特殊的字符填充法
字符填充
0x7E ==> 0x7D,0x5E
0x7D ==> 0x7D,0x5D
若出现小于0x20的就要在前面加入一个0x7D
PPP工作状态
当用户拨号接入ISP时,路由器的调制解调器对拨号做出