This article will introduce the domain name resolution module DNS in detail
Open the browser and enter the URL in the address bar above At that moment, after pressing Enter, a lot of things happened. First of all, the computer only understands 0 and 1, which means that the computer does not understand human alphabetical addresses. It only understands IP addresses. If it is IPv4, it is four groups of 8-bit binary numbers. For human convenience, there needs to be a service that translates URLs into IP addresses, which is DNS
The entire DNS acquisition process is cached layer by layer
## 1 , The browser searches its own DNS cache The browser DNS cache time has nothing to do with the TTL value returned by the DNS server. After the browser obtains the actual IP address of the website domain name, it will cache its IP to reduce the loss of network requests. Each browser has a fixed DNS cache time, of which Chrome's expiration time is 1 minute. During this period, DNS will not be re-requested It is more convenient for the Chrome browser to check its own DNS cache time. Enterchrome://net-internals/#dns
c:\Windows\System32\drivers\etc\hosts
family:地址协议族,必须为4或6的整数 hints:设置getaddrinfo的标志,dns.ADDRCONFIG 或者 dns.V4MAPPED(ipv4映射成ipv6) all:false(默认),布尔值,如设置为true,则返回IP数组,否则返回单个IP地址
{ family: 4, hints: dns.ADDRCONFIG | dns.V4MAPPED }
var dns = require('dns'); dns.lookup('www.cnblogs.com', function(err, address, family){ console.log(err);//nullconsole.log(address);//218.11.2.249console.log(family);//4});
var dns = require('dns'); dns.lookup('www.qq.com',{all:true}, function(err, address, family){ console.log(err);//null/*[ { address: '125.39.240.113', family: 4 }, { address: '61.135.157.156', family: 4 } ] */console.log(address); console.log(family);//undefined});
var dns = require('dns'); dns.lookupService('127.0.0.1',80,function(err, hostname, service){ console.log(err);//nullconsole.log(hostname);//baiconsole.log(service);//http});
This method parses a domain name (such as 'cnblogs.com') into an array of rrtype specified record types The valid rrtypes value is:
'A' (IPV4 地址, 默认)'AAAA' (IPV6 地址)'MX' (邮件交换记录)'TXT' (text 记录)'SRV' (SRV 记录)'PTR' (用来反向 IP 查找)'NS' (域名服务器 记录)'CNAME' (别名 记录)'SOA' (授权记录的初始值)
(err, addresses). The type of each item in
addresses depends on the record type. When an error occurs, the parameter
err is the
Error object, and
err.code is the error code
var dns = require('dns');//IPV4dns.resolve('www.qq.com',function(err,address){ console.log(address);//[ '125.39.240.113', '61.135.157.156' ]});//IPV6dns.resolve('www.qq.com','AAAA',function(err,address){ console.log(address);//[ '240e:e1:8100:28::2:16' ]});//别名dns.resolve('www.qq.com','CNAME',function(err,address){ console.log(address);//undefined});
var dns = require('dns'); dns.resolve4('www.qq.com',function(err,address){ console.log(address);//[ '125.39.240.113', '61.135.157.156' ]});
var dns = require('dns'); dns.reverse('114.114.114.114',function(err,hostnames){ console.log(hostnames);//'public1.114dns.com'});
The above is the detailed content of Detailed explanation of domain name DNS in nodeJS. For more information, please follow other related articles on the PHP Chinese website!