做毕设是网络方面的,当初计算机网络学习的时候,老师只讲解了网络的5层以及相关协议,对于DNS没有过多讲解,找了很多资料,都没有系统全面地介绍DNS相关知识。这里参考了中国大学mooc中哈工大的计算机网络之网尽其用国家精品课,做一个简单的总结。
- DNS是互联网中的一个核心服务,在应用层实现,最根本的作用就是互联网上的IP地址和主机的映射。在互联网中,每台主机都有一个IP地址,主机间的通信是通过IP地址来寻找对应的主机。但是IP地址不论是IPv4还是IPv6,都是一串数字,不便于人们记忆,因此引入了域名解析系统,可以将域名翻译成IP地址。如访问百度时,在浏览器中不用输入百度服务器的IP地址,输入www.baidu.com就可以访问到百度。
- 互联网中的主机有几十亿台,这个域名解析系统部署如果在一台主机上,该主机应该没有那么大的容量,并且并发性也不满足要求,如果该主机出现问题,那么整个互联网就会崩溃。因此,采用了分布式,是多层域名服务器构成的分布式数据库
- 大致结构如图所示。第一层是根域名服务器,全世界共有13台(不包括镜像,这是IPv4的,中国没有。2016年“雪人计划”实施,目前新加了25台IPv6根域名服务器,中国有1台主根+3台辅根);第二层是顶级域名服务器,如com, org, cn, uk等,分为两类,一类是国家的,一类是国际的;第三层就是某些实际组织的服务器,如亚马逊、腾讯等。此服务器里面对该组织内对外提供服务的主机进行解析,即组织内主机域名的权威域名服务器,为什么是权威呢?其实服务器都有缓存,当个人PC访问某主机时,先本地查找host文件,如没有映射,则访问本地DNS,本地DNS会先检查自己的缓存,如有,则返回,如没有则请求根域名服务器。这里的缓存就不是权威的,就好比学生信息,可以在自己学校查到自己的档案,也可以在学信网上查到档案,但是如果修改自己的档案,肯定是通过学校发布,然后学信网才会更新,学校就相当于自己的权威,而学习网不是。
- 还有一类服务器是本地域名服务器,这类服务器是互联网服务提供商ISP提供的服务器,此服务器是用于向客户提供Internet服务的,客户端的查询都会转发到此服务器,相当于电脑设置里面的代理服务器、首选服务器。
简单说一下域名解析过程。如客户端想要查询www.baidu.com的IP,首先搜索本主机的host文件,查看有没有映射,如有则直接访问,如没有,则向本地域名服务器发送请求:我想知道www.baidu.com的IP。本地域名服务器收到后,先检查自己的缓存,如有则回复,如没有,则向根域名服务器发送请求:我想知道www.baidu.com的IP。根域名服务器收到后,查找后回复:我不知道,但是我知道com的域名解析服务器的IP,你去找它吧。本地域名服务器向com域名解析服务器发送请求:我想知道www.baidu.com的IP,com域名解析服务器查找后回复:我不知道,但是我知道baidu.com的域名解析服务器,你去找他吧。本地域名服务器向baidu.com域名解析服务器发送请求:我想知道www.baidu.com的IP,baidu.com域名解析服务器查找后回复:它的IP地址是x.x.x.x。本地域名服务器将消息返回给客户端。这就是迭代查询,还有递归查询。
下面是一个小栗子