数据链路层
数据链路层的作用:将上层(网络层)给他的数据报,安全的传给其他结点
链路层基本概念
传输层,数据链路层,物理层 三层之间的关系
数据链路层功能
组帧
数据报 加头加尾,包装成帧
帧是网络上的传输单位
帧的作用:帧定界 , 确定帧的大小(开始 和 结束)
帧的数据部分长度 >> 帧首部和尾部 ,这样传输效率才高
但是存在极限值, MTU : 帧的数据部分最大传送单元
链路层传输特点:透明传输, 链路层是不会看帧的数据内容部分的
组帧的四种方法
字符计数法
缺点:一个出错后面的都会出错 不常用
第一个字符表示该帧有多少个字符
字符填充法
常用于文本文件
设置了开始标志和结束标志 ,数据部分采用透明传输 防止提前终止
实现透明传输的方法: 在控制字符EQT / SOH前面加上转义字符ESC ,把他们转化为数据而不是控制命令
在接收端的时候,去掉对应的转义字符就是原始数据了
零比特填充法
设置开始和结束端,数据部分与上述处理不一样
5110: 遇上5个1 后面就插入 / 删除一个0
常用 ⭐
违规编码法
把违规的编码方式作为起始 终止
常用 ⭐
差错
由噪声引起
差错控制(检错编码)
在链路传输过程中,减少错误的帧占用的资源 (而不是传到接收端以后才发现他是个错的)
这里主要研究比特错的情况, 帧错 在滑动窗口那块讲解
物理层的编码: 单个比特 是高低电平和1/0数字信号之间的编码
链路层编码: 一组比特, 来检查是否出差错
冗余码: 附加信息,用来判断是否出错
检错编码 - 奇偶校验码
校验员 + 信息员
奇偶校验码的奇偶判断,是应该算上前面的校验员的的
不能检验 = 判断 哪个校验是出错的 = 由奇变偶,或由偶变奇
缺点: 奇校验 -> 两位bit发生差错 其实会存在检测不出来错了的情况 检错能力50%
检错编码 - CRC循环冗余码
数据加阶数除法 判断余数是否相同
阶: 最高次方 的 个数个0
生成多项式 : 除数 题目指定 或者 根据所有次方的系数获得
不要用除法啦,用异或 相同为0,不同为1
冗余码: 数据+阶 / 多项式 的余数
缺点:出错的帧丢弃了, 并没有把他修正回来 ,不属于可靠传输
纠错编码 - 海明码
不是全部纠错 : 可以发现所有的错误, 但是只能纠正 单比特错
辐射范围广,可以校验附近好几个比特位
P1校验码 二进制 0001 ,所以他能校验所有二进制尾数为1的位
具体校验方法: 所有的符合规则的 按位异或 == 零 =>P1
注意:算出校验码后, 写出来是P4P3P2P1
链路层-流量控制
控制发送方的发送速率
链路层流量控制:点对点 链路层存在确认帧,接受方收不下就不回复
传输层的流量控制:端到端 接收端给发送端一个窗口公告
停止等待协议
早些年在链路层,随着技术的提高,现用于传输层 ; 链路层用于差错控制
数据 链路层 - 帧;网络层 - ip数据报, 传输层 - 报文段
无差错情况
有差错情况 - 数据丢失(丢包)
设置的计时器时间 微微大于 平均的往返时间RTT
发送超时 会重传一次当前帧
所以 发送一个帧以后,必须保留副本
数据帧和确认帧必须编号
有差错情况 - 确认帧丢失(ACK丢失)
有差错情况 - ACK迟到
对来晚的确认帧 丢弃
性能分析 - 信道利用率
信道利用率太低 大部分时间都在路上
后退N帧协议GBN
停止等待协议可以看做发送窗口和等待窗口都是1的GBN协议
确认帧:确认当前之前的所有帧已收到 如果超时,重发已经发送但是未被确认的帧
接收端: 即使收到了别的帧,也不要 发送端:迟迟收不到确认帧,会重传所有未被确认的
选择重传协议SR
为了避免出现二义性 , 窗口最大为2^n -1
可靠传输机制
链路
https://blog.csdn.net/AKUANer/article/details/105416154
点对点链路 - PPP协议
广播式链路 - 介质访问控制
存在冲突 , 介质访问控制解决这种冲突
静态划分信道 - 信道划分介质 访问控制
这里的帧指的是物理层比特流划分的帧, 而不是链路层的帧
静态划分信道 -FDM
FDM frequent 频率复用,
静态划分信道 - 时分多路复用TDM
分时复用的感觉, 考虑一种情况, ABC都休息了,D却只能在一个周期的一小段时间运行,如何改进 ->统计时分复用
静态划分信道 - WDM 波分多路复用 wives
静态划分信道 - 码分多路复用 CDM
发送1 : 发送比特1对应的序列 , 发送0 :发送比特0对应的反码序列
如何不打架 : 相交: A站点 B站点 对应序列 对应相乘相加 / 位数 = 0 就可以同时发送了
如何合并 : 对应相加
如何分离: 规格化内积 源站序列 ×合并的数据序列 求综合 / 位数 =? 推理出 源站发送了?比特