DNS:关于 DNS 基本概念的一些笔记整理

这篇具有很好参考价值的文章主要介绍了DNS:关于 DNS 基本概念的一些笔记整理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面


  • 分享一些 DNS 的笔记整理
  • 博文内容涉及:
    • DNS 历史介绍
    • DNS 解析顺序
    • DNS 基本概念
    • 资源类型介绍
    • DNS 安全
  • 理解不足小伙伴帮忙指正

傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老下去。在我看来,这是比死亡更可怕的事。--------王小波


简单介绍

DNS(DNS-Domain Name System) ,中文名即域名系统,简单理解,即将域名和 IP 地址相互映射的一个分布式数据库,用于 域名解析IP地址IP地址反向解析域名 ,能够使人更方便地访问互联网。DNS 使用 TCP 和 UDP 端口 53,系统内存储了 网络主机地址和资源目录 的一个分层命名系统。 分层类似树一样。

这里的 资源目录 指将 域名 映射到不同 资源记录。并保存在称为 资源记录 的逻辑条目中。

DNS 层次结构从顶部的 根域(.) 开始,向下分支到多个下一级。DNS 层次结构的每一层都由域名中的 . 描述,. 是最顶层。域名如.com、.Net和.org 占据层次结构的第二层,例如example.com,占据在第三层, liruilongs.github.io占据第四层。

在全球互联网中,部署 DNS 服务中存放最高级别的域名的服务器,称之为 根服务器。负责返回顶级域名的权威域名服务器的地址,按照解析 IP 来分,有 IPV4IPV6 两种,按照服务器类型分,分为 主根服务器辅根服务器,或者可在加一个 镜像服务器

IPV4

最早是 IPV4,全球只有 13 台(这 13 台 IPv4 根域名服务器名字分别为“A”至“M”),1 个为主根服务器在美国,由美国互联网机构 Network Solutions 运作。其余 12 个均为辅根服务器,其中 9 个在美国, 2 个在欧洲(位于英国和瑞典), 1 个在亚洲(位于日本)。

实际上 DNS 根域名服务器并不真的只有 13 台,而是 13 个 IP,对应了 A-M 13 个编号,借由任播(Anycast)技术,编号相同的根服务器使用同一个 IP(类似一个集群)。截至 2014 年 10 月,全球有 504 台根服务器,被编号为 A 到 M 共 13 个标号。,504 台根服务器大部分借由任播(Anycast)技术,编号相同的根服务器使用同一个 IP,504 台根服务器总共只使用 13 个 IP,因此可以抵抗针对其所进行的分布式拒绝服务攻击(DDoS)。

中国的镜像服务器:

  • 中国大陆在北京有三台编号为 L 的镜像,编号为 F、I、J 的镜像各一台,共 6 台
  • 香港有编号为 D、J 的镜像各 2 台,编号为 A、F、I、L 的镜像各一台,共 8 台
  • 台湾有编号为 F、I、J 各一台,共 3 台。

为什么根服务器只有 13 台 ?

DNS 协议的最初定义要从 20 世纪 80 年代未期开始算起,它使用了 UDP 和 TCP 协议。UDP 通常用于 DNS 解析查询和响应,TCP 用于 DNS 主服务器和从服务器之间的区域数据传送。

遗憾的是,在所有 UDP 实现中能保证正常工作的最大包是 512 字节,对于在每个包中必须含有数字签名的一些 DNS 新特性(例如,DNSSEC)来说实在是太小了。

512 字节的限制还影响了根服务器的数量和名字。

要让所有的根服务器数据能包含在一个 512 字节的 UDP 包中,根服务器只能限制在 13 个,而每个服务器要使用字母表中的单个字母命名。

以太网数据的长度必须在 46-1500 字节之间,这是由以太网的物理特性决定的。事实上,这个 1500 字节就是网络层 IP 数据包的长度限制,理论上,IP 数据包最大长度是 65535 字节。

在 Internet 数据传输中,UDP 数据长度控制在 576 字节(Internet 标准 MTU 值),而在许多 UDP 应用程序设计中数据包被限制成 512 字节或更小。这样可以防止数据包的丢失。

许多解析器首先发送一条 UDP 查询,如果它们接收到一条被截断的响应,则会用 TCP 重新发送该查询。这个过程绕过了 512 字节的限制,但是效率不高。

您或许认为 DNS 应该避开 UDP,总是使用 TCP,但是 TCP 连接的开销大得多。

  • 一次 UDP DNS 交换可以短到两个包:一个查询包、一个响应包。
  • 一次 TCP 交换则至少包含 7 个包:三次握手初始化 TCP 会话、一个查询包、一个响应包以及最后一次握手来关闭连接。
