目录
解BUG的过程中碰到了DNS相关的内容,折腾网站和域名邮箱时也对DNS做了一些配置,发现对一些细节有点记不清晰了,因此很有必要重新温习一下这方面的知识。学过网络的应该记得现代计算机通信的基石是TCP/IP
协议,计算机A想要与计算机B进行通信,首先就必须要知道计算机B的IP地址,就像打电话一样,你给别人打电话首先必须得知道别人的电话号码吧,电话号码都不知道还搞个毛。但是问题来了,让人们去记忆这又臭又长的IP地址或是电话号码,无疑是不人道的,当然,这个小问题也并莫有难倒勤劳勇敢的人民群众。很快就发明了通讯录这个东西,用于将人名与电话号码联系起来。在计算机领域也出现了DNS(Domain Name System),即域名系统,用于将域名解析成对应的IP地址。本文将介绍DNS协议的基本理论及其报文格式,最后给出了用Wireshark抓取DNS报文的记录。如果需要了解更为详细的内容,请参考 RFC1034 和 RFC1035。
一. DNS协议理论知识
1.1. 域名结构
域名系统并不像电话号码通讯录那么简单,通讯录主要是单个个体在使用,同一个名字出现在不同个体的通讯录里并不会出现问题,但域名是群体中所有人都在用的,必须要保持唯一性。为了达到唯一性的目的,因特网在命名的时候采用了层次结构的命名方法。每一个域名(本文只讨论英文域名)都是一个标号序列(labels),用字母(A-Z,a-z,大小写等价)、数字(0-9)和连接符(-)组成,标号序列总长度不能超过255个字符,它由点号分割成一个个的标号(label),每个标号应该在63个字符之内,每个标号都可以看成一个层次的域名。级别最低的域名写在左边,级别最高的域名写在右边。域名服务主要是基于UDP实现的,服务器的端口号为53。
比如:本网站的域名 jocent.me
,由点号分割成了两个域名jocent
和 me
,其中 me
是顶级域名(TLD,Top-Level Domain), jocent
是二级域名(SLD,Second Level Domain)。关于域名的层次结构,请看下面的示意图。
注意:最开始的域名最后都是带了点号的,比如 jocent.me
搁以前的话应该是 jocent.me.
,最后面的点号表示根域名服务器,后来发现所有的网址都要加上最后的点,就简化了写法,干脆所有的都不加,但是你在网址后面加上点号也是可以正常解析的。
1.2. 域名服务器
有域名结构还不行,还需要有一个东西去解析域名,手机通讯录是由通讯录软件解析的,域名需要由遍及全世界的域名服务器去解析,域名服务器实际上就是装有域名系统的主机。由高向低进行层次划分,可分为以下几大类:
- 根域名服务器: 最高层次的域名服务器,也是最重要的域名服务器,本地域名服务器如果解析不了域名就会向根域名服务器求助。全球共有13个不同IP地址的根域名服务器,它们的名称用一个英文字母命名,从a一直到m。这些服务器由各种组织控制,并由 ICANN(互联网名称和数字地址分配公司)授权,由于每分钟都要解析的名称数量多得令人难以置信,所以实际上每个根服务器都有镜像服务器,每个根服务器与它的镜像服务器共享同一个 IP 地址,中国大陆地区内只有6组根服务器镜像(F,I(3台),J,L)。当你对某个根服务器发出请求时,请求会被路由到该根服务器离你最近的镜像服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和地址,如果向根服务器发出对
“jocent.me”
的请求,则根服务器是不能在它的记录文件中找到与“jocent.me”
匹配的记录。但是它会找到“me”
的顶级域名记录,并把负责“me”
地址的顶级域名服务器的地址发回给请求者。 - 顶级域名服务器:负责管理在该顶级域名服务器下注册的二级域名。当根域名服务器告诉查询者顶级域名服务器地址时,查询者紧接着就会到顶级域名服务器进行查询。比如还是查询
"jocent.me"
,根域名服务器已经告诉了查询者“me”
顶级域名服务器的地址,“me”
顶级域名服务器会找到“jocent.me”
的域名服务器的记录,域名服务器检查其区域文件,并发现它有与“jocent.me”
相关联的区域文件。在此文件的内部,有该主机的记录。此记录说明此主机所在的 IP 地址,并向请求者返回最终答案。 - 权限域名服务器:负责一个区的域名解析工作
- 本地域名服务器:当一个主机发出DNS查询请求的时候,这个查询请求首先就是发给本地域名服务器的。
1.3. 域名解析过程
域名解析总体可分为两大步骤,第一个步骤是本机向本地域名服务器发出一个DNS请求报文,报文里携带需要查询的域名;第二个步骤是本地域名服务器向本机回应一个DNS响应报文,里面包含域名对应的IP地址。从下面对jocent.me
进行域名解析的报文中可明显看出这两大步骤。注意:第二大步骤中采用的是迭代查询,其实是包含了很多小步骤的,详情见下面的流程分析。
其具体的流程可描述如下:
- 主机10.74.36.90先向本地域名服务器10.74.1.11进行递归查询
- 本地域名服务器采用迭代查询,向一个根域名服务器进行查询
- 根域名服务器告诉本地域名服务器,下一次应该查询的顶级域名服务器
dns.me
的IP地址 - 本地域名服务器向顶级域名服务器
dns.me
进行查询 - 顶级域名服务器
me
告诉本地域名服务器,下一步查询权限服务器dns.jocent.me
的IP地址 - 本地域名服务器向权限服务器
dns.jocent.me
进行查询 - 权限服务器
dns.jocent.me
告诉本地域名服务器所查询的主机的IP地址 - 本地域名服务器最后把查询结果告诉 10.74.36.90
其中有两个概念递归查询和迭代查询,其实在整个描述的过程中已经体现的很明显,这里再说明一下:
- 递归查询:本机向本地域名服务器发出一次查询请求,就静待最终的结果。如果本地域名服务器无法解析,自己会以DNS客户机的身份向其它域名服务器查询,直到得到最终的IP地址告诉本机
- 迭代查询:本地域名服务器向根域名服务器查询,根域名服务器告诉它下一步到哪里去查询,然后它再去查,每次它都是以客户机的身份去各个服务器查询
二. DNS协议报文格式
2.1 头部
- 会话标识(2字节):是DNS报文的ID标识,对于请求报文和其对应的应答报文,这个字段是相同的,通过它可以区分DNS应答报文是哪个请求的响应
- 标志(2字节):
QR(1bit) 查询/响应标志,0为查询,1为响应 opcode(4bit) 0表示标准查询,1表示反向查询,2表示服务器状态请求 AA(1bit) 表示授权回答 TC(1bit) 表示可截断的 RD(1bit) 表示期望递归 RA(1bit) 表示可用递归 rcode(4bit) 表示返回码,0表示没有差错,3表示名字差错,2表示服务器错误(Server Failure) - 数量字段(总共8字节):Questions、Answer RRs、Authority RRs、Additional RRs 各自表示后面的四个区域的数目。Questions表示查询问题区域节的数量,Answers表示回答区域的数量,Authoritative namesversers表示授权区域的数量,Additional recoreds表示附加区域的数量
2.2 正文
- Queries区域1.1 查询名:长度不固定,且不使用填充字节,一般该字段表示的就是需要查询的域名(如果是反向查询,则为IP,反向查询即由IP地址反查域名),一般的格式如下图所示。1.2 查询类型:
类型 助记符 说明 1 A 由域名获得IPv4地址 2 NS 查询域名服务器 5 CNAME 查询规范名称 6 SOA 开始授权 11 WKS 熟知服务 12 PTR 把IP地址转换成域名 13 HINFO 主机信息 15 MX 邮件交换 28 AAAA 由域名获得IPv6地址 252 AXFR 传送整个区的请求 255 ANY 对所有记录的请求 这里给一个域名,可用来模拟DNS的查询类型,可以选择不同的类型,比如A,PTR等玩一下, https://www.nslookuptool.com/chs/
1.3 查询类:通常为1,表明是Internet数据 - 资源记录(RR)区域(包括回答区域,授权区域和附加区域)
该区域有三个,但格式都是一样的。这三个区域分别是:回答区域,授权区域和附加区域
2.1. 域名(2字节或不定长):它的格式和Queries区域的查询名字字段是一样的。有一点不同就是,当报文中域名重复出现的时候,该字段使用2个字节的偏移指针来表示。比如,在资源记录中,域名通常是查询问题部分的域名的重复,因此用2字节的指针来表示,具体格式是最前面的两个高位是 11,用于识别指针。其余的14位从DNS报文的开始处计数(从0开始),指出该报文中的相应字节数。一个典型的例子,C00C
(1100000000001100,12正好是头部的长度,其正好指向Queries区域的查询名字字段)。
2.2 查询类型:表明资源纪录的类型,见1.2节的查询类型表格所示
2.3 查询类:对于Internet信息,总是IN
2.4 生存时间(TTL):以秒为单位,表示的是资源记录的生命周期,一般用于当地址解析程序取出资源记录后决定保存及使用缓存数据的时间,它同时也可以表明该资源记录的稳定程度,极为稳定的信息会被分配一个很大的值(比如86400,这是一天的秒数)。
2.5. 资源数据:该字段是一个可变长字段,表示按照查询段的要求返回的相关资源记录的数据。可以是Address(表明查询报文想要的回应是一个IP地址)或者CNAME(表明查询报文想要的回应是一个规范主机名)等。
三. Wireshark分析DNS协议
下面给出wireshark抓包的记录,感兴趣的可以根据上面介绍的协议报文格式手动解析一下,相信会有很大收获。
3.1 请求报文
3.2 响应报文
DNS相关的命令小贴士:
- Windows环境下清空DNS缓存的命令是
ipconfig/flushdns
也可以通过重启DNS client 和 DHCP client 两项服务清空DNS缓存 - Windows环境下可以用命令
ipconfig /displaydns
来查看DNS缓存的内容 nslookup
命令可以用来查看域名对应的IP地址,比如nslookup jocent.me
===========================================================================================
DNS报文格式
(1)公共报文头格式其中header报文头是必须有的,其他的有没有在报文头里有定义:
标识ID: 请求客户端设置的16位标示,服务器给出应答的时候会带相同的标示字段回来,这样请求客户端就可以区分不同的请求应答了。
标志:
QR 1个比特位用来区分是请求(0)还是应答(1)。
OPCODE 4个比特位用来设置查询的种类,应答的时候会带相同值,可用的值如下:
0 标准查询 (QUERY)
1 反向查询 (IQUERY)
2 服务器状态查询 (STATUS)
3-15 保留值,暂时未使用
AA 授权应答(Authoritative Answer) - 这个比特位在应答的时候才有意义,指出给出应答的服务器是查询域名的授权解析服务器。
注意因为别名的存在,应答可能存在多个主域名,这个AA位对应请求名,或者应答中的第一个主域名。
TC 截断(TrunCation) - 用来指出报文比允许的长度还要长,导致被截断。
RD 期望递归(Recursion Desired) - 这个比特位被请求设置,应答的时候使用的相同的值返回。如果设置了RD,就建议域名服务器进行递归解析,递归查询的支持是可选的。
RA 支持递归(Recursion Available) - 这个比特位在应答中设置或取消,用来代表服务器是否支持递归查询。
Z 保留值,暂时未使用。在所有的请求和应答报文中必须置为0。
RCODE 应答码(Response code) - 这4个比特位在应答报文中设置,代表的含义如下:
0 没有错误。
1 报文格式错误(Format error) - 服务器不能理解请求的报文。
2 服务器失败(Server failure) - 因为服务器的原因导致没办法处理这个请求。
3 名字错误(Name Error) - 只有对授权域名解析服务器有意义,指出解析的域名不存在。
4 没有实现(Not Implemented) - 域名服务器不支持查询类型。
5 拒绝(Refused) - 服务器由于设置的策略拒绝给出应答。比如,服务器不希望对某些请求者给出应答,或者服务器不希望进行某些操作(比如区域传送zone transfer)。
6-15 保留值,暂时未使用。
问题数QDCOUNT 无符号16位整数表示报文请求段中的问题记录数。
资源记录数ANCOUNT 无符号16位整数表示报文回答段中的回答记录数。
授权资源记录数NSCOUNT 无符号16位整数表示报文授权段中的授权记录数。
额外资源记录数ARCOUNT 无符号16位整数表示报文附加段中的附加记录数。
(2)查询报文格式:
查询名QNAME 要查找的名字,是一个或多个标识符的序列。每个标识符以首字节的计数值来说明随后标识符的字节长度,每个名字以最后字节为0结束,长度为0的标识符是根标识符。单个标识符最大长度为63字节。
查询类型QTYPE 每个问题有一个查询类型。2个字节表示查询类型,取值可以为任何可用的类型值,以及通配码来表示所有的资源记录。
名字 数值 描述
A (1) 期望获得查询名的IP地址。
NS (2) 一个授权的域名服务器。
CNAME (5) 规范名称。
PTR (12) 指针记录。
HINFO (13) 主机信息。
MX (15) 邮件交换记录。
AXFR (252) 对区域转换的请求。
ANY (255) 对所有记录的请求。
其他QTYPE类型有
MD 3 a mail destination (Obsolete - use MX)
MF 4 a mail forwarder (Obsolete - use MX)
SOA 6 marks the start of a zone of authority
MB 7 a mailbox domain name (EXPERIMENTAL)
MG 8 a mail group member (EXPERIMENTAL)
MR 9 a mail rename domain name (EXPERIMENTAL)
NULL 10 a null RR (EXPERIMENTAL)
WKS 11 a well known service description
MINFO 14 mailbox or mail list information
TXT 16 text strings
查询类型出现在问题字段中,查询类型是类型的一个超集,所有的类型都是可用的查询类型
AXFR 252 A request for a transfer of an entire zone
MAILB 253 A request for mailbox-related records (MB, MG or MR)
MAILA 254 A request for mail agent RRs (Obsolete - see MX)
255 A request for all records
查询类:
IN (1) 指互联网地址。
CS 2 the CSNET class (Obsolete - used only for examples in some obsolete RFCs)
CH 3 the CHAOS class
HS 4 Hesiod [Dyer 87]
查询类是类的一个超集
* 255 any class
(3)应答报文格式:
域名NAME 资源记录包含的域名
类型TYPE 2个字节表示资源记录的类型,指出RDATA数据的含义
类CLASS 2个字节表示RDATA的类
生存时间TTL 4字节无符号整数表示资源记录可以缓存的时间。0代表只能被传输,但是不能被缓存。
**资源数据长度URDLENGT**H 2个字节无符号整数表示RDATA的长度
资源数据RDATA 不定长字符串来表示记录,格式根TYPE和CLASS有关。比如,TYPE是A,CLASS 是 IN,那么RDATA就是一个4个字节的ARPA网络地址。
(4)报文压缩:
为了减小报文,域名系统使用一种压缩方法来消除报文中域名的重复。使用这种方法,后面重复出现的域名或者labels被替换为指向之前出现位置的指针。
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+–+–+–+–+–+–+–+–+–+–+–+–+–+–+–+–+
| 1 1 | OFFSET |
+–+–+–+–+–+–+–+–+–+–+–+–+–+–+–+–+
前两个比特位都为1。因为lablels限制为不多于63个字节,所以label的前两位一定为0,这样就可以让指针与label进行区分。(10 和 01 组合保留,以便日后使用) 。偏移值(OFFSET)表示从报文开始的字节指针。偏移量为0表示ID字段的第一个字节。
压缩方法让报文中的域名成为:
以0结尾的labels序列
一个指针
指针结尾的labels序列
指针只能在域名不是特殊格式的时候使用,否则域名服务器或解析器需要知道资源记录的格式。目前还没有这种情况,但是以后可能会出现。
如果报文中的域名需要计算长度,并且使用了压缩算法,那么应该使用压缩后的长度,而不是压缩前的长度。
程序可以自由选择是否使用指针,虽然这回降低报文的容量,而且很容易产生截断。不过所有的程序都应该能够理解收到的报文中包含的指针。
比如,一个报文需要使用域名F.ISI.ARPA,FOO.F.ISI.ARPA,ARPA,以及根。忽略报文中的其他字段,应该编码为:
偏移20的是域名F.ISI.ARPA。域名FOO.F.ISI.ARPA偏移40; 这样表示FOO的label后面跟着一个指向之前F.ISI.ARPA的指针。域名ARPA偏移64,使用一个指针指向F.ISI.ARPA的ARPA。注意可以用这个指针是因为ARPA是从偏移位置20开始的labels序列中的最后一个label。 根域名在位置92定义为一个0,没有labels。
一个应答帧的例子:
0000 00 24 8c 87 39 7e 74 ea 3a 5b fe a4 08 00 45 00 .$..9~t. :[….E.
0010 00 91 55 bd 00 00 30 11 62 82 08 08 08 08 c0 a8 ..U…0. b…….
0020 01 65 00 35 ee c4 00 7d 78 64 3a 8b 81 80 00 01 .e.5…} xd:…..
0030 00 01 00 00 00 00 03 77 77 77 07 69 73 6e 6f 77 …….w ww.isnow
0040 66 79 03 63 6f 6d 00 00 1c 00 01 c0 0c 00 05 00 fy.com.. ……..
0050 01 00 00 12 ab 00 02 c0 10 …….. .
其中DNS帧从3a8b开始,3a8b是ID,flag8180,问题数1,回答数1,然后绿色部分是域名,回答是棕色部分,域名是c00c用的前面说的压缩方式
————————————————
====================================================================================
DNS 中的协议字段详细定义
2016-01-31 00:42 Loull 阅读(6295) 评论(0) 编辑 收藏
DNS中的协议字段定义
Table of Contents
- 1 概述
- 2 DNS Classes
- 3 DNS OpCodes
- 4 DNS RCODEs
- 5 DNS Label Types
- 6 DNS资源记录
- 7 EDNS Version
- 8 DNS EDNS0 Option Codes (OPT)
1 概述
总结DNS协议中各字段的取值
2 DNS Classes
Decimal | Name | Reference |
---|---|---|
0 | Reserved | RFC6895 |
1 | Internet(IN) | RFC1035 |
2 | Unassigned | |
3 | Chaos(CH) | |
4 | Hesiod(HS) | |
5-253 | Unassigned | |
254 | QCLASS NONE | RFC2136 |
255 | QCLASS * (ANY) | RFC1035 |
256-65279 | Unassigned | |
65280-65534 | Reserved for Private Use | RFC6895 |
65535 | Reserved | RFC6895 |
3 DNS OpCodes
OpCode | Name | Reference |
---|---|---|
0 | Query | RFC1035 |
1 | IQuery(Inverse Query) | RFC3425 |
2 | Status | RFC1035 |
3 | Unsassined | |
4 | Notify | RFC1996 |
5 | Update | RFC2136 |
6-15 | Unassigned |
4 DNS RCODEs
Rcode | Name | Description | Reference |
---|---|---|---|
0 | NoError | No Error | RFC1035 |
1 | FormErr | Format Error | RFC1035 |
2 | ServFail | Server Failure | RFC1035 |
3 | NXDomain | Non-Existent Domain | RFC1035 |
4 | NotImp | Not Implemented | RFC1035 |
5 | Refused | Query Refused | RFC1035 |
6 | YXDomain | Name Exists when it should not | RFC2136 |
7 | YXRRSet | RR Set Exists when it should not | RFC2136 |
8 | NXRRSet | RR set that should exist does not | RFC2136 |
9 | NotAuth | Server Not Authoritative for zone | RFC2136 |
10 | NotZone | Not AUthorized | RFC2845 |
11-15 | Unassigned | ||
16 | BADVERS | Bad OPT Version | RFC6891 |
16 | BADSIG | TSIG Signature Failure | RFC2845 |
17 | BADKEY | Key not revognized | RFC2845 |
18 | BADTIME | Signature out of time window | RFC2845 |
19 | BADMODE | Bad TKEY Mode | RFC2930 |
20 | BADNAME | Duplicate key name | RFC2930 |
21 | BADALG | Algorithm not supported | RFC2930 |
22 | BADTRUNC | Bad Truncation | RFC4635 |
23-3840 | Unassigned | ||
3841-4095 | Reserved for Private Use | ||
4096-65534 | Unassigned | ||
65535 | Reserved |
5 DNS Label Types
DNS label的最高两位来标识该label的类型
Value | Type | Status | Reference |
---|---|---|---|
0 0 | 普通label. 低6位是该label的长度 | Standard | RFC1035 |
1 1 | 压缩label. 低6位和接下来的8位标识它相对于包头的偏移量 | Standard | RFC1035 |
0 1 | 扩展类型的label. 低6位表示label的类型那个 | Standard | RFC1035 |
1 0 | 未分配 |
6 DNS资源记录
TYPE | Value | Meaning | Reference |
---|---|---|---|
A | 1 | a host address | [RFC1035] |
NS | 2 | an authoritative name server | [RFC1035] |
MD | 3 | a mail destination(OBSOLETE - use MX) | [RFC1035] |
MF | 4 | a mail forwarder(OBSOLETE - use MX) | [RFC1035] |
CNAME | 5 | the canonical name for an alias | [RFC1035] |
SOA | 6 | marks the start of a zone of authority | [RFC1035] |
MB | 7 | a mailbox domain name (EXPERIMENTAL) | [RFC1035] |
MG | 8 | a mail group member (EXPERIMENTAL) | [RFC1035] |
MR | 9 | a mail rename domain name (EXPERIMENTAL) | [RFC1035] |
NULL | 10 | a null RR (EXPERIMENTAL) [RFC1035] | |
WKS | 11 | a well known service description | [RFC1035] |
PTR | 12 | a domain name pointer | [RFC1035] |
HINFO | 13 | host information | [RFC1035] |
MINFO | 14 | mailbox or mail list information | [RFC1035] |
MX | 15 | mail exchange | [RFC1035] |
TXT | 16 | text strings | [RFC1035] |
RP | 17 | for Responsible Person | [RFC1183] |
AFSDB | 18 | for AFS Data Base location | [RFC1183][RFC5864] |
X25 | 19 | for X.25 PSDN address | [RFC1183] |
ISDN | 20 | for ISDN address | [RFC1183] |
RT | 21 | for Route Through | [RFC1183] |
NSAP | 22 | for NSAP address, NSAP style A record | [RFC1706] |
NSAP-PTR | 23 | for domain name pointer, NSAP style | [RFC1348][RFC1637][RFC1706] |
SIG | 24 | for security signature | |
KEY | 25 | for security key | |
PX | 26 | X.400 mail mapping information | [RFC2163] |
GPOS | 27 | Geographical Position | [RFC1712] |
AAAA | 28 | IP6 Address | [RFC3596] |
LOC | 29 | Location Information | [RFC1876] |
NXT | 30 | Next Domain (OBSOLETE) | [RFC3755][RFC2535] |
EID | 31 | Endpoint Identifier | |
NIMLOC | 32 | Nimrod Locator | |
SRV | 33 | Server Selection | [RFC2782] |
ATMA | 34 | ATM Address | |
NAPTR | 35 | Naming Authority Pointer | [RFC2915][RFC2168][RFC3403] |
KX | 36 | Key Exchanger | [RFC2230] |
CERT | 37 | CERT | [RFC4398] |
A6 | 38 | A6 (OBSOLETE - use AAAA) | [RFC3226][RFC2874][RFC6563] |
DNAME | 39 | DNAME | [RFC6672] |
SINK | 40 | SINK | |
OPT | 41 | OPT | [RFC6891][RFC3225] |
APL | 42 | APL | [RFC3123] |
DS | 43 | Delegation Signer | [RFC4034][RFC3658] |
SSHFP | 44 | SSH Key Fingerprint | [RFC4255] |
IPSECKEY | 45 | IPSECKEY | [RFC4025] |
RRSIG | 46 | RRSIG | [RFC4034][RFC3755] |
NSEC | 47 | NSEC | [RFC4034][RFC3755] |
DNSKEY | 48 | DNSKEY | [RFC4034][RFC3755] |
DHCID | 49 | DHCID | [RFC4701] |
NSEC3 | 50 | NSEC3 | [RFC5155] |
NSEC3PARAM | 51 | NSEC3PARAM | [RFC5155] |
TLSA | 52 | TLSA | [RFC6698] |
Unassigned | 53-54 | ||
HIP | 55 | Host Identity Protocol | [RFC5205] |
NINFO | 56 | NINFO | [JimReid] |
RKEY | 57 | RKEY | [JimReid] |
TALINK | 58 | Trust Anchor LINK | [WouterWijngaards] |
CDS | 59 | Child DS | [GeorgeBarwood] |
Unassigned | 60-98 | ||
SPF | 99 | [RFC-ietf-spfbis-4408bis-21] | |
UINFO | 100 | [IANA-Reserved] | |
UID | 101 | [IANA-Reserved] | |
GID | 102 | [IANA-Reserved] | |
UNSPEC | 103 | [IANA-Reserved] | |
NID | 104 | [RFC6742] | |
L32 | 105 | [RFC6742] | |
L64 | 106 | [RFC6742] | |
LP | 107 | [RFC6742] | |
EUI48 | 108 | an EUI-48 address | [RFC7043] |
EUI64 | 109 | an EUI-64 address | [RFC7043] |
Unassigned | 110-248 | ||
TKEY | 249 | Transaction Key [RFC2930] | |
TSIG | 250 | Transaction Signature | [RFC2845] |
IXFR | 251 | incremental transfer | [RFC1995] |
AXFR | 252 | transfer of an entire zone | [RFC1035][RFC5936] |
MAILB | 253 | mailbox-related RRs (MB, MG or MR) | [RFC1035] |
MAILA | 254 | mail agent RRs (OBSOLETE - see MX) | [RFC1035] |
* | 255 | all records the server/cache has available | [RFC1035][RFC6895] |
URI | 256 | URI | [PatrikFaltstrom] |
CAA | 257 | Certification Authority Restriction | [RFC6844] |
Unassigned | 258-32767 | ||
TA | 32768 | DNSSEC Trust Authorities | |
DLV | 32769 | DNSSEC Lookaside Validation | [RFC4431] |
Unassigned | 32770-65279 | ||
Private use | 65280-65534 | ||
Reserved | 65535 |
7 EDNS Version
Range | Description | Reference |
---|---|---|
0 | EDNS version 0 | RFC6891 |
1-255 | Unassigned |
8 DNS EDNS0 Option Codes (OPT)
Value | Name | Status | Reference |
---|---|---|---|
0 | Reserved | [RFC6891] | |
1 | LLQ | On-hold | [http://files.dns-sd.org/draft-sekar-dns-llq.txt] |
2 | UL | On-hold | [http://files.dns-sd.org/draft-sekar-dns-ul.txt] |
3 | NSID | Standard | [RFC5001] |
4 | Reserved | ||
5 | DAU | Standard | [RFC6975] |
6 | DHU | Standard | [RFC6975] |
7 | N3U | Standard | [RFC6975] |
8 | edns-client-subnet | Optional | |
9-65000 | Unassigned | ||
65001-65534 | Reserved for Local/Experimental Use | [RFC6891] | |
65535 | Reserved for future expansion | [RFC6891] |