最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Node.js中DNS模塊學(xué)習(xí)總結(jié)

 更新時(shí)間:2018年02月28日 11:18:03   投稿:laozhang  
本篇文章給大家詳細(xì)介紹了Node.js中DNS模塊的相關(guān)知識(shí)點(diǎn),以及相關(guān)的實(shí)例代碼做了分享,有興趣的朋友參考下。

1. DNS

在Node.js中,提供DNS模塊,以實(shí)現(xiàn)域名查找及域名解析的處理。

  • 在DNS模塊中,提供了三個(gè)主方法及一系列便捷方法。
  • resolve方法:用于將一個(gè)域名解析為一組DNS記錄。
  • reverse方法: 用于將IP地址轉(zhuǎn)換為一組域名。
  • lookup方法: 用于將一個(gè)域名轉(zhuǎn)換成IP地址。
  • DNS模塊中的其余便捷方法均為resolve方法的一種便捷形式。

2. 使用resolve方法將域名解析為DNS記錄

`DNS.resolve(domain, [rrtype], callback(err, address){...})`

domain參數(shù)為一個(gè)字符串,用于指定需要被解析的域名,可以包括子域名。
rrtypr參數(shù)為一個(gè)字符串,用于指定需要獲取的記錄類(lèi)型,可指定的記錄類(lèi)型如下。

  • A,該參數(shù)值為默認(rèn)值,當(dāng)記錄類(lèi)型為A時(shí),該記錄將一個(gè)IPv4地址映射為一個(gè)域名。
  • AAAA,當(dāng)記錄類(lèi)型為AAAA時(shí),該記錄將一個(gè)IPv6地址映射為一個(gè)域名。
  • CNAME,當(dāng)記錄類(lèi)型為CNAME時(shí),表示該記錄為一個(gè)域名的別名記錄,例如,一個(gè)www.example.com域名記錄也許為一個(gè)example.com域名記錄額別名記錄。
  • MX,MX記錄指向一個(gè)使用SMTP的域中的郵件服務(wù)器,例如,當(dāng)你想person@domain.com郵件地址發(fā)送電子郵件時(shí),domain.com域的MX記錄中保存了發(fā)送該郵件時(shí)的郵件服務(wù)器地址。
  • TXT,TXT記錄是為該域名附加的描述記錄。
  • SRV,SRV記錄用于為一個(gè)特定域中所有可用服務(wù)提供信息。
  • PTR,PTR記錄用于反向地址解析,該記錄將一個(gè)域名映射為一個(gè)IPv4地址。
  • NS,NS(Name Server)記錄是域名服務(wù)器記錄,用來(lái)指定該域名由哪個(gè)DNS服務(wù)器進(jìn)行解析。

回調(diào)函數(shù)有兩個(gè)參數(shù),err是域名解析失敗時(shí)觸發(fā)的錯(cuò)誤對(duì)象,addresses參數(shù)為一個(gè)數(shù)組,其中存放了所有獲取到的DNS記錄。

3. 為resolve方法定制的各種便捷方法

  • DNS.resolve4(domain, callback),獲取IPv4地址
  • DNS.resolve6(domain, callback),獲取IPv6地址
  • DNS.resolveMx(domain, callback),獲取MX記錄,郵件交換服務(wù)器記錄
  • DNS.resolveTxt(domain, callback),獲取TXT記錄,域名附加的描述記錄
  • DNS.resolveSrv(domain, callback),獲取SRV記錄,服務(wù)記錄
  • DNS.resolveNs(domain, callback),獲取NS記錄,域名服務(wù)器記錄
  • DNS.resolveCname(domain, callback),獲取別名記錄

4. 使用lookup方法查詢(xún)IP地址

當(dāng)使用resolve4方法或者resolve6方法時(shí),由于callback參數(shù)值回調(diào)函數(shù)中的addresses參數(shù)值數(shù)組中存放著所有獲取到的IPv4地址或IPv6地址。因此DNS模塊中提供了一個(gè)獲取第一個(gè)被發(fā)現(xiàn)的IPv4地址或者IPv6地址的lookup方法

`DNS.lookup(domain, [family], callback(err, addresses, family){...})`

  • domain參數(shù)為一個(gè)字符串,用于指定需要解析的域名
  • family參數(shù)值為一個(gè)整數(shù)值,用于指定需要獲取的IP地址類(lèi)型,可指定的參數(shù)值為4或6,默認(rèn)參數(shù)值為null,表示既可以獲取IPv4,又可以獲取IPv6
  • 回調(diào)函數(shù)err參數(shù)值為獲取地址失敗時(shí)觸發(fā)的錯(cuò)誤對(duì)象,當(dāng)域名不存在或查詢(xún)失敗時(shí)該錯(cuò)誤對(duì)象的code屬性值為ENOENT
  • addresses參數(shù)值為一個(gè)字符串,為獲取到的IP地址
  • family參數(shù)值為4時(shí),表示為一個(gè)IPv4地址,為6時(shí),表示為一個(gè)IPv6地址。

