最近在做DNS解析方面的事情,今天正好整理一下DNS解析的过程
先说下什么叫DNS解析;
简单来说,就是每台服务器都有自己的IP地址,比如我想上百度网,我会在浏览器中输入http://119.75.217.109/,这样就可以打开百度,但是对人来说,记住很多无意义的ip是非常困难的,所以就有了域名,我之后上百度就只要输入https://www.baidu.com/就可以了,当我输入https://www.baidu.com/后,DNS服务器或者本地把https://www.baidu.com/解析成http://119.75.217.109/的过程叫DNS解析;DNS服务器的作用就是记录域名和ip的对应关系,当你给DNS服务器域名的时候,他返回给你你要访问的网站的服务器的IP地址;
从网上找了一张图来说明下
1. 以用户在浏览器中输入一个网址www.baidu.com时,浏览器自身先查看浏览器的缓存中是不是存在www.baidu.com所对应的ip地址,如果有就直接访问
2. 如果浏览器缓存中不存在,那我们就检查系统的hosts文件中是不是存在对应关系,如下图这是我电脑的hosts文件,可以看到里面是有域名和ip的对应关系的,你可以把www.baidu.com 127.0.0.1对应关系写入hosts文件,然后保存,你就会发现你上不去百度了,这是因为浏览器信任hosts文件中的对应关系,127.0.0.1表示本地;
3. 如果本地的hosts文件中找不到对应关系,那就需要去dns服务器中查找了,首先我们先去当地的域名服务器(LDNS)中查找,一般LDNS离你比较近,链接速度快;一般大部分的域名都会在这里解析出来;
4. 如果LDNS未命中,就需要继续请求上游服务器(Root Server)进行报告,上游服务器(Root Server)会向LDNS传递一个能解析这个域名的主域名服务器地址(主域名服务器:G-TLD,国际域名服务器);
5. LDNS请求G-TLD,G-TLD查找并返回该网站注册的域名服务器,LDNS请求这个域名服务器,一定会查找到对应的IP,然后缓存这个域名和ip的对应关系;
6. LDNS把这个对应关系返回给用户,用户缓存到本地系统中