| +---+---+
| | |
| LCS ACHILLES +--+-----+-----+--------+
| | | | |
| XX A C VAXA VENERA Mockapetris
在此例中,根域有三个子域:MIL,EDU和ARPA,而LCS.MIT.EDU域有一个子域XX.LCS.MIT.EDU,其它的节点也是域。
2.5. 命名规则
DNS的命名规则是为了使对域名的命名比较统一。也就是要将任何现存的对象都可以在最小改动的情况下变为域名。谨慎的使用者会选择域名适合域名系统和应用程序。例如在命名邮件域名时,使用者会同时遵守相应的邮件协议。这就使对老软件的兼容性提高了。下面的规则是一个较少引起问题的规则:
<domain> ::= <subdomain> | " "
<subdomain> ::= <label> | <subdomain> "." <label>
<label> ::= <letter> [ [ <ldh-str> ] <let-dig> ]
<ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str>
<let-dig-hyp> ::= <let-dig> | "-"
<let-dig> ::= <letter> | <digit>
<letter> ::= 大小写的A到Z,共52个
<digit> ::= 0到9
请注意:域名内不分大小写。标记必须遵守ARPANET主机名规则,它要求主机名必须以字母开始,以字母或数字结束,中间的可以是数字字母或连字符,长度没有限制。但标记必须少于63个字符。下面的字符串就表示了APARNET中的主机:
A.ISI.EDU XX.LCS.MIT.EDU SRI-NIC.ARPA
2.6. 资源记录
域名标记结点,每个结点都有资源信息集,些集可以为空。资源信息集和由分离资源集(RR)的特殊名字相关联。在集中的RR顺序没有关系,标记有这东西就是了,它不用由名字服务器,resovler或DNS的其它部分保存,只在这儿有。特定的RR我们认为有以下几个:
owner
RR能够被找到的域名
它是一个16位值,指定RR内的资源类型,它指一个抽象资源,具体的标记有以下几个:
A
主机地址
CNAME
一个拟名的统一命名
HINFO
标记由主机使用折CPU和OS
MX
标记用于域的邮件交换资源
NS
此域的权威认证名字服务器
PTR
指向其它域名空间的指针
SOA
标记区认证权威的开始
class
它是一个16位值,标记协议族或某一个协议实例,本文中使用IN代表internet系统,CH代表Chaos系统
TTL
它是RR的生存时间,它是32位整数,单位是秒,它主要用于resolver缓存RR多长时间
它是一种类型,有时是依赖于数据的类,它描述了以下资源:
A
对于class是IN的,它是一个32位IP地址,对于CH,它是后面跟一个16位八进制Chaos地址的域名
CNAME
域名
MX
作为一个域的邮件服务资源的主机名,主机名后有一个16位的配置值
NS
主机名
PTR
域名
SOA
一些域
拥有资源的名字通常是隐式的,不构成RR的一部分。TTL时间只影响缓冲内的数据,不影响区内的已经保存的认证数据。TTL通常由管理员设置,TTL=0表示禁止缓冲。RDATA内的数据是二进制串和域名的混合。域名通常使用指针指向DNS内的其它数据。
2.6.1. RR的文本表示
RR在DNS中是以二进制形式表示的,而在名字服务器或resolver中保存的时是经过压缩编码处理的。本文中我们采用相同于主文件中表示的表示方法,也就是不压缩的方法,以便显示RR的内容。行开始时给出谁拥有RR,如果这一位置空出,就表示本行RR的拥有者和上面RR的拥有者是一个。其后是TTL,type和RR的class。RR的RDATA部分是在当前数据的表示类型的基础上得到的。下面是一些RR的例子:
ISI.EDU. MX 10 VENERA.ISI.EDU.
MX 10 VAXA.ISI.EDU.
VENERA.ISI.EDU. A 128.9.0.32
A 10.1.0.52
VAXA.ISI.EDU. A 10.2.0.27
A 128.9.0.33
其中我们注意到MX那一部分,它的RDATA部分有是一个16位数后面跟一个域名组成。其它的也就不说了。本例子显示了6个RR,第三个域名有两个RR。下面是一个例子,它显示在不同的class下如何表示: