node.jsドメイン名解析実現方法詳細


本論文の例は、node.jsドメイン解析の実現方法を説明する。皆さんに参考にしてあげます。具体的には以下の通りです。
ドメイン名解析:dns.lookup()
例えばドメイン名www.qq.comに対応するipを調べたいですが、dns.lookup() を通じてできます。

var dns = require('dns');
dns.lookup('www.qq.com', function(err, address, family){
  if(err) throw err;
  console.log('  A: ' + address);
});

出力は以下の通りです
例A:182.254.34.74
同じドメイン名で、複数の異なるipに対応できることを知っています。では、ドメイン名に対応する複数のipはどうやって取得しますか?これでいいです。

var dns = require('dns');
var options = {all: true};
dns.lookup('www.qq.com', options, function(err, address, family){
  if(err) throw err;
  console.log('  B: ' + address);
});

出力は以下の通りです
例B:{"address":"182.254.34.74","ファミリア":"4","address":"240 e:1:8100:28::2:16","ファミリア","6]]
ドメイン名解析:dns.resove 4()
上記の例は、dns.resolve4()によっても実現され得る。

var dns = require('dns');
dns.resolve4('id.qq.com', function(err, address){
  if(err) throw err;
  console.log( JSON.stringify(address) );
});

出力は以下の通りです
["61.151.186.39","101.227.139.179","
IPv 6のアドレスを取得するなら、インターフェースもほぼ同じである。
dns.lookup()とdns.resolove 4()の違い
上記の例から、2つの方法はドメイン名のipリストを照会することができる。その違いはどこですか?
最大の違いは、ローカルHostが配置されている場合、クエリ結果に影響があるかどうかである。
  • dns.lookup():影響があります。
  • dns.resove 4():影響はありません。
  • 例えば、hostsファイルには次のようなルールが配置されています。
    127.1.0.1 wwww.qq.com
    次のような比較例を実行すると、違いが見られます。
    
    var dns = require('dns');
    dns.lookup('www.qq.com', function(err, address, family){
      if(err) throw err;
      console.log('  host ,dns.lokup =>' + address);
    });
    dns.resolve4('www.qq.com', function(err, address, family){
      if(err) throw err;
      console.log('  host ,dns.resolve4 =>' + address);
    });
    
    
    出力は以下の通りです
    ヽoo。ツ  2016.11.03-node-dns git:(master)node lookup-vs-resove 4.js
    hostを配置した後、dns.resove 4=>182.254.34.74
    ホームポジション設定後、dns.lokup=>127..0.1
    その他のインターフェース
    DNSに対して知っている学友がいて、A記録、NS記録、CNAMEなどに対してよく知らないべきで、同様に相応するAPIを通じて(通って)検索することができて、興味があるのは自分で試みておりることができます。
    ここで述べたように皆さんのnode.jsプログラムの設計に役に立ちます。