DNS域名解析系统(Domain Name System)
- DNS的必要性
- IP地址不好记忆主机,路由器。
- 一般倾向于一些有意义的字符串来表示Internet上的设备。
- 由DNS负责转换成二进制的网络地址。
DNS系统需要解决的问题
- 问题1:如何命名设备?
- 用有意义的字符串:好记,便于人类记忆,使用。
- 解决一个平面命名问题:层次化命名。
- 问题2:如何完成名字到IP地址的转换?
- 分布式的数据库维护和响应名字查询。
- 问题3“如何维护:增加或者删除一个域
DNS域名解析系统(Domain Name System)
- DNS的主要思路
- 分层的,基于域的命名机制
- 若干分布式的数据库完成名字到IP地址的转换
- 运行在UDP之上端口号为53的应用服务
- 核心的Internet功能,但以应用层协议实现
- DNS主要目的
- 实现主机名-IP地址的转换(name/IP translate)
- 其它目的
- 主机别名到规范名字的转换:Host aliasing
- 邮件服务器别名到邮件服务器的正规名字的转换:Mail server aliasing
- 负载均衡:Load Distribution
问题1:DNS名字空间(The DNS Name Space)
- DNS域名结构
- 一个层面命名设备会有很多重名
- DNS采用层次树状结构的命名方法
- Internet 根被划为几百个顶级域(top lever domains)
- 通用的(generic)
- .com; .edu ; .gov ; .int ; .mil ; .net ; .org
.firm ; .hsop ; .web ; .arts ; .rec ;
- .com; .edu ; .gov ; .int ; .mil ; .net ; .org
- 国家的(countries)
- .cn ; .us ; .nl ; .jp
- 通用的(generic)
- 每个(子)域下面可划分为若干子域(subdomains)
- 树叶是主机
DNS名字空间(The DNS Name Space)
- 域名(Domain Name)
- 从本域往上,直到树根
- 中间使用“.”间隔不同的级别
- 例如:ustc.edu.cn
- 域的域名:可以用于表示一个域
- 主机的域名:一个域上的一个主机
DNS名字空间(The DNS Name Space)
- 域名的管理
- 一个域管理其下的子域
- .jp 被划分为 ac.jp co.jp
.cn 被划分为 edu.cn com.cn - 创建一个新的域,必须征得它所属域的同意
- .jp 被划分为 ac.jp co.jp
- 一个域管理其下的子域
- 域与物理网络无关
- 域遵从组织界限,而不是物理网络
- 一个域的主机可以不在一个网络
- 一个网络的主机不一定在一个域
- 域的划分是逻辑的,而不是物理的
- 域遵从组织界限,而不是物理网络
问题2:解析问题-名字服务器(Name Server)
- 一个名字服务器的问题
- 可靠性问题:单点故障
- 扩展性问题:通信容量
- 维护问题:远距离的集中式数据库
- 区域(zone)
- 将DNS名字空间划分为互不相交的区域,每个区域都是
树的一部分 - 名字服务器:
- 每个区域都有一个名字服务器:维护着它所管辖区域的权威信息(authoritative record)
- 名字服务器允许被放置在区 域之外,以保障可靠性
- 将DNS名字空间划分为互不相交的区域,每个区域都是
权威DNS服务器:组织机构的DNS服务器, 提供组织机构服务器(如Web和mail)可访问的主机和IP之间的映射。
组织机构可以选择实现自己维护或由某个服务提供商来维护
TLD服务器
- 顶级域(TLD)服务器:负责顶级域名(如com, org, net,
edu和gov)和所有国家级的顶级域名(如cn, uk, fr, ca,
jp )- Network solutions 公司维护com TLD服务器
- Educause公司维护edu TLD服务器
区域名字服务器维护资源记录
- 资源记录(resource records)
- 作用:维护 域名-IP地址(其它)的映射关系
- 位置:Name Server的分布式数据库中
- RR格式: (domain_name, ttl, type,class,Value)
- Domain_name: 域名
- Ttl: time to live : 生存时间(权威,缓冲记录)
- Class 类别 :对于Internet,值为IN
- Value 值:可以是数字,域名或ASCII串
- Type 类别:资源记录的类型—见下页
DNS(Domain Name System)
- DNS大致工作过程
- 应用调用 解析器(resolver)
- 解析器作为客户向Name Server 发出查询报文(封装在UDP段中)
- Name Server返回响应报文(name/ip)
本地名字服务器(Local Name Server)
- 并不严格属于层次结构
- 每个ISP (居民区的ISP、公司、大学)都有一
个本地DNS服务器- 也称为“默认名字服务器”
- 当一个主机发起一个DNS查询时,查询被送到
其本地DNS服务器- 起着代理的作用,将查询转发到层次结构中
名字服务器(Name Server)
- 名字解析过程
- 目标名字在Local Name Server中
- 情况1:查询的名字在该区域内部
- 情况2:缓存(cashing)
当本地名字服务器不能解析名字时,联系根名字服务器顺着根-TLD一直找到权威名字服务器。
- 目标名字在Local Name Server中
递归查询
递归查询:
- 名字解析负担都放在当前联络的名字服务器上
- :根服务器的负担太重
- 解决: 迭代查询(iterated queries)
迭代查询
- 主机cis.poly.edu 想知道主机 gaia.cs.umass.edu的IP地址
- 根(及各级域名)服务器返回的不是查询结果,而是下一个NS的地址
- 最后由权威名字服务器给出解析结果
- 当前联络的服务器给出可以联系的服务器的名字
- “我不知道这个名字,但可以向这个服务器请求
DNS协议、报文
DNS协议:查询和响应报文的报文格式相同
提高性能:缓存
- 一旦名字服务器学到了一个映射,就将该映射缓存起来
- 根服务器通常都在本地服务器中缓存着
- 使得根服务器不用经常被访问
- 目的:提高效率
- 可能存在的问题:如果情况变化,缓存结果和
权威资源记录不一致 - 解决方案:TTL(默认2天)
问题3:维护问题:新增一个域
- 在上级域的名字服务器中增加两条记录,指向这个新增的子域的域名 和 域名服务器的地址
- 在新增子域 的名字服务器上运行名字服务器,负责本域
的名字解析: 名字->IP地址
例子:在com域中建立一个“Network Utopia” - 到注册登记机构注册域名networkutopia.com
- 需要向该机构提供权威DNS服务器(基本的、和辅助的)的名字
和IP地址 - 登记机构在com TLD服务器中插入两条RR记录
- 在networkutopia.com的权威服务器中确保有
- 用于Web服务器的www.networkuptopia.com的类型为A的记录
- 用于邮件服务器mail.networkutopia.com的类型为MX的记