1、DNS(Domain Name System)
1.1、为什么有DNS?
IP地址标识主机/路由器,但IP不好记忆不便于使用,所以使用有意义的“字符串”来标记IP地址,DNS负责将域名解析为IP;
IP 地址的长度为 32 比特,也就是 4 字节,IPv6 是 128 比特 16 字节,但是域名很短,比如ww.baidu.com也要十几个字节。也就是说,直接使用域名的话需要处理的字符大大增加了,这无疑增加了交换节点路由器的负担。
1.2、DNS实现的思路
DNS基本的功能就是,存域名和IP的映射关系,然后对着表查找,返回IP;
如此庞大的数据量,采用什么方式表示域名(分层)、如何存储(分布式)、如何查询咩(UDP方式)?
- 为防止重名,要是分层的、基于域的命名机制;
- 由分布式数据库完成域名到IP的转换;
- 运行在UDP之上,端口号为53的应用服务;
1.3、DNS主要目的
- 主机名到IP地址的转换;
- 主机别名( Host aliasing)到规范名的转换;? ?邮件服务器别名(Mail server aliasing)到邮件服务器正规名的转换;
一台名为?http://relay.west-coas.enterpnse.com?的主机,可能还有两个别名?http://enterpise.com?和?http://www.enterpnse.com。http://relay.west-coas.enterpnse.com?是规范名字,其他两个是主机别名。
可以看出,规范名字是为了便于管理,别名是为了便于用户的访问。
- 负载均衡(load distribution) :将一个主机名对应多个服务器的IP,减轻服务器压力,提高响应;
2、域名的分层命名
3、划分区域管理
3.1、只有一个名字服务器的问题
- 可靠性:单点故障
- 扩展性:通信容量
- 维护问题:远距离的集中式数据库
3.2、区域(Zone)
将DNS名字空间划分为互不相交的区域,每个区域都是树的一部分;
3.3、名字服务器
每个区域都有一个名字服务器,维护着所在区域的权威信息(authoritative record);
分类 | 作用 |
---|
根域名服务器 | 最高层次的域名服务器,本地域名服务器解析不了的域名就会向其求助 | 顶级域名服务器 | 负责管理在该顶级域名服务器下注册的二级域名 | 权威域名服务器 | 负责一个区域的域名解析工作 | 本地域名服务器 | 当一个主机发出DNS查询请求时,这个查询请求首先发给本地域名服务器 |
4、区域名字服务器 维护的资源记录(resource records)
4.1、位置
名字服务器的分布式数据库中
4.2、格式(domain_name,ttl,type,class,value)
名称 | 解释 | 说明 | domain_name | 域名 | | ttl(time to live) | 生存时间:分为权威和缓冲记录 | 权威记录:一直要保存的域名和IP关系; 缓冲记录:使用中缓存的域名和IP关系,比如说2天之后就可以删掉 | class | 类别:对于Internet,为IN | | value | 数字、域名、ASCII字符串; | | type | 资源记录的类型 | Type=A,存放主机和IP地址; Type=CNAME,存放别名和规范名; Type=MX,存放邮箱别名和规范名; Type=NS,管理子域; |
type的值 | 对应的name和value | A | name为主机;value为IP地址 | CNAME | name为别名;value为规范名 | MX | name为邮件服务器的别名;value为邮件服务器的规范名 | NS | name为域名(如:foo.com);value为该域名的权威服务器的域名 |
更多type值的对应关系见参考资料链接2;
5、DNS查询方式
5.1、递归查询
本地域名服务器查不到IP的情况下,问根域名服务器,根域名服务器不知道去问顶级域名服务器,层层向下.....,然后查到了之后再层层返回;
5.2、迭代查询
本地域名服务器查不到IP的情况下,问根域名服务器,根域名服务器不知道,但是让本地域名服务器去问顶级域名服务器,层层向下.....
6、DNS报文
DNS 分为查询请求和查询响应,请求和响应的报文结构基本相同。
- 事务 ID:对于请求报文和其对应的应答报文,该字段的值是相同的。
??????????????????????通过它可以区分 DNS 应答报文是对哪个请求进行响应的。
- 标志 Flags:一些标志,比如:用于标识请求还是响应报文、是用递归查询还是迭代查询、响应报文的数据有没有被截断等;
参考资料:
你应该知道的 DNS —— 计算机网络自顶向下 - 知乎 (zhihu.com)
DNS 协议是什么?_妙趣前端的博客-CSDN博客_dns协议
(1条消息) DNS报文格式解析(非常详细)_跑步_跑步的博客-CSDN博客_dns报文格式
|