这是我参与8月更文挑战的第13天,活动详情查看:8月更文挑战html
这世上本没有DNS,后来网站多了,也就有了DNS。windows
DNS——Domain Name System 域名系统,在网络世界充当“指针”的角色。它的功能很直接:从域名查询到IP地址。浏览器
在互联网刚出现的时候,尚未DNS一说,有专人把网址的IP地址记录到txt文本,供使用者去搜索。后来网站愈来愈多,TXT登记和查询的效率都过低了,无法维护了,才出现了DNS的雏形。缓存
DNS是经过各个散落世界各地的Name Server域名服务器按照DNS protocol进行工做的。下图是DNS的协议栈:安全
来看一个真实的DNS请求-应答消息:服务器
要说清楚DNS是如何工做的,让咱们先来解析一个网址:微信
URL:上图是咱们平时输入的网址,它其实是一个URL(Uniform Resouce Locator),统一资源定位符,是用来标识互联网上的资源位置。咱们知道网页其实就是一个HTML文件,因此打开这个网址,就是打开这个地址对应的HTML文件。markdown
data-flair.training :就是咱们向域名注册商申请的域名。它包含两个部分,TLD(顶级域名)和SLD(次级域名)。“.training"是顶级域TLD(top level domain),是咱们注册域名时选择的,常见的顶级域名还包括国家码/com/net/org等;"data-flair",又称为次级域名(second-level domain,SLD),是咱们私有的,从属于选择的顶级域(TLD);网络
www: 这是咱们的subdomain(子域名),子域名对应具体的host, 这个子域名不须要向域名注册商申请,能够由咱们自行指定。dom
域名的等级:从顶级域到子域,咱们能看出域名是有层级的。即主机名(host).次级域名(SLD,也就是咱们所说的域名).顶级域名(TLD).根域名(root) # 即host.sld.tld.root以下图所示:
根域名: 其实咱们的网址最后都有一个句号".",这就是根域名,由于根域名对全部域名都同样,因此都被省略了。根域名有专门的根DNS服务器进行管理,这个咱们后面在讲anycast时会专门介绍。
DNS的等级:既然域名有等级,那么登记和管理域名的DNS也有了相应的等级
DNS的分级机制是为了应对愈来愈多的域名与查询请求,那么咱们在查询一个域名时,为了加快查询效率并下降DNS服务器压力,也须要遵循两个原则:
基于此,DNS通常支持两种查询方式:递归查询recursive与迭代查询iterative;
二者的区别在于执行查询的主体:若是是由本地Name Server执行查询并返回给客户端,则为递归查询;若是是由客户端直接向不一样级别的Name Server执行查询,则为迭代查询;
通常来讲,都采用递归查询方式,由于两个缘由:
咱们分步讲解一下:
若是本地缓存没有结果,则客户端会按照“就近原则”,向ISP指定的本地Name server,也就是咱们上一节说的LDNS发起查询,若是LDNS有结果则返回,查询结束;若是没有结果,则LDNS会按照“分级查询”原则,向根域名服务器发起查询
根域名会返回TLD域名的记录和IP,而后LDNS会向TLD服务器发起查询,依次类推,最终得到目标host的IP地址,并返回给客户端,同时讲结果保存在LDNS本地,保存时间为TTL(timee to live)
以上就是DNS协议的关键内容和工做原理,咱们下一篇来详细看一下DNS的查询过程。
感谢阅读,若有不许确和错误之处请留言指正,我会当即修正,感谢!
总结不易,请勿私自转载,不然别怪老大爷不客气
欢迎喜欢技术的小伙伴和我交流,微信1296386616
参考资料:
《How to Choose a Perfect Domain Name – SEO Best Practices》 Data Flair data-flair.training/blogs/seo-d…
《云解析 DNS》 阿里云 help.aliyun.com/document_de…
《DNS解析的工做原理及递归与迭代的区别》 WytheOnly blog.csdn.net/wytheonly/a…
《DNS 安全问题研究》 郭巨侠 zhuanlan.zhihu.com/p/345791057