DNS解析过程
DNS
将域名解析为ip是DNS是工作
协议
DNS在区域传输的时候使用TCP协议,其他时候使用UDP协议。
DNS区域传输的时候使用TCP协议:
-
辅域名服务器会定时(一般3小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动,会执行一次区域传送,进行数据同步。区域传送使用TCP而不是UDP,因为数据同步传送的数据量比一个请求应答的数据量要多得多。
-
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后,将查询结果返还给主机