Loading... # 应用层(四) ## DNS(domain name system) ### 提供的服务 识别主机的方式:1)主机名;2)IP地址 人喜欢用主机名,路由器喜欢定长、有层次地IP地址,因此需要一种能map主机名和IP地服务,即**域名系统**(DNS) * 一个由分层的DNS服务器实现的分布式数据库 * 一个使得主机能够查询分布式数据库地应用层协议 * DNS服务器运行在UDP之上,使用53端口 DNS通常是由其他应用层协议所使用,包括HTTP、SMTP、FTP,将用户提供的主机名解析为IP地址 提供的其他服务: * 主机别名(host aliasing):更加容易记忆 * 邮件服务器别名 * 负载分配:冗余的web服务器,很多IP地址响应同一个名字 ### 工作机理 集中式DNS(Internet上只使用一台DNS服务器)不好:**完全无扩展性!** * 单点故障:一坏就完 * 流量规模大 * 远距离的:远的时延长 * 维护成本高:保留所有主机记录,中央数据库庞大,得持续更新 基于上述原因,采取**分布式层次数据库** #### 分布式层次数据库 ![image-20220326211235004.png](http://xherlock.top/usr/uploads/2022/03/36367050.png) 假设我们访问www.xherlock.top 1. 客户首先与根DNS服务器联系,返回顶级域名top的TLD服务器的IP地址 2. 客户再与.top的DNS服务器之一联系,返回xherlock.top的权威服务器的IP地址 3. 客户与xherlock.top的DNS服务器联系,返回主机名为www.xherlock.top的IP地址 --- * 根DNS服务器:全球13个,9个在美国,日本、英国、瑞典各一台 * 顶级域DNS服务器:com、org、net、edu、gov和其他国家级域名都有TLD服务器 * 权威DNS服务器:"这个域名我说的算" 本地DNS服务器:不属于层次结构,但对层次结构十分重要 每个ISP都有一台本地DNS服务器(也称默认名称服务器),当主机发起DNS请求,请求被送到本地DNS服务器上,此时本地上有最近的 名称-地址 翻译对(可能过期),可以充当代理,将请求发送往层次结构中 此处使用www.xherlock.top访问www.enlightener666.cn ![image-20220327093624368.png](http://xherlock.top/usr/uploads/2022/03/2340385044.png) 递归查询(1、8)、迭代查询(其他三个查询) 全部采用递归查询会导致很大解析负担 #### DNS缓存 为了改善时延性能并减少在internet行导出传输的DNS报文数量,DNS广泛使用了缓存技术 在一个请求链中,当某DNS服务器接收一个DNS回答时,能将映射缓存在本地存储器上,这样另一个对相同主机名的查询到达本地DNS服务器后可以直接获得所需IP地址,即使它不是该主机的权威服务器(但是映射不是持久的,经过一段时间【TTL】,缓存信息会丢失) 也正因这个原因,根服务器不经常被访问 #### DNS记录 所有DNS服务器存储了`资源记录`(Resource Record,RR),提供了主机名到IP地址的映射 RR format: (Name, Value, Type, TTL) 四元组 TTL是该记录的生存时间,决定了资源记录应当从缓存中删除的时间,Name、Value的值取决于Type * Type=A:Name是主机名,Value是IP地址,此记录提供了标准的主机名到IP映射 eg:*(www.bar.foo.com, 145.37.93.126, A)* * Type=NS:Name是域,Value是能够获得该域主机IP的权威服务器的主机名 eg:*(foo.com, dns.foo.com, NS)* * Type=CNAME:Name是别名,Value是别名为Name的主机对应的规范(canonical)主机名 eg:*(foo.com, relay1.bar.foo.com, CNAME)* * Type=MX:Name是别名,Value是别名为Name的邮件服务器的规范主机名 eg:*(foo.com, mail.bar.foo.com, MX)* #### DNS报文 查询和回答报文格式一样 ![image-20220327103941531.png](http://xherlock.top/usr/uploads/2022/03/2350418136.png) * 首部区域:前12字节 * 标识符:16bits,标识该查询,会被复制到对查询的回答报文中,以便匹配 * 标志flags:1bit的0(查询)/1(回答) 可以使用nslookup工具发送DNS查询报文 最后修改:2022 年 03 月 27 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