Skip to content

DNS(域名解析服务器)

我们在浏览器中输入地址的时候一般直接使用一个域名,如 www.baidu.com,但是我们知道在互联网中每一个服务器其对外访问的地址是一个IP地址, 那么电脑怎么知道 www.baidu.com 对应哪一个IP地址(182.61.200.6)。

第一步:浏览器DNS缓存

我们在URL中输入一个域名的时候,如www.baidu.com,首先浏览器会从浏览器DNS缓存中查找有没有此域名对应的IP地址。

如 Chrome:

地址栏输入chrome://net-internals/#dns 查看。

第二步: 本地host文件(操作系统自身配置的DNS缓存)

windows平台: 我们可以查看 C:\Windows\System32\drivers\etc\hosts 文件

# Amazon AWS Start
54.239.31.69	aws.amazon.com
54.239.30.25	console.aws.amazon.com
# Amazon AWS End

如上面hosts文件的配置,那么我们在访问 aws.amazon.com 的时候就不会如果浏览器没有缓存过此域名,那么下一步在hosts中找到了,这时候就不会去DNS域名服务器中去查找了。 这样我们就可以强制设置百度的域名 为 127.0.0.1 那么访问百度就是访问本地。

第三步: DNS服务器

本地找不到匹配的IP地址,那么这时候只能去网络上寻找了。 首先浏览器发起一个DNS的系统调用,就会向本地配置的首选DNS服务器发起域名解析请求。这时候就可以看我们IP地址上DNS的配置。

如果没有配置DNS地址,那么系统会向路由器DNS中继器中查找,如果路由器中也没有缓存,那么下一步就是运营商的DNS服务器(这一个才是真正的DNS服务器)。运营商在IP地址所在地区DNS服务器中没有找到

第四步: DNS根域名服务器

这是一个递归的过程

  1. 本地域名服务器向根域名服务器发请求

  2. 之后根域名服务器向顶级域名服务器去找

  3. 顶级域名服务器返回给根域名服务器。

  4. 根域名服务器返回给本地域名服务器

  5. 返回给Windows系统内核,最后返回给浏览器。

递归