博客建站6 - 一文搞懂域名解析(保姆级教程和原理讲解)

1. 本网站的系统架构

  • 网站示例: sunlogging.com
  • 服务器: 阿里云ECS
  • 服务器系统: Ubuntu 24.04 LTS
  • 博客框架: Hexo
  • 网站主题: Volantis

2. (阿里云)域名解析配置

2.1. 快速配置

对阿里云购买的域名进行,使其指向自己购买的云服务器的IP。也就是域名与IP绑定。

操作路径:
阿里云控制台 -> 产品与服务 -> 域名 -> 域名列表 -> 解析

示例:

  1. 进入域名配置页面

  1. 选择新手引导进行快速配置

  1. 填写域名和IP

sunlogging.comwww.sunlogging.com 解析(绑定)到自己的服务器的公网IP

2.2. 自定义配置

除了新手引导进行快速配置外,还可以点击添加记录进行自定义配置域名解析。

2.2.1. 记录类型

记录类型指解析记录的用途,例如:网站、邮箱等。

记录类型 含义 备注
A 将域名指向一个IPV4地址 最常用的一种方式
AAAA 将域名指向一个IPV6地址
CNAME 将域名指向另外一个域名 CDN加速时需要用到
NS 将子域名指定其他DNS服务器解析
MX 将域名指向邮件服务器地址
SRV 记录提供特定的服务的服务器
TXT 文本长度限制512,通常做SPF记录(反垃圾邮件)
CAA CA证书颁发机构授权校验
显性URL 将域名重定向到另外一个地址
隐性URL 与显性URL类似,但是会隐藏真实目标地址

2.2.2. 主机记录

主机记录指域名前缀,例如:www、mail等。

主机记录 含义 备注
@ 表示主域名,如: sunlogging.com @是一个固定值,不能用其他字符代替
. 泛解析,表示满足格式*.sunlogging.com的所有域名 记录类型为显性URL时不允许设置泛解析
abc 表示二级域名abc.sunlogging.com 这里的abc可以替换成任意自定义的子域名,常见的二级域名参加下个表格
abc.def 表示三级域名abc.def.sunlogging.com 这里的abc.def可以替换成任意自定义的二级和三级域名

常用的二级域:

常用二级域 含义
www 表示域名: sunlogging.com,常用于互联网的网站业务
mail 表示域名: mail.sunlogging.com,常用于邮箱业务
m 表示域名: m.sunlogging.com,常用于手机网站

2.2.3. 记录值

记录值指解析记录的具体内容,例如:IP地址、域名等。

记录类型不同,记录值填写的内容也不一样,具体如下:

记录类型 记录值
A 填写 IPv4 的地址
AAAA 填写 IPv6 的地址
CNAME 填写 CNAME 指向的域名
NS 填写 要授权的 DNS 服务器域名,例如腾讯云解析的DNS服务器域名ns3.dnspod.net
MX 输入内容通过联系邮箱注册商提供。例如阿里云邮提供的需要配置的解析记录值是mx1.qiye.aliyuncom
SRV 格式为优先级权重 端口目标地址 ,每项中间需以空格分隔;例如:0 5 5060 www.cloud-example.com
TXT 常用情况 TXT 记录是用来做验证类的操作,比如托管子域名时需要添加TXT记录验证,记录值5d597b2c12464a7a8d0dde6b858ce543
CAA CA证书颁发机构授权校验
显性URL 填写具体的URL
隐性URL 填写具体的URL,如:http://www.aliyun.com:80

2.2.4. 解析请求来源

指域名访问者所在的地区和使用的运营商网络。如:中国联通、中国电信、百度、必应、谷歌等。

非必填项,可以不用管,选默认值就可以了。

3. 域名解析原理

3.1. 什么是DNS

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

网络上计算机之间的通讯是通过IP地址来完成的,但IP地址并不便于记忆,我们需要一个方便记忆的名字来识别每一台计算机,这就是域名,而维护域名的系统就叫做域名系统域名系统其实就是名字系统。域名是唯一的,IP也是唯一的,给你一个域名要知道它对应的IP地址,就需要有一个域名到IP的映射。 由域名去找IP地址的查找过程就是DNS的解析,进行DNS解析的服务器叫DNS服务器,而DNS服务器便充当了“翻译官”的角色,将域名翻译成IP地址。

3.2. DNS的解析原理

DNS的解析也就是通过域名查找主机的过程,其查找过程主要有三个步骤:

  1. 本地查询(客户机的DNS解析器)
  2. 客户机到服务器查询
  3. 服务器到服务器查询

3.2.1. 1.本地查询

  1. 在浏览器中输入www.microsoft.com域名,操作系统会先检查自己本地的hosts文件是否有这个域名的映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
    Win7系统下本地的hosts文件在C:\Windows\System32\drivers\etc\hosts,Linux系统下在:/etc/hosts
  2. 如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
  3. 如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器(也就是上图中中间部分的DNS Server),在本地DNS服务器中查找 。
    Win7系统下TCP/IP参数的设置在:控制面板 ->网络和 Internet ->网络连接 ->本地链接 ->属性 ->网络 ->Internet协议版本4(TCP/IPv4)

3.2.2. 2.客户机到服务器查询

  1. 本地DNS服务器收到查询时,如果要查询的域名,包含在本地配置的区域资源文件中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
  2. 如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
  3. 如果本地DNS服务器区域资源文件解析 与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询。

3.2.3. 3.服务器到服务器查询

  1. 如果未用转发模式,本地DNS就把请求发至根DNS服务器根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名管理的服务器的IP。本地DNS服务器收到IP信息后,将会联系"负责.com域名解析的这台服务器“。这台“负责.com域名解析的服务器”收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(microsoft.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找microsoft.com域服务器,重复上面的动作,进行查询,直至找到www.microsoft.com主机。
  2. 如果用的是转发模式,本地DNS服务器就会把请求转发至上一级DNS服务器(microsoft.com),由上一级服务器进行解析,上一级服务器如果不能解析,会把转请求转至上上级(.com)或找根DNS服务器,以此循环。不管是本地DNS服务器用是是转发模式,还是非转发模式,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。

3.3. 递归查询与迭代查询

3.3.1. 递归查询

主机向本地域名服务器的查询一般都是采用递归查询。所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询,即:完全代理掉主机的查询请求。因此,递归查询返回的查询结果要么是所要查询的IP地址,要么是报错(表示无法查询到所需的IP地址)。

3.3.2. 迭代查询

本地域名服务器向根域名服务器的查询的迭代查询。迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机。

4. 常用的公共DNS服务器

参见文档: 博客建站 - 常用的公共DNS服务器


大家好,我是陌尘。

IT从业10年+, 北漂过也深漂过,目前暂定居于杭州,未来不知还会飘向何方。

搞了8年C++,也干过2年前端;用Python写过书,也玩过一点PHP,未来还会折腾更多东西,不死不休。

感谢大家的关注,期待与你一起成长。



【SunLogging】
扫码二维码,关注微信公众号,阅读更多精彩内容

热门相关:万妖帝主   全民女神,重生腹黑千金   重生全能悍妻:张狂大小姐   99次离婚:厉少,请低调   灭世之门