网际校验和算法

反码算数运算:

两个数进行二进制反码求和的运算很简单。它的规则是从低位到高位逐列进行计算。0和0相加是0,0和1相加是1,1和1相加是0但要产生一个进位1,加到下一列。如果最高位相加后产生进位,则最后得到的结果要加1。

网际校验和算法概述:

  • 在发送方,先把被校验的数据划分为许多16位字的序列。如果数据的字节长度为奇数,则在数据尾部补一个字节的0以凑成偶数。用反码算数运算把所有16位字相加后,然后再对和取反码,便得到校验和。

  • 在接收方,将收到的数据报(包括校验和字段),将所有16位字再使用反码算数运算相加一次,将得到的和取反,即得出校验和的计算结果。如果数据报在传输过程中没有任何变化,则此结果必为0,于是就保留这个数据报。否则即认为出差错,并将此数据报丢弃。

举例

“A,B,C,…,Y,Z”分别表示一系列8位组,用[A,B]这样形式的字节组来表示A*256+B的整数,那么该字节序列的反码和就可以通过以下两种表达式之一给出:

[A,B] +’ [C,D] +’ … +’ [Y,Z]

[A,B] +’ [C,D] +’ … +’ [Z,0]

其中,+’ 表示反码算数运算相加,第一个公式适用于偶数个字节的校验和,第二个公式适用于计算奇数个字节的校验和。

原理:

1、校验和的计算:将缓冲区的数据中挨个数累加(X),然后取反输出(~X)。

2、校验:将缓冲区的数据和校验和(X)一起求校验和,累加和(Y(及取反输出(Y)。Y =缓冲区的数据累加(X(+校验和(X)=0XFFFF。Y=0。所以当结果为0,说明数据传输没问题。

如果校验和计算时高16位(XH)不等于零,(XH)+(XL)= Z,新校验和为~Z。 校验时,再次求校验和 :先求和(XH)*2^16 +(XL)+ ~Z= (XH)*2^16 +(XL)+ 0XFFFF - Z =(XH)*2^16+(0XFFFF -(XH))=Y.YH=XH,YL=(0XFFFF -(XH),YH+YL=0XFFFF.

程序截图

项目代码下载(java实现)

点击下载项目代码

网际校验和算法(Internet CheckSum)相关推荐

  1. TCP/IP 校验和算法简介

    1. 前言 校验和计算是NAT功能和内容修改功能的基本功,这些操作进行后都需要修改数据头中的校验和. 2. 16位校验和计算 2.1 基本原理 IP/ICMP/IGMP/TCP/UDP等协议的校验和算 ...

  2. 计算机网络首部检验和怎么算,计算机网络校验和算法

    校验和算法 经常看计算机网络相关的书时,每次看到关于IP或者是UDP报头校验和时,都是一笑而过,以为相当简单的东西,不就是16bit数据的相加吗!最近在学习Ping命令的源码时,看到里面有关于校验和的 ...

  3. 关于checksum校验和算法

    今天复习计网的时候看到了UDP头部有差错校验,其中的checksum算法没理的太清楚,索性写一篇博客,顺便回顾一下其他的. 校验和覆盖的内容: IP校验和:IP首部. ICMP校验和:ICMP首部+I ...

  4. 使用md5校验和算法保护文件

    近日要用到文件校验算法,查看了一下相关资料,得到以下理论与实践经验. 一.理论部分: 1.预备知识 1.1什么是数据校验 通俗的说,就是为保证数据的完整性,用一种指定的算法对原始数据计算出的一个校验值 ...

  5. java实现ip首部校验和算法,理解传输层中UDP协议首部校验和以及校验和计算方法的Java实现...

    UDP,全称User Datagram Protocol,用户数据报协议,是TCP/IP四层参考模型中传输层的一种面向报文的.无连接的.不能保证可靠的.无拥塞控制的协议.UDP协议因为传输效率高,常用 ...

  6. HEX文件校验和算法

    1.参考 HEX文件格式和其校验算法https://www.cnblogs.com/libra13179/p/5821266.html 2.说明 (1)参考的CSDN文档中有一些bug,因此做了一些修 ...

  7. ipv4和ipv6的 udp/tcp CRC校验和算法

    IPheader.length是总长度(占16比特包括 IP头 和 后续的数据) UDPHeader.Length:长度字段:占16比特.标明UDP头部和UDP数据的总长度字节. IPv4层 1.fc ...

  8. Socket编程实践(1) --TCP/IP简述

    ISO的OSI OSI(open system interconnection)开放系统互联模型是由ISO国际标准化组织定义的网络分层模型,共七层, 从下往上为: OSI七层参考模型 物理层(Phys ...

  9. TCP/IP面试必备

    数据流走向可以看成协议栈,后进先出 物理层 提供比特流传输  RS232  RS449  RJ45  比如网卡 数据链路层传输单位frame(帧) 介质访问,链路管理 网络层  寻址和路由选择pack ...

最新文章

  1. onAttach 显示过时的处理方法
  2. Bitcoin.com| 比特币现金2019·年度回顾
  3. yum 代理_教你如何在5分钟轻松部署nginx反向代理
  4. 类与类之间 相同属性及字段拷贝
  5. PHPROXY Encrypt 0.61
  6. Java-Web HTTP协议
  7. les物流执行系统_物流LES系统上线啦
  8. openwrt无盘服务器,搭建基于 OpenWrt/gPXE/iSCSI 的 Windows 无盘工作站
  9. 大数据学习笔记53:Flume Sink Processors(Flume接收器处理器)
  10. JavaScript学习笔记:创建自定义对象
  11. linux看请求报文发送的ip,Linux C 实现最简单的ICMP_ECHO请求报文发送
  12. luogu2014 选课
  13. Red5流媒体服务器搭建
  14. linux终端 快捷键
  15. 过年别再逼婚了,《黑镜》里的AI相亲系统是对爱情最好的匹配
  16. IC验证工具:Ubuntu下Questasim10.7安装(64bit)全攻略
  17. 关于Ng-alain的Acl的使用
  18. WeChat Patch 电脑微信多开消息防撤回补丁通用版
  19. ESP8266串口WiFi扩展板详解
  20. linux nohup的使用及详解

热门文章

  1. 从花瓣与堆糖看Pinterest模式在中国的可行性
  2. 有一个学霸对象是什么体验?
  3. 高速USB模式下 UAC2.0
  4. Monkey框架(基础知识篇) - monkey事件介绍
  5. 剑网三重置版服务器维护,《剑网三》重制版基础教程,让你从入门萌新步入大佬行列...
  6. 6个做好网站SEO必不可少的方法
  7. 《天天数学》连载54:二月二十三日
  8. 最贴心的营销 微信营销,微酷为你的营销保驾护航
  9. 东北农业大学计算机科学与技术复试名单,复试通知来了!150余所高校已发布最新复试信息!...
  10. 2021-2027全球与中国触觉开关市场现状及未来发展趋势