DNS域名解析过程

1、域名解析机制浏览器

当咱们在浏览器中输入www.abc.com时,DNS解析将会有将近10个步骤,这个过程大致大致由一张图能够表示:(迭代域名解析)缓存

  1. 浏览器会检查缓存中有没有这个域名对应的解析过的IP地址,若是缓存中有,这个解析过程就结束。浏览器缓存域名也是有限制的,不只浏览器缓存大小有限制,并且缓存的时间也有限制,一般状况下为几分钟到几小时不等,域名被缓存的时间限制能够经过TTL属性来设置。服务器

  2. 若是用户浏览器缓存中没有数据,浏览器会查找操做系统缓存中是否有这个域名对应的DNS解析结果。其实操做系统也有一个域名解析的过程,在 Windows中能够经过C:\Windows\System32\drivers\etc\hosts文件来设置,在Linux中能够经过/etc /hosts文件来设置,用户能够将任何域名解析到任何可以访问的IP地址。例如,咱们在测试时能够将一个域名解析到一台测试服务器上,这样不用修改任何代码就能测试到单独服务器上的代码的业务逻辑是否正确。正是由于有这种本地DNS解析的规程,因此有黑客就可能经过修改用户的域名来把特定的域名解析到他指定的IP地址上,致使这些域名被劫持网络

  3. 前两个过程没法解析时,就要用到咱们网络配置中的"DNS服务器地址"了。操做系统会把这个域名发送给这个LDNS,也就是本地区的域名服务器。这个DNS一般都提供给用户本地互联网接入的一个DNS解析服务,例如用户是在学校接入互联网,那么用户的DNS服务器确定在学校;若是用户是在小区接入互联网,那么用户的DNS就是再提供接入互联网的应用提供商,即电信或联通,也就是一般说的SPA,那么这个DNS一般也会在用户所在城市的某个角落,不会很远。Windows环境下经过命令行输入ipconfig,Linux环境下经过cat /etc/resolv.conf就能够查询配置的DNS服务器了。这个专门的域名解析服务器性能都会很好,它们通常都会缓存域名解析结果,固然缓存时间是受到域名的失效时间控制的。大约80%的域名解析到这里就结束了,因此LDNS主要承担了域名的解析工做。负载均衡

  4. 若是LDNS仍然没有命中,就直接到根域名服务器(Root Server)请求解析。性能

  5. 根域名服务器返回给本地域名服务器一个所查询的主域名服务器(gTLD Server)地址。gTLD是通用顶级域名服务器,如.com、.cn、.org等,全球只有13台左右。测试

  6. 本地域名服务器LDNS再向上一步返回的gTLD服务器发送请求。spa

  7. 接受请求的gTLD服务器查找并返回此域名对应的权限域名服务器(Name Server)的地址,这个Name Server一般就是用户注册的域名服务器例如用户在某个域名服务提供商申请的域名,那么这个域名解析任务就由这个域名提供商的服务器来完成操作系统

  8. 权限域名服务器会查询存储的域名和IP的映射关系表,在正常状况下都根据域名获得目标IP地址,连同一个TTL值返回给DNS Server域名服务器.net

  9. 返回该域名对应的IP和TTL值,LDNS会缓存这个域名和IP的对应关系,缓存时间由TTL值控制

  10. 把解析的结果返回给用户,用户根据TTL值缓存在本地系统缓存中,域名解析过程结束

在实际的DNS解析过程当中,可能还不止这10步,如Name Server可能有不少级,或者有一个GTM来负载均衡控制,这都有可能会影响域名解析过程。

2、域名解析记录

  1. A记录,用来指定域名对应的IP地址。A记录能够将多个域名解析到一个IP地址,反之不成立。

  2. MX记录,表示Mail Exchange,就是能够将某个域名下的邮件服务器指向本身的Mail Server。

  3. CHAME记录,全称Canonical Name(别名解析)。就是能够为一个域名设置一个或多个别名。

  4. NS记录,为某个域名指定DNS解析服务器。

  5. TXT记录,为某个主机名或者域名设置说明。

  6. AAAA记录,将域名解析到IPV6地址的DNS记录。

3、跟踪域名解析过程

在Linux和window均可以用nslookup命令来查询域名的解析结果,以下图:

在Linux系统还能够用dig命令查询DNS的解析过程,以下图:(dig经常使用命令

相关文章
相关标签/搜索