DNS(Domain Name System,域名系统),简单的说:就是把我们在浏览器地址栏输入的网站域名解析翻译成IP地址的系统,也称域名服务器。
Node提供了dns模块来负责供域名解析的工作。
dns模块提供了两类方法函数:
- 使用底层系统工具进行域名解析,无需进行网络通信,这类方法只有一个dns.lookup()
- 网络通信连接到一个真实的dns服务器进行域名解析,而且始终使用网络进行dns解析查询操作,这类方法包括所有除dns.lookup()之外的方法。
1. dns.getServers
返回当前正在使用的 ip地址,以字符串数组形式返回
import dns from 'dns';
const servers = dns.getServers();
console.log(servers)
// [ '10.33.176.66', '10.33.176.67' ]
2. dns.lookup
使用底层系统工具进行域名解析,返回主机名绑定ip
import dns from 'dns';
dns.lookup('www.baidu.com', {all: true}, (err, address) => {
if (err) {
console.log(err)
}
console.log(address);
// [
// { address: '39.156.66.18', family: 4 },
// { address: '39.156.66.14', family: 4 }
// ]
})
3. dns.lookupService
实现给定的ip地址和端口号,解析为对应的域名
dns.lookupService('39.156.66.18', 22, (err, hostname, service) => {
if (err) {
console.log(err)
}
console.log('主机:' + hostname)
console.log('协议:' + service)
})
4. dns.resolve
使用网络域名系统协议将主机名(例如 'nodejs.org')解析为资源记录数组。
import dns from 'dns';
dns.resolve('nodejs.org', (err, address) => {
if (err) {
return
}
console.log(address)
// [ '104.20.22.46', '104.20.23.46' ]
})
5. dns.reverse
执行反向域名系统查询,将 IPv4 或 IPv6 地址解析为主机名数组。
import dns from 'dns';
dns.reverse('104.20.23.46', (err, hostname) => {
if (err) console.log(err)
console.log(hostname)
// nodejs.org
})