• 技术文章 >运维 >linux运维

    linux中iphdr是什么

    长期闲置长期闲置2022-07-15 15:35:07原创160

    在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地址
    };

    05.png

    扩展知识

    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视频教程

    以上就是linux中iphdr是什么的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:linux
    上一篇:linux怎么查看1433端口是否打开 下一篇:linux中vimrc在哪
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• Linux中mysql的1366错误怎么解决• linux中vsz和rss有什么区别• linux怎么查看文件夹多大• linux有libpcap库吗• linux僵尸进程是什么意思
    1/1

    PHP中文网