当前位置: 主页 > 日志 > 其它 >

TCP/IP各种数据报结构体描述


/*物理帧头结构*/
typedef struct {
   BYTE  desmac[6]; //目的MAC地址
   BYTE  srcmac[6]; //源MAC地址
  USHORT  ethertype; //帧类型
}Dlc_Header;      

/*IP报头结构*/
typedef struct  {
 BYTE  h_len_ver;  //IP版本号(高4位)及以32比特为单位的IP包头部的长度(低四位)
 BYTE  tos;      //服务类型TOS
 USHORT total_len; //IP包总长度   
 USHORT ident;     //标识
 USHORT frag_and_flags;  //标志位
 BYTE ttl;      //生存时间
 BYTE proto;    //协议
 USHORT checksum; //IP首部校验和
 BYTE  sourceip[4]; //源IP地址(32位)
 //或者UINT sourceip;  
 BYTE  destip[4];  //目的IP地址(32位)
//或者 UINT  destip;
}Ip_Header;

/*TCP报头*/
typedef struct {  
 USHORT  srcport; // 源端口
 USHORT  dstport; // 目的端口
 UINT  seqnum;  // 顺序号
 UINT  acknum;  //期待获得对方的TCP包编号
 BYTE h_len;  // 以32比特为单位的TCP报头长度
 BYTE  flags; // 标志(URG、ACK等)
 USHORT indow; // 窗口大小
 USHORT chksum; // 校验和
 USHORT urgptr; // 紧急指针
}Tcp_Header;

//TCP伪首部 用于进行TCP校验和的计算,保证TCP效验的有效性
typedef struct{
 ULONG  sourceip;//源IP地址
 ULONG  destip;//目的IP地址
 BYTE mbz;//置空(0)
 BYTE ptcl;//协议类型(IPPROTO_TCP)
 USHORT tcpl;//TCP头的长度(单位:字节)
}PSD_HEADER;

/*UDP报头*/
typedef struct  {  
 USHORT srcport; // 源端口
 USHORT dstport; // 目的端口
 USHORT total_len; // 包括UDP报头及UDP数据的长度(单位:字节)
 USHORT chksum; // 校验和
}Udp_Header;

//UDP伪首部-仅用于计算校验和
typedef struct tsd_hdr  
{  
 BYTE  sourceip[4]; //源IP地址
 BYTE  destip[4]; //目的IP地址
 BYTE mbz;//置空(0)
 BYTE ptcl; //协议类型(IPPROTO_UDP)
 USHORT udpl;//UDP包总长度(不包括伪首部的长度 单位:字节)  
}PSD_HEADER;



/*ICMP报头*/
typedef struct {
 BYTE i_type;   //类型 发出的ICMP为8(ICMP_ECHO_REQUEST),接受到的ICMP为0
 BYTE i_code;   //代码
 USHORT i_cksum; //ICMP包校验和
 USHORT i_id;    //识别号(一般用进程号作为标识号)
 USHORT i_seq;   //报文序列号(一般设置为0)
 ULONG timestamp;//时间戳  
}Icmp_Header;

//ARP帧结构
typedef struct {
   USHORT HW_Type;//硬件类型Ethernet:0x1
   USHORT Prot_Type;//上层协议类型IP:0x0800
   BYTE HW_Addr_Len;//硬件地址长度:6
   BYTE Prot_Addr_Len;//协议地址(IP地址)的长度:4
   USHORT Flag;//1表示请求,2表示应答
   BYTE Send_HW_Addr[6];//源MAC地址
   BYTE Send_Prot_Addr[4];//源IP地址
   BYTE Targ_HW_Addr[6];//目的MAC地址
   BYTE Targ_Prot_Addr[4];//目的IP地址
   BYTE Padding[18];//填充数据   
}Arp_Frame;

/*DNS数据报头*/
typedef struct {
 USHORT id; //标识,通过它客户端可以将DNS的请求与应答相匹配;
 USHORT flags; //标志:(查询)0x0100 (应答)0x8180  这些数字都是主机序
 USHORT questions; //问题数目
 USHORT answers; //资源记录数目
 USHORT author; //授权资源记录数目
 USHORT addition; //额外资源记录数目
}DNS_HEADER;
//这是DNS包的公共部分,即查询包及应答包都含有这部分,由于查询问题(Domain)大小无法确定,因此这里不好将其及其以后的数据写入结构体中

[日志信息]

该日志于 2009-02-25 18:12 由 redice 发表在 redice's Blog ,你除了可以发表评论外,还可以转载 “TCP/IP各种数据报结构体描述” 日志到你的网站或博客,但是请保留源地址及作者信息,谢谢!!    (尊重他人劳动,你我共同努力)
   
验证(必填):   点击我更换验证码

redice's Blog  is powered by DedeCms |  Theme by Monkeii.Lee |  网站地图 |  本服务器由西安鲲之鹏网络信息技术有限公司友情提供

返回顶部