DNS 域名解析

2018-07-11 09:53 更新

(譯著,Windows 版本的NodeJS 暫時沒有實現(xiàn)DNS 功能) 使用require('dns')來訪問這個模塊。

下面是一個先解析'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) {
console.log('reverse for ' + a + ' failed: ' +
err.message);
} else {
console.log('reverse for ' + a + ': ' +
JSON.stringify(domains));
}
});
});

dns.lookup(domain, family=null, callback)

將一個域名(例如. 'google.com')解析成為找到的第一個A(IPv4)或者AAAA(IPv6)記錄。 回調(diào)函數(shù)的有(err, address, family)這三個參數(shù)。address 參數(shù)是一個代表IPv4或IPv6的地址的字符串。family 是 一個表示地址版本的整形數(shù)字4或6(并不一定是解析域名時傳遞的數(shù)字)。

dns.resolve(domain, rrtype='A', callback)

將參數(shù)domain(比如'google.com')按照參數(shù)rrtype 所指定數(shù)據(jù)類型解析到一個數(shù)組中。合法的類型為A(IPV4地 址),AAAA(IPV6地址),MX(mail exchange records),TXT(text records),SRV(SRV records),和PTR(used for reveres IP lookups)。

回調(diào)函數(shù)(callback)接受兩個參數(shù):err 和address。參數(shù)address 中的每一項根據(jù)記錄類型(record type)分割,在 下面lookup 方法的文檔里有詳細的解釋。 當有錯誤發(fā)生時,參數(shù)err 的內(nèi)容是一個Error 對象的實例,err 的errno 屬性是下面錯誤代碼列表中的一個,err 的message 屬性是一個用英語表述的錯誤解釋。

dns.resolve4(domain, callback)

與dns.resolve()類似,但是僅對IPV4地址進行查詢(A records)。addresses 是一個IPV4地址數(shù)組(例如['74.125.79.104', '74.125.79.105', '74.125.79.106'])

dns.resolve6(domain, callback)

除了這個函數(shù)是對IPV6地址的查詢外與dns.resolve4()很類似(一個AAAA 查詢)。

dns.resolveMx(domain, callback)

與dns.resolve()很類似.但是僅做mail exchange 查詢(MX 類型記錄)。 回調(diào)函數(shù)的參數(shù)address 是一個MX 類型記錄的數(shù)組,每個記錄有一個優(yōu)先級屬性和一個交換屬性(類似[{'priority': 10, 'exchange': 'mx.example.com'},...])

dns.resolveTxt(domain, callback)

與dns.resolve()很相似,但是僅可以進行text 查詢(TXT 記錄).地址是一個對于域來說有效的text 記錄數(shù)組(類似 ['v=spf1 ip4:0.0.0.0 ~all'])

dns.resolveSrv(domain, callback)

與dns.resolve()很類似,但僅是只查詢service 記錄(srv records)。地址是一個對于域來說有效的SRV 記錄的數(shù)組, SRV 記錄的屬性有優(yōu)先級、權(quán)重、端口, 名字( 例如[{'priority': 10, {'weight': 5, 'port': 21223, 'name':'service.example.com'}, ...])

dns.reverse(ip, callback)

反向解析一個IP 地址到一個域名數(shù)組。 callback 參數(shù)有兩個參數(shù)(err,domains)。 如果發(fā)生了錯誤,err 為Error 對象的實例。 每個DNS 查詢可以返回如下錯誤代碼:

1 超時、返回SERVFAIL 或者類似的錯誤

2 返回內(nèi)容里有亂碼

3 域名不存在

4 域名存在但是沒有所請求的查詢類型的數(shù)據(jù)

5??? 處理過程中內(nèi)存溢出

6??? 查詢語句異常


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號