5. 使用reverse方法反向解析IP地址

在DNS模塊中,使用reverse方法將一個(gè)IP地址反向解析為一組與該IP地址綁定的域名

`DNS.reverse(ip, callback(err, domains){...})`

  • ip參數(shù)值為一個(gè)字符串,用于指定需要解析的IP地址
  • 回調(diào)函數(shù)的err為反向解析地址失敗后的錯(cuò)誤對(duì)象
  • domains參數(shù)值為一個(gè)數(shù)組,存放了所有獲取到的域名

6. DNS模塊中的各種錯(cuò)誤代碼

err參數(shù)值為執(zhí)行各種解析或反向解析操作時(shí)觸發(fā)的錯(cuò)誤對(duì)象,可根據(jù)該錯(cuò)誤對(duì)象的code屬性值,即觸發(fā)的錯(cuò)誤代號(hào)判斷出發(fā)了什么錯(cuò)誤

  • ENODATA:DNS服務(wù)器返回一個(gè)沒(méi)有數(shù)據(jù)的查詢(xún)結(jié)果
  • EFORMERR:DNS服務(wù)器發(fā)現(xiàn)客戶(hù)端請(qǐng)求查詢(xún)時(shí)使用了格式錯(cuò)誤的查詢(xún)參數(shù)
  • ESERVFAIL:DNS服務(wù)器執(zhí)行查詢(xún)操作失敗
  • ENOTFOUND:未發(fā)現(xiàn)任何域名
  • ENOTIMP:DNS服務(wù)器不能進(jìn)行客戶(hù)端所請(qǐng)求的查詢(xún)操作
  • EREFUSED:DNS服務(wù)器拒絕進(jìn)行查詢(xún)操作
  • EBADQUERY:格式錯(cuò)誤的DNS查詢(xún)
  • EBADNAME:域名格式錯(cuò)誤
  • EBADFAMILY:不支持的IP地址類(lèi)型
  • EBADRESP:DNS答復(fù)的格式錯(cuò)誤
  • ECONNREFUSED:不能建立與DNS服務(wù)器之間的連接
  • ETIMEOUT:與DNS服務(wù)器之間建立連接超時(shí)
  • EEOF:已到達(dá)文件底部
  • EFILE:讀取文件失敗
  • ENOMEM:沒(méi)有足夠的內(nèi)存空間
  • EDESTRUCTION:通道已經(jīng)被銷(xiāo)毀
  • EBADSTR:字符串格式錯(cuò)誤
  • EBADFLAGS:指定了錯(cuò)誤的判斷標(biāo)志
  • ENONAME:指定的主機(jī)名不是數(shù)值格式的
  • EBADHINTS:指定的提示標(biāo)志無(wú)效
  • ENOTINITIALIZED:c-ares類(lèi)庫(kù)初始化工作尚未完成
  • ELOADIPHLPAPI:加載iphlpapi.dll時(shí)觸發(fā)了一個(gè)錯(cuò)誤
  • EADDREGETNETWORKPARAMS:未發(fā)現(xiàn)GetNetworkParams函數(shù)
  • ECANCELLED:DNS查詢(xún)操作被取消

7. DNS模塊的基本使用

const dns = require('dns');
let url = 'www.qq.com';

dns.resolve(url, 'A', (err, addresses) => {
  console.log(addresses);
  // IPv4地址 [ '103.7.30.123' ]
});

dns.resolve(url, 'AAAA', (err, addresses) => {
  console.log(addresses);
  // IPv6地址 [ '240e:e1:8100:28::2:16' ]
});
dns.resolveMx('qq.com', (err, addresses) => {
  console.log(addresses);
  // 郵件交換服務(wù)器記錄
  // [ { exchange: 'mx2.qq.com', priority: 20 },
  //  { exchange: 'mx1.qq.com', priority: 30 },
  //  { exchange: 'mx3.qq.com', priority: 10 } ]
  
});

dns.resolveTxt('qq.com', (err, addresses) => {
  console.log(addresses);
  // 域名附加的描述記錄
  // [ [ 'v=spf1 include:spf.mail.qq.com -all' ] ]
});

dns.resolveSrv('www.baidu.com', (err, addresses) => {
  console.log(addresses);
  // 服務(wù)記錄
  // []
});

dns.resolveNs('www.github.com', (err, addresses) => {
  console.log(addresses);
  // 域名服務(wù)器記錄
  // [ 'ns-421.awsdns-52.com',
  // 'ns-520.awsdns-01.net',
  // 'ns1.p16.dynect.net',
  // 'ns2.p16.dynect.net',
  // 'ns3.p16.dynect.net',
  // 'ns4.p16.dynect.net',
  // 'ns-1283.awsdns-32.org',
  // 'ns-1707.awsdns-21.co.uk' ]
});

