DNS域名解析过程(《深入分析JAVAWEB技术内幕》读感)

互联网使用URL 来发布和请求资源,而URL中的域名需要解析从IP地址才能与远程主机建立连接,如何将域名解析成IP地址就属于DNS域名解析的工作

一、从输入www.xxx.com时,DNS解析会有以下几个步骤:

1.用户输入URL,浏览器检查自身有没有缓存该域名的IP地址。

浏览器缓存域名有时间限制,这个时间可以由TTL限制,太长或者太短都不好,太长了,如果被解析的域名的IP发生变化,则会导致无法正常解析;如果太短,则会导致用户每一次访问网站都要解析域名

2.如果没有,浏览器检查操作系统缓存中是否有这个DNS解析结果。

操作系统也会有一个域名解析过程,在WINDOWS中,可以通过C:WindowsSystem32driversetchosts文件来设置,可以将任何域名解析到任何能访问的IP地址上,如果在这里指定了一个域名的ip地址,那么浏览器会首先使用这个IP地址正是因为有这种本地DNS解析的过程,所以黑客就有可能通过修改你的域名解析来把特定的某个域名解析到它希望的IP上,导致域名劫持。

3.如果缓存中还没有,则操作系统会把这个域名发送给LDNS(Local DNS)即本地域名服务器。

我们得网路配置中都会有DNS服务器地址,这个DNS服务器地址就是本地区的域名服务器。这个DNS服务器通常提供给你本地互联网接入的一个DNS解析服务。例如你在学校接入互联网,那么你的DNS服务器在你的学校;你在小区接入互联网,你的DNS服务器由通信提供商(电信、移动...)提供。

4.如果LDNS中还没有,则只能去Root Server域名服务器中请求解析了。这样的情况比较罕见,因为全球只有13台左右这样的服务器。

目前世界上的整个互联网有几个DNS根域名服务器。

5.根域名服务器会返回一个本地域名服务器所查域的主域名服务器(gTLD Server)地址。

gTLD是国际顶尖域名服务器,如.com、.cn、.org等等

6.LDNS向gTLD发送请求。

7.gTLD接受此请求,返回一个此域名对应的Name Server域名服务器的地址。这个Name Server通常就是你注册的域名服务器。

假如你在某个域名服务提供商申请的域名,那么这个域名解析的任务就由这个域名提供商的服务器来完成。

8.Name Server返回该域名对应的IP和TTL值,然后Local DNS Server会缓存这个对应关系,缓存时间由TTL控制。

9.解析结果返回LDNS SERVER。LDNS SERVER根据TTL值缓存此对应关系

10.解析结果返回用户。用户根据TTL值缓存此对应关系。

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

大致过程如下图:

二、清除本地缓存的域名

Windows下可以通过 ipconfig /flushdns命令来刷新本机的DNS缓存

在JAVA应用中JVM也会缓存DNS的解析结果,这个和缓存是在InetAddress类中完成的

三、几种域名解析方式

域名解析记录主要分为:A 记录、MX记录、CNAME 记录、NS记录和 TXT记录

A记录:A 代表的是Address,用来指定域名对应的IP地址。域名可以多对一但是不能一对多。

MX记录:Mail Exchange,就是讲某个域名下的邮件服务器指向自己的Mail Server。

CNAME记录:别名解析。将一个域名设置一个或者多个别名。

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

TXT记录:为某个主机名或者域名设置文字说明。

原文地址:https://www.cnblogs.com/lige-H/p/7211144.html