《计算机网络》第3章 数据链路层

1.理解数据链路层的功能

数据链路层使用物理层提供的服务在通信信道上发送和接收比特。

功能包括:

(1)    向网络层提供一个定义良好的接口

(2)    处理传输错误

(3)    调节数据流,确保慢速的接收方不会被快速的发送方淹没

提供的服务:

(1)    无确认的无连接服务 (局域网)

(2)    有确认的无连接服务 (无线通信)

(3)    有确认的有连接服务 (电话)

说明:

无线通信,信道使用率很低但数据传输的误码率相对较高,确认是必要的

2.掌握成帧的方法

将原始的位流分散到离散的帧中,叫成帧

成帧的方法有:

(1)字符计数法

(2)带字节/字符填充的标志字节法

(3)比特填充的比特标志法

(4)物理层编码违例法

(1)字符计数法

字节计数法:利用帧头部的一个字段来标识该帧中的字符数

简单,无法恢复,已经很少使用

(2)带字节/字符填充的标志字节法

用一些特殊字节(FLAG)作为帧开始和结束标志,用转义字符(ESC)来区分二进制数据中存在的特殊字节。

缺点:

  1. 容易造成帧界混淆——增加转义字节
  2. 依赖于8位字符  

解决帧界混淆的方法

  1. 一种方法是在二进制数中偶然出现的标志字节前插入一个转义字节。这就称为字节/字符填充法
  2. 新技术的采用——位填充

(3)比特填充的比特标志法

1. 以特殊的位模式01111110作为帧标志,即一个帧的开始(同时标志前一个帧的结束)

2. 当帧内容中出现一个与帧标志相同的位串01111110,则在5个1后插入一个0,即变成01111101,接收方将自动删除第5 个1后的0。这称为位填充法,也称为透明传输。

(4)物理层编码违例法

采用冗余编码技术,如曼切斯特编码,即两个脉冲宽来表示一个二进制位

数据0:低-高电平对

数据1:高-低电平对

高-高电平对和低-低电平对没有使用,可用作帧边界

3.掌握重要的检错和纠错方法

差错的种类

1. 单个错误,错误分散在各块中

2. 突发错误,错误集中在某块中

差错的处理

1.    纠错码(需要太多的冗余位,纠错开销太大,主要用于无线网络)

2.    检错码 (不能恢复,可重传)

2.计算机网络中主要采用循环冗余码(CRC)。

纠错码:海明码

海明距离的意义:如果海明距离为d,则一个码字需要发生d个1位错误才能变成另外一个码字

海明距离与检错和纠错的关系

1.    海明距离为d+1的编码能检测出d位差错。

1.因为在距离为d+1的检验码中,只改变d位的值,不可能产生另一个合法码。如奇偶校验码,海明距离为2,能查出单个错。

2.    海明距离为2d+1的编码,能纠正d位差错。

2.因为此时,如果一个码字有d位发生差错,它仍然距离原来的码字距离最近,可以直接恢复为该码。

(奇偶校验码,海明距离为2,可以检出单个错)

纠正单比特错的冗余位下界,m为数据位数,r为校验位数

                                 (m+r+1)≤2^r

1.    每一个码字从左到右编号,最左边为第1位

2.    校验位和数据位

  • 凡编号为2的乘幂的位是校验位,如1、2、4、8、16、……。
  • 其余是数据位,如3、5、6、7、9、……。

3.    每一个校验位设置根据:包括自己在内的一些位的集合的奇偶值(奇数或偶数)。

如何决定每个数据位的校验码?

将某一位数据位的编号展开成2的乘幂的和,那末每一项所对应的位即为该数据位的校验位(收方使用)。

如: 11 = 1 + 2 + 8

      29 = 1 + 4 + 8 + 16

校验位1的检验集合为所有奇数位。

校验位2的检验集合:2、3、6、7、10、11、…

校验位4的检验集合:4、5、6、7、……

校验位8的检验集合:8、9、10、11、……

海明码纠错过程(只纠错1位)

  1. 首先将差错计数器置“0”。
  2. 当海明码数据到达接收端后,接收端逐个检查各个校验位的奇偶性。
  3. 如发现某一校验位和它所检测的集合的奇偶性不正确,就将该检验位的编号加到差错计数器中。
  4. 待所有校验位核对完毕:
  5. 若差错计数器仍为“0”值,则说明该码字接收无误。
  6. 非“0”值,差错计数器的值为出错位的编号,将该位求反就可得到正确结果。

例子:

计算"1001000"的偶校验时的海明码字?

