二进制反码求和

在看TCP/IP 时,看到IP 协议中有个 首部检验和 是用的 二进制反码求和。 不太理解,上网搜到了一个答案,记载下面。

以4bit(计算方便一点,和16bit是一样的)做检验和来验证。

假设原始数据为 1100 , 1010 , 0000(校验位)

那么把他们按照4bit一组进行按位取反相加。 1100 取反0011 , 1010 取反是0101,校验位的计算就是 0011加上0101 是1000,填入到校验位上

于是发送的数据就是

1100 , 1010 , 1000

收到数据后同样进行按位取反相加。0011+0101+0111 =1111;全为1表示正确 。 等于是 自己加上自己的取反, 那么 结果肯定应该是全1 。如果传输正确的话。

时间: 2024-08-25 15:46:40

二进制反码求和的相关文章

校验算法之二进制反码求和

IP/ICMP/IGMP/TCP/UDP等协议的校验和算法都是相同的,算法如下: 在发送数据时,为了计算数IP据报的校验和.应该按如下步骤:    (1)把IP数据报的首部都置为0,包括校验和字段.    (2)把首部看成以16位为单位的数字组成,依次进行二进制反码求和.    (3)把得到的结果存入校验和字段中.    在接收数据时,计算数据报的校验和相对简单,按如下步骤:    (1)把首部看成以16位为单位的数字组成,依次进行二进制反码求和,包括校验和字段.    (2)检查计算出的校验和

计算数IP据报的校验和

IP/ICMP/IGMP/TCP/UDP等协议的校验和算法都是相同的,算法如下: 在发送数据时,为了计算数IP据报的校验和.应该按如下步骤: (1)把IP数据报的首部都置为0,包括校验和字段. (2)把首部看成以16位为单位的数字组成,依次进行二进制反码求和. (3)把得到的结果存入校验和字段中. 在接收数据时,计算数据报的校验和相对简单,按如下步骤: (1)当接收IP包时,需要对报头进行确认,检查IP头是否有误,算法同上2.3步,然后判断取反的结果是否为0,是则正确,否则有错. 1.发送方 i

TCP检验和

TCP的检验和   检验和目的 目的是为了发现TCP首部和数据在发送端到接收端之间发生的任何改动.如果接收方检测到检验和有差错,则TCP段会被直接丢弃. TCP在计算检验和时,要加上一个12字节的伪首部. 伪首部 伪首部共有12字节,包含IP首部的一些字段,有如下信息:32位源IP地址.32位目的IP地址.8位保留字节(置0).8位传输层协议号(TCP是6,UDP是17).16位TCP报文长度(TCP首部+数据). 伪首部是为了增加TCP校验和的检错能力:通过伪首部的目的IP地址来检查TCP报文

emacs 中的键盘宏

PING(Packet InterNet Groper)中文名为因特网包探索器,是用来查看网络上另一个主机系统的网络连接是否正常的一个工具.ping命令的工作原理是:向网络上的另一个主机系统发送ICMP报文,如果指定系统得到了报文,它将把回复报文传回给发送者,这有点象潜水艇声纳系统中使用的发声装置.所以,我们想知道我这台主机能不能和另一台进行通信,我们首先需要确认的是我们两台主机间的网络是不是通的,也就是我说的话能不能传到你那里,这是双方进行通信的前提.在Linux下使用指令ping的方法和现象

TCP/IP-UDP

We read the world wrong but say that it deceives us. "我们看错了世界,却说世界欺骗了我们" 参考资料:TCP/IP入门经典 (第五版)  TCP/IP详解 卷一:协议 一.简介 UDP(用户数据报协议),是一个简单的面向数据报的传输层协议,进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报.它在协议栈中的位置如下 特点:UDP是一个面向数据报的协议,所以它不提供可靠性:它把应用程序传给IP层的数据发送出去,

ip首部校验和计算

IP首部校验和的计算方法: 1.把校验和字段清零. 2.然后对每16位(2字节)进行二进制反码求和,反码求和的意思是先对每16位求和,再将得到的和转为反码. 接下来详细描述反码求和的步骤:看下面的代码 算法: SHORT checksum(USHORT* buffer, int size){    unsigned long cksum = 0;    while(size>1)    {        cksum += *buffer++;        size -= sizeof(USHO

(转载)TCP/IP四层模型

本文章转载地址:http://www.cnblogs.com/BlueTzar/articles/811160.html TCP/IP参考模型 ISO制定的OSI参考模型的过于庞大.复杂招致了许多批评.与此对照,由技术人员自己开发的TCP/IP协议栈获得了更为广泛的应用.如图2-1所示,是TCP/IP参考模型和OSI参考模型的对比示意图.            图2-1 TCP/IP参考模型 2.1 TCP/IP参考模型的层次结构 TCP/IP协议栈是美国国防部高级研究计划局计算机网(Advan

IP数据报首部校验和算法

当用google搜索IP数据报首部校验和算法的时候,总是看到的是代码,没有看到其过程,于是就有了此文,如有错误请指正.文章省略一点,呵呵 IP/ICMP/IGMP/TCP/UDP等协议的校验和算法都是相同的,算法如下: 在发送数据时,为了计算数IP据报的校验和.应该按如下步骤: (1)把IP数据报的首部都置为0,包括校验和字段. (2)把首部看成以16位为单位的数字组成,依次进行二进制反码求和. (3)把得到的结果存入校验和字段中. 在接收数据时,计算数据报的校验和相对简单,按如下步骤: (1)

读《《图解TCP-IP》》有感

读<<图解TCP/IP>>有感 TCP/IP 最近几天读完<<图解TCP/IP>>,收获蛮多,记得上学时读stevens的<<TCP/IP详解>>时那是一个囫囵吞枣,没认真看也看不下去.等有时间再拜读下<<TCP/IP详解>>吧,估计能有不少共鸣. 现在觉得,要想比较透彻理解TCP/IP,还得需要有服务器编程经验,学校应该同时开设<socket编程>>相关课程,最好同一个老师教,可以串讲,不然