数据链路层 DataLink Layer
教材:计算机网络第8版
章节:第三章数据链路层
内容:b站王道考研-计算机网络-数据链路层
问题:对数据传输容错
目标:容错
- 概述:
- 结点:主机和路由器
- 链路:两个结点之间的物理通道(传输介质:双绞线,光纤,微波,有线链路,无线链路)
- 数据链路:网络中两个结点间的逻辑链路,由把实现控制数据传输协议的硬件和软件加到链路上形成
- 帧:链路层的协议数据单元,封装网络层数据报
- 负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报
- 功能:向网络层提供服务,将源自网络层来的数据可靠地传输到相邻结点的目标网络层,主要作用是加强物理层传输原始比特流的功能,将物理层可能出差错的物理连接改为逻辑上误差错的数据链路,使之对网络层表现为无差错链路
- 为网络层提供服务
- 无确认无连接服务:实时通信,误码率低的情况,不负责重新发送
- 有确认无连接服务:目的主机收到数据后发回确认,超时则源主机重新发送
- 有确认面向连接服务:最安全最可靠
- 链路管理:连接的建立,维持和释放
- 组帧
- 流量控制:限制发送方速度
- 差错控制
- 为网络层提供服务
封装成帧和组帧
- 封装成帧:在数据的前后部分添加首部和尾部,构成了帧;接收端在收到物理层的比特流后就可以根据首部和尾部的标记,从比特流中识别帧的开始和结束-帧定界符
- 帧同步:接收方能从接收到的比特流中区分出帧的起始和终止
- 透明传输:不管是什么比特组合,都能在链路上传输,因此链路层不知道有什么妨碍数据传输的东西;当传送数据中的比特组合和控制信息相同,必须采用适当措施,消除误解的情况,保证数据链路层的传输是透明的
- 成帧方式
- 字符计数法
- 帧首部的一个计数字段(第一个字节,8位)标明帧内字符数
- 问题:第一个字节发生错误,会导致后面所有帧都发生错误,接收双方失去了同步
- 字符填充
- 在控制信息字符前添加转义字符,区分控制信息和定界符,即字符填充
- 零比特填充法
- “5”“1”“1”“0”
- 在发送端扫描到信息段有连续的5个1,就立即填入一个0
- 实现了透明传输:在传送的比特流中可以传送任意比特组合,而不会引起对帧边界的判断错误
- 违规编码法
- 曼彻斯编码可以用”高高“,”低低“界定帧的起始和终止
- 字节计数中count字段脆弱性(其值若有差错则将导致灾难性后果)及字符填充实现上的复杂性和不兼容性,目前比较普遍使用的帧同步法是 比特填充 和 违规编码法
- 字符计数法
差错控制
传输中的差错由噪声引起
- 全局性:由于线路本身电气特性所产生的随机噪声(热噪声),是信道固有的,随即存在的—提高信噪比来减少或避免干扰(对传感器操作)
- 局部性:外界特定的短暂原因所造成的冲击噪声,是产生差错的主要原因—利用编码技术解决
差错
- 位错:比特位出错,1变成0,0变成1
- 帧错:帧(几个比特的组合)发生错误
- 丢失
- 重复
- 失序
链路层为网络层提供服务
-
无确认无连接:通信质量好,有线传输链路
-
有确认无连接:通信质量差的无线传输链路
-
有确认面向连接服务:通信质量差的无线传输链路
-
检错编码
-
奇偶校验码:n-1位信息元+1位校验码
1100101
- 奇校验码:1的个数为奇数
11010011
结尾加1,可以采用奇校验- 偶校验码:1的个数为偶数
11001010
结尾加0,可以采用偶校验- 只能检查出奇数个比特错误,检查率为50%
-
循环冗余码CRC:在某种关系附加上一定的冗余位
- 发送端:数据与生成多项式的余数就是冗余码,发送的数据就是数据+冗余码
- 接收端:收到的数据与生成多项式的余数为0,就表示没有差错而接收
- 除法即进行异或运算
数据是
1101 0110 11
生成多项式是
10011
,等价于 x 4 + x + 1 x^4+x+1 x4+x+1进行补位加
4
个01101 0110 11
–>1101 0110 11 0000
进行模2除法,得余数
1110
最终发送数据为
1101 0110 11 1110
- 可以实现无比特差错的传输,但还不是可靠传输
-
-
纠错编码-海明码
- 确定增加校验码的位数和位置后,求出校验码并插入校验码和检错
- 海明距离/码距:两个合法编码对应比特取值不同的比特数,编码集中就是任意两个编码的码距最小值
- 确定校验码位数:对于m位的数据,要有r(r=m-1)位的校验码,共有 2 r 2^r 2r种取值,则 2 r > = m + r + 1 2^r>= m+r+1 2r>=m+r+1—>海明不等式
- 确定校验码位置:防在序号位 2 n 2^n 2n的位置上,自低向高排列
- 求出校验码的值:使用通配符(0为*,1为1),使用偶校验,使覆盖的值具有偶数个1
- 检错和纠错:
- 使用奇偶校验检错
- 纠错1:找到不满足校验的交集,再和满足的取差集,找到出错的位置
- 纠错2:偶校验–>异或为0得到进制后转为十进制得到出错位置
-
物理层编码针对单个比特,解决传输过程中比特的同步问题,如曼彻斯特编码
-
链路层编码针对一组比特,通过冗余码的技术实现一组二进制比特串再传输过程中是否出现了差错
流量控制与可靠传输机制
较高的发送速度和较低的接收能力的不匹配,会造成传输错误
链路层的流量控制是点到点:接收方收不下就不进行回复确认
流量控制方法:
-
停止等待协议[发送窗口大小=1,接收窗口大小=1]
- 每发送完一个帧就停止发送,等待对方的确认,在收到确认后在发送下一个帧
-
滑动窗口协议
- 后退N帧协议GBN[发送窗口大小>1,接收窗口大小=1]
- 选择重传协议SR[发送窗口大小>1,接收窗口大小>1]
-
可靠传输:发送端和接收端相同
-
流量控制:控制发送速率,接收方有足够的缓冲空间来接收每个帧
-
滑动窗口可以进行流量控制(不确认就不会发)、可靠传输(发送方自动重传,超时后没有收到确认帧,就会重传)
停止-等待协议
除了比特差错,底层信道还会出现丢包问题(物理链路故障、设备故障、病毒攻击、路由信息错误等导致的数据包丢失)
前提
- 常用全双工通信方式,但为了便于研究,仅考虑一方发送和一方接收
- 不考虑传输层次问题
- 每完成一个分组的发送,就停止发送,直到收到对方确认
应用情况
-
无差错情况:每发送1bit就停止并等待
-
有差错情况:
-
数据帧丢失或监测到帧出错
超时计时器:每发送一个帧就启动一个计时器,计时器设置:比往返传播时延RTT更长一些,超时进行重传
发送完要对发送的帧进行备份,保留它的副本
数据帧和确认帧必须编号
-
ACK确认帧丢失
确认帧丢失后,超过计时时间,发送端进行重传,接收端再次发送确认帧
-
ACK确认帧迟到
超时重传,对重复收到的丢掉后进行确认帧重新发送
收到了之前的确认帧,即迟到的不做处理,进行丢弃
-
优点:实现简单
缺点:信道利用率低 U = T D R T T + T A U=\frac{T_D}{RTT+T_A} U=RTT+TATD
信道利用率:发送方在一个发送周期内,有效地发送数据所需要的时间占整个发送周期的比率
信道利用率= ( L / C ) / T (L/C)/T (L/C)/T
L:T内发送L比特数据
C:发送发数据传输率
T:发送周期–>开始发送数据到收到第一个确认帧为止
信道吞吐率=信道利用率*发送发的发送速率
后退N帧协议GBN
为了增加信道利用率,使用流水线技术
- 必须增加序号范围
- 发送方需要缓存多个分组
发送窗口:发送方维持一组连续的允许发送的帧的序号
接收窗口:接收方维持一组连续的允许发送的帧的序号
序号可复用,窗口收到一个确认帧就向前滑动一位,为提高效率,可以累积发送确认帧(收到1,2,3帧,可以只回复确认帧3)
发送方必须响应三件事
-
上层的调用
上层发送数据时,发送方检查发送窗口:
- 未满,产生一个帧并发送
- 已满,将数据返回给上层,表示窗口已满(实际实现中,发送方可缓存数据进行等待发送)
-
收到确认帧ACK
对收到的n号帧确认采用累积确认的方式,表明接收方已经收到n号帧和它之前的全部帧
-
超时事件
出现丢失和时延过长时,发送端会重传已发送但未被确认的帧
接收方要做的事
- 收到正确的n号帧后,接收方为n帧发送一个ACK,并将该帧中的数据交给上层
- 其余情况都丢弃,返回最后的正确的ACK
滑动窗口长度:采用n个bit帧编号,窗口尺寸 W T 应满足 : 1 < = W T < = 2 n − 1 W_T应满足:1\lt=W_T<=2^n-1 WT应满足:1<=WT<=2n−1;若发送窗口尺寸过大会使接收方无法区别新帧和旧帧
优点:提高信道利用率
缺点:一个帧出错,会把原来正确传输的数据进行重传,传递效率低
考研重点内容:
- 累计确认(偶尔捎带确认)
- 接收方只按序接收帧,否则全部丢弃
- 确认序号最大、按序到达的帧
- 发送窗口大小最大 2 n − 1 2^n-1 2n−1,最小为1
选择重传协议SR
解决GBN由于累积重传带来的传输效率低的问题
设置单个确认,同时加大接收窗口,设置接收缓存,缓存乱序到达的帧
发送方必须响应的三件事
-
上层调用
上层发送数据时,发送方检查发送窗口:
- 检查下一个序号位,若在窗口内,发送数据帧
- 已满,要么将数据缓存,要么将数据返回给上层
-
收到ACK
- 若该帧号在窗口内,则将该帧标记为被接收
- 若是窗口的下界(最左边的第一个对应序号),窗口进行滑动到最小序号的未确认帧处
- 窗口移动后,窗口内有未被确认帧,则发送该
-
超时事件
发生后只重传一个帧
接收方要做的事
- 接收正确的帧,不管是否按序,失序的帧将会被缓存并返回响应的确认帧,直到所有帧皆被收到为止,向上层传输数据后滑动窗口
- 如果收到了窗口外的帧,则返回响应的ACK
滑动窗口长度[发送窗口最好==接收窗口]: W T m a x = W R m a x = 2 ( n − 1 ) W_{Tmax}=W_{Rmax}=2^{(n-1)} WTmax=WRmax=2(n−1)
重点总结:
- 对数据帧逐一确认,收到一个确认一个
- 只重传出错帧
- 接收方有缓存机制
- 发送窗口==接收窗口 W T m a x = W R m a x = 2 ( n − 1 ) W_{Tmax}=W_{Rmax}=2^{(n-1)} WTmax=WRmax=2(n−1)
介质访问控制
数据传输链路:
- 点对点链路:两个相邻节点通过一条链路相连,没有第三者
- PPP协议,应用于广域网
- 广播式链路:所有主机共享通信介质
- 早期的总线以太网、无线局域网,常用于局域网
介质访问控制MAC:采取一定措施,使得两对节点之间通信不会发生互相干扰的情况
信道划分访问控制将使用介质的每个设备与来自同一信道上的其他设备的通信隔离,把时域和频域资源合理分配给网络上的设备
- 协议基于多路复用技术划分资源
- 网络负载重:共享信道效率高,且公平
- 网络负载轻:共享信道效率低
动态分配信道:也叫动态媒体接入控制/多点接入,信道并非在用户通信时固定分配给用户
- 随机访问MAC协议用户根据意愿随机发送信息,可独占信道带宽
- 网络负载重:产生冲突开销
- 网络负载轻:共享信道效率高,单节点可利用信道全部带宽
轮询访问MAC/轮流协议/轮转访问MAC协议:既不产生冲突,又要发送时占全部带宽
信道划分介质访问控制-静态划分信道
多路复用技术:把多个信号组合在一条物理信道上进行传输,使多个计算机或终端设备共享信道资源,提高信道利用率
分用器:把一条广播信道逻辑上分成几条用于节点之间通信的互不干扰的子信道,就是把广播信道转变为点对点信道
频分多路复用FDM
一旦分配到一定频带后,在通信过程中自始至终都占用这个频带,频分复用所有用户在同样时间占用不同的带宽资源。
优点:充分利用传输介质带宽,系统效率高,实现比较容易。
时分多路复用TDM
将时间划分为一段段等长的时分复用帧
每个时分复用的用户在每个TDM帧中占用固定序号的时隙,所有用户轮流占用资源。(TDM帧在物理层传送中比特流所划分的帧,标志一个周期)
- 频分-并行
- 时分-并发
改进的时分复用–统计时分复用STDM
解决等待时间,提高信道利用率
集中器:将低速用户的数据收集起来,通过高速线路统一发送到主机上
- 每个STDM帧中时隙小于连接在集中器上的用户数
- 各用户可以随时发送数据到集线器的输入缓存,集线器按顺序扫描放入STDM帧,帧满即发
- STDM帧不是固定分配时隙,而是按需动态分配时隙
波分多路复用WDM
光的频分多路复用,由于波长不同,在光纤中的各路信号互不干扰,所以用合波器将多个波合在一个信道上,最后再用波长分解复用器将各路波长分解出来
码分多路复用CDM
码分多址:一个比特分为多个码片/芯片,每一个站点被指定为一个唯一的m位芯片序列,发送比特1时发送芯片序列(通常0为-1),若发生比特0就发送比特1的反码
芯片序列设置规则:
- 多个站点同时发送数据时,各个站点芯片序列相互正交,规格化内积为0
- S ⋅ T = 1 m Σ i = 1 m S i T i = 0 S·T=\frac{1}{m}\Sigma_{i=1}^{m}S_iT_i=0 S⋅T=m1Σi=1mSiTi=0
- 两个向量到了公共信道进行线性相加
- S+(-T)=(0 0 -2 2 0 -2 0 2)
- 数据分离:合并的数据和源站规格化内积
- S ⋅ ( S − T ) = 1 S·(S-T)=1 S⋅(S−T)=1
- T ⋅ ( S − T ) = − 1 T·(S-T)=-1 T⋅(S−T)=−1
随机访问介质访问控制-动态分配信道
所用用户可随机发送消息,发送消息时占全部带宽
问题:用户发送消息时由于不协调会产生冲突
ALOHA协议
纯ALOHA协议:不监听信道,不按时间发送,随即重发
- 冲突检测
- 接收方检测时出错,不予确认,发送方在一定时间内收不到确认就判定为发生冲突
- 冲突解决
- 超时未收到确认则随机时间后重传
时隙ALOHA协议:把时间分成若干个时间片,所有用户在时间片开始时同步接入信道,若发生冲突则必须等到下一个时间片开始,控制发送的随意性
- 纯ALOHA协议比时隙ALOHA协议吞吐量更低,效率更低
- 纯ALOHA协议想发就发,时隙ALOHA只有在时间片开始时才能发
CSMA协议
载波监听多路访问协议CSMA(carrier sense multiple access)
CS载波监听:每一个站在发送数据之前要检测一下总线上是否有其他计算机在发送数据(检测电压的摆动值)
MA多路访问:多点接入,许多计算机以多点接入的方式连接在一根总线上
CSMA:在发送帧之前,监听信道
1-坚持CSMA:信道空闲则直接传输,不必等待;信道忙则一直监听,直至空闲马上传输;如有冲突则等待随机长的时间再进行监听
优点:媒体利用率高
缺点:若有两个或以上的站点发送数据,则冲突不可避免
非坚持CSMA:信道空闲则直接传输,不必等待;信道忙则等待随机时间后再监听
优点:采用随机重发延迟减少冲突发生的可能性
缺点:媒体利用率降低,都在等待延迟中
p-坚持CSMA:信道空闲时以概率p直接传输,不必等待;概率1-p等待到下一个时间槽再传输;信道忙则持续监听直到信道空闲再以p概率发送;冲突则等到下一个时间槽开始再监听重复上述过程
优点:既能像非坚持减少冲突,也能像1-坚持减少媒体空闲时间
缺点:发生冲突之后要坚持把数据帧发完,造成浪费
三种CSMA对比:
1-坚持CSMA | 非坚持CSMA | p-坚持CSMA | |
---|---|---|---|
信道空闲 | 马上发 | 马上发 | p概率发;1-p概率下一次发 |
信道忙 | 继续监听 | 随机时间后再监听 | 持续监听直至空闲再p概率发 |
CSMA/CD协议
CD碰撞检测:适配器边发送数据边检测信道上信号电压的变化,判断发送数据时其他站点是否也发送数据–边发送边监听,半双工网络
传输时延对载波监听的影响:传播时延会造成监听失误,导致数据碰撞,造成冲突。单程端到端传播时延: τ \tau τ
主机B经过 τ − δ \tau-\delta τ−δ的时间检测到碰撞
主机A经过 2 τ − δ 2\tau-\delta 2τ−δ时间检测到碰撞
2 τ 2\tau 2τ–>最迟是两倍的端到端传输时延能知道是否发送碰撞
-->总线端到端往返传播时延
-->争用期/冲突窗口/碰撞窗口
重传时机:截断二进制指数规避算法
- 确定基本退避时间为争用期 2 τ 2\tau 2τ
- 定义参数k=min[重传次数,10],等于重传次数但不超过10
- 从离散的整数集合 0 − 2 k − 1 0-2^k-1 0−2k−1中随机取一个数r,重传的规避时间就是r倍的基本退避时间, 2 r τ 2r\tau 2rτ
- 当重传达到16次仍不成功,说明网络拥挤,认为此帧永远无法发出,抛弃并向上层报错
连续多次发生冲突则表明可能有较多的站参与争用信道,此算法可使重传需要推迟时间随重传次数增加而增大,减小发生碰撞的概率,有利于整个系统的稳定
最短帧长问题:由于发送的帧过短,导致在监测出碰撞之前就已经完成了发送,因此无法停止发送—>帧的传输时延至少两倍于信号在总线中的传播时延
帧的传输时延= 帧长 b i t 数据传输速率 ≥ 2 τ \frac{帧长bit}{数据传输速率} \ge 2\tau 数据传输速率帧长bit≥2τ
最小帧长=总线传播时延*数据传输速率*2= 2 τ ∗ 数据传输速率 2\tau*数据传输速率 2τ∗数据传输速率
以太网规定最短帧长为64B,凡是长度小于64B的都是由于冲突而异常终止的无效帧
CSMA/CA协议
CA避免碰撞:常用于无线局域网(CD无法在无线局域网全面检测碰撞;隐蔽站问题–当A和C都检测不到信号就会认为信道空闲,同时向B发送信号导致碰撞–C和A互为隐蔽站)
工作原理:
- 发送数据前检测信道,空闲则发出RTS(包括发射端地址、接收端地址、下一份数据持续发送时间等信息);信道忙则等待
- 接收端收到RTS后,返回CTS
- 发送端收不到CTS就不进行数据发送,收到则开始发送数据帧
- 接收端收到数据帧后进行CRC检验数据,正确则响应ACK帧
- 发送方收到ACK进行下一个帧发送,否则采用二进制指数退避算法进行重传
- 预约信道
- 使用ACK确认帧
- RTS/CTS帧
CSMA/CD与CSMA/CA
相同点:都基于CSMA思路,在接入信道前都要监听,空闲时才进行接入
不同点:
- 传输介质不同:CSMA/CD用于总线型以太网-有线;CSMA/CA用于无线局域网-无线
- 载波检测方式不同:CSMA/CD通过电缆中电压变化检测;CSMA/CA采用能量检测、载波检测和能量载波混合检测
- CSMA/CD检测冲突,CSMA/CA避免冲突:二者出现冲突后都进行有上限的重传(二进制指数退避算法)
轮询访问介质访问控制-动态分配信道
轮询协议
主节点轮流邀请从属结点发送数据,只有被邀请的主机才可以发送数据
存在问题:轮询开销;等待延迟;单点故障(主节点宕机)
令牌传递协议
TCU转发器:转发所有经过的帧,为输入输出数据提供接口
令牌:具有特殊格式的MAC控制帧,不含任何信息;控制信道的使用,确保同一时刻只有一个节点独占信道
每个节点都可以在一定时间内获得发送数据的权利,并不是无限制地持有令牌
存在问题:令牌开销;等待延迟;单点故障(宕机造成令牌环破坏)
应用于令牌环网(物理星型拓扑,逻辑环形拓扑),常用于负载较重,通信量较大的网络中
局域网
局域网:LAN,在某一区域内由多台计算机互联成的计算机组,应用广播信道
特点:
- 覆盖范围小,只在相对独立的局部范围内,1km内
- 使用专门铺设的传输介质,数据传输速率较高10Mb/s-10Gb/s
- 通信延迟时间段,误码率低,可靠性高
- 各站为平等关系,共享传输信道
- 多采用分布式控制和广播式通信,可进行广播和组播
主要要素:网络拓扑、传输介质和介质访问控制方法
拓扑结构
传输介质
介质访问控制方法
局域网分类
IEEE 802标准
MAC子层和LLC子层
IEEE 802将数据链路层划分为逻辑链路曾LLC子层和介质访问控制MAC子层
以太网
以太网由Xerox公司创建并由Xerox、Intel和DEC联合开发的基带总线局域网规范,当今现有局域网最通用的通信协议。以太网使用CSMA/CD技术
在局域网技术中占统治地位:
- 造价低廉
- 应用最广泛的局域网技术
- 比令牌环网、ATM网便宜,简单
- 满足网络速率要求:10Mb/s–10Gb/s
标准:
DIX Ethernet V2:第一个局域网产品(以太网)规约
IEEE 802.3:IEEE 802委员会中802.3小组制定的第一个IEEE以太网标准(帧格式的不同)—以太网 == 802.3局域网
以太网提供无连接、不可靠服务:
- 无连接:发送方和接收方之间无握手过程
- 不可靠:不对发送方的数据帧编号,接收方不进行确认,差错纠正由高层负责,以太网只实现无差错接收,不实现可靠传输
以太网拓扑:逻辑上总线型,物理上星型,使用CSMA/CD协议
10BASE-T以太网:传送基带信号的双绞线以太网,采用无屏蔽双绞线UTP,传输速率10Mb/s
- 物理采用星型,逻辑总线型,每段双绞线最长为100m
- 采用曼彻斯特编码
- 采用CSMA/CD协议
适配器:计算机与外界局域网的连接通过通信适配器完成。
MAC地址:局域网中的硬件地址或物理地址,每个适配器有一个全球唯一的48位二进制地址,前24代表厂家,后24位厂家指定。常用6个十六进制数表示
以太网MAC帧:最常用MAC帧为以太网V2格式,如下图(插入8B的前导码)
与IEEE 802.3的区别:
- 第三字段是长度/类型、
- 当长度/类型字段值小于0x0600时,数据字段必须装入LLC层
高速以太网:
- 100BASE-T以太网:双绞线上传送100Mb/s基带信号的星型拓扑以太网
- 仍使用IEEE802.3的CSMA/CD协议
- 支持全双工和半双工,在全双工下无冲突
- 吉比特以太网:光纤或双绞线上传送1Gb/s信号
- 支持全双工和半双工,在全双工下无冲突
- 10吉比特:在光纤上传送10Gb/s信号,只支持全双工
无线局域网
IEEE 802.11时无线局域网的通用标准
MAC帧头格式
分类
有固定基础设施无线局域网:
无固定基础设施无线局域网的自组织网络:
广域网
广域网:WAN,跨界很大的物理范围,覆盖范围十几公里到几千公里不等。通信子网主要使用分组交换技术,其可以利用公用分组交换网、卫星通信网和无线分组交换网,将分布在不同地区的局域网或计算机系统互联起来,达到资源共享的目的
PPP协议
点对点协议PPP:只支持全双工线路
要求:
无需满足:
组成部分:
PPP状态图:
PPP帧格式: