第三章 数据链路层
3.1数据链路层功能概述
3.1.1数据链路层基本概念
数据链路层负责通过一条链路从一个结点向其相邻结点传送数据报
- 结点:主机、路由器(相邻结点:用一条物理链路直接连接起来的两个结点)
- 链路:网络中两个结点之间的物理通道,传输介质主要有:双绞线、光纤、微波。分为有线链路、无线链路
- 数据链路:两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路
- 帧:链路层的协议数据单元,封装网络层(传递过来的)数据报
3.1.2数据链路层功能概述
- 功能描述
1.在物理层提供服务的基础上向网络层提供服务
------将源自网络层来的数据可靠地传输到相邻结点的目标机网络层
2.加强物理层传输原始比特流的功能
------将物理层提供的可能出错的物理连接改为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路
- 具体功能:
1.为网络层提供服务:无确认无连接服务,有确认无连接服务,有确认面向连接服务。(有连接必确认)
2.链路管理:连接的建立、维持、释放(仅用于面向连接的服务)
3.组帧
4.流量控制:限制发送方
5.差错控制:帧错、位错
3.2封装成帧和透明传输
3.2.1 封装成帧相关概念
- 封装成帧:在一段数据的前后部分添加首部和尾部,即构成了一个帧。接收端在收到物理层上交的比特流后,能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
- 帧定界:首部和尾部包含许多控制信息,其中一个重要作用:使用定界符确定帧的界限。
- 帧同步:接收方能在接收到物理层上交的二进制比特流中区分出帧的起始和终止。
- 组帧的四种方法:1.字符计数法 2.字符(节)填充法 3.零比特填充法 4.违规编码法
3.2.2 透明传输
- 透明传输:不管所传数据是什么样的比特组合,都应当能够在链路上传送。即对于链路层来说,看不见妨碍数据传输的东西。
- 具体方式:当所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当措施,使接收方不会将这样的数据误认为是某种控制信息。
理解:实现透明传输是组帧的一个基本要求
3.2.3 4种组帧方法
- 字符计数法
- 字符填充法
- 零比特填充法
- 违规编码法
3.3 差错控制(检错编码)
3.3.1 差错来源
概括:传输中的差错都是由于噪声引起的。
3.3.2 差错控制概述
3.3.3 2种检错编码
- 奇偶校验码
- CRC循环冗余码
example:
3.3.4 1种纠错编码
1.海明码概述
2.海明距离(海明距、码距)
3.工作流程
3.4流量控制与可靠传输机制
3.4.1 相关概念
- 数据链路层的流量控制:较高的发送速度和较低的接受能力不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工作。
- 数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的。
理解
点对点:两个相邻结点之间
端到端:发送端和接收端之间(两端之间可能包含多个结点) - 数据链路层流量控制手段:接收方收不下就不回复确认
传输层流量控制手段:接收端给发送端一个窗口公告
3.4.2 流量控制的方法
- 停止-等待协议 (可以看作是发送、接收窗口大小都为1的滑动窗口)
发送窗口大小=1,接收窗口大小=1; - 滑动窗口
- 后退N帧协议(GBN)
发送窗口大小>1,接收窗口大小=1; - 选择重传协议(SR)
发送窗口大小>1,接收窗口大小>1;
- 后退N帧协议(GBN)
3.4.3 可靠传输、滑动窗口、流量控制
三者之间的关系:滑动窗口用于解决流量控制和可靠传输
3.5 停止等待协议
3.5.1 停等协议概述
3.5.2停等协议—无差错情况
3.5.3停等协议—有差错情况
- 数据帧丢失或检测到帧出错
超时计时器+数据帧、确认帧编号+保留已发送数据帧副本
- ACK丢失
接收方丢弃重复的帧,并重传确认帧
- ACK迟到
发送方丢弃收到的与之前编号重复的ACK
3.5.4停等协议性能分析
-
停等协议流程
TD:数据帧发送时延
RTT:往返时延
TA:确认帧的发送时延(有时可忽略) -
信道利用率&信道吞吐率
Example:
3.6 后退N帧协议(GBN)—滑动窗口之一
3.6.1 滑动窗口流程
可以不用逐一发送确认帧,可一组帧发送一个确认帧
3.6.2 GBN发送方必须响应的三件事
- 上层的调用
上层要发送数据时,发送方先检查发送窗口是否已满,如果未满,则产生一个帧并将其发送;如果窗口已满,发送方只需将数据返回给上层,暗示上层窗口已满。上层等- - 会再发送。(实际实现中, 发送方可以缓存这些数据,窗口不满时再发送帧) - 收到了一个 ACK
GBN协议中,对n号帧的确认采用累积确认的方式,标明接收方已经收到n号帧和它之前的全部帧。 - 超时事件
协议的名字为后退N帧/回退N帧,来源于出现丢失和时延过长帧时发送方的行为。就像在停等协议中一样, 定时器将再次用于恢复数据帧或确认帧的丢失。如果出现超时,发送方重传所有已发送但未被确认的帧。(接收方只接收和接收窗口编号相同的帧)
3.6.3 GBN接收方要做的事
- 如果正确收到n号帧,并且按序,那么接收方为n帧发送一一个ACK, 并将该帧中的数据部分交付给上层。
- 其余情况都丢弃帧,并为最近按序接收的帧重新发送ACK。接收方无需缓存任何失序帧,只需要维护一个信息: expectedsegnum (下一个按序接收的帧序号)
3.6.4 运行中的GBN
出现超时:发送方重传所有已发送但未被确认的帧
3.6.5 滑动窗口长度
若采用n个比特对帧编号,那么发送窗口的尺寸W[T]应满足:
因为发送窗口尺寸过大,就会使得接收方无法区别新帧和旧帧。
3.6.6 GBN重点总结
- 累积确认(偶尔捎带确认)
- 接收方只按顺序接收帧,不按序无情丢弃
- 确认序列号最大的、按序到达的帧
- 发送窗口最大为2的n次方-1,接收窗口大小为1
3.6.7 GBN协议性能分析
优点:因连续发送数据帧而提高了信道利用率
缺点:在重传时必须把原来已经正确传送的数据帧重传,使传送效率降低
3.7选择重传协议(SR)—滑动窗口之二
3.7.1 SR概述
相对GBN,SR设置单个确认,加大接收窗口,设置接收缓存,缓存乱序到达的帧
3.7.2 SR发送方需响应的三件事
- 上层的调用
从上层收到数据后,SR发送方检查下一个可用于该帧的序号,如果序号位于发送窗口内,则发送数据帧;否则就像GBN样,要么将数据缓存,要么返回给上层之后再传输。 - 收到了一个ACK
如果收到ACK,加入该帧序号在窗口内,则SR发送方将那个被确认的帧标记为已接收。如果该帧序号是窗口的下界(最左边第-一个窗口对应的序号),则窗口向前移动到具有最小序号的未确认帧处。如果窗口移动了并且有序号在窗口内的未发送帧,则发送这些帧。 - 超时事件
每个帧都有自己的定时器,-一个超时事件发生后只重传-一个帧。
3.7.3 SR接受方要做的事
- 来者不拒(仅对于窗口内的帧)
SR接收方将确认一个正确接收的帧而不管其是否按序。失序的帧将被缓存,并返回给发送方一个该帧的确认帧**[收谁确认谁]**,直到所有小于该失序帧的帧(即序号更小的帧)皆被收到为止,这时才可以将-批帧按序交付给 上层,然后向前移动滑动窗口。 - 若收到了窗口序号外(小于窗口下届且仅在前一个接收窗口长度内)的帧,就返回一个ACK
该情况发生于前面的ACK丢失时,发送方会超时重传对应的帧,此时重新发送一个ACK确认即可。 - 其他情况
忽略该帧
3.7.4 运行中的SR
如图
3.7.5 滑动窗口长度
发送窗口最好等于接收窗口(大了会溢出,小了没意义)
T:发送方 R:接收方
n:帧编号需要的比特数
3.7.6 SR协议重点总结
- 对数据帧逐一确认,收一个确认一个。
- 只重传出错帧
- 接收方有缓存
- ↓↓↓
3.8信道划分介质访问控制
3.8.1传输数据使用的两种链路
- 点对点链路:两个相邻结点通过一个链路相连,没有第三者。
应用:ppp协议,常用于广域网 - 广播式链路:所有主机共享通信介质。
应用:早期的总线以太网、无线局域网,常用于局域网
典型拓扑结构:总线型、星型(逻辑上是总线型)
3.8.3介质访问控制概述
介质访问控制:采取一定的措施,使得两对结点之间的通信不会发生互相干扰的情况
3.8.4 信道划分介质访问控制
- 频分多路复用FDM
- 时分多路复用TDM
- 统计时分复用STDM
- 波分多路复用WDM
- 码分多路复用