DSN域名解析

2018-10-25  本文已影响0人  左大人

image.png

序言

我们通过浏览器输入一个网址,按回车键,之后就能看到网页了。这个过程中发生了什么事情,这篇文章会简单介绍这个过程。

浏览网页的过程

从输入网页地址到页面呈现在我们面前,期间发生了这些事情:

  1. DNS域名解析:主要是把域名映射成IP地址
    2.** 建立TCP连接**:通过三次握手,建立TCP连接。客户端发送一个SYN标志的数据包给服务端,服务端收到后,回应一个SYN/ACK标志的数据包,表示同意建立连接并且确认信息,客户端收到后回复一个ACK数据包,服务器收到后握手结束。在这个过程中出现问题中断,TCP会再次发送相同的数据包。
  2. 客户端发Http请求:客户端发起Http请求去获取网页内容
  3. 服务器响应:服务器响应请求,响应头信息中会有一个状态码:1:信息性状态码2:成功状态码(200=请求正常处理,204=请求成功但没有内容)3=重定向状态码(301=永久重定向,302=临时重定向,304=缓存中读取)4:客户端错误(400=请求报文存在语法错误,403=访问被拒绝,404=无法找到请求资源)5:服务器错误码(500=服务器执行时发生错误,503=服务器超负载或挺急维护)
  4. 解析Html:服务器响应内容是一段html文本,浏览器按顺序解析Html文件,构建DOM树,解析并下载css和js文件。
  5. 浏览器渲染:浏览器布局并渲染从Html中解析出来的对象,类似于Android的View绘制流程。

DNS域名解析

上面的流程中,第一步就是DNS域名解析,DNS(域名解析服务/域名系统)是指域名和IP相互映射的一个分布式数据库。因为在计算机网络上进行通讯只能识别IP地址,而不能识别域名,所以需要域名解析这个过程。

DNS解析会涉及到DNS服务器,而DNS服务器分为三种类型:根服务器,顶级DNS服务器,权威DNS服务器:

介绍了DNS服务器之后,来看一下DNS解析过程,首先看一张图:


image.png

过程描述如下:

  1. 浏览器中输入www.qq.com域名,操作系统检查本地hosts文件中是否有这个网址映射关系,如果有则使用映射IP,完成解析。
  2. host文件中没有这个域名映射,则查找本地DNS解析器缓存,过程同1
  3. 如果DNS解析器缓存中也没有该域名映射,则会发请求从本地DNS服务器(运营商维护)查询映射关系,如果本地DNS服务器区域配置文件中包含了该域名,则返回解析结果给客户机,完成域名解析。
  4. 如果本地DNS服务器中也没有该域名映射,则会把请求转发给13台根服务器。根DNS服务器收到请求,判断.com是谁管理,就把.con顶级域服务器的IP返回本地DNS服务器,然后本地服务器又会联系.com服务器,这台服务器又会找到.qq.com域名对应服务器的IP地址给本地DNS服务器,最后本地服务器又会联系.qq.com域名服务器,该服务器找到www.qq.com对应的服务器IP返回给本地服务器。
  5. 本地服务器把域名映射的服务器IP返回给用户电脑,并且包这个映射关系保存在缓存中,以备下次用户查询时可以直接返回结果。

DNS域名解析过程并不复杂,就是用过一系列的递进操作去查找域名对应的服务器IP。

13台根服务器

首先介绍一下13台跟服务器的设置地点及最新IP地址:


image.png

Q:这里有个问题,为什么全球只有13台根DNS服务器呢?

A:
域名解析服务中使用了UDP和TCP协议。
DNS用于查询和响应,而TCP用于主服务器和从服务器之间的区传送

而UDP实现中能保证正常工作的最大包长是512字节,就是这个512字节限制了根服务器的数量,一个512字节的UDP数据包最多只能包含13台服务器的信息

Q:既然UDP对传输数据大小有限制,为什么还要用UDP协议呢?

A:
因为一次UDP通信可以短到2个数据包:一个查询包,一个响应包
而一次TCP通信至少包含9个包:三次握手建立TCP连接,一个查询包,一个响应包,最后四次挥手断开TCP连接
相比之下,UDP效率会高很多,所以采用UDP协议通信。

总结

通过介绍,各位小伙伴有对DNS域名解析有一个比较清晰的认识了吗,如果还没有,建议查看其他相关的文章。

上一篇 下一篇

猜你喜欢

热点阅读