数据链路层差错检测:CRC(循环冗余检验)

 

1、循环冗余检验(CRC):

在发送端,先把数据划分为祖,假定每组K个比特。现假定待传送的数据M = 101001(k=6)。CRC运算就是在数据M后面添加提供差错检测的n位冗余码,然后构成一个帧发送出去,一共发送(k+n )位。在所要发送的数据后添加冗余码,显然增大了数据传输的开销,但却可以进行差错检测。当传输可能出现差错时,付出的代价往往是很值得的。

2、n位冗余码计算:

用二进制的模2运算进行2^n乘M的运算,这相当于在M后面添加n个0 ,得到的(k+n )位的数除于收发双方实现商定的长度为(n + 1)位的除数P,得出的商是Q而余数是R(n位,比P少一位)。

3、除数P:

用生成多项式P(X)表示上面的除数(假定n+1位),P(X) = X^3 + X^2 + 1则P = 1101。

即P(X) = X^n+ X^(n-2) + ….+ X^2 +1 , P = 101…101。

4、检测:

在接收端把收到的数据以帧为单位进行CRC检测:把收到的每一个帧除于同样的除数(模2运算),然后检查得到的余数R,如果传输过程无差错,经过CRC检测得到的余数肯定是0 。

 

1)、R = 0,则判定这个帧没有差错,就接受。

2)、R!= 0,则判定这个帧有差错,就丢弃。

 

5、例子:

M = 101001 (即 k = 6)。假定除数生成多项式P(X) = X^3 + X^2 + 1;则除数P 为1101 (即 n = 3)。经模2 除法运算的结果余数R = 001 ,这个余数就作为冗余码拼接在M的后面发送出去。这种为了进行差错检测添加的冗余码常称为帧检验序列FCS。因此加上冗余码之后发送的帧是101001001(即2^n M + FCS)。


在数据链路层,发送端帧检验序列FCS的生成和接收端的CRC 检验都是用硬件完成的,处理很迅速,因此并不会延误数据的传输。最后强调,在数据链路层仅仅使用CRC差错检测技术,则只能做到对帧的无差错接受,但还不是可靠传输。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/459411.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法导论笔记:25所有节点对的最短路径问题

本章考虑在给定的有向加权图G(V, E),对于所有的节点u,v∈V,找到一条从节点u到节点v的最短路径。希望以表格的形式表示输出:第u行第v列给出的是节点u到节点v的最短路径权重。 对于这个问题,如果是运行|V|次单源最短路径算法来解决所…

iOS开发~UI布局(二)storyboard中autolayout和size class的使用详解

一、概要:前一篇初步的描述了size class的概念,那么实际中如何使用呢,下面两个问题是我们一定会遇到的:1、Xcode6中增加了size class,在storyboard中如何使用? 2、auto layout该如何与size class配合来进行…

Linux:守护进程解析、如何实现守护进程

1、守护进程: 守护进程也称精灵进程(Daemon),是运行在后台的⼀一种特殊进程。它独立于控制终端且周期性地执行某种任务或等待处理某些发生的事件。守护进程是⼀一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。比如…

CAS实现单点登录方案(SSO完整版)

一、简介 1、cas是由耶鲁大学研发的单点登录服务器 2、本教材所用环境 Tomcat7.2JDK1.7CAS Service 版本 cas-server-3.4.8-releaseCAS Client版本 cas-client-3.2.1-release 二、生成证书 证书对于实现此单点登录非常之重要&#xff0…

PHP、C#、通用的DES加密

