博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Node.js v0.10.31API手工-DNS
阅读量:6436 次
发布时间:2019-06-23

本文共 3358 字,大约阅读时间需要 11 分钟。

原版的API品种,这是从以前的翻译和翻译风格不同

DNS

使用 
require('dns')
 引入此模块。

dns 模块中的全部方法都使用了 C-Ares,除了 

dns.lookup
 使用了线程池中的 
getaddrinfo(3)

C-Ares 比 

getaddrinfo
 要快得多,但系统解析器相对于其他程序的操作要更固定。

当一个用户使用 

net.connect(80, 'google.com')
 或 
http.get({ host: 'google.com' })
 时会使用 
dns.lookup
方法。

假设用户须要进行大量的高速查询,则最好使用 C-Ares 提供的方法。

以下是一个解析 'www.google.com' 并反向解析所返回 IP 地址的样例。
var dns = require('dns');dns.resolve4('www.google.com', function (err, addresses) {
if (err) throw err; console.log('addresses: ' + JSON.stringify(addresses)); addresses.forEach(function (a) {
dns.reverse(a, function (err, domains) {
if (err) {
throw err; } console.log('reverse for ' + a + ': ' + JSON.stringify(domains)); }); });});

dns.lookup(domain, [family], callback)

将一个域名(比方 
'google.com'
)解析为第一个找到的 A 记录(IPv4)或 AAAA 记录(IPv6)。地址族
family
 能够是数字 
4
 或 
6
,缺省为 
null
 表示同一时候同意 IPv4 和 IPv6 地址族。

回调參数为 (err, address, family)。地址 address 參数为一个代表 IPv4 或 IPv6 地址的字符串。

地址族

family
 參数为数字 4 或 6。地表 
address
 的地址族(不一定是之前传入 
lookup
 的值)。
当发生错误时,err 为一个 Error 对象,当中 err.code 为错误代码。请记住 err.code 被设定为 'ENOENT'的情况不仅是域名不存在,也可能是查询在其他途径出错,比方没有可用文件描写叙述符时。

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

将一个域名(比方 
'google.com'
)解析为一个 
rrtype
 指定记录类型的数组。

有效 

rrtypes
 取值有
'A'
(IPv4 地址。缺省)、
'AAAA'
(IPv6 地址)、
'MX'
(邮件交换记录)、
'TXT'
(文本记录)、
'SRV'
(SRV 记录)、
'PTR'
(用于 IP 反向查找)、
'NS'
(域名server记录)和 
'CNAME'
(别名记录)。

回调參数为 (err, addresses)。当中 addresses 中每一项的类型取决于记录类型,详见下文相应的查找方法。
当出错时,err 參数为一个 Error 对象,当中 err.code 为下文所列出的错误代码之中的一个。

dns.resolve4(domain, callback)

于 
dns.resolve()
 一样。但仅仅用于查询 IPv4(
A
 记录)。

addresses
 是一个 IPv4 地址的数组(比方
['74.125.79.104', '74.125.79.105', '74.125.79.106']
)。

dns.resolve6(domain, callback)

类似于 
dns.resolve4()
。但用于 IPv6(
AAAA
)查询。

dns.resolveMx(domain, callback)

类似于 
dns.resolve()
,但用于邮件交换查询(
MX
 记录)。
addresses 为一个 MX 记录的数组,每一项包括优先级和交换属性(比方 [{'priority': 10, 'exchange': 'mx.example.com'},...])。

dns.resolveTxt(domain, callback)

与 
dns.resolve()
 相似,但用于文本查询(
TXT
 记录)。
addresses
 为 
domain
 可用文本记录的数组(比方
['v=spf1 ip4:0.0.0.0 ~all']
)。

dns.resolveSrv(domain, callback)

查询 SRV 记录,与 
dns.resolve()
 相似。 
addresses
 是域名 
domain
 可用的 SRV 记录数组, 每一条记录都包括优先级(priority)、权重(weight)、端口号(port)、服务名称(name)等属性 (比方: 
[{'priority': 10, {'weight': 5, 'port': 21223, 'name': 'service.example.com'}, ...]
)。

dns.resolveNs(domain, callback)

查询 NS 记录,与 
dns.resolve()
 相似。 
addresses
 是域名 
domain
 可用的 NS 记录数组, (列如:
['ns1.example.com', 'ns2.example.com']
)。

dns.resolveCname(domain, callback)

查询 CNAME 记录,与 
dns.resolve()
 相似。 
addresses
 是域名 
domain
 可用的 CNAME 记录数组, (比如:
['bar.example.com']
)。

dns.reverse(ip, callback)

反向解析 IP 地址。返回指向该 IP 地址的域名数组。

回调函数接收两个參数: (err, domains) 。
当出错时,err 參数为一个 Error 对象,当中 err.code 为下文所列出的错误代码之中的一个。

Error codes

每一个 DNS 查询都可能返回下列错误代码之中的一个:
  • dns.NODATA: DNS server返回无数据应答。
  • dns.FORMERR: DNS 声称查询格式错误。
  • dns.SERVFAIL: DNS server返回一般失败。
  • dns.NOTFOUND: 域名未找到。
  • dns.NOTIMP: DNS server未实现所请求操作。
  • dns.REFUSED: DNS server拒绝查询。
  • dns.BADQUERY: DNS 查询格式错误。
  • dns.BADNAME: 域名格式错误。
  • dns.BADFAMILY: 不支持的地址类型。

  • dns.BADRESP: DNS 答复格式错误。

  • dns.CONNREFUSED: 无法联系 DNS server。
  • dns.TIMEOUT: 联系 DNS server超时。
  • 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 搜索取消。

转载地址:http://roqga.baihongyu.com/

你可能感兴趣的文章
Java 调用Dll
查看>>
Java Servlet(三):Servlet中ServletConfig对象和ServletContext对象
查看>>
推荐系统多样性
查看>>
用BlazeMeter录制JMeter测试脚本
查看>>
通过PowerShell查询本机IP地址
查看>>
使用Dezender对zend加密后的php文件进行解密
查看>>
Nginx配置之基于域名的虚拟主机
查看>>
基于DDD的.NET开发框架 - ABP模块设计
查看>>
Linux下tar.xz结尾的文件的解压方法
查看>>
Redis 脚本
查看>>
【转载】我心目中最好的框架组合是
查看>>
项目代码规范
查看>>
解释型语言与编译型语言的区别
查看>>
Oracle 创建主键自增表
查看>>
Discovering versions from the identity service failed when creating the password plugin.
查看>>
C#设计模式——生成器模式(Builder Pattern)
查看>>
06-Java 本地文件操作
查看>>
spring aop 环绕通知around和其他通知的区别
查看>>
每天一个linux命令(56):netstat命令
查看>>
python中模块sys与os的一些常用方法
查看>>