1、 1 域 名 系 统 ( DNS) 是一种用于TCP/IP 应用程序的分布式数据库,它提供主机名字和IP 地址之间的转换信息
通常,网络用户通过 UDP 协议和DNS 服务器进行通信,而服务器在特定的53 端口监听,并返回用户所需的相关信息
一> DNS 协议的相关数据结构 DNS 数据报: typedef struct dns { unsigned short id; //标识,通过它客户端可以将 DNS 的请求与应答相匹配; unsigned short flags; //标志:[QR | opcode | AA| TC| RD| RA | zero | rcode ] unsigned short quests; //问题数目; unsigned short answers; //资源记录数目; unsigned short author; //授权资源记录数目; unsigned short addition; //额外资源记录数目; }DNS,*PDNS; 在 16 位的标志中:QR 位判断是查询/响应报文,opcode 区别查询类型,AA 判断是否为授权回答,TC 判断是否可截断,RD 判断是否期望递归查询,RA 判断是否为可用递归,zero 必须为 0,rcode 为返回码字段
DNS 查询数据报: typedef struct query { unsinged char *name; //查询的域名,这是一个大小在 0 到 63 之间的字符串; unsigned short type; //查询类型,大约有 20 个不同的类型 unsigned short classes; //查询类,通常是A 类既查询 IP 地址
}QUERY,*PQUERY; DNS 响应数据报: typedef struct response { unsigned shor