[计算机网络基础]数据链路层(第一部分)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[计算机网络基础]数据链路层(第一部分)相关的知识,希望对你有一定的参考价值。

一:数据链路层的组帧:

 组帧:网络层的IP数据报向下传送至数据链路层,成为数据链路层的数据单元,给数据单元加上首部和尾部,就组成数据链路层的一个帧。如图所示:

技术分享

其中规定数据链路层帧的数据单元所能传送的最大数据长度(Max Transfer Unit),j加首部和尾部的最重要的作用就是帧定界。

特别的当帧的数据部分完全是由ASCII码编码形成的文本文件时,帧的首部和尾部可以使用特殊的帧界定符。即:

 

 

技术分享

 

在ASCII码中规定SOH(start of headline)为标题首部,在数据链路层规定为帧的首部,EOT (end of transmission)为传输结束,在数据链路层规定为帧的尾部,其中SOH的十六进制为01,EOT的十六进制为04。当帧的数据部分不是完全由ASCII码编码的文本文件时我们则不可以使用这种方法来规定首部和尾部。

 

二:数据链路层的组帧上的透明传输:

由上面如果我们传送的帧数据部分完全是由ASCII码编码的文本文件时,使用SOT和EOT作为帧的首部和尾部是非常适合接收端识别每一个帧,和每一个帧里面包含的数据部分。当时当我们帧的数据部分不在完全是由ASCII码编码的文本文件时,数据部分传送的是图片和二进制计算机程序时,我们很难保证每一帧的数据部分没有和SOT和EOT一样的十六进制编码,如果数据部分出项十六进制的04,接收端在收到数据时,会错误的判断改帧一结束。

 

 技术分享

 这种情况不是我们希望看见的。所以我们引入了一些方法来,最大程度上支持数据链路层的透明传输特性。

方法一:字符填充法

字符填充法和我们再写代码时的转义字符一样。比如再上图中,帧的数据部分爷出现了SOH,我们在其前加一个转义字符ESC。 数据链路层的发送发在发送帧时,会查看帧的数据部分,如出现SOH和EOT就在其前面加一个转义字符ESC,接收方在收到帧时,查看帧中的数据部分,如果“看见”ESC和SOH或EOT在一起,就删除EOT.如果发送方的帧的数据存在ESC,那么我们可以在ESC前面在加一个ESC(这是我臆造的想法,不同的协议再做透明传输控制时都会根据实际情况做的很灵活,比如共享以太网根本就不存在帧的首部和尾部,他通过每发送一个帧后都等待一段时间才发送下一个帧。而PPP协议的帧虽然也是用字符填充的方法,但和这里讲的思路一致,但做得很灵活)

方法二:零比特填充法

零比特填充法,它使用一个特殊的比特模式,如帧首和帧尾为01111100,在数据部分,每出现5个1,就在其后加一个0,接受方做其逆操作。

方法三:字符计数法

字符计数法,在帧首使用一个计数字段,记录帧的数据部分有多少的字符。

 方法四:违规编码法

在物理层比特编码通常采用违规编码。例如,曼彻斯特编码将数据比特“1”编码为“高-低”电平,数据比特“0”编码为“低-高”电平,而“高-高”,“低-低”电平在编码中是违规的,可以依次检查接收到的帧的正确性。

 

三:数据链路层的差错检验

数据在通信信道中传输不可能是理想的,如在传输过程中,1可能变成0,0变成1。这种错误我们称为比特差错。下面所有的差错检验都是针对比特差错的。

在理解数据链路层的差错检验技术的原理,需要一些前置知识。

前置知识:

 

 

 

方法一:奇偶校验码。(只能检错

原理:它是由n-1位信息元和1位校验元组成,可以表示成为(n,n-1)。如果是奇校验码,在附加上一个校验元以后,码长为n的码字中“1”的个数为奇数个;如果是偶校验码,在附加上一个校验元以后,码长为n的码字中“1”的个数为偶数个。

 

方法二:循环冗余校验码 (只能检错)

原理:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码也叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。 校验码的具体生成过程为:假设发送信息用信息多项式C(X)表示,将C(x)左移R位,则可表示成C(x)*x的R次方,这样C(x)的右边就会空出R位,这就是校验码的位置。通过C(x)*2的R次方除以生成多项式G(x)得到的余数就是校验码。

 

方法三:海明码校验(CRC)(检错和纠错

 

以上是关于[计算机网络基础]数据链路层(第一部分)的主要内容,如果未能解决你的问题,请参考以下文章

计算机网络入门基础篇——数据链路层(下)

Python面试重点(进阶篇)

计算机网络-----数据链路层

计算机网络--数据链路层

计算机网络-数据链路层介质访问控制协议(MAC协议)

计算机网络—— 数据链路层:媒体接入控制MAC