当前位置: 首页 > 文档资料 > Node.js 中文教程 >

DNS Module

优质
小牛编辑
137浏览
2023-12-01

Node.js dns模块用于执行实际的DNS查找以及使用基础操作系统名称解析功能。 此模块提供异步网络包装,可以使用以下语法导入。

var dns = require("dns")

方法 (Methods)

Sr.No.方法和描述
1

dns.lookup(hostname[, options], callback)

将主机名(例如“google.com”)解析为第一个找到的A(IPv4)或AAAA(IPv6)记录。 options可以是对象或整数。 如果未提供选项,则IP v4和v6地址均有效。 如果options是整数,则它必须是4或6。

2

dns.lookupService(address, port, callback)

使用getnameinfo将给定的地址和端口解析为主机名和服务。

3

dns.resolve(hostname[, rrtype], callback)

将主机名(例如“google.com”)解析为rrtype指定的记录类型数组。

4

dns.resolve4(hostname, callback)

与dns.resolve()相同,但仅适用于IPv4查询(A记录)。 地址是IPv4地址的数组(例如['74 .125.79.104','74 .125.79.105','74 .125.79.106'])。

5

dns.resolve6(hostname, callback)

与dns.resolve4()相同,但IPv6查询(AAAA查询)除外。

6

dns.resolveMx(hostname, callback)

与dns.resolve()相同,但仅适用于邮件交换查询(MX记录)。

7

dns.resolveTxt(hostname, callback)

与dns.resolve()相同,但仅适用于文本查询(TXT记录)。 地址是可用于主机名的文本记录的二维数组(例如,[['v = spf1 ip4:0.0.0.0','~all']])。 每个子数组包含一个记录的TXT块。 根据使用情况,它们可以连接在一起或单独处理。

8

dns.resolveSrv(hostname, callback)

与dns.resolve()相同,但仅适用于服务记录(SRV记录)。 地址是可用于主机名的SRV记录的数组。 SRV记录的属性是优先级,权重,端口和名称(例如,[{'priority':10,'weight':5,'port':21223,'name':'service.example.com'} ,. ..])。

9

dns.resolveSoa(hostname, callback)

与dns.resolve()相同,但仅用于启动权限记录查询(SOA记录)。

10

dns.resolveNs(hostname, callback)

与dns.resolve()相同,但仅适用于名称服务器记录(NS记录)。 地址是可用于主机名的名称服务器记录的数组(例如,['ns1.example.com','ns2.example.com'])。

11

dns.resolveCname(hostname, callback)

与dns.resolve()相同,但仅适用于规范名称记录(CNAME记录)。 地址是可用于主机名的规范名称记录的数组(例如,['bar.example.com'])。

12

dns.reverse(ip, callback)

反向将IP地址解析为主机名数组。

13

dns.getServers()

返回一个IP地址数组,作为当前用于解析的字符串。

14

dns.setServers(servers)

给定一组IP地址作为字符串,将它们设置为用于解析的服务器。

rrtypes

以下是dns.resolve()方法使用的有效rrtype列表 -

  • A - IPV4地址,默认

  • AAAA - IPV6地址

  • MX - 邮件交换记录

  • TXT - 文本记录

  • SRV - SRV记录

  • PTR - 用于反向IP查找

  • NS - 名称服务器记录

  • CNAME - 规范名称记录

  • SOA - 权威记录的开始

错误代码

每个DNS查询都可以返回以下错误代码之一 -

  • dns.NODATA - DNS服务器返回没​​有数据的答案。

  • dns.FORMERR - DNS服务器声明查询格式错误。

  • dns.SERVFAIL - DNS服务器返回一般故障。

  • dns.NOTFOUND - 找不到域名。

  • dns.NOTIMP - DNS服务器未实现请求的操作。

  • dns.REFUSED - DNS服务器拒绝查询。

  • dns.BADQUERY - 错误格式化的DNS查询。

  • dns.BADNAME - 格式错误的主机名。

  • dns.BADFAMILY - 不支持的地址系列。

  • dns.BADRESP - 错误格式化的DNS回复。

  • dns.CONNREFUSED - 无法联系DNS服务器。

  • dns.TIMEOUT - 联系DNS服务器时超时。

  • dns.EOF - 文件结束。

  • dns.FILE - 读取文件时出错。

  • dns.NOMEM - 内存不足。

  • dns.DESTRUCTION - 频道正在被破坏。

  • dns.BADSTR - 格式错误的字符串。

  • dns.BADFLAGS - 指定了非法标志。

  • dns.NONAME - 给定主机名不是数字。

  • dns.BADHINTS - 指定了非法提示标志。

  • dns.NOTINITIALIZED - 尚未执行c-ares库初始化。

  • dns.LOADIPHLPAPI - 加载iphlpapi.dll发生错误。

  • dns.ADDRGETNETWORKPARAMS - 找不到GetNetworkParams函数。

  • dns.CANCELLED - DNS查询已取消。

例子 (Example)

使用以下代码创建名为main.js的js文件 -

var dns = require('dns');
dns.lookup('www.google.com', function onLookup(err, address, family) {
   console.log('address:', address);
   dns.reverse(address, function (err, hostnames) {
      if (err) {
         console.log(err.stack);
      }
      console.log('reverse for ' + address + ': ' + JSON.stringify(hostnames));
   });  
});

现在运行main.js来查看结果 -

$ node main.js

验证输出。

address: 173.194.46.83
reverse for 173.194.46.83: ["ord08s11-in-f19.1e100.net"]