DNS(Domain Name System)解析
什么是DNS解析,为什么要用它,下面我来简单介绍一下。
通常用户使用网络服务的时候都是通过域名来进行对特定网站的访问,比如上面的https://www.baidu.com/,但是实际上机器访问实际的网站时,使用的是另外一种方式,即IP地址,它就像网站的身份证号一样来唯一的表示某个特定的网站。IP地址的长度是固定的32位,而域名的长度并不是固定的,机器处理起来比较困难。所以就需要将域名解析为IP地址。
- DNS解决了Internet上主机/路由器的识别问题
- 域名解析系统
1.多层命名服务器构成的分布式数据库
集中式的DNS存在的问题:单点失败问题,流量问题,距离问题,维护性问题。2.使用应用层协议实现,完成的功能为名字的解析
当某个应用程序需要把主机名解析为IP地址时,该应用程序就会调用解析程序,并成为DNS的一个客户,当把待解析的域名放在DNS请求报文中,以UDP用户数据报方式发给本地域名服务器(UDP开销小,速度快),本地域名服务器在查找到域名后,将对应的IP地址放在回答报文中返回,应用程序获得目的主机的IP地址后就可以进行通信了。
域名服务器
DNS服务器分为以下几个类型
根域名服务器,*域名服务器,权威域名服务器,本地域名服务器
根域名服务器
最高层次的域名服务器,也是最重要的域名服务器,所有的根域名服务器都知道所有的*域名服务器的域名和IP地址,全球一共13个,大多分布在欧美,主根服务器在美国,中国没有自己的根服务器。
当本地域名解析服务器无法解析域名时,会访问根域名服务器。
*域名服务器
负责com,org,net,edu等*域名和国家域名,例如cn
权威域名服务器
组织的域名解析服务器,提供组织内部服务器的解析服务,由组织和服务提供商来维护
本地域名服务器
每个ISP(Internet Service Provider)都有一个本地域名服务器
当主机进行DNS查询时,查询被发送到本地域名服务器,作为代理(proxy)它会将查询转发给层级式域名解析服务器系统
本地域名服务器向根域名服务器的查询一般都是采用迭代查询。所谓迭代查询就是当根域名服务器收到本地域名服务器发出的查询请求报文后,告诉本地域名服务器下一步应该查询哪一个域名服务器,然后本地服务器自己进行后续的查询。(而不是替代本地服务器进行后续查询)。
各域名服务器关系图如下:
从上到下依次为根域名服务器,*域名服务器和权威域名服务器
工作原理及其过程
假设现在Cis.poly.edu的主机想获得gaia.cs.umass.edu的IP地址
图解:
1.请求主机会向本地域名服务器dns.ply.edu进行递归查询
2.如果本地域名服务器无法解析域名,那么本地域名解析器会进行迭代查询,首先会向根域名服务器查询
3.根域名服务器告诉本地服务器,下一次应该查询的*域名服务器的IP地址
4.本地域名服务器向*域名服务器的IP地址进行查询
5.*域名服务器告诉本地域名服务器,下次应该查询的权威域名服务器dns.cs.umass.edu的IP地址
6.本地域名向权威域名服务器dns.cs.unmass.edu进行查询
7.权威域名服务器dns.cs.unmass.edu告诉本地域名服务器查询的主机gaia.cs.umass.edu的IP地址
8.本地域名服务器将最后的查询结果高速主机Cis.poly.edu
以上八个步骤总共要使用八个UDP用户数据报的报文。本地域名服务器经过三次迭代查询后,从权威域名服务器dns.cs.unmass.edu得到了主机gaia.cs.umass.edu的IP地址,最后把结果返回给发起查询的主机Cis.poly.edu。
为了提高DNS查询效率,并减轻根域名服务器的负荷和减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用高速缓存,用来存放最近查询过的域名以及从何处获得域名映射信息的记录。
tips:
迭代查询:被查询服务器返回域名解析服务器的名字
递归查询:将域名解析的任务交给所联系的服务器