网络基础之数据链路层

数据链路层概述

数据链路层(Data Link Layer,DLL)是OSI七层参考模 型的第二层,属于低三层中的中间一层。数据链路可以粗 略地理解为数据通道。物理层要为终端设备间的数据通信 提供传输媒体及连接。
数据链路层协议是为收发对等实体间保持一致而制定的, 也为了顺利完成对网络层的服务。数据链路层协议分为 “面向字符”和“面向比特”两类。

1.面向字符的链路层协议
  1. ISO的IS1747~1975:称为“数据通信系统的基本型控制 规程”,利用10个控制字符完成链路的建立、拆除及数据 交换。对帧的收发情况及差错恢复也是靠这些字符来完成 的。如基本型传输控制规程及其扩充部分(BM和XBM) 协议。

  2. IBM的二进制同步通信规程(BSC)。

  3. DEC的数字数据通信报文协议(DDCMP)。

  4. PPP(点对点协议)。

2.面向比特的链路层协议
  1. IBM的SNA网络使用的数据链路协议SDLC (Synchronous Data Link Control),同步数据链路控制 协议);
  2. ANSI修改SDLC协议后,提出的ADCCP(Advanced Data Communication Control Procedure,高级数据通信 控制规程);
  3. ISO修改SDLC协议后,提出的HDLC(High-level Data Link Control,高级数据链路控制);

数据链路层的主要功能

数据链路层最基本的服务是将源计算机网络层传来的数据 可靠地传输到相邻节点的目标计算机的网络层。
主要的功能如下:

  1. 帧同步
  2. 差错控制
  3. 流量控制
  4. 链路管理
  5. 透明传输

帧同步

为了向网络层提供服务,数据链路层必须使用物理层提供 的服务。而物理层是以比特流进行传输的,这种比特流传 输并不保证在数据传输过程中没有错误,接收到的位数量 可能少于、等于或者多于发送的位数量。而且它们还可能 有不同的值,这时数据链路层为了能实现数据有效的差错 控制,就采用了一种“帧”的数据块进行传输。而要采帧 格式传输,就必须有相应的帧同步技术,这就是数据链路 层的“成帧”(也称为“帧同步”)功能。

1.字符计数法

这种帧同步方法是一种面向字节的同步规程,是利用帧头 部中的一个域来指定该帧中的字符数,以一个特殊字符表 征一帧的起始,并以一个专门字段来标明帧内的字符数。

同步原理

接收方可以通过对该特殊字符的识别从比特流中区分出帧 的起始,并从专门字段中获知该帧中随后跟随的数据字符 数,从而可确定出帧的终止位置。
例如:DEC公司的数据通信报协议
DEC公司
常见标志:

  1. SOH:报头开始标志
  2. STX:文本开始标志
  3. ETX:文本终止标志
  4. EOT:发送完毕标志
  5. ACK:确认标志
  6. DLE:转义标志
  7. CRC:循环冗余校验
2.字符填充的首位定界符法

该同步方法是用一些特定的字符来定界一帧的起始与终止, 充分解决了错误发生之后重新同步的问题。

同步原理

在这种帧同步方式中,为了不使数据信息位中与特定字符 相同的字符被误判为帧的首尾定界符,可以在这种数据帧 的帧头填充一个转义控制字符DLE STX,Data Link Escape – Start of Text),在帧的结尾则以DLE ETX (Data Link Escape-End of Text)结束,以示区别,从而达到数据的透明性

在实际应用中为逆逻辑
即:DLESTX为开始,DLEETX为结束,这会使得转义量大大减少。

3. 比特填充的首位定界符法

是以一组特定的比特模式 (如01111110)来标志一帧的起始与终止,它允许任意 长度的位码,也允许任意每个字符有任意长度的位。它的 工作原理是在每一帧的开始和结束位置都加上一个特殊的 位模式,如01111110。当发送方的数据链路层传到数据 中5个“1” (因为特定模式中是有5个连续“1”)时, 自动在输出位流中填充一个“0”。在接收方,当收到连 续5个“1”,并且后面位是“0”时,自动删除该“0”位。 就好像字节填充过程对于双方计算机中的网络层是完全透明的一样。

4.违法编码

