IP UDP TCP 首部
//IP首部
typedef struct tIPPackHead
{
enum PROTOCOL_TYPE{
PROTOCOL_TCP = 6,
PROTOCOL_UDP = 17,
PROTOCOL_ICMP = 1,
PROTOCOL_IGMP = 2
};
inline unsigned HeadLen() const
{
//首部长度单位为4bytes。因此乘4
return (ver_hlen & 0x0F) << 2;
}
inline unsigned PackLen() const
{
return wPacketLen;
}
BYTE ver_hlen; //IP协议版本和IP首部长度。高4位为版本,低4位为首部的长度(单位为4bytes)
BYTE byTOS; //服务类型
WORD wPacketLen; //IP包总长度。包括首部,单位为byte。[Big endian]
WORD wSequence; //序号,一般每个IP包的序号递增。[Big endian]
WORD wMarkFragPoi;
BYTE byTTL; //生存时间
BYTE byProtocolType; //协议类型,见PROTOCOL_TYPE定义
WORD wHeadCheckSum; //IP首部校验和[Big endian]
DWORD dwIPSrc; //源地址
DWORD dwIPDes; //目的地址
} IP_PK_HEAD;
//TCP首部
typedef struct tTCPPackHead
{
inline unsigned HeadLen() const
{
return ((lenres>>4) & 0x0F) << 2;
}
WORD wSrcPort; //16位源端口
WORD wDstPort; //16位目的端口
DWORD dwSeq; //32位序列号
DWORD dwAck; //32位确认号
unsigned char lenres; //4位首部长度/6位保留字 (高4bit为head len)
unsigned char flag; //6位标志位 (低6bit为标志)
WORD wWin; //16位窗口大小
WORD wSum; //16位校验和
WORD wUrp; //16位紧急数据偏移量
}TCP_PK_HEAD;
/UDP首部
typedef struct tUDPPackHead
{
inline unsigned HeadLen() const
{
return 8;
}
inline unsigned PackLen() const
{
return wLength;
}
WORD wSPort; /*Source Port*/
WORD wDPort; /*Destinate Port*/
WORD wLength; /*UDP Length*/
WORD wCheckSum; /*UDP CheckSum*/
} UDP_PK_HEAD;

浙公网安备 33010602011771号