一、MAC帧头定义
/数据帧定义,头14个字节,尾4个字节/
typedef struct _MAC_FRAME_HEADER
{
char m_cDstMacAddress[6]; //目的mac地址
char m_cSrcMacAddress[6]; //源mac地址
short m_cType; //上一层协议类型,如0x0800代表上一层是IP协议,0x0806为arp
}attribute((packed))MAC_FRAME_HEADER,*PMAC_FRAME_HEADER;
typedef struct _MAC_FRAME_TAIL
{
unsigned int m_sCheckSum; //数据帧尾校验和
}attribute((packed))MAC_FRAME_TAIL, *PMAC_FRAME_TAIL;
二、IP头结构的定义
![e704745d38885f4a485da4074512a9a9.png](https://i-blog.csdnimg.cn/blog_migrate/e1c4ec28c329be8c9f6e84637c1a585d.jpeg)
/IP头定义,共20个字节/
typedef struct _IP_HEADER
{
char m_cVersionAndHeaderLen; //版本信息(前4位),头长度(后4位)
char m_cTypeOfService; // 服务类型8位
short m_sTotalLenOfPacket; //数据包长度
short m_sPacketID; //数据包标识
short m_sSliceinfo; //分片使用
char m_cTTL; //存活时间
char m_cTypeOfProtocol; //协议类型
short m_sCheckSum; //校验和
unsigned int m_uiSourIp; //源ip
unsigned int m_uiDestIp; //目的ip
} attribute((packed))IP_HEADER, *PIP_HEADER ;
三、tcp头结构定义
![a61597f920714843de3dc499fcdc1ee2.png](https://i-blog.csdnimg.cn/blog_migrate/f71a390e0fd39c7dd291bfd281b24558.jpeg)
/TCP头定义,共20个字节/
typedef struct _TCP_HEADER
{
short m_sSourPort; // 源端口号16bit
short m_sDestPort; // 目的端口号16bit
unsigned int m_uiSequNum; // 序列号32bit
unsigned int m_uiAcknowledgeNum; // 确认号32bit
short m_sHeaderLenAndFlag; // 前4位:TCP头长度;中6位:保留;后6位:标志位
short m_sWindowSize; // 窗口大小16bit
short m_sCheckSum;