组帧的几种方法和CRC与海明码

目录

基本概念

功能概述

组帧

组帧的四种方法:

1、字符计数法

2、字符(节)填充法

3、零比特填充法

4、违规编码法

 差错控制

循环冗余码CRC(检错编码)

海明码(校验纠错)


基本概念

节点:主机、路由器

链路:网络中两个结点之间的物理通路,链路的传输介质主要有双绞线、光纤和微波,分为有线链路和无线链路

数据链路:网络中两个结点之间的逻辑通路,把实现控制数据传输协议的硬件和软件加到链路上就构成了数据链路

:链路层的协议数据单元,封装网络层数据报

数据链路层负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报

节点被认为是一个实体,有处理能力,比如网络上的一台计算机。

结点则只是一个交叉点,像“结绳记事”,打个结,做个标记,仅此而已。

还有就是, 要记住:一般算法中点的都是结点

透明传输

不管所传数据是什么样的组合,都应当能在链路上传输

当如果所传的比特组合恰巧和某一个控制信息一样,就必须采取措施

功能概述

数据链路层在物理层提供服务的基础上向网络层提供服务。

最基本的服务就是把源自网络层的数据可靠的传输到相邻节点的目标机网络层。

主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路(目标

功能

1、为网络层提供服务,无确认无连接服务(比如实时通信),有确认无连接服务(比如无线通信),有确认面向连接服务

有连接一定有确认

2、链路管理即连接的建立、维持、释放(用于面向连接的服务)

3、组帧

4、流量控制

5、差错控制

组帧

组帧的几种方法和CRC与海明码_第1张图片

 封装成帧就是在一段数据的前后部分添加首部和尾部,首部和尾部包含许多控制信息,他们的一个重要作用:帧定界(确定帧的界限)

帧同步:接收方应当能从接收到的二进制比特流中区分出帧的起始和结束(帧同步是对接收方而言的)

组帧的四种方法

1、字符计数法

组帧的几种方法和CRC与海明码_第2张图片

 帧首部使用一个计数字段来标明帧内字符数

  但如果出错,比如第一个变为4,那么剩下的部分就全部出错了

2、字符(节)填充法

组帧的几种方法和CRC与海明码_第3张图片

 在前后使用一个首位定界符,定界符不一定非要用上图那个

如果内容是文本文件组成,由于文本文件都是从键盘输入,因此都是ASCII码,所以不会与上面的首位定界符相同,因此可以透明传输

但如果传送的帧是由非ASCII码的文本文件组成时(二进制代码的程序和图像)就要采用字符填充方法实现透明传输

组帧的几种方法和CRC与海明码_第4张图片

 在上面加上转义字符

3、零比特填充法

组帧的几种方法和CRC与海明码_第5张图片

上图帧首部和尾部有6个1

在数据部分只要碰上5个1那么就在后面加上一个0,比如1111110111110 变为111110101111100

那么在收到以后,先根据六个1找到边界,然后扫描数据部分,只要碰到五个1那么就删除后面的0

因此此种方法在传送可以传送任意比特组合,而不会引起对帧边界的错误判断

4、违规编码法

组帧的几种方法和CRC与海明码_第6张图片

 差错控制

循环冗余码CRC(检错编码)

在数据发送之前,先按某种关系附加一定的冗余位,构成符合某种规则的码字后再发送,当要发送的有效数据变化时,相应的冗余位也会发生变化,接收方根据收到的码字是否符合原规则从而判断是否出错

要传的数据加上余数(冗余码) 

接收方除以多项式,如果余数为0那么就是没有错误

具体例子

比如要发送的数据是1101 0110 11 采用CRC校验,生成多项式10011,求最终发送的数据

1、加0 假设生成多项式的阶为r,则加r个0

10011的多项式X^{4}+X^{1}+X^{0} 所以阶为4,需要加4个0  或者多项式N位,阶为N-1

加0后变为1101 0110 11 0000

2、数据加0后除以多项式,余数为冗余码

组帧的几种方法和CRC与海明码_第7张图片

 因此最终要发送的数据为1101 0110 11 1110

接收方将收到的数据除以同样的除数,然后检查得到的余数,如果余数为0那么就确认接受,否则将会丢弃这个帧

可靠传输:链路层发送什么,接收端就接收什么

链路层使用CRC检验,能够实现没有比特差错的传输,但还不是可靠传输

数据链路编码VS物理层编码

物理层编码针对的是单个比特,解决传输过程中比特的同步问题,如曼彻斯特编码。

数据链路层的编码针对的是一组比特,他通过冗余码的技术实现一组二进制比特串在传输过程中是否出现差错

海明码(校验纠错)

1、求海明码位数

公式:2^{k}≥N+k+1,其中N为有效信息位数,K为校验码位数。

栗子:编码前有效信息为10011101,求校验码位数? k从1开始代,找到能够维持的k最小的

2、求海明码位置

校验码只能放在2^{n}2^{0}2^{1}2^{2}...)位置 

组帧的几种方法和CRC与海明码_第8张图片 比如上图,有三位校验码,先放上,再将剩下的1100依次填入

3、求校验码的值

组帧的几种方法和CRC与海明码_第9张图片

 观察可以发现 每个校验码的序号只有一个1(2的几次方都有且仅有一个1),那么它就会管住除了1以外的序号,比如x4,它的二进制序号为100,那么它能管住1**,也就是它能管住111、110、101,x2能管住011、111、110

如果采用偶校验,4号校验码负责4,5,6,7 其对应的数为 * ,0,1,1 偶校验需要偶数个1 所以4号位应该是0

同样2号校验码负责2,3,6,7 那么2号校验码为0

这样将各位都求出来

4、检错并纠错

组帧的几种方法和CRC与海明码_第10张图片

 x4 : 4、5、6、7 对应的值为0、1、1、1 进行异或操作得到值为1

x2: 2、3、6、7对应的值为0、0、1、1 进行异或得到的值为0

x1:1、3、5、7对应的值为1、0、1、1进行异或操作得到的值为1

正着写即101即第五位 修改第五位的值

你可能感兴趣的:(计算机网络,计算机网络)