dns协议

dns协议简单理解


为什么要用dns协议
根据tcp/ip协议,两台主机要想通信必须要用到ip地址,但是由于ip地址是xxx.xxx.xxx.xxx数字类型的。记忆起来比较困难,所以如果我们在跟对方通信时,只要记住对方的名字,然后通过一种协议能把该名字解析成对方的ip地址就方便很多了。这种协议就是dns协议。有了dns协议,我们通信就能通过对方的域名就可以通信了,就不用通过比较难记的ip地址。当然通信仍然还是可以通过ip的,就是不使用dns协议

dns协议是什么

dns协议说白了就是将通信过程的域名转换为ip,也可以将ip转换为域名地址。整个协议构成一种层级结构,最高层为根。根下有很多二级域,然后依次类推。就像一个国家一样,根就像是国家的最高政府,然后依次层级下去。比如下图,在com.中有baidu,可能还有腾讯等待。百度下面可能还有很多主机,比如图中的A主机,百度下面还可以有域的

这里写图片描述

dns的解析过程
解析分为两种,一种是递归解析,比如说互联网上有一台主机x,x主机想访问百度公司下面的A主机,首先x主机先找本机的hosts文件(windows系统一般是在%WINDOWS%/system32/etc/hosts,linux一般是/etc/hosts),如果文件中没有与A匹配的条目,就会查找本机的dns缓存(每一台主机都有dns缓存的) ,如果本机的dns缓存没有A的条目,那么A就会去找它电脑上配置的dns服务器(一般联网时都会配置的),该dns服务器首先查看它自己的本地缓存,如果有就直接返回给主机x,如果没有的话,而该服务器允许x主机向它递归查询的话,那么该服务器就会去找根服务器(就是dns的根,全球有13个根服务器),根服务器是不允许别的主机向它递归查询的,但它知道com这个域的域名服务器在哪里,所以根服务器看到A主机是com这个二级域的,就返回com域的域名服务器的地址给该服务器,该服务器拿到com域的域名服务器,继续去找com这个域的域名服务器(每个域都有域名服务器,就像每个地方要有一个首领一样),com的域名服务器也不支持其他主机向它递归查询,但它知道baidu这个域的域名服务器在哪里,所以它就返回baidu这个域的域名服务器的地址给该服务器,该服务器继续找baidu这个域的域名服务器,baidu这个域的域名服务器查询解析库发现该域名正是该域中的一台主机,然后就把A主机的地址返回给该服务器,该服务器收到A主机的地址后就返回给x主机,x主机接受到A主机的地址后,拿着该ip地址就可以封装报文跟A主机进行通信了。当然这中间还有缓存等细节。所以递归查询就是把任务交给你之后,不管你用什么办法,给我返回我想要的ip地址就可以了。而另一种查询:迭代查询则相反,我只告诉你我知道的,然后你去找那个具体的负责人。
解析过程

dns的报文传输协议:
dns可以工作在tcp和udp协议。不过一般是udp协议。因为dns协议的查找过程要经历很多步骤,接触很多主机,如果用tcp协议的话,每次都要三次握手,四次断开,相当消耗时间。

dns协议的实现
著名的有开源的bind

dns还有一个很重要的应用就是智能dns解析
在bind中可以配置view掩盖具体的区域,可以根据用户请求的ip的位置,以及isp运行商(电信,联通,移动)从而映射离用户最近的服务器的ip地址,由此来实现cdn功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值