node總結之工具模組(DNS 模組)
阿新 • • 發佈:2018-11-02
Node.js DNS 模組用於解析域名,來看下引入 DNS 模組的語法格式:
var dns = require("dns")
來看下dns模組中包含的方法:
序號 | 方法 & 描述 |
---|---|
1 | dns.lookup(hostname[, options], callback) 將域名(比如 'runoob.com')解析為第一條找到的記錄 A (IPV4)或 AAAA(IPV6)。引數 options可以是一個物件或整數。如果沒有提供 options,IP v4 和 v6 地址都可以。如果 options 是整數,則必須是 4 或 6。 |
2 | dns.lookupService(address, port, callback) 使用 getnameinfo 解析傳入的地址和埠為域名和服務。 |
3 | dns.resolve(hostname[, rrtype], callback) 將一個域名(如 'runoob.com')解析為一個 rrtype 指定記錄型別的陣列。 |
4 | dns.resolve4(hostname, callback) 和 dns.resolve() 類似, 僅能查詢 IPv4 (A 記錄)。 addresses 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 記錄)。 addresses 是 2-d 文字記錄陣列。(比如,[ ['v=spf1 ip4:0.0.0.0 ', '~all' ] ])。 每個子陣列包含一條記錄的 TXT 塊。根據使用情況可以連線在一起,也可單獨使用。 |
8 | dns.resolveSrv(hostname, callback) 和 dns.resolve() 類似, 僅能進行服務記錄查詢 (SRV 記錄)。 addresses 是 hostname可用的 SRV 記錄陣列。 SRV 記錄屬性有優先順序(priority),權重(weight), 埠(port), 和名字(name) (比如,[{'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 記錄)。 addresses 是域名伺服器記錄陣列(hostname 可以使用) (比如, ['ns1.example.com', 'ns2.example.com'])。 |
11 | dns.resolveCname(hostname, callback) 和 dns.resolve() 類似, 僅能進行別名記錄查詢 (CNAME記錄)。addresses 是對 hostname 可用的別名記錄陣列 (比如,, ['bar.example.com'])。 |
12 | dns.reverse(ip, callback) 反向解析 IP 地址,指向該 IP 地址的域名陣列。 |
13 | dns.getServers() 返回一個用於當前解析的 IP 地址陣列的字串。 |
14 | dns.setServers(servers) 指定一組 IP 地址作為解析伺服器。 |
再來看下dns.resolve() 方法中有效的 rrtypes值:
'A'
IPV4 地址, 預設'AAAA'
IPV6 地址'MX'
郵件交換記錄'TXT'
text 記錄'SRV'
SRV 記錄'PTR'
用來反向 IP 查詢'NS'
域名伺服器記錄'CNAME'
別名記錄'SOA'
授權記錄的初始值
還有就是每次 DNS 查詢都有可能返回的錯誤碼:
dns.NODATA
: 無資料響應。dns.FORMERR
: 查詢格式錯誤。dns.SERVFAIL
: 常規失敗。dns.NOTFOUND
: 沒有找到域名。dns.NOTIMP
: 未實現請求的操作。dns.REFUSED
: 拒絕查詢。dns.BADQUERY
: 查詢格式錯誤。dns.BADNAME
: 域名格式錯誤。dns.BADFAMILY
: 地址協議不支援。dns.BADRESP
: 回覆格式錯誤。dns.CONNREFUSED
: 無法連線到 DNS 伺服器。dns.TIMEOUT
: 連線 DNS 伺服器超時。dns.EOF
: 檔案末端。dns.FILE
: 讀檔案錯誤。dns.NOMEM
: 記憶體溢位。dns.DESTRUCTION
: 通道被摧毀。dns.BADSTR
: 字串格式錯誤。dns.BADFLAGS
: 非法識別符號。dns.NONAME
: 所給主機不是數字。dns.BADHINTS
: 非法HINTS識別符號。dns.NOTINITIALIZED
: c c-ares 庫尚未初始化。dns.LOADIPHLPAPI
: 載入 iphlpapi.dll 出錯。dns.ADDRGETNETWORKPARAMS
: 無法找到 GetNetworkParams 函式。dns.CANCELLED
: 取消 DNS 查詢。
最後咱們走個例項:
var dns = require('dns');
dns.lookup('www.github.com', function onLookup(err, address, family) {
console.log('ip 地址:', address);
dns.reverse(address, function (err, hostnames) {
if (err) {
console.log(err.stack);
}
console.log('反向解析 ' + address + ': ' + JSON.stringify(hostnames));
});
});
好啦,本次記錄就到這裡了。
如果感覺不錯的話,請多多點贊支援哦。。。