IPV6

IPV4 受长度的限制,担忧多年的 IPv4 地址耗尽时刻还是到了。负责英国、欧洲、中东和部分中亚地区互联网资源分配的欧洲网络协调中心通过邮件确认,其最后的 IPv4 地址储备池已于 2019 年 11 月 25 日完全耗尽。

IPv6 是 IP 协议 的最新版本,用它来取代 IPv4 ,主要是为了解决 IPv4 地址枯竭问题,同时它也在其他方面对于 IPv4 有许多改进。

然而长期以来 IPv4 在互联网流量中仍占据主要地位,同时 NAT 的出现 ,使得 IPv6 的使用增长缓慢。在 2022 年 4 月,通过 IPv6 使用 Google 服务的用户百分率首次超过 40%。

在与现有 IPv4 根服务器体系架构充分兼容基础上,雪人计划 于 2016 年在全球 16 个国家完成 25 台 IPv6 根服务器架设,事实上形成了 13 台原有根加 25 台 IPv6 根的新格局.

为建立多边、民主、透明的国际互联网治理体系打下坚实基础。中国部署了其中的 4 台,由 1 台主根服务器和 3 台辅根服务器组成,打破了中国过去没有根服务器的困境。

DNS 解析顺序

粗粒度的看,当我们在浏览器中输入域名的时候,或者应用程序处理域名解析时,一般首先会基于编程语言调用系统的 Socket 库来进行 DNS 解析,获取到对应的 IP,然后封装 网络层的相关数据包,添加首部,依次到链路层发出请求。

如果细粒度看,实际发生了好多细节,以 Linux 为例,首先会通过名称解析服务 etc/nsswitch.conf 读取 DNS 解析规则,通过文件中定义的 解析顺序发生解析。

$ cat /etc/nsswitch.conf  | grep host
#     hosts: files dns
#     hosts: files dns  # from user file
hosts:      files dns myhostname
$

当解析发生时,首先通过 files 本地文件 /etc/hosts 发生解析,在 /etc/hosts 文件配置中,我们可以配置一些当前环境的自定义映射

$ cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

172.25.254.254  classroom.example.com classroom
172.25.254.254  content.example.com content
172.25.254.254  materials.example.com materials
### rht-vm-hosts file listing the entries to be appended to /etc/hosts

172.25.250.254  bastion.lab.example.com bastion
172.25.250.9    workstation.lab.example.com workstation
172.25.250.10   servera.lab.example.com servera
172.25.250.11   serverb.lab.example.com serverb
172.25.250.12   serverc.lab.example.com serverc
172.25.250.13   serverd.lab.example.com serverd
$

如果没有则通过 dns 解析,当需要从 DNS 获取信息时,如果对应的集群存在 DNS 缓存,可能会重缓存中获取,如果缓存中没有,会由存根解析器(stub resolver)/etc/resolv.conf 文件中第一个 nameserver记录查询 DNS 信息。如果该服务器没有响应,它将依次尝试其他服务器,直到获得答案或服务器用完为止。

$ cat /etc/resolv.conf
# Generated by NetworkManager
search lab.example.com example.com
nameserver 172.25.250.254

如果还是没有,则通过 myhostname 即当前主机名对应的DNS进行解析。

调用 DNS 服务器发送解析过程

客户端联系的 DNS 服务器通常是递归或者缓存 DNS服务器。通过会通过下面的方式检索客户端的答案:

  • 如果客户端联系的 DNS 服务器恰好是 查询记录的权威际服务器则权威 DNS 服务器立即回答查询,因为权威服务器已经在本地存储了查询区域的信息。
  • 如果客户端联系的 DNS 服务器是 缓存 DNS 服务器,而且之前已经查询过对应记录并且数据缓存在本地且尚未过期,缓存 DNS 服务器也会立即向客户端提供答案。这减少了获取常用信息的延迟。每个查询都有一个关联的生存时间(TTL)值,该值由权威服务器设置。
  • 如果客户端联系的 缓存 DNS 服务器本地未执行过对应记录查询,或者缓存的数据已经过期,那么存 DNS 服务器继续对其他 DNS 服务器执行迭代查找,以获取客户端的信息。一旦获得了客户查询的答案,它就会将该信息提供给客户。

DNS 的一些基本概念

关于 DNS 的一些基本概念:域、子域和区域。

Domain 域,是 resource records 的集合,以通用名结尾,表示 DNS 命名空间的整个子树,如 example.com.

