数据链路层
搞清帧、MAC、差错与流控每个机制为什么这样设计
按 空格/→ 演示下一步
全部页面点击任意一页,跳回舞台从这页播放
数据链路层
搞清帧、MAC、差错与流控每个机制为什么这样设计
数据链路层概述
网络层用 IP 地址把数据从北京送到上海,但进了小区后怎么送到 3 栋 502?这最后一段接力,就是数据链路层在干的事。
网络层是城市间邮路,数据链路层只在同一局域网内把数据送到正确的主机
差错处理概述
上一页我们看到数据链路层把比特组装成帧,但物理信道上的噪声、干扰会让某些比特发生翻转——接收方怎么知道自己拿到的不是「原版」?差错处理正是为解决这一矛盾而生。
路上可能压坏(差错来源)→ 附清单拍照(检错码)→ 签收核对发现异常让重发(ARQ)
纠1位错的海明码
上一节我们看到了差错处理的两条思路——检错与纠错。海明码正是纠错思路里最经典的方案:只多嵌几个校验位,就能精确定位出错的位。
巡检员1查1/3/5/7号房,2查2/3/6/7号房…同时告警的编号相加,就是漏水的房号
检错码
上一页的海明码能纠1位错,但冗余位代价不低。多数场景其实只需要'发现翻车',让发送方重传一次就行。这正是检错码的用武之地:在数据后追加校验位,接收方一查便知数据是否完好。
能识别号码抄错几位,但无法告诉你正确号码是多少
基本数据链路协议1~3
前面讲的差错处理、海明码、CRC 是「单帧工具」;链路层真正要解决的是一串帧怎么可靠送到对面。这就要靠三种基本数据链路协议——从最理想一步步逼近真实信道。
A自顾自说=协议1;加'嗯'确认=协议2;加'再说一遍'纠错=协议3
滑动窗口协议
前页基本协议每发一帧就等一次确认,效率太低——像一次只寄一件快递。现实中一次寄一沓,签收回执陆续到达,「已发未确认」的帧集合就是窗口,它会随 ACK 到来而滑动。
包裹=帧;手中未签收件数=发送窗;每签收一件即可再装一件
回退n帧
上一页滑动窗口让发送方一口气发多帧,但发出去后如果某一帧丢了怎么办?回退N帧给了一个简单粗暴的答案。
3号没拿到就不知道4、5号情况,从3号起重新发
选择性重传
选择性重传:定义、要点与典型应用
本节要点
- ✓链路层的全部难题:把不可靠的物理链路封装成可靠的逻辑信道
- ✓检错码冗余少、纠错码冗余多——可靠性是用带宽换来的
- ✓滑动窗口三件套:序号、发送缓存、接收窗口,缺一不可
- ✓GBN 与 SR 的根本差别:接收窗口是 1 还是 >1
- ✓序号空间硬约束:GBN≥窗口+1,SR≥2×窗口
课后思考
先自己琢磨五分钟,再看参考答案——思考比答案本身更重要。
参考答案纠错能力越强,校验位占比越大。海明码纠1位错时,2^r ≥ m+r+1 取得平衡;纠多位会迅速让冗余膨胀,不划算。
参考答案高误码率意味着丢帧多。回退N帧会重传大量已正确接收的帧,浪费带宽;选择性重传只重传丢失的帧,但接收方需更大缓存。
参考答案带宽×延迟很大(带宽时延积大),窗口必须足够大才能'灌满'链路;小窗口会让链路闲置,吞吐上不去。