三 数据链路层
3.1 数据链路层的概述
- 数据链路层的功能
- 向网络层提供一个定义良好的服务接口
- 处理传输错误
- 调节数据流,确保慢速的接收方不会被快速的发送方淹没
- 帧的管理构成了数据链路层工作的核心
3.2成帧
- 数据是数据链路层的基本单位
- 成帧是指将数据组合成数据块
一个数据帧由一个数据字段和若干个头部字段和尾部字段组成。数据字段是网络层递交给数据链路层的数据,头部字段和尾部字段则使接收方的数据链路层能够从接收方物理层递交的比特流中能够正确地进行帧对别。 - 常见的成帧的方法:
- 字节计数法
- 首尾定界法
- 首尾标志法
- 违规编码法
3.3 差错控制
-
最常用的方法:差错控制编码
-
简单的差错控制编码
- 奇偶校验
- 发送方:附加1位冗余位,使码字中“1”的个数保持为奇数或偶数;
接收方:根据所收到的码字中“1”的个数是奇数或偶数判别是否有传输差错。
- 发送方:附加1位冗余位,使码字中“1”的个数保持为奇数或偶数;
- 定比码
- 正反码
- 奇偶校验
-
循环冗余码
-
计算过程:
- 收发双方预先商定一个生成多项式G(x)
- 最高次数为r (r就是G(X)的阶)
- 将发送方要发送的信息位转换为对应的多项式K(x)
- 将信息位K(X)后面补r个0,得到新的多项式
- G(X)去除 这个新的多项式
- 得到的余式就是冗余位对应的多项式R(X)
-
信道上 传输的数就是 K(X)补 R(X)
-
注意在接受到对方的传输的数据之后,对方也要用这种方法进行计算,如果计算结果为0,则传输正确,如果数据结果不是0,则丢弃这个数。
-
CRC不能检验出是哪位的错误,也有可能有错误没有检验出来,位数越多,检测的结果也越可靠。
-
-
海明码
- 可以纠正一位错误
3.4流量控制
- 流量控制要解决的是发送方的发送速率和接收方的接收速率相匹配的问题
- 流量控制涉及链路上字符或帧发送速率的控制,以使接收方在接收前有足够的缓存存储空间接收每一个字符或帧
- 常用方法:
基于反馈的流控制
基于速率的流控制- XON/XOFF协议
- 接收方过载时,发送XOFF,当过载恢复后发送XON
- 滑动窗口机制
黑色部分表示已经发送但是接收方未收到。
滑动窗口协议中可根据发送窗口和接收窗口的尺寸,分为三种具体协议- 停等协议 最简单。
-
发送窗口和接收窗口的大小都是1,发送方每发送一帧都要停下来等待对方已经正确接收的确认,再继续发送。
-
大部分通信系统都采用全双工通信,通常采用 捎带确认。
-
窗口大小:
发送窗口 接收窗口都=1
-
- 回退n协议
- 停等协议 最简单。
- XON/XOFF协议