3.1数据链路层的功能
加强物理层传输原始比特流的功能,将可能出差错的物理连接改成逻辑上无差错的数据链路[节点的逻辑通道]
3.1.1 为网络提供服务
- (1).无确认的无连接服务
适合通信质量好的有线传输链路(实时通信或误码率较低的通信信道)【例如以太网】
- (2).有确认的无连接服务
接收到数据需要发送确认。适用于误码率较高的通信信道【例如无线通信】
- (3)有确认的面向连接的服务
服务可靠性高,适用于可靠性实时性较高的场所。
3.1.2 链路管理
数据链路层的连接的建立,维持,释放
过程称为链路管理。主要用于面向连接
的服务。
3.1.3 帧定界,帧同步与透明传输
数据链路层将网络层的分组封装成帧。将数据的首部和尾部添加信息构成帧。
同步是指的接收方能从接收到的二进制比特流中区分出帧的起始与终止
透明传输是指的任意比特组合的数据都能在链路上传输。
3.1.4流量控制
目的是控制发送方的发送速率。
许多高层也有流量控制功能,只是控制的对象不同。
层次 | 流量控制对象 |
---|---|
数据链路层 | 节点与节点之间 |
网络层 | 整个网络 |
传输层 | 源端到目的端 |
3.1.5差错控制
接收方通过某些算法检测数据是否出差错,如果出现差错就丢弃。
3.2组帧
组帧的目的是在出错时仅仅重发出错部分。【解决帧定界,帧同步,透明传输等问题】
3.2.1 字符计数法(可靠性差,一个出错全部出错)
在帧头前面用一个计数字段表明帧内字符数
3.2.2 字符填充的首位定界符【同步】(适用文本文件)
使用开始字符"SOH"和结束字符"EOT"表示首位,若数据中也有"SOH"或"EOT"就使用转义字符"ESC"插入在前面。出现转义字符就再插入一个转义字符。
3.2.3 零比特填充的首尾标志法(用硬件实现容易,性能高于字符填充法)
在传输比特前,若存在连续的5个1,就在后面加一个0
3.2.4违规编码法
在曼彻斯特编码
和差分曼彻斯特斯特编码
中所有码元都由两种电平组成。
因此高-高电平
或低-低电平
可以用于起始和终止的定界符。
字符计数法的脆弱性和字符填充法实现的复杂性和不兼容性。目前常用的是零比特填充法和违规编码法。
3.3差错控制
对接收到的数据进行检错和纠错
3.3.1 检错编码
-
1.奇偶校验码
(只能检测出奇数个错误)
奇校验码:填充0个或多个1使得整个数据有奇数个1
偶校验码:填充0个或多个1使得整个数据有奇数个0 -
2.循环冗余码
(1)准备数据,切割网络层分组为等长。
(2)每组都加上冗余码构成帧再发送
收发双发约定好生成多项式,通过做模2除法找到一个冗余码来校验。
生成多项式有两种形式:
可以写成二进制或者多项式形式:1110 001可以写成
x
6
+
x
5
+
x
4
+
x
+
1
x^6+x^5+x^4+x+1
x6+x5+x4+x+1
通过计算找到二进制长度减1
位冗余码。其中减法是进行异或运算
。
通过循环冗余码,数据链路层做到了对帧的无差错接收。所接受
的的帧都认为传输过程无差错。接收端丢弃的也接收到了,但是因为差错而被丢弃。不是可靠传输。
可靠传输是数据链路层发送什么就接收什么。
3.3.2 海明码[纠错编码]
设有效数据长度为n,k为校验位长度
有
2
k
>
=
n
+
k
+
1
2^k>=n+k+1
2k>=n+k+1
校验位放在
2
i
2^i
2i的位置,其中i∈[0,k-1]。
用的还是偶校验码
编码过程:
解码过程:
若在解码时校验位全是0,说明无差错。
若不为0,差错就在以纠正位组成的二进制对应的位置。(图中二进制101就是十进制5,第5位出错了)
。
检错 | 纠错 | |
---|---|---|
位数 | d位 | d位 |
需要 | d+1位 | 2*d+1位 |