关于IP校验算法的疑惑
IP的校验算法:
置0把被校验的数据16位进行累加,然后取反码,若数据字节长度为奇数,则数据尾部补一个字节的0以凑成偶数。
但是实现代码对为奇数的情况,好象并没有补零,只是转为BYTE后累加。代码如下:
if( nleft==1)
{ *(unsigned char *)(&answer)=*(unsigned char *)w;
sum+=answer;
所以很困惑,为什么理论和实现不一致? 是不是理解错了。
请各位指点
置0把被校验的数据16位进行累加,然后取反码,若数据字节长度为奇数,则数据尾部补一个字节的0以凑成偶数。
但是实现代码对为奇数的情况,好象并没有补零,只是转为BYTE后累加。代码如下:
if( nleft==1)
{ *(unsigned char *)(&answer)=*(unsigned char *)w;
sum+=answer;
所以很困惑,为什么理论和实现不一致? 是不是理解错了。
请各位指点
...全文
相关推荐
IP、ICMP、UDP、TCP 校验和算法分享
校验和算法是计算机网络协议中用于验证数据完整性的基本技术之一。在IP、ICMP、UDP和TCP协议中,校验和算法被用于确保数据在传输过程中未出现错误或损坏。校验和算法具体实现方式如下:1.
UDP校验和算法
### UDP校验和算法计算步骤UDP校验和的计算涉及到以下几个关键字段:1. **源IP地址**:发送方的IP地址。2. **目的IP地址**:接收方的IP地址。3.
IP数据报的校验和算法
校验和是一种错误检测方法,用于验证数据在传输过程中是否保持完整。本文将深入探讨IP数据报校验和算法的工作原理、计算步骤以及其实现方式。#### IP数据报校验和算法的核心步骤1.
IP校验与算法反码求和详解
【IP校验与算法反码求和详解】IP校验和是网络通信中确保数据完整性的关键机制,特别是在IP协议中,它通过反码求和校验算法来检测IP包头在传输过程中是否发生错误。
IP头校验和计算
这个功能是通过一种简化的二进制和算法实现的,确保数据在从发送方到接收方的过程中保持完整。在C#编程环境中,我们可以编写程序来模拟这一过程,帮助用户计算IP头的校验和,以便于网络调试和分析。


网络编程
