文章目录
- 1. 数据链路层的功能
- 2. 组帧
- 2.1 字符填充法
- 2.2 字节填充法
- 2.3 零比特填充法
- 2.4 违规编码
- 2.5 总结
- 3. 差错控制
- 3.1 检错编码
- 3.1.1 奇偶校验
- 3.1.2 循环冗余校验码(CRC)
- 3.1.3 总结
- 3.2 纠错编码(海明校验码)
- 3.3 总结
- 4. 流量控制 & 可靠传输
- 4.1 停止 - 等待协议(S-W)
- 4.2 后退N帧协议(GBN)
- 4.3 选择重传协议(SR)
- 4.4 总结
- 5. 三种协议的信道利用率分析
- 5.1 S-W
- 5.2 GBN & SR
- 5.3 总结
1. 数据链路层的功能
-
- 数据链路层使用物理层提供的**“比特传输”**服务
-
- 数据链路层为网络层提供服务,将网络层的 IP数据报(分组) 封装成帧,传输给下一个相邻结点
物理链路:**传输介质(0层)+ 物理层(1层)**实现了相邻结点之间的“物理链路”
逻辑链路:数据链路层需要基于“物理链路”,实现相邻结点之间逻辑上无差错的“数据链路(逻辑链路)”
2. 组帧
2.1 字符填充法
再次强调:首部计数字段所记录的帧长 = 计数字段长度 + 帧的数据部分长度
2.2 字节填充法
总结:
- 发送方发送:只要遇到特殊字符,如:SOH、EOT、ESC等,就在这个特殊字符前面加上一个ESC(转义字符)
- 接收方接收:只要遇到ESC(转义字符),就丢掉这个ESC,然后跳过一个字符,去接着看跳过字符后面的内容
2.3 零比特填充法
总结:
- 发送:每当遇到连续5个1,就填充一个0
- 接收:每当遇到连续5个1,就删掉后面的0
2.4 违规编码
2.5 总结
3. 差错控制
3.1 检错编码
3.1.1 奇偶校验
- 奇校验码:有效信息位和校验位(整个校验码)中“1”的个数为奇数
- 偶校验位:有效信息位和校验位(整个校验码)中“1”的个数为偶数
异或运算,符号:⊕\oplus⊕。运算规则:
-
- 相同为0,相异为1
-
- 无进制加法,进制指二进制,即:0 ⊕\oplus⊕ 0 = 0、0 ⊕\oplus⊕ 1 = 1、1 ⊕\oplus⊕ 0 = 1、1 ⊕\oplus⊕ 1 = 0。中间符号就可以理解为+,只不过是无进制的,在组成原理里用异或运算实现CPU加法器
个人觉得用第二种理解能更快得出异或结果
- 奇偶校验常用偶校验,因为偶校验的硬件实现更简单:各信息进行异或(模2加)运算,得到的结果即为偶校验位:
再次强调,奇偶校验只能检测奇数位错误,不能检测偶数位错误
3.1.2 循环冗余校验码(CRC)
例:
说明:
强调:CRC不是百分百检错,但其检错率很高,其也有1位的纠错能力,但实际应用中只用它的检错。
3.1.3 总结
3.2 纠错编码(海明校验码)
- 偶校验:能发现奇数位错误,但无法确定是哪一位出错。即1个校验位只能携带2种状态信息
- 基于偶校验,海明码的设计思路:将信息位分组进行偶校验 -> 设计多个校验位 -> 多个校验位标注出错位置。即多个校验位能携带多种状态信息
求解步骤:
例:给定信息位 —— 1010
-
- 确定海明码的位数:2k >= n + k + 1 -> n = 4 -> k = 3
- 确定海明码的位数:2k >= n + k + 1 -> n = 4 -> k = 3
-
- 确定校验位的分布:校验位 Pi 放在海明位号为 2i-1 的位置上,信息位按顺序放到其余位置
-
- 求校验位的值:
①先分组形成校验关系,即每个数据位用多个校验位进行校验,满足条件:被校验数据位的海明位号等于校验该数据位的各校验位海明位号之和
②异或取值:三个分组各自分别进行偶校验
- 求校验位的值:
填表如下:
-
- 检错纠错
同理:S3S2S1 = 110,表示第6位出错,S3S2S1 = 111,表示第7位出错
- 检错纠错
上述为从大到小的格式,当然也有从小到大的格式:
补充:
推论:
-
- S3S2S1 = 000 且全体偶校验成功 -> 无错误
-
- S3S2S1 != 000 且全体偶校验失败 -> 有1位错,纠正即可。但实际上这个推论只能说明是有奇数个位错误,如D1D2D4同时出错时,也满足这个条件,但实际生活中这是个小概率事件,因为有线链路的出错率本来就低
-
- S3S2S1 != 000 且全体偶校验成功 -> 有偶数个位错,需重传
-
- S3S2S1 = 000 且全体偶校验失败 -> 海明校验码失效,需重传,对应D1D2D3同时出错
3.3 总结
4. 流量控制 & 可靠传输
数据链路层的流量控制与可靠传输都是基于滑动窗口机制实现的
滑动窗口机制:
4.1 停止 - 等待协议(S-W)
4.2 后退N帧协议(GBN)
4.3 选择重传协议(SR)
特殊的,当发送窗口的大小大于1,接收窗口的大小等于1,且发送窗口的大小+接收窗口的大小 <= 2n,此时又变为了GBN协议
4.4 总结
强调:
-
- 三种协议都有超时重传机制、确认帧以及帧的正确编号限制,这是滑动窗口保证可靠传输与流量控制的奥妙所在
-
- 都要满足WT + WR <= 2n。其中SR还规定WT <= WR,一般取WT = WR
-
- GBN采用累积确认的方式,若中间出错,仅需重传最后一次收到的确认帧位置之后的所有帧(不包含确认帧位置帧的重传)
-
- S-W和SR则采用逐帧确认的方式,哪个帧有问题就重传哪个帧,不同的是,SR检测收到的帧有差错,需传否认帧NAK给发送方,而S-W只需丢弃该帧,等待发送方超时重传即可,可以看出SR的时间效率高于S-W
5. 三种协议的信道利用率分析
5.1 S-W
5.2 GBN & SR