该法在物理层采用特定的比特编码方法时采用。例如,曼 彻斯特编码方法,是将数据比特“1”编码成“高—低” 电平对,将数据比特“0”编码成“低—高”电平对。而 “高—高”电平对和“低—低”电平对在数据比特中是违 法的。可以借用这些违法编码序列来界定帧的起始与终止。 局域网IEEE 802标准中就采用了这种方法。

差错控制

在解决了标识每一帧的起始和结束位置问题之后,还需要 解决数据传输中的差错控制问题。就是如何确保所有的数 据帧最终在递交给目标计算机上的网络层时,能保证数据 的完整性,并且保持正确的顺序。
在差错控制功能中,主要采取纠错码、检错码、反馈检测、 自动重发等重传技术。
通信信道的噪声分为两类:热噪声冲击噪声

差错编码方案

差错校验是采用某种手段去发现并纠正传输错误,发现差 错甚至能纠正差错的常用方法是对被传送的信息进行适当 的编码,它是给信息码元加上冗余码元,并使冗余码元与 信息码元之间具备某种关系,然后将信息码元和冗余码元 一起通过信道发出。接收端接收到这两种码元后,检验它 们之间的关系是否符合发送端建立的关系,这样就可以检验传输差错,甚至可以纠错。能校验差错的编码称检错码 (Error-detecting Code),可以纠错的编码称纠错码 (Error-correcting Code)。

奇偶校验

奇偶校验(Parity Check)是检验所传输的数据是否被正 确接收的一种简单方法。发送方根据发送的字符后附加一 个校验位0或1,接收方检查此位是否还保持数据位的正确 关系,以判断是否正确传输,奇偶校验有奇校验和偶校验 等方式。

例如:100101 的偶校验:1。数据中有三个1再增加一个1,1的个数为偶数即可

CRC校验

循环冗余校验(Cyclic Redundancy Check,CRC)即 CRC校验,它是数据链路层中广泛采用的校验方式,在数据后面附加上用于差错校验的冗余码,在数据链路层的帧 结构中称为帧校验序列(Frame Check Sequence, FCS)。

冗余码的位数常用的有12、16和32位,一般附加的用于 校验的冗余码的位数越多,检错能力就越强,但传输的额 外开销也越大。

例如:约定检错码为:m = 10011,数据为 r = 10101100冗余码的计算:
已知检错码m有5位

  1. 在10101100后增加 m-1 =4个0,即为:r1 = 101011000000;
  2. 将增加之后的数据 r1 和检错码 m 异或取值,例如数据前五位:10101异或10011=00110
  3. 将前两位0去除剩下110
  4. 再将110用 r1 五位之后的补齐,得到下一次异或数据:11010以此类推,得到最终无法异或
  5. 得到00011,取最后四位为冗余码,即0011;
  6. 最终传输到对端数据为:101011000011;

有时检错码会以: C = x 4 + x + 1 C=x^4+x+1 C=x4+x+1 以多项式的系数为检错码:10011 。

海明验证

在纠错码方案中,“海明码”是一种典型的纠错方案。海 明码是一种可以纠正一位或多位差错的编码。它利用在信 息位为m位,增加r位冗余位,构成一个n=m+r位的码字, 然后用r个监督关系式产生的r个校正因子来区分无错和在 码字中的n个不同位置的一位错。它必须满足以下关系式: 2 r − 1 ≥ m + r 2^r-1\geq m+r 2r1m+r
其中 2 r 2^r 2r为编码能力,即有几种类型,减去1是减掉了全部正确的情况。

校验位必须放在权得位置,即:1、2、4、8……

例如:数据为:1101,使用海明校验(采用偶校验),求出其海明编码。
已知有4位有效信息即m = 4;
根据公式: 2 r − 1 ≥ m + r 2^r-1\geq m+r 2r1m+r求得r = 3,那么n = 3+4 = 7;
若定义信息为:a[3];
校验位为:b[2];
那么各序号之间得对应关系为:

海明序号海明编码
1b[0]
2b[1]
3a[0]
4b[2]
5a[1]
6a[2]
7a[3]
1234567
1101

检验码求算:

  1. 找的b[0]列对应得√,
  2. 在这一行中有3、5、7列有值,
  3. 对他们进行偶校验,得到b[0]=1

以此类推求算出所有检验码,b = [1, 0, 0]

所以最终发送到对端得数据为:1010101

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值