#pragma once
#pragma pack(push,1)
struct ether_header //以太网V2头
{
unsigned char ether_dhost[6];
unsigned char ether_shost[6];
unsigned short ether_type;
};
struct ip_header //定义IP首部
{
unsigned char h_lenver; //4位首部长度+4位IP版本号
unsigned char tos; //8位服务类型TOS
unsigned short total_len; //16位总长度(字节)
unsigned short ident; //16位标识
unsigned short frag_and_flags; //3位标志位
unsigned char ttl; //8位生存时间 TTL
unsigned char proto; //8位协议 (TCP, UDP 或其他)
unsigned short checksum; //16位IP首部校验和
unsigned int sourceIP; //32位源IP地址
unsigned int destIP; //32位目的IP地址
};
struct tcp_header
{
unsigned short source_port; //发送端端口号,16位
unsigned short dest_port; //接收端端口号,16位
unsigned char sequence_no[4]; //32位,标示消息端的数据位于全体数据块的某一字节的数字
unsigned char ack_no[4]; //32位,确认号,标示接收端对于发送端接收到数据块数值
unsigned char dataoffset; // 高4位表示数据偏移
unsigned char flags; // 6位标志位
unsigned char window[2]; //窗口16位
unsigned char checksum[2]; //校验码,16位
unsigned char urgen_pointer[2]; //16位,紧急数据指针
//unsigned char options[3]; //选祥和填充,32位
};
struct udp_header
{
unsigned short sourcePort; // 16位源端口号 | Source port
unsigned short destinationPort; // 16位目的端口号 | Destination port
unsigned short len; // 16位封包长度 | Sequence Number
unsigned short checksum; // 16位校验和 | Acknowledgement number
};
/* ARP报文包 */
struct ArpPackage {
unsigned short Hardware_Type; /* 硬件类型 */
unsigned short Protocol_Type; /* 协议类型 */
unsigned char Hardware_Length; /* 硬件地址长度 */
unsigned char Protocol_Length; /* 协议长度 */
unsigned short Operation_Type; /* 操作类型(请求1|响应2|RARP请求:3|RARP响应:4) */
unsigned char Sender_Mac[6]; /* 发送方的硬件地址 */
unsigned long Sender_IP; /* 发送方IP地址 */
unsigned char Recipient_Mac[6]; /* 接收方硬件地址 */
unsigned long Recipient_IP; /* 接收方IP地址 */
};
#pragma pack(pop)
#pragma pack(push,1)
typedef struct _DnsHeader
{
unsigned short id;
unsigned short flags;
unsigned short quests;
unsigned short answers;
unsigned short author;
unsigned short addition;
}DnsHeader,*PDnsHeader;
typedef struct _DnsQuery
{
char *name;//查询的域名,这是一个大小在0到63之间的字符串;
unsigned short type;//查询类型,大约有20个不同的类型
unsigned short classes;//查询类,通常是A类既查询IP地址。
}DnsQuery,*PDnsQuery;
typedef struct _DnsResponse
{
//unsigned short name;
unsigned short type;
unsigned short clases;
unsigned int ttl;
unsigned short length;
unsigned int adr;
}DnsResponse,*PDnsResponse;
#pragma pack(pop)
TCPIP协议头定义
最新推荐文章于 2023-04-19 15:48:00 发布
