DNS是什么,有什么用(详细介绍版)
DNS是什么,有什么用(详细介绍版)
DNS(域名系统)是互联网基础设施的核心组件之一,它负责将人类易读的域名(如www.baidu.com)转换为计算机可识别的IP地址(如220.181.111.188)。本文将详细介绍DNS的工作原理、其分布式设计的优势,以及DNS解析的具体过程。
DNS是什么
DNS(Domain Name System)是一种用于将域名(例如www.baidu.com)转换为IP地址(例如 220.181.111.188)的分布式系统。在互联网上,计算机和其他网络设备使用IP地址来相互识别和通信。然而,IP地址是一串数字,不太方便人们使用和记忆,所以就使用了域名来代替复杂的IP地址。
对于DNS服务器若采用集中式的设计有以下问题:
1、单点故障
如果 DNS 服务器崩溃,那么整个网络随之瘫痪。通信容量(traffic volume),单个 DNS 服务器不得不处理所有的 DNS 查询,这种查询级别可能是上百万上千万级,一台服务器很难满足;
2、远距离集中式数据库
单个 DNS 服务器不可能邻近所有的用户,假设在美国的 DNS 服务器不可能临近让澳大利亚的查询使用,其中查询请求势必会经过低速和拥堵的链路,造成严重的时延;
3、维护
维护成本巨大,而且还需要频繁更新
域名的层级关系
DNS 中的域名都是用句点来分隔的,比如 www.server.com,这里的句点代表了不同层次之间的界限。在域名中,越靠右的位置表示其层级越高。
DNS解析过程
- 先查询浏览器缓存是否有该域名对应的IP地址。
- 如果浏览器缓存中没有,会去计算机本地的Host文件中查询是否有对应的缓存。
- 如果Host文件中也没有则会向本地的DNS服务器(通常由你的互联网服务提供商(ISP)提供,如中国移动)发送一个DNS查询请求。
- 如果本地DNS解析器有该域名的ip地址,就会直接返回,如果没有缓存该域名的解析记录,它会向根DNS服务器发出查询请求。根DNS服务器并不负责解析域名,但它能告诉本地DNS解析器应该向哪个顶级域(.com/.net/.org)的DNS服务器继续查询。
- 本地DNS解析器接着向指定的顶级域名DNS服务器发出查询请求。顶级域DNS服务器也不负责具体的域名解析,但它能告诉本地DNS解析器应该前往哪个权威DNS服务器查询下一步的信息。
- 本地DNS解析器最后向权威DNS服务器发送查询请求。权威DNS服务器是负责存储特定域名和IP地址映射的服务器。当权威DNS服务器收到查询请求时,它会查找"example.com"域名对应的IP地址,并将结果返回给本地DNS解析器。
- 本地DNS解析器将收到的IP地址返回给浏览器,并且还会将域名解析结果缓存在本地,以便下次访问时更快地响应。
- 浏览器发起连接:本地DNS解析器已经将IP地址返回给您的计算机,您的浏览器可以使用该IP地址与目标服务器建立连接,开始获取网页内容。
递归查询和迭代查询
递归查询和迭代查询是在DNS解析过程中用于获取域名解析信息的两种不同方法。
1. 递归查询
在递归查询中,DNS客户端(通常是本地DNS解析器)向上层DNS服务器(如根域名服务器、顶级域名服务器)发起查询请求,并要求这些服务器直接提供完整的解析结果。递归查询的特点是,DNS客户端只需要发送一个查询请求,然后等待完整的解析结果。上层DNS服务器会自行查询下一级的服务器,并将最终结果返回给DNS客户端。
2. 迭代查询
在迭代查询中,DNS客户端向上层DNS服务器发起查询请求,但不要求直接提供完整的解析结果。相反,DNS客户端只是询问上层服务器一个更高级的域名服务器的地址,然后再自行向那个更高级的服务器发起查询请求,以此类推,直到获取完整的解析结果为止。递归查询适合普通用户和客户端,而迭代查询适用于DNS服务器之间的通信。
此图属于迭代查询。