返回
快速导航关闭
当前搜索
网站分类
栏目推荐
实用工具
热门标签
子分类:
创奇学院 >SEO >服务器 » 正文

浏览器WWW服务器,DNS域名解析过程

服务器 更新时间: 发布时间: 服务器归档 最新发布 网站地图

当我们在浏览器输入一个URL的时候,域名系统(Domain Name System)就开始工作。域名系统是将互联网资源和地址关联起来的一个分布式数据库。
DNS和统一资源定位符,域名系统本质就是定位资源,互联网中的各种资源,比如视频、图片、文件、网页。。。。
下面就是一个URL的示例:

https://www.example.com:8080/test?id=1000#Good
【https】Scheme部分是协议,不仅只有https,还有ftp、ssh等,不同的协议代表着不同类型的应用在提供资源。
【www.example.com】Host部分代表站点,DNS主要作用就是根据Host查找IP地址。
【8080】Port是端口号,代表提供服务的应用
【test】是路径,代表资源在服务中的路径
【id=1000】是查询条件,代表需要的是资源中的某个部分。
【Good】是二级查询条件,通常不在服务端响应,而是用于前端展示定位内容。
总的来说,URL是一个树状的设计,Host代表主机(对应的IP地址由DNS服务提供)Port代表提供服务的应用,Path代表资源在应用中的路径,Query代表对资源的查询条件。

域名系统,DNS(Domain Name System域名系统)是一个将域名和IP地址互相映射的分布式服务。DNS本身是一个分布式架构。

位于最顶层的是根域名服务器(Root Name Server),根域名服务器存储的不是域名和IP的映射关系,而是一个目录,因为流量、防止单点故障、平衡地理分布等问题,根域名服务器只是一个目录,并不提供具体的数据。


如上图所示,DNS的存储设计是一个树状结构,叶子节点中才存放真实的映射关系中间节点存的都是目录。存储分为3层:

顶部是根DNS存储,存储的是顶级域名的目录,被称作根DNS服务器

第二级是顶级域存储,存储的是二级域名的目录,被称作顶级域DNS服务器。

最后一级是叶子节点,存储的是具体的DNS记录,被称作权威DNS服务器。

域名分级和数据分区

域名分级包括,根域名(.)、顶级域名(com、cn、net)、二级域名(baidu)、三级域名(www),域名分级主要是为了建立目录和索引,并对数据存储进行分区。


DNS查询过程

当用户在浏览器中输入一个网址,就会触发DNS查询。这个时候在上述的3个层级中,还要加一个本地DNS服务器层级,本地DNS服务器包括用户自己路由器中的DNS缓存、小区的DNS服务器、ISP的DNS服务器,具体过程如下。


根据上图,详细DNS查询结果如下:

1、用户输入网址,先查询本地DNS,本地DNS是一系列DNS的集合,比如ISP提供的DNS、公司网络提供的DNS。本地DNS是一个代理,将DNS请求转发到DNS网络中。如果本地DNS已经存在需要的记录,也就是本地DNS缓存中找到了对应的DNS条目,就会直接返回,而跳过之后的步骤。

2、如果本地DNS服务器中没有对应的记录,那么请求会被转发到根DNS服务器。根DNS服务器只解析顶级域,例如“www.baidu.com”,根DNS服务器只查看com部分。

3、根DNS服务器返回顶级DNS服务器的IP

4、顶级域DNS服务器中存放的是二级域名的目录

5、顶级DNS服务器返回权威DNS服务器的IP

6、在权威DNS服务器中存放具体的DNS记录,

7、权威DNS服务器返回DNS记录到本地DNS服务器

8、本地DNS服务器返回具体的DNS记录给客户端。

关于缓存

上面的每一个步骤,其实都存在缓存的设计,浏览器会缓存DNS,此外,操作系统、路由器、本地DNS服务器也会缓存,所以大部分情况,请求不会到达根DNS服务器。

以百度为例,如果在某个时刻,同一个区域内有一个用户触发了1-8的过程,另一个同区域的用户就可以在本地DNS服务器中获取DNS记录,而不需要再走到根DNS服务器,这种称为分级缓存策略。

分级缓存策略,每一层都会进行缓存,经过一层层的缓存,最终命中根DNS服务、顶级DNS服务器,权威DNS服务器的请求少之又少。

DNS记录

DNS记录例子

定义www.example.com的ip地址www.example.com.     IN     A     139.18.28.5;

这个就是一条DNS记录,纯文本。IN代表记录用于互联网,是Intenet的缩写。A是记录的类型,A记录代表着这是一条解析IPv4地址的记录,代表域名和IPv4地址的映射关系。从这条记录可知 www.example.com.的IP地址是 139.18.28.5。

CNAME是用于定义域名的别名的,例如下面这条DNS记录

; 定义www.example.com的别名a.example.com.          IN     CNAME   b.example.com.

这条DNS记录定义了a.example.com 是 b.example.com 的别名。在浏览器中输入a.example.com 时候,通过 DNS 查询会知道 a.example.com 是 b.example.com 的别名,因此需要实际 IP 的时候,会去拿 b.example.com 的 A 记录。主要作用是将一个域名映射到另一个域名。域名解析的时候,如果看到CNAME记录,则会从映射目标重新开始查询。

转载请注明:文章转载自 http://www.320g.com/
本文地址:http://www.320g.com/fwq/27775.html
考高分网交流群

扫一扫加入QQ交流群

和更多志同道合朋友一起交流,分享干货资料!
创奇学院客服

扫一扫加客服微信

有疑问请咨询创奇学院微信号,在线为您解答!
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 Copyright 320g.com Rights Reserved. Powered · 创奇学院

ICP备案号:陇ICP备2020003353号