域名服务(DNS)

稳定度:2 - 稳定

dns 模块包含属于两个不同类别的函数:

1)函数使用底层的操作系统设备执行名称解析,并且不一定执行任何类型的网络通信。这个类别只包含一个函数: dns.lookup()开发者希望和同一操作系统中的其他应用程序的行为相同的方式执行名称解析应该使用 dns.lookup()

例如,监视 nodejs.org

  1. const dns = require('dns');
  2. dns.lookup('nodejs.org', (err, addresses, family) => {
  3. console.log('addresses:', addresses);
  4. });

2)函数连接到实际的DNS服务器执行名称解析,并且总是使用网络来执行 DNS 查询。此类别包含 dns 模块里除了 dns.lookup() 以外的所有函数。这些函数不使用与 dns.lookup() 相同的配置文件(如,/etc/hosts)。这些函数应该由不希望使用底层的操作系统设备执行名称解析的开发者使用,并且希望始终执行 DNS 查询。

下面是解析 'nodejs.org',然后反向解析返回的 IP 地址的例子。

  1. const dns = require('dns');
  2. dns.resolve4('nodejs.org', (err, addresses) => {
  3. if (err) throw err;
  4. console.log(`addresses: ${JSON.stringify(addresses)}`);
  5. addresses.forEach((a) => {
  6. dns.reverse(a, (err, hostnames) => {
  7. if (err) {
  8. throw err;
  9. }
  10. console.log(`reverse for ${a}: ${JSON.stringify(hostnames)}`);
  11. });
  12. });
  13. });

一个在另一个之上进行选择会有微妙的后果,详情参阅实施注意事项部分获取更多信息。