数据校验之Checksum算法

2023-05-16

校验和(Checksum)是网络协议使用的数据错误检测方法,并且被认为比LRC(纵向冗余校验,Longitudinal Redundancy Check,LRC),VRC和CRC(循环冗余校验(Cyclic Redundancy Codes,CRC))更可靠。此方法在发送方使用校验和生成器,在接收方使用校验校验器

在发送方,数据由校验和生成器分为n位长度的相等子单元。该位通常为16位长度。然后使用一个称赞方法将这些子单元加在一起。该和为n位。然后对得到的位进行补充。这个称为校验和的补充和被附加到原始数据单元的末尾,然后被发送到接收器。
 

 



接收器在接收到数据+校验和之后,将其传递给校验和检查器。校验和检查器将此数据单元划分为多个等长的子单元,并将所有这些子单元相加。这些子单元还包含校验和作为子单元之一。然后对结果位进行补码。如果补余结果为零,则表示数据没有错误。如果结果不为零,则意味着数据包含错误,并且Receiver拒绝该错误。

 

 

接收器在接收到数据+校验和之后,将其传递给校验和检查器。校验和检查器将此数据单元划分为多个等长的子单元,并将所有这些子单元相加。这些子单元还包含校验和作为子单元之一。然后对结果位进行补码。如果补余结果为零,则表示数据没有错误。如果结果不为零,则意味着数据包含错误,并且Receiver拒绝该错误。


示例–
如果要发送的数据单元是10101001 00111001,则在发送方站点和接收方站点使用以下过程。

发件人网站:


10101001        subunit 1  
00111001        subunit 2        
11100010        sum (using 1s complement)       
00011101        checksum (complement of sum)  



传输到接收器的数据是–

接收者网站:


10101001        subunit 1  
00111001        subunit 2     
00011101        checksum 
11111111        sum
00000000        sum's complement

Result is zero, it means no error.  

优点:
校验和可检测所有涉及奇数位数的错误以及涉及偶数位数的错误。

缺点:
主要问题是,如果一个子单元的一个或多个位被损坏,一个子单元的一个或多个对应位被损坏,并且第二个子单元中一个或多个相反值的对应位也被损坏,则错误将无法检测到。这是因为这些列的总和保持不变。


示例–
如果与校验和一起发送的数据是10101001 0011100100011101。但是在目的地接收的数据是0 0101001 1 0111001 00011101。

接收者网站:


00101001              1st bit of subunit 1 is damaged
10111001              1st bit of subunit 2 is damaged
00011101              checksum
11111111              sum
00000000              Ok 1's complement  

尽管数据已损坏,但未检测到错误。

 

参考:

https://www.geeksforgeeks.org/error-detection-code-checksum/

