域名系统 DNS
域名系统 DNS (Domain Name System)是互联网使用的命名系统,用来把便于人们使用的机器名字转换为 IP 地址。许多应用层软件经常直接使用域名系统 DNS。计算机的用户只是间接使用域名系统,但 DNS 却为互联网的各种网络应用提供了核心服务。
用户与互联网上某台主机通信时,必须要知道对方的 IP 地址。然而用户很难记住。在应用层,为了便于用户记忆各种网络应用,互联网上的主机除了 IP 地址外,还可以使用便于用户记忆的主机名字。域名系统 DNS 能够把互联网上的主机名字转换为 IP 地址。
- 在互联网的命名系统中使用了许多的“域”(domain),因此就出现了“域名”这个名词。 “域名系统”很明确地指明这种系统是用在互联网中的。
- 机器在处理 IP 数据报时不能用域名的原因:域名是变长的,IP 地址是定长的 32 位二进制数(或 128 位的 IPv6 ),便于机器进行处理。
理论上整个互联网可以只使用一个域名服务器,但此做法不可取。互联网规模很大,这样的域名服务器肯定会过负荷,而且一旦域名服务器出现故障,整个互联网就会瘫痪。因此,早在 1983 年互联网就开始采用层次树状结构的命名方法,并使用分布式的域名系统 DNS。DNS 的互联网标准是 RFC 1034, 1035。
早在 ARPANET 时代,整个网络上只有数百台计算机,那时使用一个叫做 hosts 的文件,列出所有主机名字和相应的 IP 地址。只要用户输入一台主机名字,计算机就可很快地把这台主机名字转换成机器能够识别的二进制 IP 地址。
互联网的域名系统 DNS 被设计成为一个联机分布式数据库系统,并采用客户服务器方式。DNS 使大多数名字都在本地进行解析,仅少量解析需要在互联网上通信,因此效率很高。由于 DNS 是分布式系统,即使单个计算机出了故障,也不会妨碍整个 DNS 系统的正常运行。
域名到 IP 地址的解析是由分布在互联网上的许多域名服务器程序(可简称为域名服务器)共同完成的,解析过程的要点如下:当某一个应用进程需要把主机名解析为 IP 地址时,该应用进程就调用解析程序(resolver),并成为 DNS 的一个客户,把待解析的域名放在DNS 请求报文中,以 UDP 用户数据报方式发给本地域名服务器(使用 UDP 是为了减少开销)。本地域名服务器在查找域名后,把对应的 IP 地址放在回答报文中返回。应用进程获得目的主机的 IP 地址后即可进行通信。若本地域名服务器不能回答该请求,则此域名服务器就暂时成为 DNS 中的另一个客户,并向其他域名服务器发出查询请求。这种过程直至找到能够回答该请求的域名服务器为止。
互联网的域名结构
早期的互联网使用了非等级的名字空间,其优点是名字简短。但当互联网上的用户数急剧增加时,用非等级的名字空间来管理一个很大的而且是经常变化的名字集合是非常困难的。因此,互联网后来就采用了层次树状结构的命名方法,就像全球邮政系统和电话系统那样。采用这种命名方法,任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(domain name)。这里,“域”(domain)是名字空间中一个可被管理的划分。域还可以划分为子域,而子域还可继续划分为子域的子域,这样就形成了顶级域、二级域、三级域,等等。从语法上讲,每一个域名都由标号(label)序列组成,而各标号之间用点隔开,例如中央电视台邮件服务器的域名 mail.cctv.com→ 顶级域名
DNS 规定,
- 域名中的标号都由英文字母和数字组成,每一个标号不超过 63 个字符(但为了记忆方便,最好不要超过 12 个字符),
- 也不区分大小写字母(例如,CCTV 或 cctv 在域名中是等效的)。标号中除连字符(-)外不能使用其他的标点符号。
- 级别最低的域名写在最 左边,而级别最高的顶级域名则写在最右边。由多个标号组成的完整域名总共不超过 255 个字符。 4.DNS 既不规定一个域名需要包含多少个下级域名,也不规定每一级的域名代表什么意思。各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由 ICANN 进行管理。用这种方法可使每一个域名在整个互联网范围内是唯一的,并且也容易设计出一种查找 域名的机制
域名服务器
不能将所有名字空间相关信息息都存储在一台计算机中。 DNS的方法是将域名信息分布到叫作域名服务器的许多计算机上。 将整个名字空间划分为许多不相交的区( Zone),每个区的域名信息由一个权威域名服务器(Authoritative Name Server)负责管理。原则上名字空间中的每一个域都可以对应一个区。但完全按照域来划分区,会导致太多很小的区。因此若一个域比较小,则域与区的范围是相同的,若大,可划分出来并委托给其他域名服务器管理。区是域名服务器直接管辖范围的单位,每个区有一个权威域名服务器。权威域名服务器负责本管辖区的域名转换。
域名服务器可划分为四种不同类型:
- 根域名服务器:并不直接管辖某个区的域名信息,但知道所有的顶级域名服务器的域名及其地址。互联网上共有13个不同地址的根域名服务器→ 实际上是群集。当本地域名服务器向根域名服务器发出查询请求时,路由器就把查询请求报文转发到离这个DNS客户最近的一个根域名服务器。以加快了查询过程,也更合理地利用互联网资源。IP根域名服务器通常并不直接对域名进行解析,而是返回该域名所属顶级域名的顶级域名服务器的地址。