2019独角兽企业重金招聘Python工程师标准>>> PHP class JoDES {private static $_instance NULL;/*** return JoDES*/public static function share() {if (is_null(self::$_instance)) {self::$_instance new JoDES();}return self::$_instance;}/*** 加密* para…

如何防止头文件被重复包含或引用?

一、#pragma once ( 比较常用) 只要在头文件的最开始加入这条指令就能够保证头文件被编译一次,这条指令实际上在VC6中就已经有了,但是考虑到兼容性并没有太多的使用。 #pragmaonce是编译相关,就是说这个编译系统上能用&#xff…

如何解决类模板的分离编译问题?

一模板: 模板不是数据类型,只能算是一种行为集合的表示。编译器在使用模板时,通过更换模板参数来创建数据类型。这个过程就是模板实例化(Instantiation), 从模板类创建得到的类型称之为特例(specialization),说白了就是…

结对项目 刘静 201303014059 计科高职13-2

结对:人:孙帅 博客地址: http://www.cnblogs.com/s3366181/p/4509260.html一、 题目简介 1.所选题目:输出圆的面积 2.编程工具:Eclipse 3、实现功能:用户给定一圆的半径运行程序系统会给出给定半径圆的面…

弹出div或者弹出新窗口的固定位置、固定大小

2019独角兽企业重金招聘Python工程师标准>>> js代码: //打开一个新窗口,固定的位置,固定的大小 //window.open("push_add.html",newwindow, height550, width1000, top200, left500, toolbarno, menubarno, scro…

NAT(网络地址转换)技术与代理服务器原理

一、 Nat技术: NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task Force,Internet工程任务组)标准,允许一个整体机构以一个公用IP(Internet Prot…

原 Linux搭建SVN 服务器2

原 Linux搭建SVN 服务器 发表于1年前(2014-08-05 17:55) 阅读(12257) | 评论(3) 31人收藏此文章, 我要收藏赞3摘要 Linux搭建SVN 服务器目录[-] Linux搭建SVN 服务器1 安装SVN2 使用客户端连接2.1 使用…

网络层核心:路由和路由生成算法

一、路由和路由算法简介: 路由就是通过互连的网络把信息从源地址传送到目的地址的活动。路由发生在OSI网络参考模型的第三层即网络层。 路由引导封包转送,经过一些中间的节点后,到达目的地。把该功能做成硬件的话称为路由器。路由通常根据路…

网络:常见的端口号及分类

一、端口号概念 在网络技术中,端口(Port)包括逻辑端口和物理端口两种类型。物理端口指的是物理存在的端口,如ADSL Modem、集线器、交换机、路由器上用 于连接其他网络设备的接口, 如RJ-45端口、SC端口等等。逻辑端口…

EditPlus 技巧大全:[1]怎么配置PHP编译环境

editplus是一款小巧但功能强大易扩展的文本编辑器,可以通过设置用户工具将其作为C,Java,Php等等语言的一个简单的IDE。 工具/原料 EditPlus v3.3.1 php 5.3.14 方法/步骤 1.打开editplus 2.点击菜单栏“工具” 3.选择下拉菜单的“配置用户工具”,进入配置…

网络:传输层 TCP报文格式解析

一、TCP报文格式 1、为了提供可靠的数据传输,TCP报文首部字段有较多的字段,TCP报文格式如下图: 图2 TCP报文格式 16位源和目标端口(16位):用于多路复用/多路分解来自或送至上层应用的数据,可以…

MATLAB图像小波变换

为什么80%的码农都做不了架构师?>>> 小波变换与小波包变换 人脸图像f(x,y) 的一层小波变换如下图所示: 图中L 和H 分别表示低通滤波器和高通滤波器,l(n) 和h(n) 分别表示它们相应的脉冲响应,2↓1表示降2采样fLL和fHH分…

grunt之Gruntfile(1)

grunt 执行的时候,他会找该目录下的Gruntfile文件,所以,要在目录下创建Gruntfile文件。 下面我demo一个copy任务: 执行copy,首先我们要一个copy的模块,那么我们先安装下copy模块 首先,我到H盘&a…

MyEclipse从数据库反向生成实体类之Hibernate方式 反向工程

2019独角兽企业重金招聘Python工程师标准>>> 开发项目涉及到的表太多,一个一个的写JAVA实体类很是费事。MyEclipse提供简便的方法:反向数据库 步骤大致如下: 第一步: window-->open Perspective-->MyEclipse Java Persisten…

开始nodejs+express的学习+实践(8)

为什么80%的码农都做不了架构师?>>> 1.session使用 介绍的非常详细: http://www.cnblogs.com/chenchenluo/p/4197181.html 对比我们的app.js需要引入express-session模块和使用这个模块,在package依赖,并加载。 我们修…

maven项目部署到linux上的奇葩问题

2019独角兽企业重金招聘Python工程师标准>>> 经常会遇到这样子的问题,maven项目在本地的eclipse配置的好好的,结果一到服务器就运行不起来。 当然遇到这种情况,我们首先会想到环境变量和相关的路径问题,但是当这两个条…