https://blog.csdn.net/ZCShouCSDN/article/details/94131769

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据校验之Checksum算法 的相关文章

  • 关于checksum校验和算法

    今天复习计网的时候看到了UDP头部有差错校验 xff0c 其中的checksum算法没理的太清楚 xff0c 索性写一篇博客 xff0c 顺便回顾一下其他的 校验和覆盖的内容 xff1a IP校验和 xff1a IP首部 ICMP校验和 x
  • testpmd csum engine 测试 checksum hw offload

    dpdk版本 xff1a 网卡 xff1a intel E810 测试拓扑如下 xff1a root 64 usr share jmnd sy admin2 0 bin testpmd l 3 5 n 4 a ec 01 1 a ec 09
  • checksum-8位和16位校验和代码示例

    span class hljs comment linux 系统编译通过 span span class hljs comment gcc filename c o filename span span class hljs comment
  • 从 mysql 的校验和表中选择并仅返回校验和(而不是表)

    当我运行 mysql gt CHECKSUM TABLE mytable 时 我得到以下结果 Table Checksum mydb mytable 1679935596 如何在一条mysql语句中选择并仅返回上述结果中的校验和 而不是表
  • 使用 Apache FtpClient 计算 FTP 服务器中的文件校验和

    我正在使用 Apache Commons Net 的 FtpClient 将视频上传到 FTP 服务器 为了检查文件是否确实已成功传输 我想计算远程文件的校验和 但不幸的是我发现没有相关的API可以使用 我的问题是 ftp服务器是否需要计算
  • subversion 合并时校验和不匹配

    我在 SuSE 主机上使用 Subversion 1 6 17 来尝试将单个分支合并到本地更新的工作副本中 我正在获取合并的部分内容 然后每次尝试时它都会停止在同一个文件上 svn Checksum mismatch for path to
  • CRC32 校验和是如何计算的?

    也许我只是没有看到它 但 CRC32 似乎要么不必要地复杂 要么在我可以在网络上找到的任何地方都没有得到充分的解释 我知道它是消息值的基于非进位的算术除法除以 生成器 多项式的余数 但它的实际实现让我无法理解 我读了CRC 错误检测算法的轻
  • 确定 .NET 程序集是否是从同一源构建的

    有谁知道如何比较两个 NET 程序集以确定它们是否是从 相同 源文件构建的 我知道有一些差异实用程序可用 例如 Reflector 插件 但我对查看 GUI 中的差异不感兴趣 我只是想要一种自动方法来比较二进制文件集合以查看它们是否是从相同
  • wkhtmltopdf 每次运行都会生成不同的校验和

    我试图验证从运行到运行时从 wkhtmltopdf 生成的内容是否相同 但是每次运行 wkhtmltopdf 时 我都会针对同一页面获得不同的哈希 校验和值 我们正在谈论一些真正基本的东西 比如使用以下 html 页面 p This is
  • 计算 SQL Server 中表的哈希值或校验和

    我正在尝试计算 SQL Server 2008 中整个表的校验和或哈希 我遇到的问题是该表包含 XML 列数据类型 校验和无法使用该数据类型 必须将其转换为 nvarchar第一的 所以我需要将其分解为两个问题 计算一行的校验和 模式在运行
  • 在 C# 中计算 Internet(又名 IP、又名 RFC791)校验和

    有趣的是 我可以在除 C 之外的几乎所有语言中找到 Internet 校验和的实现 有人有实现可以分享吗 请记住 互联网协议 http www faqs org rfcs rfc791 html规定 校验和字段是 16 位的 1 的补码 标
  • 文件的 CRC 检查

    我正在使用一个小型 FAT16 文件系统 并且想要为存储配置信息的单个 XML 文件生成 CRC 值 如果数据发生更改或损坏 我希望能够检查 CRC 以确定文件仍处于原始状态 问题是 如何将CRC值放入文件中 而不改变文件本身的CRC值 我
  • 使用 Javascript 的 8 位异或校验和

    我正在尝试模仿 Windows 应用程序格式化消息并发送通过 USB 通过 UART 传输到显示该消息的设备 该应用程序计算checksum并将其粘贴到消息后面 否则设备将不会接受该命令 校验和不是 crc8 校验和 但它是什么 使用 US
  • 计算实验室信息系统 (LIS) 帧的校验和

    我正在开发一个仪器驱动程序实验室信息系统 https www limswiki org index php Laboratory information system 我想知道如何计算帧的校验和 校验和算法说明 用字符 0 9 和 A F
  • 如何在 Maven 中创建校验和然后将其输出到文本文件?

    还在学习如何使用Maven 我想知道是否有办法做到checksum在生成的WAR file The Maven目标是package 我想要实现的是得到一个checksum价值 包装的WAR文件 与打包文件一起放入文本文件中 提前致谢 让它与
  • 根据哈希值确认文件内容

    我需要 检查完整性 content文件数量 文件将写入 CD DVD 可能会被复制多次 这个想法是识别正确复制的副本 在从 Nero 等中删除它们之后 我对此很陌生 但快速搜索表明Arrays hashCode byte http down
  • Scapy TCP 校验和重新计算奇怪的行为

    我正在尝试进行 TCP ACK 欺骗 我从 pcap 文件中嗅探一个 ACK 数据包 并在循环中发送它 增加其 ACK 编号以及另一个选项字段 嗅探部分 预欺骗 from scapy all import from struct impor
  • 哈希 MySQL 数据库架构

    我想对 MySQL 数据库模式 没有数据 进行哈希 签名 以便对其进行校验和 以确保它不被其他人修改 我怎样才能实现它 据我了解您的问题 您需要表校验和 checksum table table 所以 我想 只需对空表进行校验和
  • MySQL 将表的校验和存储在另一个表中

    语境 我们有包含大量表的大型数据库 他们中的大多数 99 都使用innodb 我们希望有一个日常流程来监视哪个表已被修改 当他们使用 innodb 的值时Update time from SHOW table STATUS from inf
  • 评估 CRC-32 实现中的差异

    我见过相同基本 CRC 32 算法的许多不同实现 如下所示 int remain int sbox SIZESBOX int dividend int bit for dividend 0 dividend lt SIZESBOX divi

