gpt4 book ai didi

c - IP头的分解

转载 作者:太空狗 更新时间:2023-10-29 15:05:03 30 4
gpt4 key购买 nike

我必须做一个嗅探器作为安全类(class)的作业。我正在使用 C 和 pcap 库。我让一切运行良好(因为我从互联网上获得了代码并对其进行了更改)。但是我对代码有一些疑问。

u_int ip_len = (ih->ver_ihl & 0xf) * 4;   

ihip_header 类型,它当前指向数据包中的 IP header 。
ver_ihl 给出 IP 的版本。
我不知道什么是:& 0xf) * 4;

最佳答案

& 是按位与运算符,在这种情况下,您正在使用 0xf 和 ver_ihl,它具有清除除最低位 4 以外的所有位的效果

0xff & 0x0f = 0x0f

ver_ihl 定义为前 4 位 = 版本 + 第二 4 = Internet header 长度。 and 操作移除版本数据,留下长度数据。长度记录为 32 位字的计数,因此 *4 将 ip_len 转换为 header 中的字节数

回应您的评论:

按位与与操作数中的相应位。当你和任何带有 0 的东西时,它变成 0,而任何带有 1 的东西保持不变。

0xf = 0x0f = 二进制 0000 1111

所以当你和 0x0f 有任何东西时,前 4 位被设置为 0(当你将它们与 0 相加时)并且最后 4 位保留在另一个操作数中(当你​​将它们与 1 相加时)。这是一种称为位掩码的常用技术。

http://en.wikipedia.org/wiki/Bitwise_operation#AND

关于c - IP头的分解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2452579/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com