如何解析一个MAC包:已知:地址和长度目的:得到偏移地址

解决方案 »

  1.   

    typedef struct _IP_PACKET
    {
      // Ethernet
      unsigned char  targ_hw_addr[6]; // Mac目的地址,6字节。
      unsigned char  src_hw_addr[6]; // Mac源地址,6字节。
      unsigned char  H_frame_type;
      unsigned char  L_frame_type;
      // IP
      unsigned char  header_len:4;      //4位首部长度,
      unsigned char  version:4;         //4位IP版本号
      unsigned char tos;                //8位服务类型TOS
      unsigned short total_len;         //16位总长度(字节)
      unsigned short ident;             //16位标识
      unsigned short frag_and_flags;    //3位标志位和13位偏移
      unsigned char  ttl;               //8位生存时间 TTL
      unsigned char proto;              //8位协议 (1->ICMP, 2->IGMP, 6->TCP, 17->UDP)
      unsigned short checksum;          //16位IP首部校验和
      unsigned int sourceIP;            //32位源IP地址
      unsigned int destIP;              //32位目的IP地址
    }IP_PACKET, *P_IP_PACKET;
      

  2.   

    请给出TCP和UDP结构(最好还有ICMP和IGMP结构),谢谢
      

  3.   

    TCP和UDP头结构长度是否为固定大小