随机推荐

  • CAN通信数据帧介绍

    CAN通信有五个帧 xff0c 其中最重要的是数据帧 xff01 xff01 xff01 xff01 我们下面开始讨论数据帧 一 数据帧的格式 xff08 数据帧有七个段组成 xff09 xff0c 帧起始 表示数据帧开始的段 xff0c
  • STM32压力传感器信号采集-24位AD HX720 HX711 原理介绍

    我做过很多工业用压力采集产品 xff0c 用过很多高分辨率的AD芯片 xff0c 其中有两款值得推荐 一个是海芯科技出的HX711等24位AD xff0c 一个是塞普拉斯出的CS5532等24位AD 国产芯片和进口芯片有差距 xff0c 但
  • stm32实现网络音频-原理图单片机程序C#上位机程序

    电子可以一边玩 xff0c 一边研究 xff0c 网络音频这个课题特别适合电子爱好者 几方面的挑战如下 xff0c 单片机实现对接以太网 实时对音频流解码播放 xff0c 上位机配合单片机做音频流传输控制 xff0c 音频信号的对接放大处理
  • rosdep init and update Error

    rosdep init Error sudo rosdep init ERROR default sources list file already exists br etc ros rosdep sources list d 20 de
  • Postman汉化版本竟如此简单,全中文真香

    对于国内程序员来说 xff0c 外国开发软件的一个使用门槛是全英文的 xff0c 对于不熟悉各种专业术语的同学 xff0c 上手比较麻烦 因此有种方法就是使用汉化版的外国软件 xff0c 但 Postman 并没有汉化版本 但是postma
  • YOLOv5识别目标的实时坐标打印

    引言 这个功能看似鸡肋 xff0c 但对于无人机目标识别与追踪有重要意义 xff0c 通过目标在摄像头视野的坐标位置 xff0c 可以推算出无人机相对与目标的位置 xff0c 从而对无人机进行位置矫正 因此 xff0c 添加代码打印坐标并不
  • 六、WebRTC中ICE的实现

    一 Candidate种类 amp 优先级 高到底 xff1a host srflx prflx relay 同一局域网内通过host类型的Candidate在内网建立连接 非同一局域网 xff0c 隔断从STUN TURN服务器中收集sr
  • 七、WebRTC中的SDP

    一 SDP标准规范 格式 xff1a lt type gt 61 lt value gt SDP 会话层 媒体层 媒体音频 媒体视频 二 WebRTC中的SDP的整体结构 1 媒体信息 m 61 行中描述媒体类型 传输类型 Playload
  • linux 信号量sem

    一 信号量 信号量如同一盏红绿信号灯 xff0c 用于临界资源 xff08 如公路 人行道 xff09 的管理 信号量是一种特殊的变量 xff0c 访问具有原子性 P等待 xff1a 信号量的值为0时 xff0c 不能减 xff0c 则进行
  • 1-4 实验3 串口通信

    串口通信 1 实验内容 xff1a PC端串口调试助手向板子发送数据 xff0c 板子接受到数据后 xff0c 再把数据发送回给PC端串口调试助手 2 串口发送接受数据的基本步骤 xff1a 初始化串口 xff08 设置波特率 中断等 xf
  • 1-6 实验5 无线温度检测实验

    无线温度检测实验 1 实验内容 xff1a 协调器建立ZigBee无线网络 xff0c 终端节点自动加入网络 xff0c 然后终端节点周期性地采集温度并将数据发送到协调器 协调器接受数据并通过串口把接受到的数据传给PC端的串口调试助手 2
  • 1-11 实验9 网络管理实验1 获取自身的和父节点网络地址、MAC地址

    p p p style color rgb 51 51 51 font family Arial font size 14px line height 26px 获取自身的和父节点网络地址 MAC地址 p p style color rgb
  • 1-14 实验11 获取网络拓扑

    获取网络拓扑 1 实验内容 xff1a PC端串口调试助手向协调器发送命名 topology 协调器接受到命令后 xff0c 将网络拓扑信息发送到PC机串口调试助手上 2 知识点 xff1a 在1 11 实验9 网络管理实验1 获取自身和父
  • S 串口编程 详解3 串口的初始化、打开/关闭

    串口编程 详解3 串口的初始化 程序打开串口 xff0c 采用两种方法 xff1a 1 程序启动 xff0c 调用OnInitDialog 函数 xff0c 打开串口 xff0c 缺省串口号为COM1 xff0c 如果COM1不存在或被占用
  • 求关键路径(包含邻接表的建立、拓扑排序)

    include lt stdio h gt include lt stdlib h gt typedef struct node int adjvex 邻接点域 int info 边上的信息 struct node next 指向下一个邻接
  • FPGA串口回环实验

    本文将从个人理解的角度 xff0c 解释FPGA串口通信的原理 xff0c 并进行实战演示 1 写在前面的话 串口通信是初学FPGA必过的一道坎 xff0c 如果能够在不参考任何资料的情况下自己手搓一套串口回环的代码 xff0c Verio
  • Debug Assertion Failed!解决方法详解

    1 野指针 2 内存泄露 解决方法 1 看一看你的程序里是不是有 ASSERT xff08 xff09 或 VERIFY xff08 xff09 语句 这两个宏是用来测试它的参数是否为真的 出现你说的 xff0c 这说明你的指针或表达试有问
  • 用tftp的方式在u_boot下 烧写uImage内核

    用 u boot 进行下载 uImage 一种 kernel 镜像文件 首先 把编译好的 uImage 文件放在 tftpboot 目录下 用网线把开发板和电脑连上 但PC上的网卡显示是没连接的 xff0c 这一点是没有关系的 xff0c
  • 利用NFS服务挂载NFS根文件系统

    嵌入式Linux根文件系统 xff0c 简单地说 xff0c 根文件系统就是一种目录结构 注意根文件系统和普通的文件系统的区别 常见的Linux根文件系统有 xff1a xff08 1 xff09 NFS xff08 网络根文件系统 xff
  • 数据校验之Checksum算法

    校验和 xff08 Checksum xff09 是网络协议使用的数据错误检测方法 xff0c 并且被认为比LRC xff08 纵向冗余校验 xff0c Longitudinal Redundancy Check xff0c LRC xff