• ethhdr、ether_header、iphdr、tcphdr、udphdr 结构介绍


    转自:http://blog.csdn.net/petershina/article/details/8573853

    ************************eth的结构**************************************

    struct ethhdr {
    unsigned char h_dest[ETH_ALEN];
    unsigned char h_source[ETH_ALEN];
    __be16 h_proto;
    } __attribute__((packed));

    struct ether_header
    {
    u_int8_t ether_dhost[ETH_ALEN];      // destination eth addr 
    u_int8_t ether_shost[ETH_ALEN];      // source ether addr    
    u_int16_t ether_type;                 // packet type ID field 
    } __attribute__ ((__packed__));

    ***********************IP的结构***********************************
    struct iphdr
    {
    #if __BYTE_ORDER == __LITTLE_ENDIAN
        unsigned int ihl:4;
        unsigned int version:4;
    #elif __BYTE_ORDER == __BIG_ENDIAN
        unsigned int version:4;
        unsigned int ihl:4;
    #else
    # error "Please fix <bits/endian.h>"
    #endif
        u_int8_t tos;
        u_int16_t tot_len;
        u_int16_t id;
        u_int16_t frag_off;
        u_int8_t ttl;
        u_int8_t protocol;
        u_int16_t check;
        u_int32_t saddr;
        u_int32_t daddr;
    };

    ***********************TCP的结构****************************
    struct tcphdr
    {
        u_int16_t source;
        u_int16_t dest;
        u_int32_t seq;
        u_int32_t ack_seq;
    # if __BYTE_ORDER == __LITTLE_ENDIAN
        u_int16_t res1:4;
        u_int16_t doff:4;
        u_int16_t fin:1;
        u_int16_t syn:1;
        u_int16_t rst:1;
        u_int16_t psh:1;
        u_int16_t ack:1;
        u_int16_t urg:1;
        u_int16_t res2:2;
    # elif __BYTE_ORDER == __BIG_ENDIAN
        u_int16_t doff:4;
        u_int16_t res1:4;
        u_int16_t res2:2;
        u_int16_t urg:1;
        u_int16_t ack:1;
        u_int16_t psh:1;
        u_int16_t rst:1;
        u_int16_t syn:1;
        u_int16_t fin:1;
    # else
    #   error "Adjust your <bits/endian.h> defines"
    # endif
        u_int16_t window;
        u_int16_t check;
        u_int16_t urg_ptr;
    };
    ***********************UDP的结构*****************************
    struct udphdr
    {
    u_int16_t source;
    u_int16_t dest;
    u_int16_t len;
    u_int16_t check;
    };

  • 相关阅读:
    vmware磁盘空间扩展
    Winrar发现损坏的压缩文件头
    java ASM动态生成类
    使用ffmpeg将任意格式视频转MP4格式
    mongodb导入csv结构化数据
    Vmware黑屏解决方法
    mysql命令行导入结构化数据
    mysql导入慢解决方法
    CategoryPanelGroup动态生成节点
    delphi XE7 判断手机返回键
  • 原文地址:https://www.cnblogs.com/x_wukong/p/5924798.html
Copyright © 2020-2023  润新知