简述
- 解决了互联网主机/路由器的识别问题
- 每一台主机有一个唯一的地址,IP地址,本身是数字,不利用记忆,一般我们在上网的时候通过域名来访问,更好识别
- 有两套:1.IP地址 2. 域名
- 解决域名和IP地址映射
- DNS就是这个作用,一对一的翻译
- DNS是一个应用层协议,完成名字的解析
- DNS是多层命名服务器构成的分布式数据库
DNS的服务
-
域名向IP地址的翻译
-
主机别名(不好记的变得好记)
-
邮件服务器别名
-
负载均衡:web服务器
- 域名向IP地址的映射时,可以提供多个服务器的地址
- 没有新服务时,调整位置,轮流调整
为什么不使用集合中的DNS呢?
- 单点失败问题
- 如果唯一的坏了,那整个互联网都坏掉了
- 流量问题
- 十几亿都到这一个地方请求,流量巨大,成本巨大
- 距离问题
- rtt 时间,如果放在中国,美国就慢了,放美国就中国慢了
- 维护性问题
分层式层次式数据库
-
分布在全世界
-
层次式
- 第一层根服务器root DNS servers
- 第二层顶级域服务器
- 第三层权威域名服务器
客户端想要查询www.amazon.com 的IP地址
- 先查询根服务器,找到com域名解析服务器
- 再查找com域名解析服务器,找到amazon.com的域名解析服务器
- 再查询amazon.com域名解析器,获得了www.amazon.com的IP地址
DNS 根域名服务器
- 本地域名解析服务器无法解析域名时,访问根域名服务器
- 根域名服务器
- 如果不知道映射,访问权威域名服务器
- 获得映射
- 再向本地域名服务器返回映射
- 全球共有13个根域名服务器
顶级域名服务器
- 负责com,org,net,edu等以及国家顶级域名 cn,uk,fr等
权威域名服务器
- 组织域名解析服务器,提供组织内部服务器的解析服务
本地域名解析服务器
- 不严格属于层级体系
- 每一个ISP有一个本地域名服务器
- 默认域名解析服务器
- 当主机进行DNS查询时,查询被发送到本地的域名服务器
- 作为代理(Proxy),将查询转发给(层级式)域名解析服务器系统
DNS查询示例
1. 迭代查询
-
被查询服务器返回域名解析服务器的名字
-
“我不认识整个域名,但是你可以问这服务器”
- 发给本地域名服务器
- 本地域名服务器问根域名服务器
- 根域名服务器返回顶级域名服务器地址
- 问顶级域名服务器 umass.edu的域名解析服务器相关的的权威服务器地址
- 返回umass.edu的权威服务器地址
- 问权威服务器他的具体的地址
- 返回IP地址
2.递归查询
- 将域名解析的任务交给所联系的服务器
如果本地域名服务器无缓存,采用递归方法解析另一台主机时,用户主机和本地域名服务器发送的域名请求消息次数都为1次
DNS记录缓存和更新
- 只要域名解析服务器获取域名---IP映射,即缓存这一映射
- 一段时间过后,缓存条目会失效
- 本地域名服务器一般会缓存顶级域名服务器的映射
- 因此根域名服务器不经常被访问