域名系统(英文:Domain Name System,简称DNS),是互联网中用于将域名解析为IP地址的分布式数据库系统,使得用户可以通过域名访问互联网上的各种资源。[2][4]域名系统命名方式采用一种树状层次型命名机制,由多个域名服务器组成,每个服务器存储域名和对应的IP地址。用户输入一个域名时,域名系统依次向下查询,直到找到对应的IP地址。[3][5][6]
域名系统是在阿帕网的基础上诞生的,意在解决使用统一主机表系统所带来的问题,保罗·莫卡佩特里斯(Paul Mockapetris)承担了设计域名系统结构的任务。[3]1984年,加州大学伯克利分校的四名学生提出了第一个Unix名称服务器实现,被称为BIND。[7]同年,保罗·莫卡佩特里斯(Paul Mockapetris)设计了域名系统的结构,[3]并发布了RFC 882和RFC 883,定义了域名系统。[3]1996年,马丁·杜斯特(Martin Dürst)提出国家化域名(IDN)的概念。[8] 域名系统提供将用户连接到远程主机所需的信息,是Web浏览和其他大多数Internet活动的依赖,在商业和企业,以及政府、大学和其他组织中都被广泛应用。[9]DNS技术和产品形态不断丰富使得其安全性出现了挑战[10],对此,研究人员提出了许多改进方案,如引入AnyCast技术进行负载均衡、利用区块链技术提高安全性、推出了域名系统安全扩展DNSSEC等。[11][12][13] 基本概念
域名系统DNS(Domain Name System)是Internet用于名字登记和解析的标准,[14]用于实现域名到主机IP地址的定位。[2]DNS实际上是一个分布式的数据库,所有主机名、域名和对应的IP地址分布于称为“名字服务器”的服务器上,名字服务器可以让客户去调用称为解析器的库来访问。DNS分布式数据库中的每一个数据单元都是按名字进行索引的,这些名字一起构成了一棵反向生长的“树”,称为域名空间。树的顶端有唯一的根,称为“根域”或“根”,根的名字用空字符串来表示,在文本中用“.”表示,树的每一节点都表示域名系统的一个域,每个域可再进一步地划分子域,每个节点中间用“.”隔开,完整的域名是从该节点到根之间路径上的所有节点名的组合。[4]