DNS域名解析
DNS域名解析是我们进行网上冲浪的关键服务,想要了解DNS域名解析为IP地址的全过程,我们就要了解DNS协议和DNS的具体含义。
DNS协议是用来进行域名和IP地址互相转化的,基于UDP和TCP协议,其产生原因有二。第一是因为IP地址是固定长度的,IPv4为32位,IPv8位128位,而域名长度是变化的,不便于计算机处理。第二是IP地址对于用户来说不方便记忆,但域名便于记忆。DNS协议由此产生,通过域名和IP地址的双向转化来方便用户和计算机操作。
接下来我们从三部分来理解DNS协议:
- 域名结构
- 域名服务器
- 域名查询
一、域名结构
像之前讲过的Linux目录结构一样,现代因特网也采用层次树状结构的命名方法,每一个与因特网连接的主机都有一个唯一的层次结构名字,称为域名。域名的层次树状结构如图,
如图所示,域名分为顶级域名、二级域名、三级域名和四级域名,其中,顶级域名又分为国家顶级域名、通用顶级域名和反向域名。
国家顶级域名是国家所有的域名,例如:.cn(中国).us(美国).uk(英国)等
通用顶级域名主要为社会各界组织机构使用,例如:.com(公司).edu(教育机构).gov(政府机构).int(国际组织).mil(军事部门).org(非营利组织)等
反向域名只有.apra用于PTR查询(即将IP地址转化为域名)
域名还可划分为各个子域,子域还可继续划分为子域的子域,从而形成顶级域、二级域、三级域等。
对于一个域名,例如www.baidu.com,com为一级域名,表示是一个企业域名,同级的还有net、org等;baidu为二级域名,指公司名;www为一习惯用法。
二、域名服务器
域名服务器主要分为根域名服务器、顶级域名服务器、权限域名服务器和本地域名服务器。在通过DNS查询主机名时,查询顺序为:先向根域名服务器联系,根服务器根据顶级域名com响应命名空间为com的顶级域名服务器IP,接着继续向com顶级域服务器发出请求,顶级域服务器会响应命名空间为google.com的IP地址,最后请求命名空间为google.com的DNS服务器,该服务器会响应主机名为.www.google.com的IP。
除此之外,还有一类与我们接触更为密切的DNS服务器为本地DNS服务器,一般由社会组织提供比如Google提供的8.8.8.8和常被诟病的114.114.114.114
三、域名查询
域名查询分为递归查询和迭代查询,递归查询为上一层向下一层查询,而迭代查询为第一层向后层查询。查询过程中,递归查询和迭代查询可能会都使用,客户和服务器之间采用递归查询,服务器之间采用迭代查询。DNS域名解析时具体查询过程如下:
- 网络客户端向本地DNS服务器发出请求。
- 本地DNS服务器查询缓存记录,如果缓存中有此条记录则直接返回,没有则向DNS根服务器进行查询。
- DNS根服务器向本地DNS服务器给出域服务器地址。
- 本地DNS服务器向域服务器发出请求。
- 域服务器向本地DNS服务器提供该域名解析服务器的地址。
- 本地DNS服务器向域名的解析服务器发出请求,收到域名和IP地址的对应关系,本地DNS服务器将对应关系返回到用户电脑,并将对应关系写入缓存供网络客户端使用。
除此之外,进行DNS域名解析时,还有一个容易被忽视的参数,就是DNS解析的TTL参数。这个参数能告诉本地服务器域名缓存的最长时间,在既定时间之后,本地DNS服务器就会删除这条域名记录。删除之后再再次访问这个域名,就要重新进行DNS域名解析。如果网站进入稳定发展状态,不会轻易更换IP地址,就可以将TTL设置到最大值,即24小时,以便于用户访问域名。