dns.resolveCname('www.163.com', (err, addresses) => {
  console.log(addresses);
  // 獲取別名記錄
  // [ 'www.163.com.lxdns.com' ]
});


dns.lookup('google.com', 4, (err, address, family) => {
  // 查詢(xún)IP地址
  // address,查詢(xún)到的地址
  // family,IPv4或IPv6
  console.log(address);// 172.217.27.142
  console.log(family);// 4
});

dns.lookup('google.com', 6, (err, address, family) => {
  console.log(address);// 2404:6800:4008:803::200e
  console.log(family);// 6
});

dns.reverse('203.188.200.67', (err, domain) => {
  // 反向解析IP地址
  console.log(domain);
  // [ 'media-router-fp1.prod.media.vip.tp2.yahoo.com' ]
});

相關(guān)文章

  • 零基礎(chǔ)實(shí)現(xiàn)node+express個(gè)性化聊天室的示例

    零基礎(chǔ)實(shí)現(xiàn)node+express個(gè)性化聊天室的示例

    這篇文章主要介紹了零基礎(chǔ)實(shí)現(xiàn)node+express個(gè)性化聊天室的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • node-sass安裝失敗的原因與解決方法

    node-sass安裝失敗的原因與解決方法

    這篇文章主要給大家介紹了關(guān)于node-sass安裝失敗的原因與解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • nodeJS實(shí)現(xiàn)路由功能實(shí)例代碼

    nodeJS實(shí)現(xiàn)路由功能實(shí)例代碼

    本篇文章主要介紹了nodeJS實(shí)現(xiàn)路由功能實(shí)例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • 使用pm2自動(dòng)化部署node項(xiàng)目的方法步驟

    使用pm2自動(dòng)化部署node項(xiàng)目的方法步驟

    這篇文章主要介紹了使用pm2自動(dòng)化部署node項(xiàng)目的方法步驟,pm2是一個(gè)進(jìn)程管理工具,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • 淺談express.js框架中間件(middleware)

    淺談express.js框架中間件(middleware)

    這篇文章主要介紹了淺談express.js框架中間件(middleware),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-04-04
  • 解決node.js中bcrypt遇到的安裝問(wèn)題

    解決node.js中bcrypt遇到的安裝問(wèn)題

    這篇文章主要介紹了解決node.js中bcrypt遇到的安裝問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Nodejs中調(diào)用系統(tǒng)命令、Shell腳本和Python腳本的方法和實(shí)例

    Nodejs中調(diào)用系統(tǒng)命令、Shell腳本和Python腳本的方法和實(shí)例

    這篇文章主要介紹了Nodejs中調(diào)用系統(tǒng)命令、Shell腳本和Python腳本的方法和實(shí)例,本文給出了利用子進(jìn)程調(diào)用系統(tǒng)命令、執(zhí)行系統(tǒng)命令、調(diào)用傳參數(shù)的shell腳本、調(diào)用python腳本的例子,需要的朋友可以參考下
    2015-01-01
  • node登錄生成token并驗(yàn)證的實(shí)現(xiàn)

    node登錄生成token并驗(yàn)證的實(shí)現(xiàn)

    token校驗(yàn)作為項(xiàng)目里的必要項(xiàng),其重要性不言而喻,本文主要介紹了node登錄生成token并驗(yàn)證的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • ExpressJS入門(mén)實(shí)例

    ExpressJS入門(mén)實(shí)例

    這篇文章主要介紹了ExpressJS入門(mén)實(shí)例,本文講解了創(chuàng)建項(xiàng)目、進(jìn)入目錄、安裝項(xiàng)目依賴(lài)的包、創(chuàng)建應(yīng)用程序、運(yùn)行程序等內(nèi)容,需要的朋友可以參考下
    2015-01-01
  • 配置node服務(wù)器并且鏈接微信公眾號(hào)接口配置步驟詳解

    配置node服務(wù)器并且鏈接微信公眾號(hào)接口配置步驟詳解

    這篇文章主要介紹了配置node服務(wù)器并且鏈接微信公眾號(hào)接口配置步驟詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下
    2019-06-06

最新評(píng)論

无极县| 巢湖市| 金门县| 灯塔市| 古浪县| 栖霞市| 砚山县| 乐安县| 漯河市| 宜宾市| 阿拉尔市| 桂东县| 迭部县| 吉安县| 桃源县| 弥渡县| 岚皋县| 庆安县| 诏安县| 福建省| 衡山县| 衡阳县| 常德市| 铜梁县| 班玛县| 丽水市| 德惠市| 莱西市| 清远市| 光山县| 芜湖县| 抚顺市| 迭部县| 彝良县| 莱西市| 泗洪县| 祁门县| 永清县| 双柏县| 泉州市| 尉犁县|