域名系统DNS
域名系统DNS——从域名解析出IP地址
概述
域名系统DNS(Domain Name System)是互联网使用的命名系统,用来把便于人们使用的机器名字转换为IP地址。
互联网的域名系统DNS被设计为一个联机分布式数据库系统,并采用客户服务器方式。DNS使大多数名字都在本地进行解析,仅少量解析需要在互联网上通信,因此DNS系统的效率很高。由于DNS是分布式系统,即使单个计算机出了故障了,也不会妨碍整个DNS系统的正常运行。
域名到IP地址的解析
域名到IP地址的解析是由分布在互连网上的许多域名服务器程序(可简称为域名服务器)共同完成的。域名服务器程序在专设的节点上运行,而人们也常把运行域名服务器程序的机器称为域名服务器
解析要点如下:
- 当某一个应用进程需要把主机名解析为IP地址时,该应用进程就调用解析程序,并成为DNS的一个客户。
- 该进程把待解析的域名放在DNS请求报文中,以UDP用户数据报方式发给本地域名服务器(使用UDP是为了减少开销)。
- 本地域名服务器在查找域名后,把对应的IP地址放在回答报文中返回。应用进程获得目的主机的IP地址后即可进行通信
。若本地域名服务器不能回答该请求,则此域名服务器就暂时成为DNS中的另一个客户,并向其他域名服务器发出查询请求。这种过程直至找到能够回答该请求的域名服务器为止。
互联网的域名结构
互联网采用层次树状结构的命名方法,采用这种命名方法,任何一个连接在互联网上的主机或路由器都有一个唯一的层次结构的名字,即域名(domain name)。这里,域是名字空间中一个可被管理的划分。
域还可以划分为子域,而子域还可继续划分为子域的子域,这样就形成了顶级域、二级域、三级域,等等。
从语法上讲,每一个域名都由标号(label)序列组成,而各标号之间用点隔开(请注意,这里所说的“点”是英语中的句号“.“)
其中com是顶级域名,cctv是二级域名,标号mail是三级域名。
命名标准
- 域名中的标号都由英文字母和数字组成,每一个标号不超过63个字符(为了记忆方便,最好不要超过12个字符)
- 不区分大小写字母
- 标号中除连字符(-)外不能使用其他的标点符号。
- 级别最低的域名写在最左边,而级别最高的顶级域名则写在最右边。
- 有多个标号组成的完整域名总共不超过255个字符。
DNS既不规定一个域名需要包含多少个下级域名,也不规定每一级的域名代表什么意思。各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由ICANN进行管理。用这种方法可使每一个域名在整个互联网范围是唯一的,并且也容易设计出一种查找域名的机制。
需要注意的是,域名只是个逻辑概念,并不代表计算机所在的物理地点。
在顶级域名中则分为:国家顶级域名,通用顶级域名,反向域名
国家顶级域名 | 中国:cn, 美国:us,英国uk… |
---|---|
通用顶级域名 | com公司企业,edu教育机构,gov政府部门,int国际组织,mil军事部门 ,net网络,org非盈利组织… |
反向域名 | arpa,用于PTR查询(IP地址转换为域名) |
用域名树来表示互连网的域名系统是最清楚的,如图
在最上面的是根,但没有对应的名字。根下面一级的节点就是最高一级的顶级域名。顶级域名往下可划分子域(依次向下划分)。域名树的树叶就是单台计算机的名字,它不能再继续往下划分子域了。
域名服务器
具体实现域名系统则是使用分布在各地的域名服务器。
一个服务器所负责管辖的(或有权限的)范围叫做区(zone)。各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射。
区是DNS服务器实际管辖的范围。区可能等于或小于域,但一定不能大于域。(区是域的子集)
如图中每一个域名服务器都能够进行部分域名到IP地址的解析。当某个DNS服务器不能进行域名到IP地址的转换时,他就设法找互联网上别的域名服务器进行解析。同时不难看出,互联网上的DNS域名服务器也是按照层次安排的。每一个域名服务器都只对域名体系中的一部分进行管辖。根据域名服务器所起的作用,可以把域名服务器划分为以下四种不同的类型:
- 根域名服务器:根域名服务器是最高层次的域名服务器,也是最重要的域名服务器。
- 顶级域名服务器:这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。
- 权限域名服务器:负责一个区的域名服务器。
- 本地域名服务器:本地域名服务器并不属于如上图所示的域名服务器层次结构,但它对域名系统非常重要。
注:一个域名服务器所负责的范围,或者说有管理权限的范围,就称为 区域 (Zone)
关于分层, 需要注意的是:
- 每个层的域名上都有自己的域名服务器,最顶层的是根域名服务器
- 每一级域名服务器都知道下级域名服务器的IP地址
- 为了容灾, 每一级至少设置两个或以上的域名服务器
域名的解析过程
- 客户端发起请求:当用户在浏览器中输入域名时,客户端(如电脑、手机等)会向本地 DNS 服务器发送查询请求,请求解析该域名对应的 IP 地址。
- 本地 DNS 缓存查询:本地 DNS 服务器首先会检查自身的缓存,看是否已经有该域名的缓存记录。如果有,直接返回对应的 IP 地址,解析过程结束。
- 本地 DNS 服务器查询:如果本地 DNS 服务器缓存中没有该域名的记录,它会向根 DNS 服务器发送查询请求。
- 根 DNS 服务器响应:根 DNS 服务器收到请求后,会告知本地 DNS 服务器负责该域名顶级域名(如.com、.org 等)的权威 DNS 服务器的地址。
- 查询顶级域名服务器:本地 DNS 服务器根据根 DNS 服务器提供的地址,向对应的顶级域名服务器发送查询请求。
- 顶级域名服务器响应:顶级域名服务器会告知本地 DNS 服务器负责该域名二级域名(如 example.com 中的 example)的权威 DNS 服务器的地址。
- 查询权威 DNS 服务器:本地 DNS 服务器继续向二级域名的权威 DNS 服务器发送查询请求。
- 权威 DNS 服务器响应:权威 DNS 服务器查询到该域名对应的 IP 地址后,将其返回给本地 DNS 服务器。
- 本地 DNS 服务器缓存并响应:本地 DNS 服务器将查询到的 IP 地址缓存起来,并返回给客户端。
- 客户端与目标服务器通信:客户端获得 IP 地址后,就可以使用该 IP 地址与目标服务器进行通信。