DNS知识点整理
文章目录
文章摘要:
域名存在的意义:便于人类记忆
DNS系统的主要工作:映射域名和服务器
DNS系统的解析过程:从树装结构的DNS服务器中,递归查询或者迭代查询
DNS的负载均衡:1.解析返回多个服务器地址用作简单地负载均衡 2.大型系统搭建GSLB跨运营商跨地域系统时加速访问
一、为什么要有域名
TCP/IP是通过IP地址确定通信对象,如果直接使用IP地址。一方面不利于人类记忆另一方面对于互联网的传输效率来说IP地址只需要4字节,而域名可能有几十个字节,并且不是定长的。
解决:让人使用域名,机器使用IP地址,来弥补两者的障碍,这个机制就是DNS - 网络地址的地址簿
二、域名的形式
2.1 域
• 域是一个逻辑上的概念,在初始瓜分互联网的时候,Internet组织将世界上的计算机划分为了若干个大类,如com、gov、org、net、edu、cn、us等等
• 每一个大类我们称之为一个域
• 在每个大类里面划分出比较小一点的,成为子域,域是可以嵌套的,大域包含小域,小域可以包含更小的域
2.2 域名
在每个域里面都有很多主机,每个主机都有一个主机名,我们在这个主机名后面冠上主机所在域的名称成为该主机在Internet网络上的域名。
2.3 域名结构
例如:www.baidu.com
- 域名是一个有层次的结构,是一串用“.”分隔的多个单词,最右边的被称为“顶级域名”,然后是“二级域名”,层级关系向左依次降低
- 最左边的是主机名,通常用来表明主机的用途,比如“www”表示提供万维网服务、“mail”表示提供邮件服务,不过这也不是绝对的,名字的关键是要让我们容易记忆。
三、什么是DNS
DNS的全称是 Domin Name System 域名服务系统 。最常见的功能是 将域名和IP地址进行关联,还可以将邮件地址和邮件服务器进行关联,以及其他的各种信息关联相应的名称。
是互联网上是一种层次结构的基于域的命名方式和实现这种命名方式的分布式数据库,其中记录了各种主机域名与 IP 地址的对应关系,能够使用户更加方便的访问网站。用户可以直接输入域名登录网站,DNS会将域名解析成IP地址,然后用户根据这个IP地址找到相应的网站,从而访问到域名对应的网站,通过主机名获取到主机名对应IP地址的过程叫作域名解析。
DNS协议建立在UDP协议之上,在某些情况下可以切换到TCP,使用端口号53,是一种客户/服务器服务模式。
3.1 DNS记录的格式
字段 | 含义 |
---|---|
Domain | 域名 |
TTL | 生存周期,是指DNS服务器会在缓存中保存该资记录的时长 |
Class | 网络/协议分类,目前主要支持的是IN,IN是internet的缩写,标识为网络相关 |
Type | 资源记录的具体类型,有SOA、A、NS、MX、CNAME、PTR … |
rdata | 资源记录的数据,例如Type为A 那么此处就是ip地址 |
3.2 解析记录类型
类型 | 名称 | 记录值说明 |
---|---|---|
SOA | 起始机构授权记录 | 一个DNS服务器只能有一个SOA记录,且为第一条记录。是起始授权机构记录,说明了在众多 NS 记录里哪一台才是主要的服务器。在任何DNS记录文件中,都是以SOA ( Startof Authority )记录开始。SOA资源记录表明此DNS名称服务器是该DNS域中数据信息的最佳来源。 |
A | Adress | 指定主机名(或域名)对应的IP地址记录 |
CNAME | 别名解析 | 主机名到主机名的映射。当需要将域名指向另一个域名,再由另一个域名提供 IP 地址,就需要添加 CNAME 记录,最常用到 CNAME的场景包括做CDN、企业邮箱、全局流量管理等。与A记录不同的是,CNAME别名记录设置的值不是一个固定的IP,而是主机的别名地址。 |
NS | Name Server | NS记录是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。NS记录中的IP即为该DNS服务器的IP地址。大多数域名注册商默认用自己的NS服务器来解析用户的DNS记录。DNS服务器NS记录地址一般以以下的形式出现:http://ns1.domain.com、http://ns2.domain.com等。 |
AAAAA | IPV6地址解析 | 将域名解析到IPv6地址的DNS记录 |
TXT | 文本记录 | 通过设置TXT记录内容可以使别人更方便地联系到你。TXT 记录常用的方式还有做 SPF 记录(反垃圾邮件)和SSL证书的DNS验证等。 |
MX | Mail Exchanger | MX(Mail Exchanger)记录是邮件交换记录,主要用于邮箱解析,在邮件系统发送邮件时根据收信人的地址后缀进行邮件服务器的定位。MX记录允许设置一个优先级,当多个邮件服务器可用时,会根据该值决定投递邮件的服务器。 |
PTR | 反向DNS | 可以粗略的理解为DNS反向,是一个指针记录,用于将一个IP地址映射到对应的主机名,也可以看成是A记录的反向,即通过IP访问域名。 |
SRV | 服务定位资源记录 | 用于定义提供特定服务的服务器的位置,如主机(hostname),端口(port number)等 |
显性URL转发 | 重定向 | 将域名重定向到另一个网址其实就是返回301/302 重定向 |
隐性url转发 | 重定向 | 地址栏不变将目标地址以iframe的形式嵌入到当前浏览器页面 |
3.3 解析记录的重复和冲突
可重复:表示同一线路同一类型同一域名可以有多个记录
可共存:表示同一线路 同一域名 允许其他的类型的解析记录共存
冲突:表示同一线路 某个记录和另一类型的记录不可共存
NS | CNAME | A | MX | TXT | AAAA | SRV | |
---|---|---|---|---|---|---|---|
NS | 可重复 | 冲突 | 冲突 | 冲突 | 冲突 | 冲突 | 冲突 |
CNAME | 冲突 | 冲突 | 冲突 | 冲突 | 冲突 | 冲突 | 冲突 |
A | 冲突 | 冲突 | 可重复 | 可共存 | 可共存 | 可共存 | 可共存 |
MX | 冲突 | 冲突 | 可共存 | 可重复 | 可共存 | 可共存 | 可共存 |
TXT | 冲突 | 冲突 | 可共存 | 可共存 | 可重复 | 可共存 | 可共存 |
AAAA | 冲突 | 冲突 | 可共存 | 可共存 | 可共存 | 可重复 | 可共存 |
SRV | 冲突 | 冲突 | 可共存 | 可共存 | 可共存 | 可共存 | 可重复 |
四、域名解析的过程
4.1 树状结构的DNS服务器
每个人上网都需要访问DNS服务器,一但DNS服务器故障影响将不可估量。所以DNS服务器一定要设置成高可用、高并发和分布式的。
- 根 DNS 服务器 :返回顶级域 DNS 服务器的 IP 地址
- 顶级域 DNS 服务器:返回权威 DNS 服务器的 IP 地址
- 权威 DNS 服务器 :返回相应主机的 IP 地址
4.2 DNS的解析流程
以解析域名 www.163.com为例
浏览器需要请求www.163.com时,浏览器先检查本地DNS缓存是否存在,再检查操作系统Host配置文件后再检查操作系统缓存中是否存在对应的DNS解析结果。
- 本地不存在DNS缓存的结果时,就需要向本地域名服务器(本地DNS)发送请求了。本地DNS服务器地址一般来自DHCP配置时分配的网络服务商(ISP)地址,也可以手动配置。
- 本地 DNS 收到来自客户端的请求。你可以想象这台服务器上缓存了一张域名与之对应 IP 地址的大表格。如果能找到 www.163.com,它就直接返回 IP 地址。如果没有,本地 DNS 会去问它的根域名服务器:“老大,能告诉我 www.163.com 的 IP 地址吗?”根域名服务器是最高层次的,全球共有 13 套。它不直接用于域名解析,但能指明一条道路。
- 根 DNS 收到来自本地 DNS 的请求,发现后缀是 .com,说:“哦,www.163.com 啊,这个域名是由.com 区域管理,我给你它的顶级域名服务器的地址,你去问问它吧。”
- 本地 DNS 转向问顶级域名服务器:“老二,你能告诉我 www.163.com 的 IP 地址吗?”顶级域名服务器就是大名鼎鼎的比如 .com、.net、 .org 这些一级域名,它负责管理二级域名,比如 163.com,所以它能提供一条更清晰的方向。
- 顶级域名服务器说:“我给你负责 www.163.com 区域的权威 DNS 服务器的地址,你去问它应该能问到。”
- 本地 DNS 转向问权威 DNS 服务器:“您好,www.163.com 对应的 IP 是啥呀?”163.com 的权威 DNS 服务器,它是域名解析结果的原出处。为啥叫权威呢?就是我的域名我做主。
- 权威 DNS 服务器查询后将对应的 IP 地址 X.X.X.X 告诉本地 DNS。
- 本地 DNS 再将 IP 地址返回客户端,客户端和目标建立连接
递归查询&迭代查询
DNS解析流程分为递归查询和迭代查询,递归查询是以本地名称服务器为中心查询, 递归查询是默认方式,迭代查询是以DNS客户端,也就是客户机器为中心查询。其实DNS客户端和本地名称服务器是递归,而本地名称服务器和其他名称服务器之间是迭代。
递归查询(默认): 本地服务器不能解析的话,本地服务器自己去从根服务器一级一级请求直到请求到权威域名服务器获取到最终结果返回给客户端。上述的例子就是递归查询的过程。
迭代查询: 本地服务器不能解析时,向客户端返回能解析查询请求的DNS服务器地址,后面的过程就一直以客户端为中心去向各级DNS服务器请求解析。使用迭代查询的情况: 1、DNS请求报文的头部RD字段不为1 表明不要求本地DNS使用递归查询帮忙查询。2、本地DNS服务器不支持递归查询,并且会在DNS应答报文中头部字段RA置为0
五、DNS用作负载均衡
5.1 DNS内部负载均衡
为同一个主机名配置多个IP地址,在应答DNS查询时,DNS服务器轮流返回不同的IP地址,就能将请求分流到不同的服务器上,起到负载均衡的效果。
优点:
- 成本低
- 应用无感,不需要任何修改
- 3.不同的服务器可以任意分布
缺陷:
- 不能按实际实时负载情况分配流量
- 没有容错机制,服务挂了仍然会分配到流量
- 删除某个服务器时,需要等待缓存过期。期间会无法访问
5.2 GSLB全局负载均衡
对于一些跨运营商,跨地域的一些大型应用,需要更加复杂的负载均衡机制。因此会有专门的设备或者服务器来做这件事,这就是**全局负载均衡器 (Global Server Load Balance) **
全局负载均衡机制功能:
- 保证了应用的高可用,用户访问某个域名时,如果某个数据中心不可用了,只需要去掉这个数据中心ip即可
- 应用加速访问,上海用户访问上海的数据中心,并且联通用户访问联通应用中心,提高客户访问速度。
GSLB的工作流程
假设需要请求的域名为 company.site
- 用户如果没有请求到操作系统本地和本地DNS服务器的地址,就会一直请求到 company.site的权威服务器
- 权威服务器上解析 company.site 记录的Type会是CNAME类型的,指向GSLB的一个域名例如 company.site.aliy.gslb,这个域名会交由GSLB来解析。
- 本地DNS服务器会接着解析 company.site.aliy.gslb ,解析过程会由GSLB来搞定
- GSLB在解析过程中,实现自己的负载均衡策略
- 第一层 GSLB,通过查看请求它的本地 DNS 服务器所在的运营商,就知道用户所在的运营商。假设是移动,通过 CNAME 的方式,通过另一个别名 company.site.yd.aliy.gslb,告诉本地 DNS 服务器去请求第二层的 GSLB
- 第二层 GSLB,通过查看请求它的本地 DNS 服务器所在的地址,就知道用户所在的地理位置,然后将距离用户位置比较近的 Region 里面,六个内部负载均衡(SLB,Server Load Balancer)的地址,返回给本地 DNS 服务器
- 本地 DNS 解析器将结果缓存后,返回给客户端
- 客户端开始访问属于相同运营商的距离较近的 Region 1 中的对象存储,当然客户端得到了六个 IP 地址,它可以通过负载均衡的方式,随机或者轮询选择一个可用区进行访问。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)