DNS

DNS

DNS域名解析

Posted by Lan on June 24, 2019

DNS解析过程

DNS

将域名解析为ip是DNS是工作

协议

DNS在区域传输的时候使用TCP协议,其他时候使用UDP协议。

DNS区域传输的时候使用TCP协议:

  1. 辅域名服务器会定时(一般3小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动,会执行一次区域传送,进行数据同步。区域传送使用TCP而不是UDP,因为数据同步传送的数据量比一个请求应答的数据量要多得多。

  2. TCP是一种可靠连接,保证了数据的准确性。

域名解析时使用UDP协议:

客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过三次握手,这样DNS服务器负载更低,响应更快。理论上说,客户端也可以指定向DNS服务器查询时用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP查询包。

DNS解析过程

  • 主机部分

1 首先检查浏览器缓存。

查找缓存中是否有该域名对应的ip地址

2 检查操作系统缓存。

操作系统的域名解析会检查计算机系统的hosts文件,host文件中指定了域名对应的ip

前两步骤都在主机中完成,这两步中都没有设计真正的域名解析服务器,如果在本机无法完成域名解析,则会请求真正的域名服务器来解析这个域名了。

操作系统把域名发送给本地域名服务器(LDNS,一般是小区或者互联网的网络应用提供商,电信或者联通,这个服务器一般在城市某个角落),进行域名解析。

本地域名服务器承担了主要的域名解析

  • 域名服务器部分

  • 主机向本地域名服务器的查询都是采用递归查询。 主机向本地域名服务器发送域名,请求解析,如果本地服务器也不能成功解析,则本地域名服务器就以DNS客户的身份,向其他根域名服务器发送请求报文(注意:这里不是主机本机自己去进行下一步的查询),所以,递归查询的结果,要么是成功解析的ip,要么就是报错。
  • 本地域名服务器向其他根服务器查询是采用迭代查询。 根域名服务器收到本地服务器查询请求,要么直接返还解析的ip,要么告诉本地服务器去查找的顶级服务器的ip

    顶级服务器收到根服务器查询请求,要么直接返还解析的ip,要么告诉本地服务器去查找的权限服务器的ip

    权限服务器查到域名对应的ip后,将查询结果返还给主机

3 本地服务器迭代查询根服务器,根服务器要么返回ip(解析成功),要么返给根服务器ip(解析失败)

4 本地服务器向收到的顶级域名服务器进行查询, 失败时返还权限域名服务器ip

5 本地服务器向收到的权限域名服务器进行查询, 将查询成功的ip返还给本地域名,本地域名返还给主机