DNS原理图示
一、DNS服务器
本机一定要知道DNS服务器的IP地址,否则上不了网。通过DNS服务器,才能知道某个域名的IP地址到底是什么。
DNS服务器的IP地址,有可能是动态的,每次上网时由网关分配,这叫做DHCP机制;也有可能是事先指定的固定地址。Linux系统里面,DNS服务器的IP地址保存在/etc/resolv.conf
文件。
上例的DNS服务器是192.168.1.253
,这是一个内网地址。有一些公网的DNS服务器,也可以使用,其中最有名的就是Google的8.8.8.8和Level 3的4.2.2.2。
二、域名的层级
DNS服务器怎么会知道每个域名的IP地址呢?答案是分级查询。
请仔细看前面的例子,每个域名的尾部都多了一个点。
比如,域名math.stackexchange.com
显示为math.stackexchange.com.
。这不是疏忽,而是所有域名的尾部,实际上都有一个根域名。
举例来说,www.example.com
真正的域名是www.example.com.root
,简写为www.example.com.
。因为,根域名.root
对于所有域名都是一样的,所以平时是省略的。
根域名的下一级,叫做"顶级域名"(top-level domain,缩写为TLD),比如.com
、.net
;再下一级叫做"次级域名"(second-level domain,缩写为SLD),比如www.example.com
里面的.example
,这一级域名是用户可以注册的;再下一级是主机名(host),比如www.example.com
里面的www
,又称为"三级域名",这是用户在自己的域里面为服务器分配的名称,是用户可以任意分配的。
总结一下,域名的层级结构如下。
主机名.次级域名.顶级域名.根域名
即:host.SLD.TLD.root
通过了解清楚域名的层级然后进行递归查询和迭代查询就可以得到一个域名的ip地址。