DNS是计算机网络中的协议,该协议用于域名分析中:域名地址被解释到相应的IP地址中。
那么他如何分析域名?让我们一起看一下?
检查本文以了解知识:
在开始之前,首先介绍如何形成域名
认为域名的读取顺序是从右到左,右是顶部域名,和谐为标签,并且标签也被调用。
顶级域名4
顶部域名可以说出域名提供的服务类型。最常见的顶部 - 级域名(.com,.org,.net)不需要Web服务器来满足严格的标准,但是有些顶部 -域名实施更严格的策略。
顶级域名可以同时包括拉丁字母或特殊字符。顶部域名可以达到63个字符,但是为了方便使用,大多数顶级域名是2到三个字符。
标签4
标签紧随其后。标签由1至63个面向不敏感的字符组成。这些字符包括字母A-Z,数字0-9,甚至包括“ - ”符号(当然,” - “不应在标签的开头或标签的末端出现)。
了解域名的组成之后,让我们看一下DNS协议。DNS是一个基于协议。通过方式进行通信:换句话说,域名分析需要向服务器发送请求,而服务器side查询映射表或数据库将相应的IP地址返回到客户端(AS AS AS AS如图所示)。
DNS服务是检索域名。
为什么我需要使用层次结构?假设我们只有它,然后所有的全局DNS解析都会涌入服务器,并且服务器上的压力将非常高。
DNS层次结构如图所示
域名服务器分为4种类型:
域名分析过程:
在DNS请求之前,区域名称服务器将检查指定的域名缓存是否缓存。如果未过期,它将立即返回。
如果不是,则定义用户查询域名服务器。如下所示
上面,我们还说DNS服务器是层次结构,并且在不同的位置分布了多个域名服务器,但是每个请求只能请求一台服务器。如果请求域名服务器未记录与域名相对应的IP,他应该如何查询下一个域名服务器?
DNS查询提供了两种方法:和
顾名思义,递归查询将在域名服务器查询记录时,将继续查询域名服务器中指定的下一个级别域名服务器,直到根域名服务器为止。
当不查询时,IEVANTAGE查询和迭代查询将返回下一个可查询域名服务器地址到本地名称服务器。
接下来,查看DNS请求发送的数据是什么样的。首先,我们创建一个监视本地端口的UDP服务。然后将DNS服务器设置为网络中机器的域名。
首先分析DNS请求消息。为了促进观看,我们编写DNS服务以捕获DNS请求
server.on('error',(err)=> {console.log('服务器错误:',err.message); server.close();});});});});});});});});
server.on('message',(msg,rinfo)=> {try {const dnsjson = json.parse(json.stringify(msg)); const dnsdata = array.from(dnsjson.data); console.log(dnsdata))} cach {}});
server.on('lateel',()=> {const address = server.address(); console.log();});
server.bind(53);
让我们再次以这个域名
同样,我们将他转移到二进制数据
可以看出,第三个数字和四个数字(徽标位置)成为,相应的二进制位置为
如上所述,第一个二进制位置是:QR查询(查询)/响应徽标,1是一个响应,因此您可以知道他是响应消息。其余的上半年与请求消息一致。较晚的是响应数据,也就是说
从一开始,这意味着可以解析域名的更改
此时,已经引入了DNS请求数据包和响应论文。
最后,让我们做一个属于自己的DNS服务器?
运行服务后,让我们看一下自定义域名,以查看是否对相应的IP进行任何分析
本文主要介绍:
原始:https://juejin.cn/post/7101952255955304484