zoukankan      html  css  js  c++  java
  • TCP/IP各种数据包结构体

    下面这些TCP/IP数据包是我在进行Socket及Wipcap网络编程过程中曾经用到过的数据包结构体, 这些东西平时看起来不起眼,真正用到的时候就会觉得非常有用......


    以太帧头格式结构体,共14个字节:

      typedef struct ether_header {
       unsigned char ether_dhost[6];   //目的MAC地址
       unsigned char ether_shost[6];   //源MAC地址
       unsigned short ether_type;     //协议类型
      }ETHHEADER,*PETHHEADER;

    IPv4报头格式结构体,共20个字节:

        typedef struct ipv4_header {
    unsigned char ver_ihl;          //版本 (4 bits) + 首部长度 (4 bits)
    unsigned char tos;             //服务类型
    unsigned short tlen;            //数据报总长度
    unsigned short identification;    //标识
    unsigned short flags_fo;        //标志 (3 bits) + 片偏移 (13 bits)
            unsigned char ttl;             //生存时间
    unsigned char proto;           //协议
    unsigned short crc;            //首部校验和
    u_char ip_src[4];              //源IP地址
    u_char ip_dst[4];              //目的IP地址
        }IPHEADER,*PIPHEADER;

    IPv6报头格式结构体,共40个字节:

    typedef struct ipv6_header {
    u_char ver_tf;                //版本号(4 bit)
    u_char traffic;                //优先级(8 bit)
    u_short label;                //流标识(20 bit)
    u_char length[2];             //报文长度(16 bit)
    u_char next_header;           //下一头部(8 bit)
    u_char limits;                //跳数限制(8 bit)
    u_char Srcv6[16];            //源IPv6地址(128 bit)
    u_char Destv6[16];           //目的IPv6地址(128 bit)
    }IPv6_HEADER,*PIPv6_HEADER;

    TCP报头格式结构体,共20个字节:

    typedef struct tcp_header {
    WORD SourPort;       //源端口号  
    WORD DestPort;       //目的端口号
    DWORD SeqNo;       //序号
    DWORD AckNo;       //确认序号
    BYTE HLen;          //首部长度(保留位)
    BYTE Flag;           //标识(保留位)
    WORD Window;       //窗口大小
    WORD ChkSum;       //校验和
    WORD UrgPtr;        //紧急指针
    }TCPHEADER,*PTCPHEADER;

    UDP报头格式结构体,共8个字节:

    typedef struct udp_header {
    u_short sport;          //源端口号
    u_short dport;          //目的端口号
    u_short len;            //数据报长度
    u_short crc;            //校验和
    }UDPHEADER,*PUDPHEADER;

  • 相关阅读:
    地三鲜
    在linux下使用am335x的DMA
    通过tarball形式安装HBASE Cluster(CDH5.0.2)——集群安装总览
    通过tarball形式安装HBASE Cluster(CDH5.0.2)——如何配置分布式集群中的zookeeper
    如何通过SSH及其Client 批量分发文件和执行管理命令
    解决ESXi有虚拟机模版部署的CentOS虚拟机,网卡eth0找不到问题
    CentOS 65 安装vmware tools 杂记
    安装vmware vCenter Appliance
    使用FileZilla解决从Windows上传文件到Linux vsftpd的乱码问题!
    不关闭seLinux解决vsftpd服务本地用户不能登录问题(500 OOPS: cannot change directory:/home/***)
  • 原文地址:https://www.cnblogs.com/RodYang/p/3271878.html
Copyright © 2011-2022 走看看