一看就懂DNS详解

原文链接

https://www.cnblogs.com/anyhoo/p/10369589.html

DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住IP。

通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。

为什么需要DNS解析域名为IP地址?

首先计算机在网络上通讯时只能识别IP地址(网络通讯大部分是基于TCP/IP协议,而TCP/IP是基于IP地址的),比如我要在浏览器中访问百度的地址,我可以在地址栏直接输入14.215.177.39就能访问到百度的首页。但是我们无法记住更多的IP地址。那么域名就出现了,域名是由一串用”.”分隔的唯一名字。所以现在我们访问网站的时候,就可以在浏览器地址栏中输入域名(www.baidu.com),那么DNS就会把域名翻译成IP,然后访问IP
  在这里插入图片描述
  域名

域名按照从右到左的顺序来划分优先等级,最右边的是最高级的根域,根域就是所谓的”.”,其实我们的域名www.baidu.com在配置当中应该是www.baidu.com.(最后有一个点),一般我们在浏览器里输入时会省略后面的点。接下来就是顶级域又称一级域,一级域之后还有二级三级域。如何区分当前域名是几级域,可以参考域名中有几个点来判断(除了根域外),比如baidu.com就是个一级域,而www.baidu.com就是个二级域(它是在baidu.com这个域里面有一个叫做www的主机)
  在这里插入图片描述
  每一层域都会有一堆域名(DNS)服务器,DNS服务器是能提供域名解析的服务器,记录类型可以是A(address)记录,NS(name server)记录,MX(mail),CNAME等,这些记录类型后续会一一介绍到。

这里有个知识点,百科中说全世界只有13台根DNS服务器,但其实这是错误的观点,根DNS服务器只有具体的13个IP地址,但机器的数量不止13台。

DNS服务器一般分三种,根DNS服务器,顶级DNS服务器,权威DNS服务器
  在这里插入图片描述
  接下来会讲到这些DNS服务器和我们今天说的DNS解析有什么关系,在讲述DNS解析流程前先要理解什么是本地DNS

本地DNS一般是指你电脑上网时IPv4或者IPv6设置中填写的那个DNS。这个有可能是手工指定的或者是自动分配的。

如果你的电脑是直连运营商(ISP)网络,一般默认设置情况下DNS为ISP的服务器地址。

如果你的电脑和ISP之间还加了无线或者有线路由(一般的路由器本身还会内置DNS转发器),它的作用是将发往它所有的DNS请求转发到上层DNS,但最终会转发到ISP的DNS。

如果手动修改了DNS,比如改成8.8.8.8这样的公用DNS服务器,那么指的就是这个服务器。

本地DNS不是权威服务器,相当于一个代理的DNS解析服务器,他会帮你迭代权威服务器返回的回答,然后把最终查到的IP返回给你。

如下图所示,就是之后我们讲到的本地DNS服务器。
  在这里插入图片描述
  现在我有一台电脑,在浏览器中输入www.baidu.com域名,浏览器会从浏览器的DNS缓存中检查是否有这个网址的映射关系,如果有,就返回IP,完成域名解析
  
如果没有,操作系统会先检查自己本地的hosts文件是否有这个网址的映射关系,如果有,就返回IP,完成域名解析。看到这里大家应该都猜到了,有DNS的地方,就有缓存。浏览器、操作系统、本地DNS、根域名服务器,它们都会对DNS结果做一定程度的缓存。

如果还没有,我的电脑就要向本地DNS服务器发起请求查询www.baidu.com这个域名。

本地DNS服务器拿到请求后,先检查一下自己的缓存中有没有这个地址,有的话直接返回。这个时候拿到的IP地址,会被标记为非权威服务器的应答

如果本地DNS服务器的缓存中没有的话,本地DNS服务器会从配置文件中读取13个根DNS服务器的地址,然后向其中一台发起请求

根DNS服务器拿到请求后,知道他是com.这个顶级域名下的,所以会返回com域名中的NS记录(用来表明哪台服务器对该域名进行解析),其实就是一个IP(com对应的服务器IP)

本地DNS服务器根据返回的IP(com DNS服务器)发起请求,com DNS服务器发现你这请求的是baidu.com这个域,查到这个域的NS记录,然后返回IP(baidu.com)

本地DNS服务器在根据IP(baidu.com DNS服务器)访问这些权威服务器,baidu.com服务器在A记录(正向解析记录,域名到IP地址的映射)中查找到www.baidu.com的IP地址,返回IP(www.baidu.com)

最终本地DNS服务器拿到用户想访问的www.baidu.com的IP,返回给客户端,并进行缓存操作,以便下次使用。

在这里插入图片描述

看上面的图,再理解一遍:

浏览器:@浏览器缓存,你知道www.baidu.com对应的IP么?

浏览器缓存:知道,是xxxx

浏览器:好的,我去访问啦!

浏览器缓存:不知道

浏览器:@系统缓存,你知道www.baidu.com对应的IP么?

系统缓存:我看下hosts哦,找到了,是xxxx

浏览器:好的,我去访问啦~

系统缓存:我看下hosts哦,哎呀没有找到哎

浏览器:好的,我无能为力了,@客户机想想办法

客户机:我去问问@本地DNS服务器,你知道www.baidu.com对应的IP么?

本地DNS服务器:我去DNS服务器缓存中找找,找到了,是xxxx

客户机:@浏览器,是xxxx,你去访问吧

浏览器:好的,我去访问啦#

本地DNS服务器:我去DNS服务器缓存中找找,哎呀没有找到哎

本地DNS服务器:想个办法,先去找大哥@根DNS服务器,你知道www.baidu.com对应的IP么?

根DNS服务器:我知道com DNS服务器的IP,你叫他给你查

本地DNS服务器:好的,@com DNS服务器,你知道www.baidu.com对应的IP么?

com DNS服务器:我知道baidu.com DNS服务器的IP,你叫他给你查

本地DNS服务器:怎么开始踢皮球了,@baidu.com DNS服务器,你知道www.baidu.com对应的IP么?

baidu.com DNS服务器:我这里查到了,IP是xxxx

本地DNS服务器:太开心了@客户机IP是xxxx。这么麻烦,先记到DNS服务器缓存,免得下次又这么折腾。

客户机:@浏览器 IP是xxxx

浏览器:好的,我去访问啦

上面就把正常的DNS解析流程讲解完毕了,其中有提到的迭代查询,在整个DNS解析过程中会存在递归查询过程和迭代查询过程。

我的电脑向本地DNS服务器的查询一般都是采用递归查询

本地DNS服务器向其他DNS服务器的查询是迭代查询

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值