Subdomain 子域:是另一个域的完整子树的域。在讨论两个域之间的关系时使用此术语。例如,lab.example.comexample.com 的子域,而 example.com.com 的子域。您也可以将 example.com 称为第二级域,并将 lab.example.com 称为第三级域。

Zone 区域:是特定 DNS 服务器直接负责的域。它可能是整个域,也可能只是域的一部分。Zone 可以将部分或全部子域都委派给另一个 DNS 服务器或多个 DNS 服务器。

例如,root DNS 服务器对 root zone 具有权威性,但它们将 .com 域的职责委派给其他 DNS 服务器,这些 DNS 服务器为 .com 区域提供权威性应答。这些服务器还可以继续将责任委派给其他 DNS 服务器。

再例如,redhat.fun DNS 服务器对redhat.tun zone 具有权威性,但他将 lab.redhat.fun zone 委派给lab.redhat.fun DNS 服务器。

DNS 资源记录表

DNS 区域中的DNS resource record(RR-DNS资源记录)条目指定有关区域中特定名称或对象的信息。资源记录格式如下:

DNS 记录,不管任何类型的资源目录都使用下面的格式

owner-name        TTL     class type data
www.example.com.  300     IN    A    192.168.1.10
  • owner-name: 查询条目,DNS 名称
  • TTL:生命周期/s
  • class:类别,IN interent,因特网
  • type: 资源类型
  • data: 名称对应的值

资源类型

A

A 资源记录将主机名映射到 IPv4 地址。

host.example.com. 86400 IN A 172.25.254.254
AAAA

AAAA 资源记录(4A 记录)将主机名映射到 IPv6 地址。

a.root-servers.net. 604800 IN AAAA 2001:503:ba3e::2:30
CNAME: 别名

CNAME 资源记录将一个名称映射为规范名称,规范名称具有 A 或 AAAA 记录。CNAME 记录的数据字段可以指向任意名称,无论该区域是内部的还是外部的:

www-dev.example.com.  30 IN CNAME lab.example.com.
www.example.com.      30 IN CNAME www.redhat.com.
  • CNAME 记录可能指向具有 CNAME 的名称,但 CNAME 记录链最终必须解析为 A 或 AAAA 记录的名称。

  • 通常,避免将 CNAME 记录指向其他 CNAME 记录。CNAME 会使查找效率降低,并且您可能会意外地创建一个指向彼此的 CNAME 记录循环。

  • CNAME 记录链有合法用途。例如,它们与 Content Delivery Network(CDN)结合使用。NS 和 MX 记录不得指向带有 CNAME 记录的名称,而是使用带有 A 和/或 AAAA 资源记录的名称。

PTR:IP 到域名反向解析

PTR 或 pointer 资源记录将 lPv4 或 IPv6 地址映射到主机名。它们用于反向 DNS 解析。PTR 记录以一种类似于主机名的特殊格式对 IP 地址进行编码。

  • 对于 IPv4 地址,该地址被颠倒,以最具体的部分开始,然后视为 in-addr.arpa 域的子域中的主机。
  • 对于 IPV6 地址,该地址在半字节边界(每个十六进制数字)上划分为子域,并设置为 ip6.arpa 域的子域。
4.0.41.198.in-addr.arpa.                          785 IN PTR a.root-servers.net.
0.3.0.0.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.e.3.a.b.3.0.5.0.1.0.0.2.ip6.arpa.  86400 IN PTR a.root-servers.net.

该语法可能看起来很奇怪,但是它简化了将地址范围的责任委托给其他 DNS 管理员的情况。

NS:指定区域的权威服务器

NS 或 DNS 服务器资源记录,将 域名映射到对其 DNS区域 具有 权威性的DNS 服务器,该区域的每个权威 DNS 服务器都必须其有 NS 记录。

example.com.                      86400 IN NS classroom.example.com.
168.192.ip-addr.arpa.             86400 IN NS classroom.example.com.
9.0.e.1.4.8.4.6.2.e.d.f.ip6.arpa. 86400 IN NS classroom.example.com.

说明:

  • 其中两个 NS 记录用于 192.168.0.0/16 网络和 fde2:6484:1e09:/48 网络的反向查找。
  • NS 记录映射的名称必须有 A 或 4A 记录。
  • 可以正向或者反向解析
SOA:指定 DNS 运行信息

SOA 资源记录,也叫做起始授权机构记录,提供有关 DNS 区域如何运行的信息。每个区域必须有一个 SOA 记录

