《计算机网络自顶向下》第五章:链路层

一、 链路层概述

数据链路层负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报。

a) 术语:

i. 在本章中将运行链路层协议的任何设备均称为结点。结点包括主机、路由器、交换机和WIFI接入点。

ii. 把沿着通信路径连接相邻结点的通信信道称为链路

iii. 在通过特定的链路时,传输结点将数据报封装在链路层帧中,并将该帧传送到链路中。

b) 链路层提供的服务

i. 成帧:在每个网络层数据报经链路传送之前,几乎所有的链路层协议都要将其用链路层帧封装起来。一个帧由一个数据字段和若干首部字段组成。其中网络层数据报就插在数据字段中。帧的结构由链路层协议规定

ii. 链路接入:**媒体访问控制(MAC)**协议规定了帧在链路上传输的规则。

iii. 可靠交付:当链路层协议提供可靠交付服务时,它保证无差错地经链路层移动每个网络层数据报。链路层的可靠交付服务通常是通过确认和重传取得的。链路层可靠交付服务通常用于易于产生高差错率的链路,例如无线链路;许多有线的链路层协议不提供可靠交付服务

iv. 差错检测和纠正:通过让发送节点在帧中包括差错检测比特,让接收节点进行差错检查来完成。差错纠正类似于差错检测,区别在于接收方不仅能检测帧中出现的比特差错,而且能够准确地确定帧中的差错出现的位置(并因此纠正这些差错)。

c) 链路层在何处实现

i. 链路层的主体部分是在网络适配器中实现的,网络适配器有时也称为网络接口卡

ii. 位于网络适配器核心的是链路层控制器,该控制器通常是一个实现了许多链路层服务(成帧、链路接入、差错检测等)的专用芯片。因此,链路层控制器的许多功能是用硬件实现的。

iii. 在发送端,控制器取得了由协议栈较高层生成并存储在主机内存中的数据报,在链路层帧中封装该数据报(填写该帧的各个字段),然后遵循链路接入协议将该帧传进通信链路中。

iv. 在接收端,控制器接收了整个帧,抽取出网络层数据报。如果链路层执行差错检测,则需要发送控制器在该帧的首部设置差错检测比特,由接收控制器执行差错检测。

v. 尽管大部分链路层是在硬件中实现的,但部分链路层是在运行于主机CPU上的软件中实现的。链路层的软件组件实现了高层链路层功能,如组装链路层寻址信息和激活控制器硬件。在接收端,链路层软件响应控制器中断,处理差错条件和将数据报向上传递给网络层。所以,链路层是硬件和软件的结合体,即此处是协议栈中软件与硬件交接的地方

二、 差错检测和纠正技术

a) 简介

i. 比特级差错检测和纠正是对一个结点发送到另一个物理上连接的邻近结点的链路层帧中的比特损伤进行检测和纠正,它们通常是链路层提供的两种服务
在这里插入图片描述

ii. 在发送结点,为了保护比特免受差错,使用差错检测和纠正比特(EDC)来增强数据D。

iii. 通常,要保护的数据不仅包括从网络层传递下来需要通过链路传输的数据报,而且包括链路帧首部中的链路级的寻址信息、序号和其他字段。链路级帧中的D和EDC都被发送到接收结点。

iv. 在接收节点,接收到比特序列D’和EDC’。注意到因传输中的比特翻转所致,D’和EDC’可能与初始的D和EDC不同。

v. 差错检测和纠正技术使接收方有时但并不总是检测出已经出现的比特差错。即使采用差错检测比特,也还是可能有未检出比特差错。

b) 差错编码可分为检错码与纠错码

i. 对于检错码,如果编码集的汉明距离(任意编码之间相差比特位的最小值)ds=r+1,则该差错编码可以检测r位的差错。例如,编码集{0000,0101,1010,1111}的汉明距离ds=2,可以100%检测1比特差错。
在这里插入图片描述

ii. 对于纠错码,如果编码集的汉明距离ds=2r+1,则该差错码可以纠正r位的差错。例如,编码集{000000,010101,101010,111111}的汉明距离ds=3,可以纠正1比特差错,如100010纠正为101010
在这里插入图片描述

c) 奇偶校验

i. 用来描述差错检测和纠正背后隐含的基本思想。

