数据链路层解读
基本介绍
概述
?数据链路层使用的信道主要有两种类型
- 点对点信道。使用一对一的点对点通信方式的信道。
- 广播信道。使用一对多的广播通信方式的信道。由于广播信道上连接的主机很多,必须使用专用的共享信道协议来协调这些主机的数据发送,因此通信过程比较复杂。
?不同的链路层可能采用不同的数据链路层协议
帧是数据链路层的协议数据单元。帧由首部、数据部分和尾部组成。首部含有帧的控制信息(如地址、控制等),尾部包含帧校验序列,数据部分作为存放IP数据报的数据域。
物理链路与数据链路
?物理链路 (link,链路)?? 指相邻两结点之间无源的物理线路段,中间没有任何其他的交换结点。
当两台计算机通信时,其通路是由多条链路串接构成的,这说明一条链路只是一条通路的一个组成部分。
数据链路(datalink,逻辑链路)??? 由物理线路以及实现通信协议的硬件和软件组成的。数据链路层协议(即链路控制规程)是在不太可靠的物理链路上实现可靠的数据传输所必不可少的。
网络适配器(即网卡)是实现这些协议的硬件和软件,它通常具有数据链路层和物理层的功能。
?功能
通常在两个对等的数据链路层之间画出一个数字管道,而在这条数字管道上传输的数据单位是帧。
早期的数据通信协议曾叫作通信规程(procedure)。因此在数据链路层,规程和协议是同义语。?
数据链路层在物理层提供服务的基础上向网络层提供服务。其基本任务是:把网络层下传的IP数据报封装成帧往下传给物理层,从物理层接收到的无差错帧中提取IP数据报上交给网络层,对差错帧则将其丢弃。? ??
数据链路层的主要功能
- 链路管理 数据链路的建立、维持和释放。
- 帧定界?? 接收方应当从收到的比特流中准确地区分出一帧的开始和结束,即确定帧的边界位置。
- 透明传输?? 任意的比特组合数据均可正确传输。
- 流量控制?? 其实质是控制发送方的发送数据速率,不应超过接收方所能承受的能力。
- 差错检测?? 通常采用发送端对被传输的比特流后面附加差错检测码,接收端重新计算检测码,两者进行比较,判别差错存在与否。?????
三个基本问题
点对点信道的数据链路层协议要解决三个基本问题:
- 帧定界
- 透明传输
- 差错检测?
帧定界?
帧定界(framing)就是从传送的比特流中正确地区分出帧的边界
帧定界采用的几种方法:
字节填充法?? 采用一些特定的控制字符来定界一帧的开始和结束。
当PPP使用异步传输时,我们使用0x7D(01111101)作为转义符,转义的规则如下:
-
把信息字段中出现的每一个0x7E字节转变为2字节序列(0x7D,0x5E)。
-
若信息字段中出现一个0x7D的字节(即出现了和转义字符一样的比特组合),则把转义字符0x7D转变为2字节序列(0x7D,0x5D)。
-
若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。例如,出现0x03(在控制字符中是“传输结束”ETX)就要把它转变为2字节序列的(0x7D,0x31)。
在字节填充法中,采用字节填充技术。被填入的字节是转义字节(ESC)。?
比特填充法?? 采用一特定的比特组合01111110来定界一帧的开始和结束,是目前最常用的方法。
采用“零比特插入、删除”技术来解决传送的数据信息中出现特定比特组合的问题。?
零比特填充相较字节填充要简单得多,0x7E的二进制表示是01111110,因此只要在每出现5个1时插入一个0就可以避免在数据中出现0x7E.
字节计数法?? 采用一特定字符来表示一帧的开始,随后使用一个字节计数字段指明该帧所要求传输的字节数。
此法仅应用于DDCMP规程中,存在的问题在于字节计数值在传输过程中出现错误,就无法确定帧的结束边界。?
非法比特编码法?? 采用非法编码作为帧的边界。?
此法仅适用于物理媒体上采用特定比特编码的场合。例如,在局域网中采用双相码传输时,每个码元的中点都存在电平跳变。显然,对于码元中点不发生电平跳变的比特编码就属于非法比特编码,这种非法比特编码就可用作帧的定界?
透明传输?
?透明传输是指不管链路上传输的是何种形式的比特组合,都不会影响数据传输的正常进行。
- 在字节填充法中,采用字节填充技术。被填入的字节是转义字节(ESC)。
- 在比特填充法中,采用“零比特插入、删除”技术。如插入特定的比特组合“01111110”。
- 在字节计数法中,采用字节计数字段指明所要传输的字节数。
?采用字节填充技术的透明传输举例
若传送的数据中出现控制字符,则采用插入一个转义字符“ESC”(1BH)来解决。如果转义字符也出现数据当中,应在转义字符前面再插入一个转义字符。在接收端应删除其插入的转义字符
?
差错控制?
数据信号在传输过程中可能会产生差错:1 可能会变成 0 ,而 0 也可能变成 1。
误码率 BER (Bit Error Rate)是衡量传输差错的度量指标。该指标表示:在一段时间内,传输错误的比特占所传输比特总数的比率。
误码率与信噪比有着很大的关系。为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。循环冗余检验CRC是数据链路层被广泛采用的一种差错检测技术。
注意
- 帧校验序列FCS与CRC有着不同的含义。CRC指的是一种检错方法,而FCS则是添加在数据域后面起着检错作用的冗余码。
- 循环冗余检验CRC差错检测技术只能做到无差错接受。“无差错接受”是指:“凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于1的概率认为这些帧在传输过程中没有产生差错”。换句话说,凡是接收端数据链路层接受的帧都没有传输差错(有差错的帧就丢弃而不接受)。
- 要做到“可靠传输”(即发送什么就收到什么)就必须再加上确认和重传机制。
习题讲解?
数据链路层协议使用了下面的字符编码:A:01000111 B:11100011 FLAG:01111110 ESC:11100000。为了传输一个包含4个字符的帧:A B ESC FLAG,试问使用下面哪种成帧方法时所发送的比特序列是什么(二进制表示)?(1)字节计数(2)字节填充的标志字节(3)比特填充的标志字节
- (1)字节计数法需要帧的长度信息,所以一共需要发送5个字节。发送序列为:00000100(表示4)01000111 (A)11100011 (B)11100000(ESC)01111110 (FLAG);
字节计数法需要帧的长度信息,也就是需要用同样的长度和二进制来表达对应的总共的字节的数量,所以是4,所以一共需要发送5个字节。
- (2)FLAG是起始、结束标志。所以发送序列为:01111110(FLAG) 01000111(A) 11100011(B) 11100000(ESC) 11100000(ESC) 11100000(ESC)01111110(FLAG)01111110(FLAG)
FLAG是起始、结束标志。也就是必须在开头和结尾之中加上对应的转义符号,然后对于其中本身已经是转义符号的东西还要在前面加上另外的转义符号,所以一共是加上了2个esc和两个flag
- (3)数据中若遇到连续5个1则在其后添加0。所以发送序列为:01111110(FLAG)01000111(A)110100011(B)111000000(ESC)011111010 (FLAG)01111110 (FLAG)
?比特填充方法就是数据中若遇到连续5个1则在其后添加0,然后本身还要有flag的结束和开头。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!