数据链路层
功能:通过一些数据链路层的协议,在不太可靠的物理链路上实现可靠的数据传输。
相关基本概念:
1、结点(node):网络中的主机(host)和路由器(router)。
2、链路(link):通信路径上连接相邻结点的通信信道,中间没有任何其他的交换结点。一条链路只是一条通路的一个组成部分。
3、数据链路(data link):要在一根线路上传送数据,除了要有一条物理线路外,还要有一些必要的规程来控制这些数据的传输。将实现这些规程的硬件和软件加到链路上,就构成了数据链路。
4、规程:早期的数据通信协议曾叫作通信规程。因此在数据链路层,规程和协议是同义语。
5、数据链路层协议:定义了一条链路的两个结点间交换的数据单元格式,以及结点发送和接收数据单元的动作。
6、点到点(point to point)通信:在相邻结点间的一条链路上的通信。(数据链路层)
7、端到端(end to end)通信:从源结点(source node)到目的结点(destination node)通信。通信路径(path)可能由多个链路组成.(传输层)
数据链路层为网络层提供三种合理的服务
1、无确认无连接服务。
(1)误码率很低的线路,错误恢复留给高层。
(2)实时业务。
(3) 大部分局域网。
2、有确认无连接服务。
(1)适用于不可靠的信道,如无线网。
3、有确认有连接服务。
一、成帧方法
成帧的目的:提高传输效率、差错控制。
帧同步:以帧为单位进行传送,指出哪里是帧的开始和结束。
1、字符计数法
方法:在帧头中用一个域来表示整个帧的字符个数。
可能产生的错误:一个帧出错了,本帧及后面的帧都会产生影响,都有可能出错。
2、带字符填充的首尾字符定界法
方法:1、由标志字节分隔的帧。
2、填充前后字节序列的四个示例。
缺点:局限于8位字符和ASCII字符传送。
3、带位填充的首尾标记定界法
方法:帧的起始和结束都用一个特殊的位串“01111110”,称为标记(flag), 即 ‘01111110’.
可能存在问题及解决办法:存在01111110的帧,我们规定连续5个1后一定要有一个0,在接收之后去掉即可。
二、差错控制
差错产生的原因:噪声。
可能产生的错误:数据帧出错、数据帧丢失。
目的:使DL(数据链路层)能够向上层提供无差错的服务(链路有干扰)。
基本原理:接收端向发送端发送确认信息(ACK,NAK)。
噪声类型:
1、白噪声: 随机错误,某一码元与前后码元无关的错误,单个出现。
2、冲击噪声:突发错误,某一码元与前后码元有关的错误,成串密集出现。
如何进行差错的检测和纠正呢?
方法:数据之外加冗余编码,分别叫做检错码和纠错码。
检错码: 通过编码检查能自动发现差错
纠错码: 除了能知道出错,还能知道错误发生的位置
检错码:奇偶校验码、CRC编码。
1、CRC编码
码多项式:将码元序列中的每一位看成是一个多项式的系数,则一个码元序列对应一个多项式,这个多项式被称为该码元序列的多项式。
例子:码元序列:10110
1 0 1 1 0
1x4+0x3+1x2+1x1+0x0 = x4+x2+x1
使用方法:
模2运算
加法不进位,减法不借位,除法中的减法仍然采用模2运算,可以理解为一种亦或运算,相同为0,不同为1。
例子:加法 减法
10011011 11110000
+ 11001010 -10100110
01010001 01010110
CRC码基本实现原理:
在要传输的码元序列(帧)后加上校验和(checksum),使带校验和的帧的多项式能被G(x)除尽;收方接收时,用G(x)去除它,若有余数,则传输出错(此处就是检错的原理)。
帧的尾部的校验和的得到方法:
设G(x)为 r 阶,在帧的末尾加 r 个0,使帧为m + r位,相应多项式为xrM(x);
按模2除法用对应于G(x)的位串去除对应于xrM(x)的位串;
具体实现步骤:
1、将要传送的数据位后面加上r个0, xr M(x)。
2、用xr M(x)除以G(x),得到的余数r(x)。
3、用xr M(x)减去余数r(x) ,构成要传输的n位数据T(x)。
感觉文字看比较难理解,例子可以比较直接:
三、流量控制
为什么要进行流量控制?
发送者发送数据的能力高于接收者的接收能力,可能导致数据未接收就丢失了。
如何解决流量控制问题,有两个方法:
1. 基于反馈的流量控制。
2. 基于速率的流量控制。
四、基本的数据链路层协议
1、无限制的单工协议
待
2、单工停等协议
待
3、带噪声的单工协议
待