第三章
1数据链路层功能概述
1)数据链路层基本概念:
结点:
① 主机
②路由器
链路:
网络中两个节点之间的物理通道,链路的传输介质主要有双绞线,光纤,微波,分为有线链路,无线链路
数据链路:
网络中两个节点之间的逻辑通道,把实际控制数据传输协议的硬件和软件加到链路上就构成数据链路
帧:
链路层的协议数据单元,封装网络层数据报
数据链路层负责通过链路从一个节点向另一个物理链路相邻的结点进行传输数据报
- 数据链路层在物理层基础上服务的提供上,向网络层提供服务。其基本的服务在于将源于网络层的数据可靠的传输到相邻节点的目标机网络层。其主要作用是加强物理层传输原始比特流的能力,将物理层提供的可能出错的物理连接改造为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。
例子:
2)数据链路层的功能:
功能一:
为网络层提供服务
①无确认无连接服务
②有确认无连接服务
③有确认面向连接服务
功能二:
链路管理
即连接的建立,维持以及释放(确认面向连接的服务)
功能三:
组帧
功能四:
流量控制
主要控制发送方的发送速度
功能五:
差错控制(帧错/位错)
2封装成帧和透明传输
1)封装成帧:
-
封装成帧就是在一段数据的前后增加首部以及尾部,这样就构成了一个帧。接收端收到物理层传输过来的数据后,就能根据头部以及尾部的标记,从收到的比特流中识别帧的开始以及结束
-
首部和尾部是包含了很多信息,他们的一个重要的作用是:帧定界(确定帧的界限)
帧同步:
接收方应该能从接收到的二进制比特流中区分出帧的开始以及结束
- MTU是帧所裹带的数据最大限度,MTU根据不同的链路层协议会有不同的限度
组帧的四种方法:
①字符计数法:
帧首部使用一个计数字段(第一个字节,八位)来表明帧内字符数
缺点:
如果其中有一个帧首部里的字符计数的数据发生错位,那就会导致后面的数据发生错误
②字符(节)填充法:
帧的组成部分:
- 在帧首部以及帧尾部采用一个字节组合来分为确认帧首部以及帧尾部
- 这样可能中间会发生与帧首部以及帧尾部一致的二进制bit组合,这样就容易发生问题。
在数据传输的时候有两种情况:
当传送的帧是由文本文件组成的时候(文本文件的字符都是从键盘上输入的,都是ASCll码)。不管从键盘上输入什么字符都可以放在帧里传送过去,即透明传输
当传送的帧是由非ASCll码的文本文件组成的时候(二进制代码的程序或图像等),就要采用字符填充方法实现透明传输
在数据的中间找到了与帧尾部一致的二进制组合,所以错误的找到了帧的边界
解决方法:
使用转义字符来将数据中可能产生歧义的字符(节)–与帧首部,帧尾部以及转义字符一样的字符进行转义
③零比特填充法:
操作步骤:
第一步:在发送端,,扫描整个信息字段,只要连续5个1,就立即在5个1后面填入一个0
第二步:在接收端收到一个帧的时候,先找到标志字段确定边界,再用硬件对比特流进行扫描,发现连续5个1时,就把后面的0删除
- 这样就保证了透明传输,在传送的比特组合中可以传送任意的比特组合,而不会对帧边界的判断发生错误
④违规编码法:
曼切斯特编码的高电平是高低顺序组合而成的,而低电平是由低高顺序组合而成的。那么其中不会用到的高高组合以及低低组合就可以用来作为帧首部和帧尾部用来甄别一个帧的长度
2)透明传输:
- 在数据链路层,无论是什么样的比特组合,都应当能够在链路上传送,因此数据链路层就看不见有什么东西在妨碍数据的传输
- 当所传输的数据比特组合完全与某种控制信息完全一致的时候,就必须采取适当的措施,使得接收方不会将这样的数据识别为某种控制信息。这样才能保证数据链路层的传输是透明的
3差错控制
1)差错的来源:
传输中的差错都是由噪声造成的。差错分为全局性差错以及局部性差错。
①全局性的噪声
由于线路本身得电气特性所产生的随机噪声(热噪声),是信道固有的,随机存在的
②局部性的噪声:
外界特定的短暂原因所造成的冲击噪声,是产生差错的主要原因
局部性噪声的解决方法:
- 通过编码技术来解决
2)差错的类型
差错的类型分为位错以及帧错
①位错:
比特位出错,1变成了0或者0变成了1
②帧错:
a:丢失了其中的帧
b:将其中某些帧重复发送了
c:将帧的顺序搞错了
3)采取两种方式进行差错控制:
一:检错编码
检错编码方式有奇偶校验码以及循环冗余CRC。
①奇偶校验码
奇偶校验码的构成:
- n-1位信息元
- 1位校验元
奇偶校验码的分类:
- 奇校验码:n个信息位中,其中“1”的个数为奇数
- 偶校验码:n个信息位中,其中“1”的个数为偶数
②循环冗余码CRC:
循环冗余码的构成:
- 要传的数据
- 生成的多项式
- PCS帧检验序列/冗余码
发送端
将原数据通过与多项式相运算,得到冗余码,再将冗余码与原数据相运算得出最终要传送的数据
接收端:
拿到数据后,经过多项式运算,得到一个余数,通过这个余数判断这过程中是否发生错误。如果没有出错,余数肯定是某一个固定得值
计算冗余码的步骤:
第一步:在二进制原数据后面加多项式的阶数个0
-
假设生成多项式的G(x)的阶为r,则加r个0
-
多项式为N位,那么阶就是N-1位
第二步:模2除法:
- 数据加0后除以多项式,余数为冗余码/FCS/CEC校验码的比特序列