DNS Module
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"]