数据链路层的功能
数据链路层是在物理层提供的比特流传输服务的基础上,通过一系列的控制和管理,构成透明的、相对无差错的数据链路,向网络层提供可靠、有效的数据帧传送的服务。
- 链路管理:数据链路的建立、维持和释放
- 帧定界:又称帧同步,指接收方应当能从收到的比特流中准确地区分出一帧的开始和结束在什么地方。
- 流量控制:发送方发送数据的速率必须使接收方来得及接收。
- 差错控制
- 数据和控制信息的识别:使接收方能够区分开数据和控制信息。
- 透明传输:可以传送任意组合的比特流(即使和控制信息相同也可以避免判断错误)
- 寻址
流量控制
- 当接收方来不及缓存和处理数据时,就必须采取相应的流量控制措施来限制发送方发送数据的速率。
- 注意:物理层的通信双方数据信号收发速率必须相同,而链路层的收发速率不匹配主要指数据处理能力方面。
- 在通信过程中,要求发送方的发送数据速率不能超过接收方接收和处理数据的速率。
停止-等待方式
开关式流量控制
XON/XOFF, 硬件控制信号
协议式流量控制
发送时,一次发送完一个数据帧后便主动停止发送,等待接收端回送的应答。如果收到对方的肯定应答,则接着发送下一个帧;如果收到否定应答或在规定的时间内没有收到任何应答,则重发该帧。发送窗口和接收窗口都为1。
- 无差错的理想情况:使发送方没法送一帧就暂停发送,等待接收方接收完毕确认后再发送下一帧。
- 数据帧出错:传输出错,数据帧可以被识别并且检测出存在差错,接受方发送否认帧NCK,接收方收到NCK会重发数据帧。
- 数据帧丢失:传输过程丢失数据帧。发送方在发送一个数据帧立即启动一个定时器,如果超过重发时间tout,就重发数据帧。(超时重发)
- 确认帧丢失:接收方正确接收了数据帧,但返回的确认帧丢失。发送方在tout内没有接收到确认帧,重发数据帧。解决重复帧的情况,对每个数据帧赋予序号,每新发送一帧,序号加1。如果接收方收到两个序号相同的帧,将重复帧丢弃,但同样也会返回确认帧。(重复帧)
停止等待协议性能分析
滑动窗口协议
- 允许发送方在收到接收方的应答之前可以连续发送多个帧的策略
- “滑动窗口”机制要求发送节点设置相应发送存储单元,用于保存已发送但尚未被确认的帧,这些帧号对应着一张连续序号列表,即发送窗口。
- 接收节点则有一张接收序号列表及相应的缓冲区,即接收窗口。帧序号对应接收窗口中的序号才可接收,否则丢弃。
滑动窗口控制规则
- 发送窗口
- 发送端允许连续发送但还未确认的帧的序号表
- 每发送一帧数据,发送指针顺序向前移动一格,到达窗口前沿序号后停止;每接收一帧应答,窗口向前移动一格;
- 接收窗口
-
- 接收端允许连续接收的帧的序号表
- 每接收一帧数据,检验正确后上交高层;发送一帧应答,窗口向前移动一格;
- 窗口自左向右滑动,实现流量控制。
- 只有接收窗口向前滑动时,发送窗口才可能向前滑动。即由接收方主导流量控制
连续ARQ方式
ARQ-自动请求重发
- 当发送完一个数据帧后,不是停下来等待确认帧,而是继续发送若干数据帧;
- 如果收到了接收方发来的确认帧,则窗口向前滑动,发送方可以继续发送数据帧;
- 如果出现差错,则从出现差错的数据帧开始全部重发。
- 重发的帧序号是连续的,接收端只按序号接收数据帧,遇到重复帧也会丢弃。
- 结点A在每发送完一个数据帧时都要设置该帧的超时计时器。如果在tout时间内收到确认帧,就立即将超时计时器清零,继续发送后续的数据帧。但若在所设置的超时时间到了而未收到确认帧,就要重传相应的数据帧(仍需重新设置超时计时器)。
- 最大窗口尺寸:当用n个比特进行编号时,则发送窗口的大小WT≤2n-1,接收窗口为1
选择ARQ方式
- 由于差错或帧丢失,发送方按照顺序发送的帧到达接收方时,可能会缺少某些序号的帧。
- 扩大接收窗口,先暂且收下发送序号不连续但仍处在接收窗口中的那些数据帧,等到所缺序号的数据帧收到后,再一并送交主机,发送应答
- 选择ARQ方式,接收方允许接收多个不严格按照顺序的帧。
- 最大窗口尺寸:当用n个比特进行编号时,则发送窗口的大小WT=2n/2,接收窗口为WR≤2n/2
信道利用率
- 停止等待协议:信道利用率=发送时延/(发送时延+2*传播时延)
- 滑动窗口协议:信道利用率=WT*发送时延/(发送时延+2*传播时延)
点对点信道的数据链路层协议
HDLC(高级数据链路控制规程)
面向比特的传输控制规程,即它所识别和处理的是比特流及其组合。
HDLC的帧结构
HDLC三种帧类型
- HDLC帧的控制字段C标识了三种帧类型
- 信息帧I、监督帧S、无编号帧U
HDLC的透明传输
- 采用“零比特自动插入/删除法”使一帧的两个F字段之间不会出现6个或6个以上连续“1”。
- 在发送端,当一串比特流数据中有5个连续1时,就立即自动插入一个“0”。
- 在接收帧时,先找到F字段(01111110)以确定帧的边界。接着再对比特流进行扫描。每当发现5个连续1时,就将其后的一个0删除,以还原成原来的比特流。
PPP(点对点协议)
点到点协议是为在两个对等实体间传输数据包建立简单连接而设计的。这种连接提供了全双工操作,并且假定数据包是按顺序投递的。PPP连接提供了一种广泛的解决办法。
PPP的帧格式
PPP的透明传输
- PPP帧在传输过程中,同样需要考虑透明传输问题。即帧标志之间的比特组合。
- 当PPP用在同步传输链路时,协议规定采用硬件来完成比特填充(和HDLC的做法一样,零比特自动插入/删除)。
- 当PPP用在异步传输时,就使用一种特殊的字符填充法。
- 将信息字段中出现的每一个0x7E字节转变成为2字节序列(0x7D,0x5E)。7E->7D 5E
- 若信息字段中出现一个0x7D的字节, 则将其转变成为2字节序列(0x7D,0x5D)。7D->7D 5D
- 若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。15->7D 15
CSMA/CD(载波监听多路访问/冲突检测)
CSMA载波监听多路访问
- 每个站点在发送分组前,监听公共信道上其它站点是否在发送分组。如果信道忙,就暂不发送。如果信道空闲,则进入发送处理(先听后说)。
- 缺点:当两(多)个站发生冲突后,各冲突站并不知道,仍继续发送已遭破坏的数据帧。应答超时后才能确认冲突。若帧很长,则信道的浪费相当大。
CSMA/CD
- 在CSMA(载波监听,多路访问)的基础上增加了“冲突检测”的功能。
- 在发送过程中继续检测信道。如果发现冲突,立即停止发送,并通知全网。等待随机时间后重新监听和发送。有效提高了网络传输效率。
争用期
- 单程端到端的传播时延为τ,争用期为端到端往返时延2τ。
- 最先发送数据帧的站,在发送数据帧后至多经过2τ时间,可以确定是否有冲突发生。
- 最短帧长:争用期内传输的比特数Lmin=2τ*C。