• 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;
    };

  • 相关阅读:
    反转句子
    算法和数据操作-查找和排序
    算法和数据操作-递归和循环
    数据结构-树
    数据结构-栈和队列
    Spring的循环依赖
    关于mybatis的执行流程和源码
    JVM之了解JVM的结构和加载机制
    多线程之(线程管理)
    Spring容器创建过程
  • 原文地址:https://www.cnblogs.com/x_wukong/p/5924798.html
Copyright © 2020-2023  润新知