当前位置: 首页 > 后端技术 > Node.js

节点基础:域名解析DNS(ok)

时间:2023-04-03 23:26:25 Node.js

本文节选自《Nodejs学习笔记》,更多章节和更新请访问github主页地址。之前写的Nodejs学习手册,基本总结的DNS模块。对于从事web开发的同学来说,DNS解析是再熟悉不过的了。nodejs中还有一个模块可以完成DNS解析的工作,而且非常好用。直奔主题。域名解析:dns.lookup()比如我们要查询域名www.qq.com对应的ip,可以使用dns.lookup()。vardns=require('dns');dns.lookup('www.qq.com',function(err,address,family){if(err)throwerr;console.log('例子A:'+address);});输出结果如下:例子A:182.254.34.74我们知道同一个域名可能对应多个不同的ip。那么,如何获取一个域名对应的多个IP呢?没关系。vardns=require('dns');varoptions={all:true};dns.lookup('www.qq.com',options,function(err,address,family){if(err)throwerr;console.log('示例B:'+地址);});输出结果如下:示例B:[{"address":"182.254.34.74","family":4},{"address":"240e:e1:8100:28::2:16","family":6}]域名解析:dns.resolve4()上面的例子也可以通过dns.resolve4()来实现。vardns=require('dns');dns.resolve4('id.qq.com',function(err,address){if(err)throwerr;console.log(JSON.stringify(address));});输出结果如下:["61.151.186.39","101.227.139.179"]如果想获取IPv6地址,界面类似,不再赘述。dns.lookup()和dns.resolve4()的区别从上面的例子来看,这两种方法都可以查询到域名的ip列表。那么,它们之间有什么区别呢?最大的区别可能是配置本地Host时是否会影响查询结果。dns.lookup():有作用。dns.resolve4():无效。例如在hosts文件中配置了如下规则。127.0.0.1www.qq.com运行下面的对比例子,可以看出区别。vardns=require('dns');dns.lookup('www.qq.com',function(err,address,family){if(err)throwerr;console.log('配置主机后,dns.lokup=>'+address);});dns.resolve4('www.qq.com',function(err,address,family){if(err)throwerr;console.log('配置主机后,dns.resolve4=>'+地址);});输出如下?2016.11.03-node-dnsgit:(master)?nodelookup-vs-resolve4.js配置host后,dns.resolve4=>182.254.34.74配置host后,dns.lokup=>127.0.0.1熟悉其他接口DNS的同学应该熟悉A记录、NS记录、CNAME等,也可以通过相应的API进行查询。如果你有兴趣,你可以自己尝试一下。相关链接官方文档:https://nodejs.org/api/dns.ht...