域名系统是互联网使用的域名系统,用来把便于人们使用的机器名字(即我们常说的网址)转换为IP地址。许多应用层软件经常直接使用域名系统DNS,虽然计算机的用户只是间接而不是直接使用域名系统,但DNS却为互联网的各种网络应用提供了核心服务。
互联网的域名系统DNS被设计成为一个联机分布式数据库系统,并采用客户服务器方式。DNS使大多数名字都在本地进行解析,仅少量解析需要在互联网上通信,因此DNS系统的效率很高。由于DNS是分布式系统,即使单个计算机除了故障,也不会妨碍整个DNS系统的正常运行。
域名到IP地址的解析是由分布在互联网上的许多域名服务器程序(域名服务器)共同完成。域名服务器程序在专设的结点上运行,而人们也常把运行域名服务器程序的机器叫做域名服务器。
域名到IP地址的解析过程如下:
- 当某一个应用进程需要把主机名解析为IP地址时,该应用进程就调用解析程序,并成为DNS的一个用户,把带解析的域名放在DNS请求报文中,以UDP用户数据报方式发给本地域名服务器(使用UDP是为了减少开销)。
- 本地域名服务器在查找域名后,把对应的IP地址放在回答报文中返回。应用进程获得目的主机的IP地址后即可进行通信。
- 若本地域名服务器不能回答该请求,则此域名服务器就暂时成为DNS中的另一个客户,并向其他域名服务器发出查询请求(个人觉得和ARP协议将IP地址转换为MAC地址时在本地ARP缓存中找不到对应的映射时所做的过程很相似)。这种过程直至找到能够回答该请求的域名服务器为止。
互联网的域名结构
互联网采用了层次树状结构的命名方法。采用这种命名方法,任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名。域还可以进行划分为子域,这样就形成了顶级域、二级域、三级域等等。
域名只是一个逻辑概念,并不代表计算机所在的物理结点。变长的域名和使用有助于记忆的字符串,是为了便于人们使用。而IP地址是定长的32位二进制数字则非常便于机器进行处理。
域名服务器
从理论上讲,可以让每一级的域名都有一个相对应的域名服务器,使所有的域名服务器也构成一种树状结构。但这样做会使域名服务器的数量太多,使域名系统的运行效率降低。因此DNS就采用划分区的办法来解决这个问题。
一个服务器所负责管辖的范围叫做区。各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有结点必须是可以连通的。每一个区设置相应的权域名服务器,用来保存该区中的所有主机的域名到IP地址的映射。
根据域名服务器的作用,可以把域名服务器划分为以下四种不同的类型:
- 根域名服务器
- 顶级域名服务器
- 权限域名服务器
- 本地域名服务器