zoukankan      html  css  js  c++  java
  • TCP/IP协议头部结构体

    //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; 
     
  • 相关阅读:
    LeetCode(35):Palindrome Number 分类: leetCode 2015-07-10 09:26 161人阅读 评论(0) 收藏
    在pycharm进行单元测试(unittest python)
    Django 基本操作
    Django中数据库操作相关的错误
    Question&&Answer
    ubuntu下 SVN 服务器搭建及使用
    python 在不同层级目录import 模块的方法
    Ubuntu 16.04安装PyCharm
    修改mysql中数据库存储主路径
    查看mysql的数据库物理存放位置
  • 原文地址:https://www.cnblogs.com/wanghuaijun/p/6402355.html
Copyright © 2011-2022 走看看