以太网的包分三部分组成,Ethernet header,IP header,content,首先是以太网头,
typedef struct
{
unsigned short dest_hwaddr[3];
unsigned short source_hwaddr[3];
unsigned short frame_type;
}ETH_HEADER;
三个部分分别表示,目的MAC,源MAC和帧类型。帧类型表示后面数据的类型,对于ARP请求和应答来说,该字段的值是0x0806,对于ip包来说应该是0x0800
接下来是IP头
各部分意思见注释
一个典型的IP头报文的结构如下图所示
按照从左到右依次递增的字节顺序,字节内部左为高位右为地位,解析时需要对此有很清楚的认识