• TCP/IP协议头部结构体简析


    下文摘自:红黑联盟
    TCP/IP协议头部结构体简析
     
    // 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  www.2cto.com  
    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;  www.2cto.com  
    //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; 
     
     
     
    作者 辛勤耕耘
  • 相关阅读:
    Comparable与Comparator
    【源码】String类、jdk1.6subString内存泄漏、字符串拼接几种区别、
    JAVA整型包装类的缓存策略
    通过tomcat把项目http请求转为https请求
    git rebase总结及git使用规范
    记一次对象序列化不打印value值为null的属性问题
    Layui-Tables+PHP分页
    Python操作字符串-截取IP地址
    命令行启动VMware虚拟机
    bat批处理备份桌面所有文档
  • 原文地址:https://www.cnblogs.com/flash610/p/3122298.html
Copyright © 2020-2023  润新知