ii. 最简单的方式就是用单个奇偶校验位。
在这里插入图片描述

  1. 在偶校验方案中,发送方只需要包含一个附加的而比特,选择它的值,使得这d+1个比特(初始信息加上一个校验比特)中1的总数是偶数。对于奇校验也是同理

  2. 采用这种方式,接收方只需要数一数接收的d+1比特中1的数目即可。如果采用偶校验方案中发现了奇数个值为1的比特,接收方知道出现了奇数个比特差错。如果出现了偶数个值为1的比特,那么也是可能发生错误的。所以这种方法的奇偶校验检测能力为50%。对于奇校验方案也是同理
    iii. 单比特奇偶校验的一种二维一般化方案
    在这里插入图片描述

  3. 使用这种二维奇偶校验方案,包含比特值改变的列和行的校验值都会将出现差错。因此接收方不仅可以检测到出现了单个比特差错的事实,还可以利用存在奇偶校验差错的列和行的索引来实际识别发生差错的比特并纠正它!

  4. 二维奇偶校验也能够检测(但不能纠正!)一个分组中两个比特差错的任何组合
    iv. 接收方检测和纠正差错的能力被称为前向纠错(FEC),这些技术通常用于如音频CD这样的音频存储和回访设备中。它可以减少所需的发送方重发的次数;它允许在接收方立即纠正差错;FEC避免了不得不等待的往返时延,而这些时延是发送方收到NAK分组并向接收方重传分组所需要的,这对于实时网络应用或者具有长传播时延的链路(如深空间链路)可能是一种非常重要的优点。

d) 检验和方法

i. 通常更多地应用于运输层

ii. 发送端,将数据(校验内容)划分成16比特的二进制“整数”序列并对其求和(最高位进位的1返回最低位继续加),最终的反码即为校验和,将它放入分组(UDP、TCP、IP)的校验和字段

iii. 接收端,通过对接受的数据(包括检验和)的和取反码,并且检测其结果是否为全1比特来检测校验和。如果这些比特中有任何比特为0,就可以指示出差错。

e) 循环冗余检测

i. 通常更多地应用在适配器中的链路层

ii. 循环冗余检测编码也称为多项式编码,因为该编码能够将要发送的比特串看作为系数是0和1的一个多项式,对比特串的操作被解释为多项式算术。
在这里插入图片描述

iii. 对于一个给定的数据段D,发送方要选择r个附加比特R,并将它们附加到D上,使得得到的d+r比特模式(被解释为一个二进制数)用模2算术恰好能被G整除(即没有余数)

iv. 接收方用G去除接收到的d+r比特。如果余数为非零,接受方知道出现了差错,否则认为数据正确而被接收。即R=余式[D·2^r/G]

v. 国际标准已经定义了8、12、16和32比特生成多项式G,CRC-32 32比特的标准被多种链路级IEEE协议采用

vi. 每个CRC标准都能检测小于r+1比特的突发差错。(这意味着所有连续的r比特或者更少的差错都可以检测到)。在适当的假设下,长度大于r+1比特的突发差错以概率1-0.5’被检测到。每个CRC标准也都能检测任何奇数个比特差错。

三、多路访问控制(MAC)协议

a) 简介

i. 在本章中有两种类型的网络链路:点对点链路和广播链路。

ii. 点对点链路:由链路一端的单个发送方和链路另一端的单个接收方组成。很多链路层协议都是为点对点链路涉及的,如点对点协议(PPP)和高级数据链路控制(HDLC)

iii. 广播链路:能够让多个发送和接收结点都连接到相同的、单一的、共享的广播信道上。这里使用的“广播”是因为当任何一个结点传输一个帧时,信道广播该帧,每个其他结点都收到一个副本。以太网和无线局域网是广播链路层技术的例子。

iv. 多路访问问题:如何协调多个发送和接收结点对一个共享广播信道的访问

v. 多路访问协议,即结点通过这些协议来规范它们在共享的广播信道上的传输行为。

vi. 因为所有的结点都能够传输帧,所以多个结点可能会同时传输帧。当发生这种情况时,所有结点同时接到多个帧,也就是说,传输的帧在所有的接收方处碰撞了。通常,当碰撞发生时,没有一个接收节点能够有效地获得任何传输地帧;在某种意义下,碰撞帧地信号纠缠在一起。

vii. 在理想情况下,对于速率为Rbps地广播信道,多路访问协议应该具有以下所希望的特性:

  1. 当仅有一个结点有数据发送时,该结点具有Rbps的吞吐量;
  2. 当有M个结点要发送数据时,每个结点吞吐量为R/Mbps。这不必要求M节点中的每一个结点总是有R/M的瞬间速率,而是每个结点在一些适当定义的时间间隔内应该有R/M的平均传输速率
  3. 协议是分散的,这就是说不会因某主节点故障而使整个系统崩溃
  4. 协议是简单的,使实现不昂贵。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值