ip checksum
时间: 2023-09-12 20:09:18 浏览: 155
IP校验和是TCP/IP协议族中广泛应用的一种校验机制,用于校验IP数据报的完整性。校验和的计算步骤如下:首先,在数据发送端,将校验和字段本身清零,然后将被校验的相邻字节成对配成16位的整数,将所有的配对相加,同时将进位加到校验和的低字节上。最后,将得到的校验和取反,并将其放入校验和字段发送到网络中。在数据传输过程中,如果没有比特位改变,那么在目的地计算的校验和应该为0。因此,一个没有损坏的IP数据报计算出来的校验和总是0。\[1\]
在发送方,IP首部的校验和字段被清零,然后根据校验和原理计算出校验和,并填充到IP首部的校验和字段中。而在接收方,接收到IP数据报后,根据校验和原理对校验数据(即IP头部)进行校验,如果满足累加和为0xffff,则校验成功。\[2\]
下面是一个C语言实现的较为原始的checksum算法的代码,其中对算法的每一步骤都有详细的注释。该算法通过计算所有数据的16位对之和,并将32位数据压缩成16位数据,最后返回校验和的反码。\[3\]
#### 引用[.reference_title]
- *1* *3* [TCP/IP checksum 简析](https://blog.csdn.net/linux_embedded/article/details/53560238)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [IP校验和(checksum)原理](https://blog.csdn.net/weixin_28673511/article/details/130336206)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文