您当前的位置:首页 > 电脑百科 > 网络技术 > 网络知识

DNS 是如何影响你冲浪速度的?

时间:2023-02-02 14:30:50  来源:51CTO  作者:一枫说码

本文详细介绍了 DNS 相关知识,包括 DNS 工作原理、如何提升域名解析速度、以及 DNS 记录与报文等内容。

 

 

1. 域名与域名服务器​

在日常上网过程中,出于好记的原因,人们更喜欢在浏览器中输入网站的域名​,而不是 IP 地址。比如想要访问百度,则会输入 www.bAIdu.com,而不是 202.108.22.5(或者百度网站的其他 IP)。

 

然而计算机网络通信中所识别的标识并不是域名​,而是 IP 地址,因为其可以提供主机在互联网中的位置信息,而且是定长的,路由器等设备更容易处理。

 

图片

为了折中人类和计算机不同的偏好,就出现了 DNS(Domain Name System,域名系统),其主要任务是根据域名查出对应的 IP 地址。

下面先介绍一下域名和域名服务器,之后再介绍 DNS 的工作原理。

域名由若干个英文字符串组成(不区分大小写),各字符串之间用点号『.』分隔连接,其中越靠右的表示域名级别越高。

 

举个例子,百度的域名为 www.baidu.com,其中 com 是顶级域名(一级域名),baidu 是二级域名,www 是三级域名。

 

图片

域名服务器(也称为 DNS 服务器)负责存储域名和 IP 地址的映射关系,当我们需要获取某个域名对应的 IP 地址时,只需要从域名服务器中查询即可。

图片

由于域名非常非常多,如果都存放在一台域名服务器中,那么不仅查询速度慢,服务器压力大,而且难以保证服务的可靠性。因此,DNS 采用了分布式的设计方案,大量的域名服务器之间通过​层次方式组织,分布在全世界范围内。

一般而言,域名服务器可以分为以下四类:

  • 根域名服务器:最高层级的域名服务器,因特网上一共有 13 个根域名服务器(以英文字母 A 到 M 依序命名,格式为[a~m].root-servers.NET),每个根域名服务器都知道所有顶级域名服务器的 IP 地址,比如知道负责 com 域的顶级域名服务器的 IP 地址。
  • 顶级域名服务器:对于每个顶级域名,如 com、org、edu 等,都有对应的顶级域名服务器。顶级域名服务器知道其所管理的所有权威域名服务器的 IP 地址,比如负责 com 域的顶级域名服务器知道负责 baidu.com 域的权威域名服务器的 IP 地址。
  • 权威域名服务器:一个网站需要将其域名和 IP 地址注册到相应的权威域名服务器中,比如网站 www.baidu.com 的域名和 IP 地址就存储在负责 baidu.com 域的权威域名服务器中。
  • 本地域名服务器:本地域名服务器不属于上述域名服务器的层次结构,但是它对域名系统非常重要。每个 ISP(如一个大学、一个公司)都有一个本地域名服务器(也叫默认域名服务器)。具体在下一节中介绍。

图片

 

 

2. 域名解析流程​

知道了域名和域名服务器的基础知识后,我们来了解一下域名解析的具体流程,以输入百度域名为例,看看我们的主机是如何得到 www.baidu.com 的 IP 地址的。

图片

  1. 请求主机向本地域名服务器发送 DNS 查询报文,询问 www.baidu.com 的 IP 地址是什么;
  2. 本地域名服务器转发此查询报文到根域名服务器;
  3. 根域名服务器发现要查询的顶级域名为 com,于是向本地域名服务器发送响应报文,报文中封装了负责 com 域的顶级域名服务器的 IP 地址列表;
  4. 本地域名服务器收到根域名服务器响应的报文后,选择其中一个顶级域名服务器的 IP 地址,并向其发送查询报文;
  5. 顶级域名服务器发现要查询的二级域名为 baidu,于是向本地域名服务器发送响应报文,报文中封装了负责baidu.com 域的权威域名服务器的 IP 地址列表;
  6. 本地域名服务器收到顶级域名服务器响应的报文后,选择其中一个权威域名服务器的 IP 地址,并向其发送查询报文;
  7. 权威域名服务器通过查询数据库,找到 www.baidau.com 的 IP 地址,并将此信息封装为一个响应报文,发送给本地域名服务器;
  8. 本地域名服务器将响应报文发送给原请求主机。我们的主机就知道了百度的 IP 地址,DNS 查询过程结束。

