数据链路层的功能:
数据链路层在物理层的提供服务的基础上向网络层提供服务,
主要作用就是加强物理层传输原始比特流的功能,
将物理层提供的可能出错的物理连接改造为逻辑上无差错的数据链路,
使之对网络层表现为一条无差错的链路.
传输单位:帧
任务:将网络层传来的ip数据组装成帧.
一 组帧
什么叫组帧?
帧其实就是比特组合的一种传输单位,
那么为什么我们不直接用比特传输,
而用帧呢?这就是为了在传输出错的时候我们只需要发错误的帧就好,
不用重发所有的数据,从而提高效率.
组帧就是按一定的规则对帧进行封装.
组帧的方法
1)字符计数法:在帧头部使用一个计数字段来表明帧内字符数
就比如说开始位是5,后面就是4位数字,
第6位就是下一个帧 了.但是这种也有很大的问题,
要是计数的字段错了的话,就全错了.
字数字段很脆弱
2)字符填充首尾定界法:在数据中的特殊字符面前用转义字符填充
其实就是在本来要全的数据前面就一个开始标志,
在结束加一个结束标准.
假设在你本来要传的数据里面就有开始和结束的标志字符那怎么办?
所有就要在特殊字符前加转义字符来区分了
实现上很复杂,而且不兼容
3)比特填充首尾定界法:数据区每遇到连续5个1就填充一个(还行)
在比特填充里其实已经有了一个模式,
来表示开始和结束了,用01111110来表示,
那玩意在信息流里面也有这个怎么办?
所以就想到了一个办法,
在遇到连续5个1的时候加一个0,
接收方收到后,进行逆操作,
还原原来的信息流就好了,
这种方法适合硬件操作,
比字符填充性能好
4)违规编码法:信号传输过程中采用违规的编码来表示帧的起始和终止(还行)
为什么叫做违规呢?
因为在曼彻斯特编码里,
1为高电平,0为低电平.
而高高,低低电平是违规的,
我们现在就采用这种编码形式.
所谓称为违规编码,来定界帧的起始和结束.
IEEE 802就采用了这种方式,但它只适合采用冗余编码的特殊环境
总结一下吧,其实上述这些方法归根结底研究的就是怎么才可能把头和尾区分开,不同的区分头尾的方式,形成了不同的方法
二 差错控制
其实差错主要分为2种,一种是信道固有的,
持续存在的热噪声(可以通过提高信噪比,减少或避免),
另一种是外界特定的短暂原因造成的冲击噪声(基本解决不了)
检错编码:
奇偶校验码:是奇校验,和偶校验的统称,
简单地说就是我们要发的信息元都是用1和0组成的,奇偶说的是1的个数
循环冗余码:也被叫做多项式码,其实就是给出来你一个多项式,
但是每个多项式的系数不是0,就是1 ,
这个被称为是帧检验序列,然后我们再用模2除法,得到一个余数,
用发送的数据+余数,就是循环冗余码.
模2运算:这个不同于数学计算,加法不进位,减法不退位(相当于异或)
这个稍稍有点复杂,如果有看不太明白的可以自行查阅一下
纠错编码:
海明码:简单来说就是在m个信息位里插入r个校验位,组成m+r个码字.
这样可以相对精确地判断出错的位置
解决差错问题最主要的方法就是在每个发送的数据块上,
附上足够的冗余码,这样接收方才能推导出发送的比特串
三流量监测的可靠传输
流量控制
1)停止等待协议:发送发每发送一帧都要等待接收方的应答信号才能发送下一帧
2)后退N帧协议;发送方可以发送N帧,按序接收,重传从最后一个确认开始
3)选择重传协议:发送方可以发送N帧,可以不按序接收,重传从最后一个确认开始
可靠传输:数据链路层通常使用确认和超时重传二种机制来保证可靠传输
确认是一种无数据的控制帧,这种帧可以被接收方知道哪些内容被正确接收.
超时重传:发送方在发送某个数据帧后就启动一个计数器,如果超过时间以后就会再重新发送一次,直到发送成功为止.
信道划分
1)频分复用:将多路信号调制到不同的频率载波上叠加成一个复合信号
充分利用了传输介质的带宽,系统效率高,实现容易
2)时分复用:将物理信道按时间分为若干时间片,轮流给不同信号使用
是频分复用的升级版,不是固定的分配时间片,
而是按需分配,当终端有需要的时候才会分配.提高线路利用率
3)波分复用:在一根光纤上传输多种不同波长的光信号
1),3)共享时间不共享空间,2)共享空间不共享时间
4)码分复用:靠不同的编码来区分各路原始信号.
可以理解为,假如A地要往c地运黄豆,B地要往c地运绿豆,
但是AC,BC之间有一条公共的道路.
那么码分复用就是,把黄豆和绿豆装在一个车上,
送到后在分拣(这里不考虑黄豆怎么和绿豆放在一起的逻辑问题和时间问题)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。