`
peizhiinfo
  • 浏览: 1429300 次
文章分类
社区版块
存档分类
最新评论

IP校验和详解

 
阅读更多


转自:http://bbs.chinaunix.net/viewthread.php?tid=1504385(附有代码内容)

原文见my blog:http://blog.chinaunix.net/u3/94771/showart.php?id=1993908

一、校验和算法

之前一直只知道IP校验和算法反码求和相关的,但具体细节不清楚,今天了解了下。

IP校验和主要是用来保证数据(IP包头)的完整性的.它用的算法非常简单,就是反码求和校验.需要注意的是反码求和又叫1的补码(one'scomplement),而2的补码就是我们通常说的补码求和了.校验算法具体如下.


1、发送方

i)将校验和字段置为0,然后将IP包头按16比特分成多个单元,如包头长度不是16比特的倍数,则用0比特填充到16比特的倍数;

ii)对各个单元采用反码加法运算(即高位溢出位会加到低位,通常的补码运算是直接丢掉溢出的高位),将得到的和的反码填入校验和字段;

iii)发送数据包.


2、接收方

i)将IP包头按16比特分成多个单元,如包头长度不是16比特的倍数,则用0比特填充到16比特的倍数;

ii)对各个单元采用反码加法运算,检查得到的和是否符合是全1(有的实现可能对得到的和会取反码,然后判断最终值是不是全0);

iii)如果是全1则进行下步处理,否则意味着包已变化从而丢弃之.


需要强调的是反码和是采用高位溢出加到低位的,如3比特的反码和运算:100b+101b=010b(因为100b+101b=1001b,高位溢出1,其应该加到低位,即001b+1b(高位溢出位)=010b),具体细节请参考文章:http://blog.chinaunix.net/u/20/showart_438418.html
分享到:
评论

相关推荐

    IP校验与算法反码求和详解

     之前一直只知道IP校验和算法反码求和相关的,但具体细节不清楚,今天了解了下。  IP校验和主要是用来保证数据(IP包头)的完整性的.它用的算法非常简单,就是反码求和校验.需要注意的是反码求和又叫1的补码(one'...

    服务器安全技术详解.pptx

    信息泄露与篡改威胁消减措施:软件包安全 Support 版本开发 发布包自 动签名 升级包加 密签名 不可信网 络下载 Internet 校验 升级 版本开发:编译时进行加密和签名,确保数据包不能被 恶意用户篡改和反汇编;...

    互备方式hacmp实施手册

    详解互备方式hacmp实施(有图) 一、删除现有集群环境 3 1.查看现有HACMP环境。命令如下: 2.停止现有hacmp集群中的节点。命令如下: 3.删除现有集群。(注意:本小节内容需在...六、校验和同步群集 七、测试HACMP配置

    DM9000A 寄存器详解——第一手资料

    发送控制寄存器(02H)控制冗余校验码和填充的插入,其状态分别记录在发送状态寄存器1(03H)和发送状态2(04H) 发送器的起始地址是0x00H,软件或硬件复位后默认是指针1,先通过DMA端口写数据到发送缓冲区,然后写...

    常用JavaScript正则表达式汇编与示例详解

    目前收集整理了21个常用的javaScript正则表达式,其中包括用户名、密码强度、整数、数字、电子邮件地址(Email)、手机号码、身份证号、URL地址、 IP地址、 十六进制颜色、 日期、 微信号、车牌号、中文正则等。...

    JavaScript+Regex 身份证号码的正则表达式及验证详解

    根据【中华人民共和国国家标准 GB 11643-1999】中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位...

    visual C++_Turbo C串口通信编程实践

    11.6 串口连接和TCP/IP连接对比 11.7 现场总线与RS232、RS485的本质区别 11.8 Modem通信技术 11.8.1 Modem的基本工作原理 11.8.2 Modem的功能 11.8.3 Modem的分类 11.8.4 Modem的安装 11.8.5 Modem V...

    VC++常用功能实例

    VC常用数据类型使用转换详解 114 用Visual C++操作INI文件 117 单文档加入背景图 119 更新窗体方法 120 更改窗口控件的能动和不能动(以按钮控件为例) 120 窗口响应键盘事件 120 密码框输入受保护 121 最高窗口的...

    VC++常用的共用函数100多页

    VC常用数据类型使用转换详解 114 用Visual C++操作INI文件 117 单文档加入背景图 119 更新窗体方法 120 更改窗口控件的能动和不能动(以按钮控件为例) 120 窗口响应键盘事件 120 密码框输入受保护 121 最高窗口的...

    精通正则表达式~~~

    匹配IP地址... 187 处理文件名... 190 匹配对称的括号... 193 防备不期望的匹配... 194 匹配分隔符之内的文本... 196 了解数据,做出假设... 198 去除文本首尾的空白字符... 199 HTML相关范例... 200 匹配...

    rsync命令教程 在对rsync服务器配置结束以后,下一步就需要在客户端发出rsync命令来实现将服务器端的文件备份到客户端来。rsync是一个功能非常强大的工具,其命令也有很多功能特色选项。

    Rsync命令详解 在对rsync服务器配置结束以后,下一步就需要在客户端发出rsync命令来实现将服务器端的文件备份到客户端来。rsync是一个功能非常强大的工具,其命令也有很多功能特色选项。 一、rsync的六种工作模式: ...

    python入门到高级全栈工程师培训 第3期 附课件代码

    11 FTP之创建文件夹及MD5校验思路 第33章 01 操作系统历史 02 进程的概念 03 线程的概念 04 线程的调用以及join方法 05 setDaemon方法和继承式调用.baiduyun.downloading 05 setDaemon方法和继承式调用 第34章 ...

Global site tag (gtag.js) - Google Analytics