计算机网络 ------ 应用层(DNS域名系统)
- 什么是DNS
- 域名的层次结构
- 域名服务器的分类
- 域名解析方式
-
- [递归查询(Recursive Query)](#递归查询(Recursive Query))
- [迭代查询(Iterative Query)](#迭代查询(Iterative Query))
- 域名的高速缓存
我们今天来看DNS域名系统
什么是DNS
DNS,全称为Domain Name System,即域名系统,它是互联网的核心组件之一,扮演着互联网"电话簿"的角色 。DNS的主要职责是将人类易于记忆和使用的域名(比如www.example.com
)转换为计算机能够识别和连接的IP地址(如192.168.1.1
)。这一过程称为域名解析。
DNS的工作原理大致如下:
- 客户端查询:当用户在浏览器中输入一个网址时,计算机首先查询本地DNS缓存(如果之前已经访问过该网站),看是否有该域名对应的IP地址记录。如果没有找到,请求会被转发到本地配置的DNS递归解析器,通常是用户的ISP(互联网服务提供商)提供的DNS服务器。
- 递归查询:DNS递归解析器接收到请求后,如果其缓存中也没有相关信息,它会代表客户端开始一个递归查询过程。这个过程涉及与多个DNS服务器的交互,从根域名服务器开始,然后到顶级域名(TLD)服务器,再至权威域名服务器,直到找到存储该域名对应IP地址的服务器。
- 解析过程:
- 根域名服务器会指引查询到正确的顶级域名服务器(如.com、.org)。
- 顶级域名服务器进一步将查询转发到负责该特定域名的权威域名服务器。
- 权威域名服务器最终提供该域名对应的IP地址给递归解析器,递归解析器再将此信息返回给客户端。
- 缓存:为了提高效率,每一级DNS服务器和客户端都会缓存得到的域名到IP地址的映射关系,这样后续相同的查询就可以直接从缓存中获取结果,而不需要重复完整的查询过程。
DNS不仅用于网站地址的解析,还应用于电子邮件路由、及其他依赖于域名的服务中。它是互联网基础设施的关键部分,确保了用户能通过简单易记的域名访问全球各地的网络资源。
域名的层次结构
DNS域名层次结构是一种倒置的树状结构,从最顶层的根域开始,向下依次是顶级域(TLD)、二级域、三级域等,直至具体的主机名。以下是DNS域名层次结构的组成部分及其说明:
- 根域(Root Domain) :
标志为一个点(.
),位于树形结构的顶端,是所有域名查询的起点。实际上,它是所有DNS查询的最高层级,但通常在域名书写时不显示。全球共有13组根域名服务器,负责引导查询者前往相应的顶级域名服务器。- 顶级域(Top-Level Domain, TLD) :
位于根域之下,是最靠近根域的一级域名,如.com
、.org
、.net
、.edu
、.gov
、.cn
(中国)等。还包括国家代码顶级域名(ccTLDs),如.uk
(英国)、.de
(德国)等。- 二级域(Second-Level Domain, SLD) :
在顶级域之下的域名层,通常代表组织或公司的名称,例如在example.com
中,example
就是二级域。- 三级域(Third-Level Domain)及其他子域 :
可以在二级域下继续细分,形成多级子域名结构。例如,在www.example.com
中,www
是一个三级域,通常用于指定特定的服务类型(如web服务器)。- 主机名(Hostname) :
树状结构中最底层的部分,直接关联到具体的网络设备或服务,如www
、ftp
等。主机名加上前面各级域名,构成了完整的域名,用于唯一标识互联网上的每一台主机。
举个简单的例子:
假设我们访问的网站是
www.example.com
。
- 根域(Root Domain):虽然在实际的网址中不会显示出来,但在DNS查询过程中是起始点,用"."表示。
- 顶级域(Top-Level Domain, TLD) :在这个例子中是
.com
,表示这是一家商业机构的网站。- 二级域(Second-Level Domain, SLD) :
example
是二级域名,它代表了一个具体的组织或公司的名字。- 三级域(Third-Level Domain) :在这个例子中是
www
,它是一个常见的前缀,用来指示该域名指向的是一个网站(World Wide Web)服务器。
所以,当你在浏览器中输入www.example.com
并敲击回车时,DNS系统会从根域开始,逐步向下查询到顶级域.com
的DNS服务器,再到管理example.com
这个二级域名的权威DNS服务器,最终找到与www
相对应的IP地址,从而让你的电脑能够连接到存放该网站内容的服务器上。
整个域名系统通过这种层次化的结构,实现了域名到IP地址的有效映射,并且允许分散管理,便于查询和维护。每个级别的域名通常由不同的组织或个人管理,顶级域名由互联网号码分配局(IANA)和相应的注册管理机构负责,而更低级别的域名则由相应的注册人或组织管理。
域名分类
域名分类主要可以根据不同的标准来划分,以下是几种常见的分类方式:
- 按后缀分类:
- 通用顶级域名(gTLD):包括最早期的.com(商业)、.net(网络服务)、.org(非营利组织)等,以及后来新增的如.info(信息)、.biz(商业)、.mobi(移动设备)等。
- 国家及地区顶级域名(ccTLD):根据ISO 3166国家代码分配,如.cn(中国)、.us(美国)、.uk(英国)等。
- 新通用顶级域名(New gTLD):近年来大量增加的顶级域名,如.app(应用)、.shop(商店)、.xyz(通用)等,旨在提供更多样化的选择。
- 按功能或用途分类:
- 按结构或级别分类:
- 顶级域名(Top-Level Domain, TLD):上述提到的各类顶级域名。
- 二级域名:在顶级域名之下的域名,例如在example.com中,"example"是二级域名。
- 三级及以下域名:在二级域名基础上进一步细分,如sub.example.com中的"sub"。
选择合适的域名时,考虑目标受众、品牌定位、易记性以及SEO优化等因素是很重要的。
域名服务器的分类
按照根域名服务器的标准来划分,DNS服务器可以分为以下几类,这种划分方式主要关注DNS层次结构的顶级元素:
- 根域名服务器(Root DNS Servers):
这是DNS层次结构的最高层级,全球共有13组根域名服务器,每组可能包含多个物理服务器和镜像站点,以确保稳定性和冗余。它们的主要职责是响应DNS查询的第一步,即指引查询者到适当的顶级域(TLD)服务器。根服务器并不直接提供域名到IP地址的具体映射,而是告诉查询者下一步应该询问哪个顶级域服务器。
- 顶级域(TLD)服务器:
接收从根服务器转发来的查询请求,负责管理其下一级(即二级域)的域名解析,例如.com、.org、.net等通用顶级域以及国家和地区顶级域(ccTLD)。
- 权威域名服务器(Authoritative DNS Servers):
存储特定域的权威DNS记录,直接负责提供某个域名的最终解析结果。当一个域名的DNS记录发生更改时,这些更改会在权威服务器上进行。
- 本地缓存域名服务器(Local Caching DNS Servers):
有时也部署在企业网络或ISP内部,作为客户端的直接查询对象,以缓存之前查询过的域名记录,提高查询速度并减少对外部网络的流量需求。
综上所述,根域名服务器作为DNS查询路径的起始点,是整个域名解析流程的关键环节,而其他类型的DNS服务器则在其后各司其职,共同完成域名到IP地址的解析任务。
域名解析方式
递归查询(Recursive Query)
当一个客户端(如用户的计算机)向其配置的DNS递归解析器发出域名查询请求时,该解析器承担起查找完整答案的责任,并以最终的IP地址响应客户端。递归解析器会依次查询多个DNS服务器,直到找到最终的权威答案。在整个过程中,客户端只需发送一次查询请求,之后的工作由递归解析器"递归"地完成。
过程简述如下:
- 客户端向递归解析器发送查询请求。
- 递归解析器先查询本地缓存,若无结果,则向根域名服务器查询。
- 根据根域名服务器的指引,递归解析器继续向相应的顶级域服务器查询,然后是二级域名服务器,直至找到权威域名服务器。
- 权威服务器返回最终的IP地址给递归解析器。
- 递归解析器将此信息返回给客户端,并可能缓存该结果以供将来使用。
迭代查询(Iterative Query)
在迭代查询中,DNS服务器不会直接给出最终答案,而是每次回应客户端时提供下一步应该查询的DNS服务器的信息。因此,客户端需要自己负责后续的查询工作,一步步接近最终答案。
过程简述如下:
- 客户端首先向本地DNS服务器(可能是递归解析器或迭代服务器)发起查询。
- 如果本地服务器没有答案,它不会继续查询,而是直接告诉客户端应该去询问的下一个DNS服务器的地址(可能是根域名服务器)。
- 客户端再向这个新的DNS服务器发送查询。
- 该服务器如果也不能直接回答,会再次返回一个提示,告诉客户端接下来应该查询哪个服务器。
- 这个过程重复,直到客户端联系到一个能提供权威答案的服务器。
总结来说,递归查询中客户端只需要提出请求,剩余工作由DNS服务器完成;而在迭代查询中,客户端需要自己根据收到的提示一步步执行查询操作,直至找到最终答案。
域名的高速缓存
域名的高速缓存是DNS(域名系统)中一个重要的性能优化机制。它的工作原理如下:
当你的设备(比如电脑或手机)需要访问一个网站时,它会向DNS服务器发起请求,要求将网站的域名(如 example.com)转换为对应的IP地址。这个过程分为以下几个步骤:
- 查询本地缓存:首先,设备会检查自己的本地缓存中是否有该域名的解析记录。如果之前不久访问过该网站,解析记录可能还存储在本地,这样就可以直接使用而无需向外查询。
- 查询递归解析器:如果本地没有缓存,请求会转到递归解析器(通常是ISP提供的DNS服务器)。递归解析器同样会先查看自己的缓存。如果有,直接返回结果;如果没有,递归解析器会继续查询过程。
- 迭代查询至权威服务器:递归解析器随后会依次查询根域名服务器、顶级域名服务器(如.com)、二级域名服务器(如.example.com),直至找到负责该域名的权威DNS服务器。权威服务器会提供域名到IP的映射记录。
- 结果返回与缓存:一旦权威服务器提供了IP地址,递归解析器会将这个结果返回给初始请求者,并且通常会把这个解析结果在递归解析器上缓存一段时间,以便后续相同的查询可以更快响应。同时,发起查询的设备也会将结果缓存起来,以减少未来相同请求的解析时间。
- 缓存过期与刷新:缓存中的记录都有一个生存时间(Time to Live, TTL),过了这个时间,缓存记录就会被视为过期并被删除。下次再有相同的查询请求时,就需要重新进行DNS解析流程。
高速缓存的存在大大减少了对DNS系统根服务器和顶级域名服务器的压力,降低了网络延迟,提升了用户的上网体验。