在此过程中,请求主机与本地域名服务器之间的交互称为递归查询​,而本地域名服务器与域名服务器层次结构中相关服务器的交互称为迭代查询。

请求主机是如何知道本地域名服务器的 IP 地址的?

当用户插上网线或者连上 wifi 后,电脑会通过 DHCP 协议分配一个 IP 地址,与此同时,也会获取到本地域名服务器的 IP 地址!

本地域名服务器是如何知道根域名服务器的 IP 地址的?

因特网上一共有 13 个根域名服务器,它们的 IP 地址是固定不变的,因此被集成在了操作系统中,每台电脑都知道!

为了解析出百度域名的 IP 地址,一共发送了 8 份 DNS 报文。用户本来只是想和百度的服务器进行交互,却耗费了大量的时间进行域名解析,如果每次都这样搞,岂不是得慢死?因此就需要有一些提升域名解析速度的方式。

 

 

3.  提升域名解析速度​

(1)TCP or UDP

 

我们都知道,TCP 相较于 UDP 更可靠,但是速度更慢。

 

图片

DNS 应该采用哪个传输层协议呢?

  • 如果采用 TCP 协议,不仅需要三次握手建立连接,而且需要进行拥塞控制等,那么域名解析速度将慢成龟速,不利于用户体验。
  • 如果采用 UDP 协议,万一丢包了怎么办?如果解析不出来 IP,怎么访问目标网站?不利于用户体验。

实际上,DNS 主要使用 UDP,在特殊情况下,也会使用 TCP,端口号都是 53。

一般情况下,DNS 报文都比较小,只需要一个包就能承载所有信息。既然只有一个包,就无需考虑哪个包未送达,直接重发一个包即可,因此无需使用 TCP 那样复杂的协议,直接使用 UDP 协议,DNS 协议自己处理超时和重传问题,以提供可靠性服务。

当然有的时候 DNS 报文比较大,比如响应报文中可能一个域名包含有很多 IP 记录。当服务器响应时,会将报文中的 TC 标志位设置为 1,表示响应长度超过了 512 字节,此报文仅仅返回前 512 字节。当我们的主机收到响应后,就会使用 TCP 协议重发原来的查询请求,以获取完整报文。

此外,为了防止本地域名服务器(主域名服务器)宕机而导致无法对域名进行解析,本机还需要设置一个辅助域名服务器。当主域名服务器宕机后,由辅助域名服务器继续提供域名解析的服务。辅助域名服务器会定时(通常是每隔 3小时)向主服务器发送查询请求以实现同步,此时传输数据较多,因而使用 TCP 协议。

(2)DNS 缓存

即使采用 UDP 协议,但是如果每次都需要从根服务器开始一层一层的查询,仍然很慢,且处于层级结构中的域名服务器将会接收到大量的请求,处理速度进一步降低!

为了提升域名解析速度并减轻域名服务器的压力,DNS 广泛使用了缓存技术。

当用户访问了某个网站后,本地域名服务器会将解析出的域名和 IP 地址的映射关系缓存一定时间。在缓存过期前,用户再访问相同网站时,本地域名服务器就可以直接返回查询结果,而无需再去询问根域名服务器、顶级域名服务器等,这样就能大大减少传输的 DNS 报文数量!

 

实际上,不仅在本地域名服务器中设置了高度缓存,用户主机也有缓存。对于 windows 电脑,可以通过命令ipconfig/displaydns查询当前 DNS 缓存,比如当我访问了百度后,本机就会缓存以下信息:

 

图片

缓存虽然提升了 DNS 解析速度,但并不能保证一致性,因为一个网站的域名和 IP 地址的映射关系并不是永久不变的,可能缓存的解析结果已失效,因而 DNS 缓存时间不能设置太大!

Windows 电脑也可以通过命令ipconfig/flushdns清空本机缓存。

(3)切换本地域名服务器

