EGP 8 EGP:外部网关协议(EGP:Exterior Gateway Protocol)
ICMP 1 ICMP:Internet控制消息协议 Internet Control Message Protocol
HMP 20 HMP:消息传递协议 (Hyper Messaging Protocol
RAW 255 RAW:格式化的磁盘.也是一种文件系统
RDP 27 RDP:可靠数据协议(RDP:Reliable Data Protocol)
TCP 6 TCP:传输控制协议 Transmission Control Protocol
UDP 17 UDP: 用户数据报协议 (User Datagram Protocol)
INS-IDP 22 IDP:数据报协议 Internet Datagram Protocol
XNS XNS:可扩展名字服务(XEROX'S Network System)/*
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
* TCP/IP 协议类型
![](/bbs/images/05dd8d549cff04457a6366b0a7c9352a.png)
*/
![](/bbs/images/a6339ee3e57d1d52bc7d02b338e15a60.png)
#define IPPROTO_IP 0 // IP
![](/bbs/images/a6339ee3e57d1d52bc7d02b338e15a60.png)
#define IPPROTO_ICMP 1 // ICMP
![](/bbs/images/a6339ee3e57d1d52bc7d02b338e15a60.png)
#define IPPROTO_TCP 6 // TCP
![](/bbs/images/a6339ee3e57d1d52bc7d02b338e15a60.png)
#define IPPROTO_UDP 17 // UDP
![](/bbs/images/405b18b4b6584ae338e0f6ecaf736533.png)
![](/bbs/images/1c53668bcee393edac0d7b3b3daff1ae.png)
/**//*
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
* 常见端口
![](/bbs/images/05dd8d549cff04457a6366b0a7c9352a.png)
*/
![](/bbs/images/a6339ee3e57d1d52bc7d02b338e15a60.png)
#define PORT_DNS 53 // DNS
![](/bbs/images/405b18b4b6584ae338e0f6ecaf736533.png)
![](/bbs/images/1c53668bcee393edac0d7b3b3daff1ae.png)
/**//*
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
* 其它定义
![](/bbs/images/05dd8d549cff04457a6366b0a7c9352a.png)
*/
![](/bbs/images/a6339ee3e57d1d52bc7d02b338e15a60.png)
#define ETH_ALEN 6 // 以太网地址大小
![](/bbs/images/a6339ee3e57d1d52bc7d02b338e15a60.png)
#define ETH_HLEN 14 // 以太网头部大小
![](/bbs/images/a6339ee3e57d1d52bc7d02b338e15a60.png)
#define ETH_DATA_LEN 1500 // 最大帧负载数据大小
![](/bbs/images/a6339ee3e57d1d52bc7d02b338e15a60.png)
#define ETH_FRAME_LEN 1514 // 最大帧大小,头部+负载数据
![](/bbs/images/405b18b4b6584ae338e0f6ecaf736533.png)
![](/bbs/images/1c53668bcee393edac0d7b3b3daff1ae.png)
/**//**
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
* 常见协议定义
![](/bbs/images/05dd8d549cff04457a6366b0a7c9352a.png)
**/
![](/bbs/images/a6339ee3e57d1d52bc7d02b338e15a60.png)
#pragma pack(push, 1)
![](/bbs/images/405b18b4b6584ae338e0f6ecaf736533.png)
![](/bbs/images/1c53668bcee393edac0d7b3b3daff1ae.png)
/**//*
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
*14字节的以太网包头
![](/bbs/images/05dd8d549cff04457a6366b0a7c9352a.png)
*/
![](/bbs/images/a6339ee3e57d1d52bc7d02b338e15a60.png)
typedef struct _ETHDR
![](/bbs/images/405b18b4b6584ae338e0f6ecaf736533.png)
![](/bbs/images/1c53668bcee393edac0d7b3b3daff1ae.png)
![](/bbs/images/64bd3f76c3bac8e6b320829f254ffa63.png)
{
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
UCHAR eh_dst[ETH_ALEN]; // 目的MAC地址
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
UCHAR eh_src[ETH_ALEN]; // 源MAC地址
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT eh_type; // 下层协议类型,如IP(ETHERTYPE_IP)、ARP(ETHERTYPE_ARP)等
![](/bbs/images/05dd8d549cff04457a6366b0a7c9352a.png)
} ETHDR, *PETHDR;
![](/bbs/images/405b18b4b6584ae338e0f6ecaf736533.png)
![](/bbs/images/1c53668bcee393edac0d7b3b3daff1ae.png)
/**//*
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
*28字节的ARP头
![](/bbs/images/05dd8d549cff04457a6366b0a7c9352a.png)
*/
![](/bbs/images/a6339ee3e57d1d52bc7d02b338e15a60.png)
typedef struct _ARPHDR
![](/bbs/images/405b18b4b6584ae338e0f6ecaf736533.png)
![](/bbs/images/1c53668bcee393edac0d7b3b3daff1ae.png)
![](/bbs/images/64bd3f76c3bac8e6b320829f254ffa63.png)
{
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT ar_hrd; // 硬件地址类型,以太网中为ARPHRD_ETHER
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT ar_pro; // 协议地址类型,ETHERTYPE_IP
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
UCHAR ar_hln; // 硬件地址长度,MAC地址的长度为6
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
UCHAR ar_pln; // 协议地址长度,IP地址的长度为4
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT ar_op; // ARP操作代码,ARPOP_REQUEST为请求,ARPOP_REPLY为响应
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
UCHAR ar_sha[ETH_ALEN]; // 源MAC地址
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
ULONG ar_sip; // 源IP地址
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
UCHAR ar_tha[ETH_ALEN]; // 目的MAC地址
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
ULONG ar_tip; // 目的IP地址
![](/bbs/images/05dd8d549cff04457a6366b0a7c9352a.png)
} ARPHDR, *PARPHDR;
![](/bbs/images/405b18b4b6584ae338e0f6ecaf736533.png)
![](/bbs/images/1c53668bcee393edac0d7b3b3daff1ae.png)
/**//*
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
*20字节的IP头
![](/bbs/images/05dd8d549cff04457a6366b0a7c9352a.png)
*/
![](/bbs/images/a6339ee3e57d1d52bc7d02b338e15a60.png)
typedef struct _IPHDR
![](/bbs/images/405b18b4b6584ae338e0f6ecaf736533.png)
![](/bbs/images/1c53668bcee393edac0d7b3b3daff1ae.png)
![](/bbs/images/64bd3f76c3bac8e6b320829f254ffa63.png)
{
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
UCHAR h_lenver; // 版本号和头长度(各占4位)
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
UCHAR tos; // 服务类型
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT total_len; // 封包总长度,即整个IP报的长度
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT ident; // 封包标识,惟一标识发送的每一个数据报
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT frag_and_flags; // 标志
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
UCHAR ttl; // 生存时间,就是TTL
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
UCHAR protocol; // 协议,可能是TCP、UDP、ICMP等
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT checksum; // 校验和
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
ULONG saddr; // 源IP地址
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
ULONG daddr; // 目标IP地址
![](/bbs/images/05dd8d549cff04457a6366b0a7c9352a.png)
} IPHDR, *PIPHDR;
![](/bbs/images/405b18b4b6584ae338e0f6ecaf736533.png)
![](/bbs/images/1c53668bcee393edac0d7b3b3daff1ae.png)
/**//*
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
*20字节的TCP头
![](/bbs/images/05dd8d549cff04457a6366b0a7c9352a.png)
*/
![](/bbs/images/a6339ee3e57d1d52bc7d02b338e15a60.png)
typedef struct _TCPHDR
![](/bbs/images/405b18b4b6584ae338e0f6ecaf736533.png)
![](/bbs/images/1c53668bcee393edac0d7b3b3daff1ae.png)
![](/bbs/images/64bd3f76c3bac8e6b320829f254ffa63.png)
{
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT srceport; // 16位源端口号
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT dstport; // 16位目的端口号
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
ULONG seq; // 32位序列号
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
ULONG ack; // 32位确认号
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
UCHAR dataoffset; // 高4位表示数据偏移
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
UCHAR flags; // 6位标志位
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
//FIN - 0x01
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
//SYN - 0x02
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
//RST - 0x04
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
//PSH - 0x08
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
//ACK - 0x10
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
//URG - 0x20
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
//ACE - 0x40
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
//CWR - 0x80
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT window; // 16位窗口大小
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT checksum; // 16位校验和
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT urgptr; // 16位紧急数据偏移量
![](/bbs/images/05dd8d549cff04457a6366b0a7c9352a.png)
} TCPHDR, *PTCPHDR;
![](/bbs/images/405b18b4b6584ae338e0f6ecaf736533.png)
![](/bbs/images/1c53668bcee393edac0d7b3b3daff1ae.png)
/**//*
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
*伪TCP头,计算校验和时使用
![](/bbs/images/05dd8d549cff04457a6366b0a7c9352a.png)
*/
![](/bbs/images/a6339ee3e57d1d52bc7d02b338e15a60.png)
typedef struct _PSDTCPHDR
![](/bbs/images/405b18b4b6584ae338e0f6ecaf736533.png)
![](/bbs/images/1c53668bcee393edac0d7b3b3daff1ae.png)
![](/bbs/images/64bd3f76c3bac8e6b320829f254ffa63.png)
{
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
ULONG saddr;
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
ULONG daddr;
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
char mbz;
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
char ptcl;
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT tcpl;
![](/bbs/images/05dd8d549cff04457a6366b0a7c9352a.png)
} PSDTCPHDR, *PPSDTCPHDR;
![](/bbs/images/405b18b4b6584ae338e0f6ecaf736533.png)
![](/bbs/images/1c53668bcee393edac0d7b3b3daff1ae.png)
/**//*
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
*8字节的UDP头
![](/bbs/images/05dd8d549cff04457a6366b0a7c9352a.png)
*/
![](/bbs/images/a6339ee3e57d1d52bc7d02b338e15a60.png)
typedef struct _UDPHDR
![](/bbs/images/405b18b4b6584ae338e0f6ecaf736533.png)
![](/bbs/images/1c53668bcee393edac0d7b3b3daff1ae.png)
![](/bbs/images/64bd3f76c3bac8e6b320829f254ffa63.png)
{
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT srcport; // 源端口号
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT dstport; // 目的端口号
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT len; // 封包长度
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT checksum; // 校验和
![](/bbs/images/05dd8d549cff04457a6366b0a7c9352a.png)
} UDPHDR, *PUDPHDR;
![](/bbs/images/405b18b4b6584ae338e0f6ecaf736533.png)
![](/bbs/images/1c53668bcee393edac0d7b3b3daff1ae.png)
/**//*
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
*伪UDP头,计算校验和时使用
![](/bbs/images/05dd8d549cff04457a6366b0a7c9352a.png)
*/
![](/bbs/images/a6339ee3e57d1d52bc7d02b338e15a60.png)
typedef struct _PSDUDPHDR
![](/bbs/images/405b18b4b6584ae338e0f6ecaf736533.png)
![](/bbs/images/1c53668bcee393edac0d7b3b3daff1ae.png)
![](/bbs/images/64bd3f76c3bac8e6b320829f254ffa63.png)
{
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
ULONG saddr;
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
ULONG daddr;
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
char mbz;
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
char ptcl;
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT udpl;
![](/bbs/images/05dd8d549cff04457a6366b0a7c9352a.png)
} PSDUDPHDR, *PPSDUDPHDR;
![](/bbs/images/405b18b4b6584ae338e0f6ecaf736533.png)
![](/bbs/images/1c53668bcee393edac0d7b3b3daff1ae.png)
/**//*
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
*12字节的ICMP头
![](/bbs/images/05dd8d549cff04457a6366b0a7c9352a.png)
*/
![](/bbs/images/a6339ee3e57d1d52bc7d02b338e15a60.png)
typedef struct _ICMPHDR
![](/bbs/images/405b18b4b6584ae338e0f6ecaf736533.png)
![](/bbs/images/1c53668bcee393edac0d7b3b3daff1ae.png)
![](/bbs/images/64bd3f76c3bac8e6b320829f254ffa63.png)
{
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
UCHAR type; //类型
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
UCHAR code; //代码
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT checksum; //校验和
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT id; //标识符
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT sequence; //序列号
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
ULONG timestamp; //时间戳
![](/bbs/images/05dd8d549cff04457a6366b0a7c9352a.png)
} ICMPHDR, *PICMPHDR;
![](/bbs/images/405b18b4b6584ae338e0f6ecaf736533.png)
![](/bbs/images/1c53668bcee393edac0d7b3b3daff1ae.png)
/**//*
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
*6字节的PPPOE头+2字节协议
![](/bbs/images/05dd8d549cff04457a6366b0a7c9352a.png)
*/
![](/bbs/images/a6339ee3e57d1d52bc7d02b338e15a60.png)
typedef struct _PPPOEHDR
![](/bbs/images/405b18b4b6584ae338e0f6ecaf736533.png)
![](/bbs/images/1c53668bcee393edac0d7b3b3daff1ae.png)
![](/bbs/images/64bd3f76c3bac8e6b320829f254ffa63.png)
{
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
UCHAR ver_type; //版本+类型 一般为0x11
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
UCHAR code; //编码
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT sessionid; //session id
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT len; //长度
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT protocol; //协议
![](/bbs/images/05dd8d549cff04457a6366b0a7c9352a.png)
} PPPOEHDR, *PPPPOEHDR;
![](/bbs/images/405b18b4b6584ae338e0f6ecaf736533.png)
![](/bbs/images/1c53668bcee393edac0d7b3b3daff1ae.png)
/**//*
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
* dns包头
![](/bbs/images/05dd8d549cff04457a6366b0a7c9352a.png)
*/
![](/bbs/images/a6339ee3e57d1d52bc7d02b338e15a60.png)
typedef struct _DNSHDR
![](/bbs/images/405b18b4b6584ae338e0f6ecaf736533.png)
![](/bbs/images/1c53668bcee393edac0d7b3b3daff1ae.png)
![](/bbs/images/64bd3f76c3bac8e6b320829f254ffa63.png)
{
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT id;
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT flags;
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT quests;
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT answers;
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT author;
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT addition;
![](/bbs/images/05dd8d549cff04457a6366b0a7c9352a.png)
} DNSHDR, *PDNSHDR;
![](/bbs/images/405b18b4b6584ae338e0f6ecaf736533.png)
![](/bbs/images/1c53668bcee393edac0d7b3b3daff1ae.png)
/**//*
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
* dns查询包,query
![](/bbs/images/05dd8d549cff04457a6366b0a7c9352a.png)
*/
![](/bbs/images/a6339ee3e57d1d52bc7d02b338e15a60.png)
typedef struct _DNSQUERY
![](/bbs/images/405b18b4b6584ae338e0f6ecaf736533.png)
![](/bbs/images/1c53668bcee393edac0d7b3b3daff1ae.png)
![](/bbs/images/64bd3f76c3bac8e6b320829f254ffa63.png)
{
![](/bbs/images/2887d91d0594ef8793c1db92b8a1d545.png)
![](/bbs/images/7a2b9a960ee9a98bfd25d306d55009f8.png)
/**//*UCHAR *dname;*/ //查询的域名,这是一个大小在0到63之间的字符串
![](/bbs/images/2887d91d0594ef8793c1db92b8a1d545.png)
![](/bbs/images/7a2b9a960ee9a98bfd25d306d55009f8.png)
/**//*该域名的获取方法如下:
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
* 长度:udp包总长度-sizeof(UDPHDR)-sizeof(DNSHDR)-sizeof(DNSQUERY)
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
* 内容在dns头后面
![](/bbs/images/105a1e124122b2abcee4ea8e9f5108f3.png)
*/
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT type; //查询类型,大约有20个不同的类型
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT classes; //查询类,通常是A类既查询IP地址
![](/bbs/images/05dd8d549cff04457a6366b0a7c9352a.png)
} DNSQUERY, *PDNSQUERY;
![](/bbs/images/405b18b4b6584ae338e0f6ecaf736533.png)
![](/bbs/images/1c53668bcee393edac0d7b3b3daff1ae.png)
/**//*
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
* dns响应包
![](/bbs/images/05dd8d549cff04457a6366b0a7c9352a.png)
*/
![](/bbs/images/a6339ee3e57d1d52bc7d02b338e15a60.png)
typedef struct _DNSRESPONSE
![](/bbs/images/405b18b4b6584ae338e0f6ecaf736533.png)
![](/bbs/images/1c53668bcee393edac0d7b3b3daff1ae.png)
![](/bbs/images/64bd3f76c3bac8e6b320829f254ffa63.png)
{
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT name; // 查询的域名
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT type; // 查询的类型
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT classes; // 类型码
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
UINT ttl; // 生存时间
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
USHORT length; // 资源数据长度
![](/bbs/images/33d02437d135341f0800e3d415312ae8.png)
UINT addr; // 资源数据
![](/bbs/images/05dd8d549cff04457a6366b0a7c9352a.png)
} DNSRESPONSE, *PDNRESPONSE;
![](/bbs/images/a6339ee3e57d1d52bc7d02b338e15a60.png)
#pragma pack(pop)