经计算需要的检验字个数的最小值 r应满足 (  所以r最小值为4,再根据校验位的对应规则可得下表:

 

 B1

B2

B3

B4

B5

B6

B7

B8

B9

B10

B11

信息位

-

-

1

-

0

0

1

-

0

0

0

校验位

0

0

-

1

-

-

-

0

-

-

-

海明码

0

0

1

1

0

0

1

0

0

0

0

检错码:奇偶、校验和、循环冗余校验

奇偶检验码:一个校验位追加到数据的最后。

检验位的取值(0或1)取决于整个码字总的"1"的个数。

奇校验:添加的校验位使得整个码字"1"的个数为奇数

偶校验:添加的校验位是的整个码字"1"的个数为偶数

Data: 1011010

Even: 1011010 0  (偶校验)

Odd: 1011010 1  (奇校验)

循环冗余检错码CRC

可以检测到所有长度小于等于r的突发错误

广泛用于各种网络,几乎所有的局域网

使用CRC编码时发送方和接收方必须预先商定一个生成多项式G(x),假设有一个m为的帧M(x),使用G(x)生成的帧的步骤如下:

  1. 假设G(x)的阶为r, 那么M(x)在末尾添加r个0,得到 m+r位的位模式 。
  2. 利用模2出发,用G(x)去除 ,得到对应的余数(总是小于等于r位)。
  3. 利用 减去(模2减法)第2步中得到的余数,得到的位模式就是即将被传输的带校验和的帧

小结:

Sender

  1. 在数据帧的低端加上r个零,对应多项式为XrM(x)
  2. 采用模2除法,用G(x)去除XrM(x),得余数
  3. 采用模2减法,用XrM(x)减去余数,得到带CRC校验和的帧

Receiver

  1. 用收到的幀去除以G(x)
  2. 为零:无错误产生。非零:发生了错误,重传

4.掌握6种基本的DLL

协议1 乌托邦式单工协议

认为所有的过程是理想化的,不实用

  • 数据单向传送
  • 收发双方的网络层都处于就绪状态(随时待命)
  • 处理时间忽略不计(瞬间完成)
  • 可用的缓存空间无穷大(无限空间)
  • 假设DLL之间的信道永远不会损坏或者丢失帧(完美通道)
  • “乌托邦”

协议2 无错信道上的单工停-等式协议

  • 用于防止慢的接收方被数据淹没
  • 收方回发一个哑帧,发送方收到哑帧,表明收方允许接收数据,此时再次发送下一帧数据
  • 采用一个半双工的物理信道 

协议3 有错信道上的单工停-等式协议(重传+确认)

确认帧

只在接收无差错时才发确认帧,出错时不发确认帧。

重发

网络中采用检错码,无法纠正错误,由重发原来帧的方式来恢复正确的帧。

计时器

控制何时重发,防止无限期等待(死锁)。

帧序号

防止重发时接收端收到重复的帧,序号还用于接收时排序。

保证送给网络层的都是按序无重复的分组

帧格式:

 

捎带确认( piggyBacking P176)

  • 捎带确认的作用:进一步减少确认帧。
  • 捎带确认:将确认暂时延迟以便可以钩到一个外发的数据帧(s.ack)
  • 如无法“捎带”,当一个控制捎带确认的计时器超时后,单独发确认帧。

滑动窗口协议

如果发送端可以连续发送一批数据帧,必须考虑接收端是否来得及接纳与处理这么多的帧,这里就提出了网络流量控制问题

N回退协议选择重传协议:

由于传输过程中存在延迟,即数据在传播过程中需要时间,那么如果使用上面所提及的协议,传输过程中有大量的时间存在阻塞状态,所以为了充分利用带宽,我们让发送方一次发送w个帧。所以就存在如何处理在传输过程中出现的帧错误的问题

 

协议4 1位滑动窗口协议

协议四的基本工作原理:

窗口设置

  • 滑动窗口最大值: MAX_SEQ = 1
  • 通信双方初始值: seq =0, ack=1(期待接收seq=0)

窗口滑动机制

  • A首先发送数据帧( seq=0, ack=1, A0)
  • B收到A0,发送捎带确认帧(seq=0, ack=0, B0)
  • A收到对A0的确认,滑动窗口,发送帧(seq=1, ack=0, A1)

特点

  • 序列号seq和确认值ack“0”“1”交替
  • 滑动窗口长度W=1,收到确认才移动窗口
  • 保证按顺序将接收到的正确帧只一次上交网络层
  • 发送数据帧01,10交替,确认帧00,11交替

出错情况
连续发送W个数据帧,其中有一帧出错,但其后续帧被成功发送

接收方的接收策略选择

  • 丢弃错帧及后续幁,其后续帧因不是期望接收帧也被丢弃
  • 丢弃错帧,缓存后续正确接收帧

对应的发送方的重传策略选择

  • 缓存在发送窗口中的出错帧以及其后续帧全部重发——协议5
  • 只重发出错帧——协议6

协议5 回退N协议

接收方的接收策略选择:
丢弃错帧,其后续帧因不是期望接收帧也被丢弃(接收窗口为1)。
发送方的重传策略选择:
缓存在发送窗口中的出错帧以及其后续帧全部重发

基本概念:

  • 定义序列号seq的取值范围和滑动窗口长度W
  •  发送方连续发送至发送窗口满
  • 接收窗口为1,对出错帧不确认(引发超时)
  • 发送方超时重传,从未被确认帧开始

回退N协议:

该图的发送方和接收方的窗口大小都是7,那么也就是说发送方一次最多只能发送7个帧,刚开始发送方只能发送序号为0~6的数据帧,图中发送方收到序列号为第0和第1号帧的确认帧,那么整个窗口向前滑动,发送方可以发送序列号为7和8 的数据帧,但是不幸的是2号数据帧并没有收到确认帧,所以整个窗口并不会向前滑动,此时只能等待2号数据帧的计时器超时,那么超时后发送方将会从2号数据帧开始发送,重复这个过程。

协议6 选择重传协议

接收方的接收策略选择:
丢弃错帧,缓存后续正确接收帧;
发送方的重传策略选择:
只重发出错帧。

基本概念:

  • 接收窗口存储差错帧后继的所有正确帧
  • 发送方只重传差错帧
  • 接收方接收重传帧,按正确顺序将分组提交网络层

选择重传协议:

选择重传策略常与否定重传策略一起使用

否定确认策略NAK的作用

  • 加快出错帧的重传
  • 对出错帧回送否定确认,使发方不再等到超时再重传

差错控制策略比较

回退n帧

  • 发送方需要较大的缓冲区,以便重传
  • 重传帧数多,适于信道出错率较少的情况

选择重传

  • 接收方需要较大的缓冲区,以便按正确顺序将分组提交网络层
  • 重传帧数少,适于信道质量不好的情况

滑动窗口长度w的选择

n 协议5(回退n帧)
W = MAX_SEQ
n
协议6(选择重传)
W= (MAX_SEQ + 1) / 2

 

发送方和接收方的窗口大小 W=((MAX_SEQ+1))/2,原因是防止窗口重叠,在确认帧丢失的情况下而导致的数据错误

接收方在某个帧出错后继续接受和缓存后续发送的数据包,直到整个窗口的填满后,把帧进行排序后才传递给网络层。

5.掌握PAR/ARQ

ARQ自动重复请求/PAR带有重传的肯定确认

接收方无误,发送确认帧

6.掌握Internet上的数据链路协议

高级数据链路控制(HDLC)

面向位的数据链路协议

特性:

  • 面向比特、 同步传输( bit-synchronous)

工作原理:数据帧的可靠传输

  • 面向连接(建立/释放逻辑连接)
  • 流控制(滑动窗口seq/ack )
  • 差错控制( go back n / select repeat)

点到点协议PPP

面向字符的数据链路协议

PPP 是一种在链路上传输分组的常用方法

  • 采用字节填充的帧界法 (0x7E)
  • “无序号幁” (无确认无连接) 用于承载IP分组
  • 采用校验和检错

3个主要特性:

  •  成帧:毫无歧义地区分出一帧的结束和下一帧的开始
  • 链路控制协议(LCP)
  • 网络控制协议(NCP)

PPP两种认证协议: PAP and CHAP

PAP是一种简单的明文验证方式

CHAP是一种加密的验证方式,能够避免建立连接时传送用户的真实密码

PPP的帧格式

PPP成帧是面向字节填充的:

具体细节可以参考上面的字节填充法, 因为PPP重用了HDLC的技术,所以PPP使用标志字(0x7E  01111110)来标记帧的起始,使用0x7D来作为转义字符,具体操作如下:

1. 使用0x7E来标记帧的开始

2.  如果在Payload中存在0x7E则在该字节前,填充 0x7D,吧 0x7E 和 0x20  进行异或运算,对出现的0x7D 同样处理  0x7E --> 0x7D 0x5E   0x7D --> 0x7D 0x5D

3. 若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码和0x20进行异或处理

接收方接收到帧后进行下面处理:

在帧中遇到0x7D 就把0x7D删除,在把紧跟在0x7D 后的字节和0x20进行异或运算,就得到对应的数据

  • 地址域:固定为11111111 ,可省略
  • 控制域:缺省为00000011,即无序号帧(即毋需确认),可省略
  • 协议域:不同的协议不同的代码
  • 载荷域:可变长,缺省1500字节
  • 校验和:缺省为2字节,也可定义为4字节

LCP ( Link Control Protocol)提供了建立、配置、维护和终止点对点链接的方法

PPP的工作过程

  • 发送端PPP首先发送LCP帧,以配置和测试数据链路
  • 在LCP建立好数据链路并协调好所选设备之后,发送端PPP发送NCP帧,以选择和配置一个或多个网络协议
  • 当所选的网络层协议配置好后,便可将各网络层协议的分组发送到数据链路上
  • 配置好的链路将一直保持通信状态,直到LCP帧或NCP帧明确提示关闭链路,或有其它的外部事件发生(如用户干预等)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这波lucio来全学了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值