前面提到,在进行域名解析时,主机会向本地域名服务器发起递归查询,如果本地域名服务器的性能较差,或者未正确配置缓存,那么我们上网的速度将会变得非常慢,因此选择一个好的本地域名服务器将有助于提升冲浪速度!

默认情况下,本机在联网时会通过 DHCP 协议自动获得一个 DNS 服务器地址,那么如果此服务器性能不好,该如何更换呢?

以 Windows 为例,可以通过控制面板​—>网络和 Internet​—>网络连接​—>Internet 协议版本4(TCP/IPv4)修改本地域名服务器的 IP 地址。

图片

互联网上常见的公共 DNS 服务器的 IP 地址如下:

 

首选 DNS 服务器地址

备用 DNS 服务器地址

阿里

223.5.5.5

223.6.6.6

腾讯

119.29.29.29

182.254.116.116

百度

180.76.76.76

114.114.114.114

谷歌

8.8.8.8

8.8.4.4

114DNS

114.114.114.114

114.114.115.115

​一般情况下,自动获取的本地域名服务器与主机位于同一个子网中,速度都挺快的。但是如果在上网过程中,发现打开网页的速度很慢,也可以尝试使用上面的公共 DNS 服务器,说不定速度会有所改善。

 

 

4. DNS 记录和报文​

实际上,域名服务器中保存并不仅仅是域名和 IP 地址,而是保存了一个资源记录(Resource Record,RR)。

一个资源记录包含四部分内容,分别是 Name,Value,Type,TTL。

TTL 指的是记录的生存时间,以秒为单位,它决定了缓存此记录的过期时间。

Name 和 Value 的含义随着 Type 的不同而不同,举几个常见例子:

  • 当 Type = A 时(A 是 Address 缩写,也可用编号 1 表示),Name 表示域名,Value 表示对应的 IP 地址,如(www.example.com,93.184.216.34,A,86400)。
  • 当 Type = NS 时(NS 是 Name Server 缩写,也可用编号 2 表示),Name 表示一个域,Value 为负责该域解析的域名服务器的域名,如(baidu.com,ns1.baidu.com,NS,172800),此记录用于沿着层级结构查询链来路由 DNS 查询。

如果一台域名服务器是用于某特定域名的权威域名服务器,那么其将会有一条包含该域名的 A 记录。

如果一台域名服务器不是用于某特定域名的权威域名服务器,那么其将包含一条 NS 记录,该记录用来指定该域名由哪个域名服务器来进行解析;除此之外,它还将包含一条 A 记录,该记录提供了在 NS 记录中 Value 字段中的域名服务器的 IP 地址。

图片

 

接下来介绍一下 DNS 报文的具体内容。DNS 报文分为两类:查询报文和回答报文,二者有着相同的格式,如下图所示:

 

图片

  • 事务 ID:用于标识 DNS 查询的标识符。查询报文和其对应的回答报文有着相同的事务 ID,因此通过它可以区分 DNS 回答报文是对哪个请求进行响应的。
  • 标志:此字段中含有若干标志,比如有一个『QR』标志位用于指出此报文是查询报文(0)还是回答报文(1),再比如有一个『TC』标志位用于指出此报文长度是否大于 512 字节。
  • 问题数:对应于下面查询问题的数量(支持同时查询多个域名,通常为一个)。
  • 回答资源记录数:对应于下面回答问题相关资源记录的数量(一个域名可能有多个 IP 对应,那么将会有多个回答记录)。
  • 权威资源记录数:对应于下面权威域名服务器相关资源记录的数量。
  • 附加资源记录数:对应于下面附加信息相关资源记录的数量。
  • 查询问题:此区域为查询内容,包含查询域名和查询类型(如  www.example.com,A)。
  • 回答问题:此区域为查询结果,包含一到多条资源记录(如 www.example.com,93.184.216.34, A,300)。
  • 权威域名服务器:此区域为其他权威域名服务器的记录,即含有指向权威域名服务器的资源记录,用以继续解析过程。(如 baidu.com,ns1.baidu.com,NS,172800)。
  • 附加信息:此区域为其他有帮助的信息,比如提供权威域名服务器所对应的 IP 地址。

最后,使用 Wireshark 抓一个 DNS 查询报文和回答报文:

 

