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;

posted @ 2012-04-27 00:35  血马雄风  阅读(408)  评论(0)    收藏  举报