第3章 数据链路层
2015-11-20 19:47
253 查看
3.1 数据链路层的设计问题
数据链路层使用物理层提供的服务在通信信道上发送和接收比特。其完成的功能包括:(1)向网络层提供一个定义良好的服务接口
(2) 处理传输错误
(3)调节数据流,确保慢速的接收方不会被快速的发送方淹没
3.1.1数据链路层提供的服务
服务包括:(1) 无确认的无连接服务:以太网,
(2) 有确认的无连接服务
(3) 无确认的有连接服务
3.1.2 成帧
识别比特流开始和结束位置的方法:(1)字节计数法
(2)字节填充的标志字节法
(3)比特填充的标志比特法
(4)物理层编码违禁法
3.1.3 差错控制
接收方反馈信息,计时器和序号使用3.1.4 流量控制
解决发送方发送帧的速度超过了接收方能够接受这些帧的速度的方法:1. 基于反馈的流量控制(feedback-based flow control),接收方给发送方返回信息,允许它发送更多的数据或者至少告诉发送自己的情况如何。
2. 基于速率的流量控制(rate-based flow control),限制发送方传输数据的速率,而无须有高层来处理。
3.2 差错检测和纠正
错处处理的基本策略:1. 纠错码(error-correcting code):每一个数据块中包含足够多的冗余信息,以便接收方推断出被发送的数据是什么,多用在无线链路等错误发生发生频繁的信道上。
2. 检错码(error-detecting code),冗余信息只能推断是否发送错误,接收方请求重传,多用在高度可靠的信道上(光纤)
3.2.1 纠错码
海明码海明距离(Hamming distance):两个码字中不相同位的个数
二进制卷积码
在卷积码中,编码器处理一个输入序列,并生成一个输出序列。卷积吗由其速率和约束长度标识。
里德所罗门码
线性码,多项式纠错
低密度奇偶校验码(LDPC,Low-Density Parity Check )
3.2.3 检错码
对于偶尔出现的错误采用差错检测和重传的处理方式。检错码:
1. 奇偶
2. 校验和
3. 循环冗余校验(CRC,Cyclic Redundancy Check),也叫多项式编码,编码的基本思想是:将位看成是系数为0或1的多项式。一个k位帧可以看成是一个k-1次多项式的系数列表,该多项式共有k项,从xk−1到x0x^{k-1}到x^0,这样的多项式认为是k-1阶多项式。最左边是xk−1x^{k-1}项的系数。
4. 使用多项式编码时,发送方和接收方必须事先商定一个**生成多项式(generator polynomial)**G(x).生成多项式的最高位和最低位必须是1.
计算CRC的算法过程:
(1)假设G(x)的阶为r,在帧的最低位端加上r个0位,使得该帧现在包含m+r位,对应多项式为xrM(x)x^rM(x)。
(2)利用模2除法,用对应于G(x)的位串去除对应于xrM(x)x^rM(x)的位串。
(3)利用模2减法,对应于xrM(x)x^rM(x)的位串中减去余数(总是小于等于r位)。结果就是被传输的带校验和的帧。它的多项式不妨设为T(x).
相关文章推荐
- OpenTSDB设计解读
- android加载速度优化,通过项目的优化过程分析
- Matlab实现决策树算法进行数字识别
- Django中的原子事务相关注意事项
- python地理处理包——geopy使用之地理编码与反地理编码
- Android应用setContentView与LayoutInflater加载解析机制源码分析
- 浅谈Websocket、Ajax轮询和长连接(long pull)
- geopy使用详解
- vim-缓存区中打开另外一个文件的方法
- 二尝Visual Studio code 编辑器
- Python基础入门(2) - 命令行参数 sys.argv[]用法
- 搭建Android环境遇到问题的解决方案
- app上传APP Store报错:ERROR ITMS-90086:"missing 64-bit support.
- 二尝Visual Studio code 编辑器
- Struts2的获取Session的两种方式
- python 操作数据库(mysql)
- hdoj Robberies 2955 (概率Dp&&01背包) 好题
- 【凯子哥带你学Android】Andriod性能优化之列表卡顿——以“简书”APP为例
- hdoj 青年歌手大奖赛_评委会打分
- 南大软院大神养成计划第五天