Node.js中如何使用DNS模块

发布时间:2021-07-21 10:59:50 作者:Leah
来源:亿速云 阅读:119

Node.js中如何使用DNS模块,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

1. DNS

在Node.js中,提供DNS模块,以实现域名查找及域名解析的处理。

2. 使用resolve方法将域名解析为DNS记录

`DNS.resolve(domain, [rrtype], callback(err, address){...})`

domain参数为一个字符串,用于指定需要被解析的域名,可以包括子域名。
rrtypr参数为一个字符串,用于指定需要获取的记录类型,可指定的记录类型如下。

回调函数有两个参数,err是域名解析失败时触发的错误对象,addresses参数为一个数组,其中存放了所有获取到的DNS记录。

3. 为resolve方法定制的各种便捷方法

4. 使用lookup方法查询IP地址

当使用resolve4方法或者resolve6方法时,由于callback参数值回调函数中的addresses参数值数组中存放着所有获取到的IPv4地址或IPv6地址。因此DNS模块中提供了一个获取第一个被发现的IPv4地址或者IPv6地址的lookup方法

`DNS.lookup(domain, [family], callback(err, addresses, family){...})`

5. 使用reverse方法反向解析IP地址

在DNS模块中,使用reverse方法将一个IP地址反向解析为一组与该IP地址绑定的域名

`DNS.reverse(ip, callback(err, domains){...})`

6. DNS模块中的各种错误代码

err参数值为执行各种解析或反向解析操作时触发的错误对象,可根据该错误对象的code属性值,即触发的错误代号判断出发了什么错误

7. DNS模块的基本使用

const dns = require('dns');
let url = 'www.qq.com';

dns.resolve(url, 'A', (err, addresses) => {
  console.log(addresses);
  // IPv4地址 [ '103.7.30.123' ]
});

dns.resolve(url, 'AAAA', (err, addresses) => {
  console.log(addresses);
  // IPv6地址 [ '240e:e1:8100:28::2:16' ]
});
dns.resolveMx('qq.com', (err, addresses) => {
  console.log(addresses);
  // 邮件交换服务器记录
  // [ { exchange: 'mx2.qq.com', priority: 20 },
  //  { exchange: 'mx1.qq.com', priority: 30 },
  //  { exchange: 'mx3.qq.com', priority: 10 } ]
  
});

dns.resolveTxt('qq.com', (err, addresses) => {
  console.log(addresses);
  // 域名附加的描述记录
  // [ [ 'v=spf1 include:spf.mail.qq.com -all' ] ]
});

dns.resolveSrv('www.baidu.com', (err, addresses) => {
  console.log(addresses);
  // 服务记录
  // []
});

dns.resolveNs('www.github.com', (err, addresses) => {
  console.log(addresses);
  // 域名服务器记录
  // [ 'ns-421.awsdns-52.com',
  // 'ns-520.awsdns-01.net',
  // 'ns1.p16.dynect.net',
  // 'ns2.p16.dynect.net',
  // 'ns3.p16.dynect.net',
  // 'ns4.p16.dynect.net',
  // 'ns-1283.awsdns-32.org',
  // 'ns-1707.awsdns-21.co.uk' ]
});

dns.resolveCname('www.163.com', (err, addresses) => {
  console.log(addresses);
  // 获取别名记录
  // [ 'www.163.com.lxdns.com' ]
});


dns.lookup('google.com', 4, (err, address, family) => {
  // 查询IP地址
  // address,查询到的地址
  // family,IPv4或IPv6
  console.log(address);// 172.217.27.142
  console.log(family);// 4
});

dns.lookup('google.com', 6, (err, address, family) => {
  console.log(address);// 2404:6800:4008:803::200e
  console.log(family);// 6
});

dns.reverse('203.188.200.67', (err, domain) => {
  // 反向解析IP地址
  console.log(domain);
  // [ 'media-router-fp1.prod.media.vip.tp2.yahoo.com' ]
});

关于Node.js中如何使用DNS模块问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

推荐阅读:
  1. Node.js API中如何使用readline模块
  2. Node.js API中如何使用dns模块

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

node.js dns

上一篇:如何实现Layui templet中a的onclick参数传递

下一篇:nodejs中superagent和cheerio如何使用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》