example.com.  86400 IN SOA classroom.example.com. root.classroom.example.com.  2015071700  3600  300  604800  60
  • MNAME | classroom.example.com. : 该 DNS 服务器是这个区域主要 DNS 服务器负责维护区域资源记录。
  • RNAME | root.classroom.example.co :该区域中负责人邮件地址,(@用.代替,例如root@classroom.example.com.
  • SERIAL | 2015071700 :该区域版本号,随着区域中记录更改而增加。
  • REFRESH | 3600 : 从 DNS 服务器向主 DNS 服务器更新数据频.单位秒。
  • RETRY | 300 : 在重试失败的刷新前,应当等待的时间间隔。单位秒。
  • EXPIRE | 604800 : 如果刷新失败,从服务器在停止其旧的区域副本响应查询之前等待的时间。单位秒。
  • MINIMUM:| 60 :如果解析器查找某个名称,并且该名称不存在,解析器应将“记录不存在”这一信息缓存的时间。单位秒。
MX

MX 资源记录将域名映射到接受该域的电子邮件的邮件交换(mail exchange)。该记录类型的数据是用于确定在多个 MX 记录之间选择邮件服务器(值越小,优先级越高),提供负载平衡和冗余的邮件服务器。

example.com.86400 IN MX 10  classroom.example.com.
example.com.86400 IN MX 10  mail.example.com.
example.com.86400 IN MX 100 mailbackup.example.com.
TXT

TXT 资源记录将名称映射到编码为可打印 ASCl 字符的任意文本。它们通常用于提供用于各种电子邮件身份验证方案(例如 SPF,DKIM 和 DMARC)的数据,以验证域所有权(例如,用于 Google 和 Facebook),以及用于其他目的。

lwn.net. 27272 IN TXT  "google-site-verification:sVlx-S z1es5DfNSUNXrqr3n9Y4F7tOr7HNVMKUGs"
lwn.net. 27272 IN TXT  "v=spf1 a:mail.lwn.net a:prod.lwn.net a:git.lwn.neta:ms.lwn.net-all"
SRV 特定服务主机

SRV 资源记录可帮助客户端找到域中支特定服务的主机。

ldap.tcp.example.com.86400 IN SRV 0 100 389 server0.example.com.

有特定的格式要求

含义:表明存在一个可以使用 TCP 传输协议(tcp)与 LDAP 连接的 LDAP 服务器(ldap),该主机属于域 example.com。LDAP 服务器是 server0.example.com,正在侦听端口 389,优先级为 0,权重为 100(如果客户端接收到多个 SRV 记录,则控制选择哪个服务器)。

主机和资源记录:

无论是客户端还是服务器,都具有以下 DNS 资源记录:

  • 一个或多个 A 或 AAAA 记录
  • 用于将其 IP 地址反向映射到名称的 PTR 记录
  • 一个或多个 CNAME 记录(可选)

DNS zone 还具有以下资源记录:

  • 唯一的 SOA 记录
  • 每个权威 DNS 服务器的 NS 记录
  • 一个或多个 MX 记录(可选)
  • 用于在域中查找服务的一个或多个 SRV 记录(可选)

DNS 安全

DNS 对于 Internet 的运行至关重要,基本的 DNS 协议非常容易受到欺骗和篡改攻击。

DNS 的原始设计没有提供用于缓存 DNS 服务器以验证来自权威服务器的响应的真实性的方法。攻击者可能伪造对 DNS 查找的响应,伪装成权威服务器,然后将流量重定向到恶意主机。缓存 DNS 服务器将坏数据存储在其缓存中,并在看起来有效的情况下将其提供给其他客户端,该技术通常称为缓存中毒

为了解决这个问题,许多区域使用域名系统安全扩展(DNSSEC-Domain Name System Security Extensions)。每个使用 DNSSEC 的区域都经过数字签名,并向解析器提供包含这些签名的特殊资源记录。

博文部分内容参考

© 文中涉及参考链接内容版权归原作者所有,如有侵权请告知

https://zh.wikipedia.org/wiki/%E5%9F%9F%E5%90%8D%E7%B3%BB%E7%BB%9F

https://baike.baidu.com/item/%E6%A0%B9%E5%9F%9F%E5%90%8D%E6%9C%8D%E5%8A%A1%E5%99%A8/5907519?fromtitle=%E6%A0%B9%E6%9C%8D%E5%8A%A1%E5%99%A8&fromid=136331&fr=aladdin

https://jaminzhang.github.io/dns/The-Reason-of-There-Is-Only-13-DNS-Root-Servers/

https://www.freedesktop.org/software/systemd/man/nss-myhostname.html


© 2018-2023 liruilonger@gmail.com, All rights reserved. 保持署名-非商用-相同方式共享(CC BY-NC-SA 4.0)文章来源地址https://www.toymoban.com/news/detail-432049.html

到了这里,关于DNS:关于 DNS 基本概念的一些笔记整理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于AIGC的一些概念和应用

    AIGC是指 人工智能生成内容 (Artificial Intelligence Generated Content)。这是一个基于人工智能技术的应用,它可以通过训练大量的数据,学习人类语言的特征和模式,并生成各种内容,如文本、图像、语音等。以下是关于AIGC的深入理解: 1.技术基础: AIGC主要基于机器学习技术。

    2024年02月04日
    浏览(74)
  • ADC的一些基本概念

    提示:花了很长一段时间按照CC Liu的论文搭建了一个SAR ADC的demo,发现对一些基本概念还是不太熟,所以花点时间记录下来,同时复习复习这方面的理论。 需要用到的公式sinx-siny==2sin[(x-y)/2]cos[(x+y)/2] 这里我对如何使得 离散的时钟抖动造成的噪声功率 等于 连续的时钟抖动的造

    2024年02月10日
    浏览(41)
  • 【大数据】一些基本概念

    数据库是指长期储存在计算机中的有组织的, 可共享的数据集合 就是存储数据的仓库 数据库有三个特点: 永久存储, 有组织, 可共享 数据库是一种结构化数据存储技术,用于存储和管理有组织的数据。数据库通常使用关系型模型来组织数据,并使用SQL来查询和操作数据。数据

    2024年02月12日
    浏览(45)
  • Elasticsearch的一些基本概念

    Elasticsearch是面向文档的,文档是所有可搜索数据的最小单位。 文档会被序列化成JSON格式,保存在Elasticsearch中。 JSON对象由字段组成,每个字段都有对应的字段类型(字符串/数值/布尔/日期/二进制/范围类型)。 每个文档都有一个UniqueID,你可以自己指定ID,或者通过

    2024年02月12日
    浏览(38)
  • Python爬虫整理一 关于HTTP与HTTPS协议的一些内容

    一.HTTP协议 HTTP协议是一个应用层面向对象协议,也叫超文本传输协议,是基于TCP协议的可靠传输,采用客户端/服务器端模式,指定了客户端可能发送给服务器什么样的消息,以及服务端给出什么样的响应 二.HTTP协议的主要组成 HTTP协议组成主要包括请求、响应、协议规范、安

    2024年01月21日
    浏览(45)
  • 网络中的一些基本概念

    组建网络的重要设备 集线器 , 交换机 (组建局域网,不能跨局域网组建网络), 路由器 (wifi本质上是无线路由器,路由器的本质的把俩个局域网给连起来) 网络通信的一些基础概念 IP地址 标识了网络设备所在的位置 端口号 标识了一个具体的应用程序 协议 协议是网络通信的概念

    2023年04月17日
    浏览(38)
  • 关于 API接口的一些知识分享

    一、安全性 API接口的安全性主要表现在: 1、 API接口的提供者是经过认证的,并且不会将自己的用户信息透露给第三方 2、 API接口不能被第三方窃取或篡改 3、 API接口是一个相对安全的 API,不会轻易地被第三方截获和破解 4、 API接口一般都是在不同的服务器上,通过不同的

    2024年02月02日
    浏览(44)
  • FPGA中一些基本概念原理的区分

    在 Verilog 中,wire 和 reg 是两种不同类型的变量,它们有着不同的特性和用途 wire 变量用于连接模块中的输入、输出以及内部信号线。 它主要用于表示连续赋值的逻辑连接,类似于硬件电路中的导线。 wire 变量不能在 always 块或 initial 块中赋值,它们只能通过连续赋值“assig

    2024年02月21日
    浏览(39)
  • 关于端口的一些基本知识

    端口作为基本必须掌握的知识,作为攻击与防御的必须知道的东西。今天在学习中整理啦。希望在此与大家一起分享。作为网络几个很重要的知识之一。我希望大家和我一起熟悉。一起掌握~! 简介 口\\\"是英文port的译义,可以认为是计算机与外界通讯交流的出口。其中硬件领

    2024年02月04日
    浏览(52)
  • 计算机网络中的一些基本概念

    IP地址: 址用于定位主机的网络地址。是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节). 端口号: 在网络通信中,IP地址用于标识主机网络地址,端口号可以标识主机中发送数据、接收数据的进程。简单说:端口号用于定位主机中的进程. 协议: 网络协

    2024年02月13日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包