linux中iphdr指的是什么

85次阅读
没有评论

共计 1519 个字符,预计需要花费 4 分钟才能阅读完成。

本篇内容介绍了“linux 中 iphdr 指的是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

在 linux 中,iphdr 是 ip 数据包的描述结构体;iphdr 所在的头文件为“/usr/src/linux/include/linux/ip.h”,结构体是由一批数据组合而成的结构型数据,组成结构型数据的每个数据称为结构型数据的成员,其描述了一块内存区间的大小及解释意义。

本教程操作环境:linux7.3 系统、Dell G3 电脑。

linux 中 iphdr 是什么

iphdr,是一种计算机用语。是 Linux 下 IP 数据包的描述结构体。

所在头文件为 /usr/src/linux/include/linux/ip.h,结构如下:

struct iphdr {#if defined(__LITTLE_ENDIAN_BITFIELD) // 小端模式下
 __u8 ihl:4,// 首部长度(4 位)
 version:4;//ip 协议版本 IPv4
#elif defined (__BIG_ENDIAN_BITFIELD) // 大端模式下
 __u8 version:4,
 ihl:4;
#else
#error  Please fix  asm/byteorder.h 
#endif
 __u8 tos;// 服务类型字段(8 位)
 __be16 tot_len;//16 位 IP 数据报总长度
 __be16 id;//16 位标识字段(唯一表示主机发送的每一分数据报) __be16 frag_off;//(3 位分段标志 +13 位分段偏移数)
 __u8 ttl;// 8 位数据报生存时间
 __u8 protocol;// 协议字段(8 位) __be16 check;//16 位首部校验
 __be32 saddr; // 源 IP 地址
 __be32 daddr; // 目的 IP 地址
};

扩展知识

iphdr- version

版本(4 位),目前的协议版本号是 4, 因此 IP 有时也称作 IPv4。

iphdr- ihl

首部长度 (4 位): 首部长度指的是 IP 层头部占 32 bit 字的数目(也就是 IP 层头部包含多少个 4 字节 – 32 位), 包括任何选项。由于它是一个 4 比特字段, 因此首部最长为 60 个字节。普通 IP 数据报(没有任何选择项) 字段的值是 5 == 5 * 32 / 8 = 5 * 4 = 20 Bytes。

iphdr- tos

服务类型字段 (8 位): 服务类型(TOS) 字段包括一个 3 bit 的优先权子字段(现在已被忽略),4 bit 的 TOS 子字段和 1 bit 未用位但必须置 0。4 bit 的 TOS 子字段分别代表: 最小时延、最大吞吐量、最高可靠性和最小费用。4 bit 中只能设置其中 1 bit。如果所有 4 bit 均为 0, 那么就意味着是一般服务。

iphdr- tot_len

总长度字段 (16 位) 是指整个 IP 数据报的长度, 以字节为单位。利用首部长度字段和总长度字段, 就可以知道 IP 数据报中数据内容的起始位置和长度。由于该字段长 16 比特, 所以 IP 数据报最长可达 65535 字节,总长度字段是 IP 首部中必要的内容, 因为一些数据链路 (如以太网) 需要填充一些数据以达到最小长度。尽管以太网的最小帧长为 46 字节, 但是 IP 数据可能会更短。如果没有总长度字段, 那么 IP 层就不知道 46 字节中有多少是 IP 数据报的内容。

iphdr- id

标识字段 (16 位) 唯一地标识主机发送的每一份数据报。通常每发送一份报文它的值就会加 1。

“linux 中 iphdr 指的是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-29发表,共计1519字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)