查询报文:

 

图片

 

回答报文:

图片

 

 

本文转载自微信公众号「 一枫说码」,作者「一枫说码」,可以通过以下二维码关注。



Tags:DNS   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Win10/Win11和 macOS用户反馈:谷歌云服务“捆绑”系统 DNS 设置
IT之家 4 月 6 日消息,谷歌公司承认旗下的 Google One 订阅服务中存在问题,在 Windows 10、Windows 11 以及 macOS 系统上会更改系统 DNS 设置,变更为 8.8.8.8 地址。Google On...【详细内容】
2024-04-08  Search: DNS  点击:(8)  评论:(0)  加入收藏
哪些因素会导致 DNS 查询速度变慢?
DNS查询的作用是将域名(网址)解析为IP地址,这个过程叫做DNS域名解析。具体来说,当用户在浏览器中输入一个网址时,DNS查询会被触发,将该域名解析为对应的IP地址。这样,计算机就能够...【详细内容】
2024-01-26  Search: DNS  点击:(51)  评论:(0)  加入收藏
简易百科之什么是DNS?
在互联网的世界中,DNS扮演着至关重要的角色,它是Domain Name System的缩写,中文意思是域名系统。没有DNS,我们在网络上将无法通过域名来访问网站,只能通过IP地址来访问,这无疑增加...【详细内容】
2024-01-25  Search: DNS  点击:(54)  评论:(0)  加入收藏
DNS的工作原理及其作用
DNS,全称为Domain Name System,即域名系统,是一种用于将域名和IP地址相互映射的分布式数据库系统。它将可读的域名转换为对应的IP地址,使得用户可以更方便地通过域名来访问网络...【详细内容】
2024-01-25  Search: DNS  点击:(43)  评论:(0)  加入收藏
DNS解析是什么?DNS解析在网络通信中作用有哪些?
在网络通信过程中,DNS解析起着至关重要的作用,它负责将人们便于理解和记忆的域名翻译成计算机能够识别的IP地址,从而实现人们通过域名进行网络通信的目的。DNS解析的原理IP是互...【详细内容】
2024-01-23  Search: DNS  点击:(43)  评论:(0)  加入收藏
DNS解析的速度该怎么提高?四个点可以注意并付诸实施的
在我们平时上网时,每次敲击网址进入网站时,必须用到DNS解析功能,它关乎到你能否顺畅地浏览网站内容。也就是所,如果DNS解析的速度跟不上,就会致使后期出现无法访问的问题发生。那...【详细内容】
2024-01-10  Search: DNS  点击:(144)  评论:(0)  加入收藏
2024年需要重点关注的10种 DNS 类型
目前,针对域名系统(DNS)的攻击已经成为企业组织数字化发展中的一个严重问题,每年都有数千个网站成为此类攻击的受害者。据最近的研究数据显示,2023年企业组织与DNS攻击相关的损失...【详细内容】
2024-01-04  Search: DNS  点击:(129)  评论:(0)  加入收藏
一文看懂DNS及其工作原理
Labs 导读想象一下你的智能手机联系人名单,就像是整个地球上的人的名字和联系方式列表。每当你想要给某人打电话或发短信时,你只需要在联系人名单中找到他们的名字,而不必记住...【详细内容】
2023-12-18  Search: DNS  点击:(124)  评论:(0)  加入收藏
DNS缓存的作用是什么?四个方面的内容可以了解下
DNS缓存作为网络世界中的一项重要技术,其作用不可小觑。下面将从四个方面为大家详细介绍DNS缓存的作用,如果感兴趣的话,可以一起来看下吧。DNS缓存的作用是什么1、提升网络访问...【详细内容】
2023-12-08  Search: DNS  点击:(197)  评论:(0)  加入收藏
DNS服务器加速:提升网络访问速度的秘密
在当今高度信息化的时代,网络已经成为我们获取信息、沟通交流的重要渠道。然而,我们在使用网络时,往往会遇到访问速度慢、加载时间长等问题。这些问题中,有些是由于网络带宽限制...【详细内容】
2023-12-06  Search: DNS  点击:(106)  评论:(0)  加入收藏
▌简易百科推荐
学生偷看“不良网站”,手机上3个痕迹无法清除,网友:咋不早说
众所周知,中国的常规教育中,总是“谈性色变”,但在这个信息爆炸的互联网时代,即便是一些年纪很小的孩子,也能轻易接触到一些所谓的不良网站,因此这一方面的教育缺失,其实是很可怕的...【详细内容】
2024-03-28    叶姐生活指南  Tags:不良网站   点击:(16)  评论:(0)  加入收藏
什么是网络中的路由器?核心功能解释
路由器是互联网连接的核心元素,是一种允许多个设备连接到互联网,并促进将数据包转发到各自的目标地址的设备。使用动态路由技术,路由器检查数据并在各种可用路径中选择最有效的...【详细内容】
2024-03-07    千家网  Tags:路由器   点击:(34)  评论:(0)  加入收藏
过年该不该升级Wi-Fi 7路由?看完就知道
打开电商网站不难发现,从2023年第三季度到现在,Wi-Fi 7路由器新品越来越多。而且价格不再是高高在上,已经基本和Wi-Fi 6路由价格差不多了。看到这些Wi-Fi 7新品路由,不少朋友就...【详细内容】
2024-02-27    中关村在线  Tags:Wi-Fi   点击:(42)  评论:(0)  加入收藏
聊聊 Kubernetes 网络模型综合指南
这篇详细的博文探讨了 Kubernetes 网络的复杂性,提供了关于如何在容器化环境中确保高效和安全通信的见解。译自Navigating the Network: A Comprehensive Guide to Kubernete...【详细内容】
2024-02-19  云云众生s  微信公众号  Tags:Kubernetes   点击:(40)  评论:(0)  加入收藏
SSL协议是什么?关于SSL和TLS的常见问题解答
SSL(安全套接字层)及其后继者TLS(传输层安全)是用于在联网计算机之间建立经过身份验证和加密的链接的协议。尽管SSL协议在 1999年已经随着TLS 1.0的发布而被弃用,但我们仍将这些...【详细内容】
2024-02-06  IDC点评网    Tags:SSL协议   点击:(72)  评论:(0)  加入收藏
从零开始了解网络协议:TCP/IP详解
从零开始了解网络协议:TCP/IP详解 在当今数字化的时代,网络协议已经成为我们生活中不可或缺的一部分。作为互联网的基础,网络协议规定了数据如何在不同的网络设备之间传输。TC...【详细内容】
2024-02-01    简易百科  Tags:TCP/IP   点击:(60)  评论:(0)  加入收藏
BGP路由属性:互联网路由的灵活控制器
在互联网的庞大网络中,边界网关协议(BGP)是确保不同自治系统(AS)间路由信息有效交换的关键协议。然而,BGP的功能远不止于此。其核心组成部分,即BGP路由属性,赋予了BGP强大的灵活性,使...【详细内容】
2024-01-26  诺诺爱生活    Tags:互联网路由   点击:(43)  评论:(0)  加入收藏
简易百科之什么是网络延迟?
简易百科之什么是网络延迟?随着互联网的普及和发展,网络已经成为我们生活中不可或缺的一部分。然而,我们在使用网络时可能会遇到一种情况,那就是网络延迟。那么,什么是网络延迟呢...【详细内容】
2024-01-24    简易百科  Tags:网络延迟   点击:(156)  评论:(0)  加入收藏
网络延迟与网络速度有什么区别?分享具体的答案
通常,许多人抱怨网速测试。速度还是不错的,但是他们玩游戏的时候怎么会卡住,还是断开连接等等问题,这一系列问题始终困扰着大家。那么,网络延迟与网络速度有什么区别呢?请不要担心...【详细内容】
2024-01-24  萌新小郭    Tags:网络延迟   点击:(53)  评论:(0)  加入收藏
揭秘IP地址的网络威胁与攻击类型
在当今数字化时代,网络攻击已经成为网络安全的一大挑战。IP地址,作为互联网通信的基础,也成为网络威胁和攻击的焦点之一。本文将深入探讨不同类型的网络威胁和攻击,以及如何防范...【详细内容】
2024-01-22  IP数据云    Tags:IP地址   点击:(84)  评论:(0)  加入收藏
站内最新
站内热门
站内头条