我现在是用原套接字抓包,能解析ip头,还不知道tcp头(假设是tcp协议),数据段怎样解析,希望大家给点提示,还有能不能请大家告诉我ip包的具体构成,非常感谢!

解决方案 »

  1.   


    typedef struct ip_hdr{
        unsigned char  ip_verlen;       // 前4位IP版本号(IPv4 或者IPv6)                               // 后4位头部长度(32位,4字节)    
    unsigned char  ip_tos;          // 前3位为优先级,后5位为服务类型
    unsigned short ip_totallength;  // 16位包总长度包括头部和数据(字节)
    unsigned short ip_id;           // 16位ID标识    
    unsigned short ip_offset;       // 前3位为分段标识,后5位为分段偏移    
    unsigned char  ip_ttl;          // 该包可经过的路由器数量上限    
    unsigned char  ip_protocol;     // 协议类型(TCP,UDP,ICMP,IGMP等)    
    unsigned short ip_checksum;     // ipv4 头部的校验和    
    unsigned int   ip_srcaddr;      // ipv4 源地址    
    unsigned int   ip_destaddr;     // ipv4 目的地址
    } IPV4_HDR, *PIPV4_HDR;
      

  2.   

    楼上正解。
    你将收到的包 转换成 IPV4_HDR 结构,然后依次读取其中的每项即可。