URL到页面渲染之DNS解析

1.为什么需要DNS解析?

DNS(Domain Name System,域名系统),最初,由于IP地址长且难记,通过IP地址访问网站不方便。后来通过发明了DNS服务器,这个时候我们访问网站可以通过输入网站域名www.baidu.com,DNS服务器会将我们的域名解析为IP地址。这样我们实际访问的就是对应的IP地址。DNS是应用层协议,使用UDP传输数据

抽象点来说DNS就是 一个记录ip地址的超级分布式数据库。

先说一下DNS的几个基本概念:

  1. 根域

就是所谓的”.”,其实我们的网址www.baidu.com在配置当中应该是www.baidu.com.(最后有一点),一般我们在浏览器里输入时会省略后面的点(因为所有的域名后面都有,所以可以省略),而这也已经成为了习惯。

根域服务器我们知道有13台,但是这是错误的观点。

根域服务器只是具有13个IP地址,但机器数量却不是13台,因为这些IP地址借助了任播的技术,所以我们可以在全球设立这些IP的镜像站点,你访问到的这个IP并不是唯一的那台主机。具体的镜像分布可以参考维基百科。这些主机的内容都是一样的

  1. 域的划分

域名结构.png

根域下来就是顶级域或者叫一级域,

列举两种划分方式,一种是互联网刚兴起时的按照行业性质划分的com.,net.等,另一种是按国家划分的如cn.,jp.,us.,uk.等。

每个域都会有域名服务器,也叫权威域名服务器。

例如:baidu.com就是一个顶级域名,.com是顶级域,而www.baidu.com却不是顶级域名,他是在baidu.com 这个域里的一叫做www的主机。

一级域之后还有二级域,三级域,假设我买了一个顶级域,并且我搭建了自己BIND服务器(或者其他软件搭建的)注册到互联网中,那么我就可以随意在前面多加几个域了(当然长度是有限制的)。

比如xzp.www.baidu.com,在这个网址中,www.baidu.com变成了一个三级域而不是一台主机,主机名是xzp。

3.域名服务器
复制代码

能提供域名解析的服务器,上面的记录类型可以是A(address)记录,NS记录(name server),MX(mail),CNAME等。

A记录是什么意思呢,就是记录一个IP地址和一个主机名字,假设一个域名服务器所在的域为test.baidu.com,我们知道这是一个二级的域名,然后里面有一条A记录,记录了主机为a的IP,查到了就返回给你。

如果我现在要想baidu.com这个域名服务器查询a.test.baidu.com,那么这个顶级域名服务器就会发现你请求的这个网址在 test.baidu.com这个域中,这里记录了这个二级域的域名服务器test.baidu.com的NS的IP。返回给你这个IP地址你再去这个二级域名服务器查找主机名为a的IP地址。

4.解析过程
复制代码

dns解析过程.jpg

当一个用户在地址栏输入www.163.com时,DNS解析有大致十一个过程,如下:

  1. 浏览器先检查自身缓存中有没有被解析过的这个域名对应的ip地址,如果有,解析结束。

  2. 搜索操作系统自身的DNS缓存:如果浏览器没有找到缓存或者缓存过期失效,浏览器就会搜索操作系统自身的缓存,没有找到或者失效,解析结束(操作系统的缓存:window系统是一天,mac系统严格根据DNS协议中的TTL)。

  3. 读取本地的hosts文件:若操作系统的缓存也没有找到或失效,浏览器就会去读取本地的hosts文件(Hosts文件也可以建立域名到IP地址的绑定关系,可以通过编辑Hosts文件来达到名称解析的目的。 例如,我们需要屏蔽某个域名时,就可以将其地址指向一个不存在IP地址,以达到屏蔽的效果)。

  4. 如果至此还没有命中域名,才会真正的请求本地域名服务器(LDNS)来解析这个域名,这台服务器一般在你的城市的某个角落,距离你不会很远,并且这台服务器的性能都很好,一般都会缓存域名解析结果,大约80%的域名解析到这里就完成了。

  5. 如果LDNS仍然没有命中,就直接跳到根域名服务器请求解析

  6. 根域名服务器返回给LDNS一个.com顶级域名服务器IP

  7. 此时LDNS再发送请求给.com

  8. 接受请求的.com域名服务器查找并返回163.com对应的Name Server的IP地址,这个Name Server就是网站注册的域名服务器

  9. LDNS再发送请求给taobao.com域名服务器,该服务器根据映射关系表找到目标ip,返回给LDNS

  10. LDNS缓存这个域名和对应的ip

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

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享