数据链路层复习

数据链路层(逻辑链路层)
数据链路层包含逻辑链路层和 MAC 子层.
数据链路层的流量控制
- 差错检测和控制
- 流量控制
- 基于速率
- 基于反馈(由接收方反馈信息给发送方)
数据结构(帧)
帧=帧头+载荷+帧尾
帧头
- 物理地址信息
帧尾
- 校验和
成帧的方法
-
字符计数法(头部添加帧长)
-
字节填充的标志字节法(每一帧采用特殊的字符作为帧界 flag byte)
使用转义符解决标志字节法的问题,实际用于PPP 协议中
-
比特填充的比特标记法解决这个问题。(5 个 1 后面加一个 0)
-
或者使用冗余的信号作为帧界
差错处理(纠错、检错)
纠错码主要用于无线网络(冗余开销大)
检错码可以发现错误,使用在局域网中,使用重传恢复。
海明距离
两个码字之间的海明距离为不同位的个数。
可以使用异或计算,再统计 1 的个数。
全部码字的海明距离定义为任意两个码字之间海明距离的最小值。
海明距离的意义
如果海明距离为 d,则一个码字需要发生 $d$ 个 1 位错误才能变成另外一个码字。
海明距离与检错
海明距离为 $d+1$ 的编码可以检测出 d 位差错。
一个码字至少要变 $d+1$ 次才能变为另外一个码字。
海明距离代表了需要检错的数据位的成本开销。
海明距离与纠错
海明距离为 $2d+1$ 的编码,可以纠错 $d$ 位差错。
它可以选择海明距离最低的码字进行纠正。
海明距离越大,纠错能力越强。
纠一位错的海明码
检一位错的海明码
- 奇偶校验码(添加一位,保证 1 位奇数或者偶数个)
- 互联网校验和(常见的 16 位补码互联网校验和)
- 循环冗余校验码CRC(使用异或运算,检查多项式是否能被通用的生成多项式CRC32整除)
基本协议
- 无限制的单工协议(乌托邦协议)
- 半双工协议(有反馈机制,等待上一个帧的收到回应后,再发送下一个帧)
- 肯定确认重传(确认正确帧,超时重发,添加序列号)
滑动窗口
协议 4:滑动窗口协议
- 窗口大小为 1
- 发送窗口:已经发送未被确认的序号
- 接收窗口:期望接收的序列号
seq 使用一个位来表示,0,1 交替出现。
存在问题:定时器设置过短的时候,会产生很多重复帧。
协议 5:回退 n 帧
当某一个帧出错时,重传从那个帧开始之后的所有帧。
采用了累计确认。
- 定义 seq 和滑动窗口
- 发送方连续发送,直到发送窗口满
- 接收窗口为 1,对出错帧不确认(引发超时)
- 发送方超时重传,从未被确认的帧开始
存在问题:maxSeq 的混搅
解决方法:发送窗口小于 maxSeq。
协议 6:选择重传
当某一个帧出错时,重传那个帧。
使用否定确认 NAK(告诉发送方某帧出错,而不是等超时)
接收窗口:$W=(maxSeq+1)/2$。保证新老窗口不重复即可。
数据链路层(MAC 子层)
介质的多路访问控制
- 静态分配:预先分配给各个用户。
- 动态分配:信号是开放的。
多路访问协议
- 随机访问协议
- ALOHA
- CSMA
- CSMA/CD(以太网)
- 受控访问协议
ALOHA
- 纯 ALOHA(冲突后等待随机时间)
- 分隙 ALOHA(把时间分成时隙,占用后发送)
CSMA(改进的 ALOHA)
- 非持续式(介质如果忙,等待一个随机分布时间后再询问)
- 持续式(如果介质忙,持续侦听)
- 1-持续(如果空闲时,直接发送)
- p-持续(如果空闲时,以 $P$ 的概率发送)
冲突窗口 RTT
定义为两个最远工作站的传输时间(两个帧时)。
CSMA/CD(带冲突检测的 CSMA)
实际上是一个 1 持续的 CSMA。
先听后发,边发边听。
- 若介质忙,持续监听,空闲立即发送。
- 发送的同时监听自己的信号,若不一致,停止帧的发送,并发出一个拥塞信号。
冲突检测
以太网
以太网位于数据链路层和物理层。
IEEE
以太网采用曼彻斯特编码的CSMA/CD 技术
IEEE802.3 以太网帧(区别于 DIX 以太网帧)
- 前导码+11 一共 64bit(8 bytes)
- 目的地址和源地址都是 MAC 地址。
- 以太网:类型(上层使用的协议)
- IEEE:数据长度(64 字节~1518 字节,只不包括前导码)
- 数据(46~1500 字节)
- 校验和(CRC 冗余校验,除了前导码以外的校验。4 个字节)
为什么帧长度要大于 64bytes
CSMA/CD 要求最短帧的发送时间大于等于争用时隙。
二层交换的原理
网桥(交换机)负责二层交换,不会检查网络层,只做转发。
- 通过透明网桥把多个 LAN 连接起来。
- 透明网桥接收所有的帧,并决定丢弃还是转发。
- 决策是通过网桥内部的地址表的目的 MAC 地址来做出的。
- 当找不到地址时,广播这个帧。
- 收到一个帧,会学习帧的源地址。
网桥分割了区域,又提高了性能。
生成树算法 STP
生成无环的树,防止网络风暴、多帧传送、MAC 地址库不稳定。
两层交换设备
- 以太网卡(具有发送和监听的功能)
- 网桥(连接不同的 LAN)
- 交换机(多端口的网桥)
工作原理:
- flooding:泛洪
- forwarding: 转发
- filtering:过滤
- learning:学习
- 存储转发(来得及校验)
- 直接转发(来不及校验)
- 无分片交换(读够 64 个字节后再转发)