网络协议结构体

发布时间:2020-07-08 04:07:18 作者:hanchengen
来源:网络 阅读:322


    // i386 is little_endian.   
    #ifndef LITTLE_ENDIAN   
    #define LITTLE_ENDIAN   (1)   //BYTE ORDER   
    #else   
    #error Redefine LITTLE_ORDER   
    #endif  

    //Mac头部,总长度14字节   
    typedef struct _eth_hdr  
    {  
        unsigned char dstmac[6]; //目标mac地址   
        unsigned char srcmac[6]; //源mac地址   
        unsigned short eth_type; //以太网类型   
    }eth_hdr;

 
    //IP头部,总长度20字节   
    typedef struct _ip_hdr  
    {  
        #if LITTLE_ENDIAN   
        unsigned char ihl:4;     //首部长度   
        unsigned char version:4, //版本    
        #else   
        unsigned char version:4, //版本   
        unsigned char ihl:4;     //首部长度   
        #endif   
        unsigned char tos;       //服务类型   
        unsigned short tot_len;  //总长度   
        unsigned short id;       //标志   
        unsigned short frag_off; //分片偏移   
        unsigned char ttl;       //生存时间   
        unsigned char protocol;  //协议   
        unsigned short chk_sum;  //检验和   
        struct in_addr srcaddr;  //源IP地址   
        struct in_addr dstaddr;  //目的IP地址   
    }ip_hdr; 



    //TCP头部,总长度20字节   
    typedef struct _tcp_hdr  
    {  
        unsigned short src_port;    //源端口号   
        unsigned short dst_port;    //目的端口号   
        unsigned int seq_no;        //序列号   
        unsigned int ack_no;        //确认号   
        #if LITTLE_ENDIAN   
        unsigned char reserved_1:4; //保留6位中的4位首部长度   
        unsigned char thl:4;        //tcp头部长度   
        unsigned char flag:6;       //6位标志   
        unsigned char reseverd_2:2; //保留6位中的2位   
        #else   
        unsigned char thl:4;        //tcp头部长度   
        unsigned char reserved_1:4; //保留6位中的4位首部长度   
        unsigned char reseverd_2:2; //保留6位中的2位   
        unsigned char flag:6;       //6位标志    
        #endif   
        unsigned short wnd_size;    //16位窗口大小   
        unsigned short chk_sum;     //16位TCP检验和   
        unsigned short urgt_p;      //16为紧急指针   
    }tcp_hdr; 


    //UDP头部,总长度8字节   
    typedef struct _udp_hdr  
    {  
        unsigned short src_port; //远端口号   
        unsigned short dst_port; //目的端口号   
        unsigned short uhl;      //udp头部长度   
        unsigned short chk_sum;  //16位udp检验和   
    }udp_hdr; 


    //ICMP头部,总长度4字节   
    typedef struct _icmp_hdr  
    {  
        unsigned char icmp_type;   //类型   
        unsigned char code;        //代码   
        unsigned short chk_sum;    //16位检验和   
    }icmp_hdr;   

推荐阅读:
  1. Swift 的 结构体
  2. 简述结构体struct

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

网络 协议 结构体

上一篇:linux虚拟机挂载u盘

下一篇:sql联接总结

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》