DNS原理
什么是DNS
DNS是一个在DNS服务器层次上实现的分布式数据库,是一个应用层协议,允许主机去查询这个分布式数据库.DNS服务器通常是一个运行Berkley互联网域名(BIND)软件的UNIX机器.DNS运行在UDP之上,并使用53号端口.
DNS的作用
- 完成主机名到IP地址的转换
- 实现主机别名.主机名可以有多个,其中一个叫做权威主机名,其余的叫做主机别名,可以通过主机别名或者IP地址获取权威主机名
- IP负载均衡.一个主机名可以关联多个IP地址,客户端根据主机名从DNS服务器中获取到IP地址列表,DNS通常会以列表的第一个IP地址作为最终结果.为了让第一个IP地址更加具有分布性,DNS服务器会对列表进行打乱后返回.
DNS服务器种类
- 根DNS服务器.通过传递顶级域名(如com,org)请求根DNS服务器,可以找到处理对应主机名的顶级域名DNS服务器
- 顶级域名DNS服务器.通过传递权威域名(如facebook.com),可以找到处理对应主机名的权威DNS服务器
- 权威DNS服务器.在互联网上可以直接访问的服务器必须要有域名到地址的映射,权威DNS服务器用于保存这些映射.
- 本地DNS服务器.靠近用户的DNS服务器,本质上不属于DNS服务器层次.DNS解析请求通常先发送给本地DNS服务器,再由本地服务器转发到DNS服务器层次结构上,本地DNS服务器在这里充当代理.
DNS解析流程(典型方式)
- 客户端请求本地DNS服务器获得www.baidu.com对应的IP地址
- 本地DNS服务器请求根DNS服务器获取处理com的顶级域名DNS服务器的IP地址
- 本地DNS服务器获得根DNS服务器返回的顶级域名DNS服务器的IP地址
- 本地DNS服务器请求顶级域名DNS服务器获取处理baidu.com的权威DNS服务器的IP地址
- 本地DNS服务器获得顶级域名DNS服务器返回的权威DNS服务器的IP地址
- 本地DNS服务器请求权威服务器获取处理www.baidu.com对应的IP地址
- 本地DNS服务器获得权威服务器返回的IP地址
- 本地DNS服务器向客户端响应最终获得的IP地址
DNS缓存的作用
DNS缓存通常存放于本地DNS服务器中,当本地DNS服务器获取到某个主机名到IP的映射关系后,可以选择将其缓存起来,并设置一个过期时间(比如两天),这样当有另外的客户端请求相同主机名的IP地址时,就不用走完整的DNS解析流程,这样可以提高性能,减少延迟.
参考资料
计算机网络自定向下方法2.4.1 Services Provided by DNS 2.4.2 Overview of How DNS Works
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!