以下常量按主机字节顺序为 DNS 定义。
DNS 记录类型
这些是 DNS 查询/记录类型。
| 恒定的 | 值 |
|---|---|
| DNS_TYPE_A | 0x0001 |
| DNS_TYPE_NS | 0x0002 |
| DNS_TYPE_MD | 0x0003 |
| DNS_TYPE_MF | 0x0004 |
| DNS_TYPE_CNAME | 0x0005 |
| DNS_TYPE_SOA | 0x0006 |
| DNS_TYPE_MB | 0x0007 |
| DNS_TYPE_MG | 0x0008 |
| DNS_TYPE_MR | 0x0009 |
| DNS_TYPE_NULL | 0x000a |
| DNS_TYPE_WKS | 0x000b |
| DNS_TYPE_PTR | 0x000c |
| DNS_TYPE_HINFO | 0x000d |
| DNS_TYPE_MINFO | 0x000e |
| DNS_TYPE_MX | 0x000f |
| DNS_TYPE_TEXT | 0x0010 |
| DNS_TYPE_RP | 0x0011 |
| DNS_TYPE_AFSDB | 0x0012 |
| DNS_TYPE_X25 | 0x0013 |
| DNS_TYPE_ISDN | 0x0014 |
| DNS_TYPE_RT | 0x0015 |
| DNS_TYPE_NSAP | 0x0016 |
| DNS_TYPE_NSAPPTR | 0x0017 |
| DNS_TYPE_SIG | 0x0018 |
| DNS_TYPE_KEY | 0x0019 |
| DNS_TYPE_PX | 0x001a |
| DNS_TYPE_GPOS | 0x001b |
| DNS_TYPE_AAAA | 0x001c |
| DNS_TYPE_LOC | 0x001d |
| DNS_TYPE_NXT | 0x001e |
| DNS_TYPE_EID | 0x001f |
| DNS_TYPE_NIMLOC | 0x0020 |
| DNS_TYPE_SRV | 0x0021 |
| DNS_TYPE_ATMA | 0x0022 |
| DNS_TYPE_NAPTR | 0x0023 |
| DNS_TYPE_KX | 0x0024 |
| DNS_TYPE_CERT | 0x0025 |
| DNS_TYPE_A6 | 0x0026 |
| DNS_TYPE_DNAME | 0x0027 |
| DNS_TYPE_SINK | 0x0028 |
| DNS_TYPE_OPT | 0x0029 |
| DNS_TYPE_DS | 0x002B |
| DNS_TYPE_RRSIG | 0x002E |
| DNS_TYPE_NSEC | 0x002F |
| DNS_TYPE_DNSKEY (DNS密钥类型) | 0x0030 |
| DNS_TYPE_DHCID | 0x0031 |
| DNS_TYPE_UINFO | 0x0064 |
| DNS_TYPE_UID | 0x0065 |
| DNS_TYPE_GID | 0x0066 |
| DNS_TYPE_UNSPEC | 0x0067 |
| DNS_TYPE_ADDRS | 0x00f8 |
| DNS_TYPE_TKEY | 0x00f9 |
| DNS_TYPE_TSIG | 0x00fa |
| DNS_TYPE_IXFR | 0x00fb |
| DNS_TYPE_AXFR | 0x00fc |
| DNS_TYPE_MAILB | 0x00fd |
| DNS_TYPE_MAILA | 0x00fe |
| DNS_TYPE_ALL | 0x00ff |
| DNS_TYPE_ANY | 0x00ff |
| DNS_TYPE_WINS | 0xff01 |
| DNS_TYPE_WINSR | 0xff02 |
| DNS_TYPE_NBSTAT | DNS_TYPE_WINSR |
| DNS_TYPE_TLSA。 请参阅 RFC 6698。 | 0x0034 (52) |
| DNS_TYPE_SVCB。 请参阅 draft-ietf-dnsop-svcb-https。 设置DNS_TYPE_SVCB时(DNS_QUERY_REQUEST3 ::QueryType), DnsQueryEx 的响应采用 DNS_SVCB_DATA格式。 | 0x0040 (64) |
| DNS_TYPE_HTTPS。 请参阅 draft-ietf-dnsop-svcb-https。 设置DNS_TYPE_HTTPS时(DNS_QUERY_REQUEST3 ::QueryType), DnsQueryEx 的响应采用 DNS_SVCB_DATA格式。 | 0x0041 (65) |
DNS 类类型
| 恒定的 | 值 |
|---|---|
| DNS_CLASS_INTERNET | 0x0001 |
| DNS_CLASS_CSNET | 0x0002 |
| DNS_CLASS_CHAOS | 0x0003 |
| DNS_CLASS_HESIOD | 0x0004 |
| DNS_CLASS_NONE | 0x00fe |
| DNS_CLASS_ALL | 0x00ff |
| DNS_CLASS_ANY | 0x00ff |
DNS 查询类型
| 恒定的 | 值 |
|---|---|
| DNS_OPCODE_QUERY | 0x0000 |
| DNS_OPCODE_IQUERY | 0x0001 |
| DNS_OPCODE_SERVER_STATUS | 0x0002 |
| DNS 操作代码未知 (DNS_OPCODE_UNKNOWN) | 0x0003 |
| DNS_OPCODE_NOTIFY | 0x0004 |
| DNS_OPCODE_UPDATE | 0x0005 |
DNS 记录标记
以下标记引用 DNS 消息中的资源记录 (RR) 部分:
| 恒定的 | 值 | 意义 |
|---|---|---|
| DNSREC_QUESTION | 0x00000000 | RR 位于问题部分 |
| DNSREC_ANSWER | 0x00000001 | RR 位于答案部分中 |
| DNSREC_AUTHORITY | 0x00000002 | RR 位于颁发机构部分 |
| DNSREC_ADDITIONAL | 0x00000003 | RR 位于附加部分中 |
以下标志根据 RFC 2136 引用更新 DNS 消息中的 RR 部分:
| 恒定的 | 值 | 意义 |
|---|---|---|
| DNSREC_ZONE | 0x00000000 | RR 位于区域部分中 |
| DNSREC_PREREQ | 0x00000001 | RR 位于先决条件部分中 |
| DNSREC_UPDATE | 0x00000002 | RR 位于更新部分中 |
以下标志是互斥的:
| 恒定的 | 值 | 意义 |
|---|---|---|
| DNSREC_DELETE | 0x00000004 | 删除 RR。 与DNSREC_UPDATE结合使用 |
| DNSREC_NOEXIST | 0x00000004 | RR 不存在。 与DNSREC_PREREQ结合使用 |
DNS 查询选项
| 恒定的 | 值 | 意义 |
|---|---|---|
| DNS_QUERY_STANDARD | 0x00000000 | 标准查询。 |
| DNS_QUERY_ACCEPT_TRUNCATED_RESPONSE | 0x00000001 | 返回截断的结果。 不要在 TCP 下重试。 |
| DNS_QUERY_USE_TCP_ONLY | 0x00000002 | 仅对查询使用 TCP。 |
| DNS_QUERY_NO_RECURSION | 0x00000004 | 指示 DNS 服务器执行迭代查询(具体指示 DNS 服务器不执行递归解析来解析查询)。 |
| DNS_QUERY_BYPASS_CACHE | 0x00000008 | 绕过查找时的 解析程序 缓存。 |
| DNS_QUERY_NO_WIRE_QUERY | 0x00000010 | 指示 DNS 仅对本地缓存执行查询。Windows 2000 Server 和 Windows 2000 Professional:不支持 此值。 对于类似的功能,请使用 DNS_QUERY_CACHE_ONLY。 |
| DNS_QUERY_NO_LOCAL_NAME | 0x00000020 | 指示 DNS 忽略本地名称。Windows 2000 Server 和 Windows 2000 Professional:不支持 此值。 |
| DNS_QUERY_NO_HOSTS_FILE | 0x00000040 | 阻止 DNS 查询查阅 HOSTS 文件。Windows 2000 Server 和 Windows 2000 Professional:不支持此值。 |
| DNS_QUERY_NO_NETBT | 0x00000080 | 防止 DNS 查询使用 NetBT 进行解析。Windows 2000 Server 和 Windows 2000 Professional: 此值不受支持。 |
| DNS_QUERY_WIRE_ONLY | 0x00000100 | 指示 DNS 仅使用网络执行查询,绕过本地信息。Windows 2000 Server 和 Windows 2000 Professional:不支持 此值。 |
| DNS_QUERY_RETURN_MESSAGE | 0x00000200 | 指示 DNS 返回整个 DNS 响应消息。Windows 2000 Server 和 Windows 2000 Professional:不支持 此值。 |
| DNS_QUERY_MULTICAST_ONLY | 0x00000400 | 阻止查询使用 DNS,并且仅使用链路本地多播名称解析 (LLMNR)。Windows Vista 和 Windows Server 2008 或更高版本: 支持此值。 |
| DNS_QUERY_NO_MULTICAST | 0x00000800 | |
| DNS_QUERY_TREAT_AS_FQDN | 0x00001000 | 防止 DNS 响应在名称解析过程中将后缀附加到提交的名称。 |
| DNS_QUERY_ADDRCONFIG | 0x00002000 | 仅限 Windows 7:如果 IPv4 地址在接口上不可用, 则不要发送 类型查询;如果 IPv6 地址不可用,则不要发送 AAAA 类型查询。 |
| DNS_QUERY_DUAL_ADDR | 0x00004000 | 仅限 Windows 7:查询 AAAA 和 A 类型记录,并为每个返回结果。 A 类型记录的结果将映射到 AAAA 类型。 |
| DNS_QUERY_MULTICAST_WAIT | 0x00020000 | 等待完全超时以收集来自本地链接的所有响应。 如果未设置,默认行为是返回第一个响应。Windows Vista 和 Windows Server 2008 或更高版本。 支持此值。 |
| DNS_QUERY_MULTICAST_VERIFY | 0x00040000 | 使用本地计算机主机名指导测试,以验证同一本地链接上的名称唯一性。 收集所有响应,即使未启用正常的 LLMNR 发送方行为。Windows Vista 和 Windows Server 2008 或更高版本。 支持此值。 |
| DNS_QUERY_DONT_RESET_TTL_VALUES | 0x00100000 | 如果已设置该选项,并且响应包含多个记录,则记录将使用与所有记录中的最小值 TTL 对应的 TTL 进行存储。 设置该选项后,返回的记录集中的“不要更改单个记录的 TTL”状态不会被修改。 |
| DNS_QUERY_DISABLE_IDN_ENCODING | 0x00200000 | 在 DnsQuery、DnsQueryEx、DnsModifyRecordsInSet和 DnsReplaceRecordSet API 中禁用国际域名(IDN)编码支持。 所有 Punycode 名称都被视为 ASCII,并将在网络传输时进行 ASCII 编码。 所有非 ASCII 名称均通过网络以 UTF8 编码。 Windows 8 或更高版本。 此值受支持。 |
| DNS_QUERY_APPEND_MULTILABEL | 0x00800000 | |
| DNS_QUERY_RESERVED | 0xf0000000 | 保留。 |
| DNS_QUERY_PARSE_ALL_RECORDS | 0x0400000000000000 | 设置DNS_QUERY_PARSE_ALL_RECORDS时(在 DNS_QUERY_REQUEST3::QueryOptions 中), DnsQueryEx 会筛选出所有不可分析的返回记录。 仅返回已分析的记录(无法分析的未知记录将不会返回)。 如果未设置DNS_QUERY_PARSE_ALL_RECORDS,则尽最大努力返回所有内容。 因此,如果无法分析记录,则会将其作为平面缓冲区返回。 若要确定返回记录是采用平面格式还是分析格式,可以调用 DnsIsFlatRecord。 这非常有用,因为我们为当前未分析的未来记录类型添加分析。 如果未设置DNS_QUERY_PARSE_ALL_RECORDS,将分析以下记录:DNS_TYPE_A、DNS_TYPE_NS、DNS_TYPE_MD、DNS_TYPE_MF、DNS_TYPE_CNAME、DNS_TYPE_SOA、DNS_TYPE_MB、DNS_TYPE_MG、DNS_TYPE_MR、DNS_TYPE_WKS、DNS_TYPE_PTR、DNS_TYPE_HINFO、DNS_TYPE_MINFO、DNS_TYPE_MX、 DNS_TYPE_TEXT、DNS_TYPE_RP、DNS_TYPE_AFSDB、DNS_TYPE_X25、DNS_TYPE_ISDN、DNS_TYPE_RT、DNS_TYPE_SIG、DNS_TYPE_KEY、DNS_TYPE_AAAA、DNS_TYPE_SRV、DNS_TYPE_ATMA、DNS_TYPE_NAPTR、DNS_TYPE_DNAME、DNS_TYPE_OPT、DNS_TYPE_DS、DNS_TYPE_RRSIG、DNS_TYPE_NSEC、DNS_TYPE_DNSKEY、DNS_TYPE_DHCID、 DNS_TYPE_NSEC3、DNS_TYPE_NSEC3PARAM、DNS_TYPE_TLSA、DNS_TYPE_TKEY、DNS_TYPE_TSIG、DNS_TYPE_WINS、DNS_TYPE_WINSR。 所有其他记录类型将以平面格式返回(只要它们兼容平面读取),并且调用方有责任根据需要对其进行分析。 若要以分析的格式(如果可用)返回任何其他记录类型,必须设置DNS_QUERY_PARSE_ALL_RECORDS。 为了向后兼容,必须设置DNS_QUERY_PARSE_ALL_RECORDS,以便分析 DNS_TYPE_SVCB 和 DNS_TYPE_HTTPS,或将来定义的任何新记录类型。 |
DNS 更新选项
| 恒定的 | 值 | 意义 |
|---|---|---|
| DNS_UPDATE_SECURITY_USE_DEFAULT | 0x00000000 | 使用注册表中指定的默认行为来保护动态 DNS 更新。 |
| DNS_UPDATE_SECURITY_OFF | 0x00000010 | 不尝试安全动态更新。 |
| DNS_UPDATE_SECURITY_ON | 0x00000020 | 尝试非安全的动态更新;如果被拒绝,则尝试安全动态更新。 |
| DNS_UPDATE_SECURITY_ONLY | 0x00000100 | 仅尝试进行安全的动态更新。 |
| DNS_UPDATE_CACHE_SECURITY_CONTEXT | 0x00000200 | 缓存安全上下文以供将来的事务使用。 |
| DNS_UPDATE_TEST_USE_LOCAL_SYS_ACCT | 0x00000400 | 使用本地计算机帐户的凭据。 |
| DNS_UPDATE_FORCE_SECURITY_NEGO | 0x00000800 | 不使用缓存的安全上下文。 |
| DNS_UPDATE_TRY_ALL_MASTER_SERVERS | 0x00001000 | 向所有多主 DNS 服务器发送 DNS 更新。 |
| DNS_UPDATE_SKIP_NO_UPDATE_ADAPTERS | 0x00002000 | 不要更新禁用动态 DNS 更新的适配器。具有 SP2 或更高版本的 Windows 2000 Server。 支持此值。 |
| DNS_UPDATE_REMOTE_SERVER | 0x00004000 | 除了本地 DNS 服务器之外,在远程服务器上注册 CNAME 记录。具有 SP2 或更高版本的 Windows 2000 Server。 支持此值。 |
| DNS_UPDATE_RESERVED | 0xffff0000 | 保留以供将来使用。 |
DNS 响应代码
| 错误 | 意义 |
|---|---|
| DNS_RCODE_NOERROR | 无错误 |
| DNS_RCODE_FORMERR | 格式错误 |
| DNS_RCODE_SERVFAIL | 服务器故障 |
| DNS_RCODE_NXDOMAIN | 名称错误 |
| DNS_RCODE_NOTIMPL | 未实现 |
| DNS_RCODE_REFUSED | 连接被拒绝 |
| DNS_RCODE_YXDOMAIN | 域名不应存在 |
| DNS_RCODE_YXRRSET | 资源记录 (RR) 集不应存在 |
| DNS_RCODE_NXRRSET | RR 集不存在 |
| DNS_RCODE_NOTAUTH | 对区域不具有权威性 |
| DNS_RCODE_NOTZONE | 名称不在区域中 |
| DNS_RCODE_BADVERS | DNS (EDNS) 版本的扩展机制错误 |
| DNS_RCODE_BADSIG | 签名错误 |
| DNS_RCODE_BADKEY | 无效密钥 |
| DNS_RCODE_BADTIME | 时间戳错误 |
DNS 协议
| 恒定的 | 值 | 意义 |
|---|---|---|
| DNS_PROTOCOL_UNSPECIFIED(DNS协议未指定) | 0 | |
| DNS 协议 (UDP) | 1 | |
| DNS_PROTOCOL_TCP | 2 | |
| DNS_PROTOCOL_DOH | 3 | |
| DNS_PROTOCOL_DOT | 4 | |
| DNS_PROTOCOL_NO_WIRE | 5 |
其他常量
| 恒定的 | 值 | 意义 |
|---|---|---|
| DNS_QUERY_RAW_RESULTS_VERSION1 | 0x1 | |
| DNS_QUERY_RAW_REQUEST_VERSION1 | 0x1 | |
| DNS_QUERY_RAW_OPTION_BEST_EFFORT_PARSE | 0x1 |