2016 - 2024

感恩一路有你

ip地址二进制转换 二进制反码运算是怎么计算的?

浏览量:1827 时间:2021-03-14 06:58:38 作者:admin

二进制反码运算是怎么计算的?

算法实现:unsigned short IPuuucsum(unsigned char*iph,unsigned int ihl){unsigned int sumuuuuuuuasmuuuuuuuuuuuvolatileuuu1(“movl(%1),%0n”subl,%2n”jbe 2fn”addl 4(%1),%0n”adcl 8(%1),%0n”adcl 12(%1),%0n”1:adcl 16(%1),%0n“”lea 4(%1),%1n“”decl%2n“”jne 1bn“”adcl,%0n“”movl%0,%2n“”Shrl,%0n“”addw%W2,%w0n“”adcl,%0n“”Notl%0n“”2:n“:”=R”(总和),”=R”(IPH),”=R”(IHL):“1”(IPH),“2”(IHL):“memory”)return(sum)}扩展数据二进制逆码求和的工作原理:0和0的和为0,但要产生进位1,0和1的和为1,1和1的和为0。如果进位是在最高位相加后产生的,则最终结果将被加1。(0)inverse(0)inverse=1 1=10(1)inverse(0)inverse=0 1=1(1)inverse(1)inverse=0 0=0

报头校验和字段是根据IP报头计算的校验和代码。它不计算标题后面的数据。Icpmp、IGMP、UDP和TCP都在各自的报头中包含同时覆盖报头和数据校验和码。为了计算数据报的IP校验和,首先将校验和字段设置为0。然后用二进制反码对报头中的每个16位进行求和(整个报头被视为一个16位字的字符串),结果存在于check sum字段中。当接收到IP数据报时,还对报头中的每16位执行二进制计数器和。因为发送方报头的校验和包含在接收方的计算过程中,如果报头的传输过程中没有错误,那么接收方的计算结果应该都是1。如果错误不是全部1(即check和error),那么IP丢弃接收到的数据包。但是没有生成错误消息,上层找到丢失的数据报并重新传输。ICMP、IGMP、UDP和TCP都采用相同的校验和算法,尽管TCP和UDP在IP报头中除了各自的报头和数据外还包含不同的字段。在rfc1071中,有一种关于如何计算Internet校验和的实现技术。因为路由器通常只修改TTL字段(减1),所以当路由器转发一条消息时,它可以添加它的校验和,而无需重新计算整个IP报头。Rfc1141为此提供了一种非常有效的方法。

ip地址二进制转换 ip地址二进制怎么算 ip地址如何转换为二进制

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。