この記事では、ドメイン名解決モジュール DNS について詳しく紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。
関連する推奨事項: 「nodejs チュートリアル 」
動作原理
ブラウザを開いて次へ進みます上のアドレスバーに URL を入力して Enter キーを押した瞬間、さまざまなことが起こります。まず、コンピュータは 0 と 1 しか理解できません。つまり、コンピュータは人間のアルファベットのアドレスを理解することはできません。理解できるのは IP アドレスだけです。IPv4 の場合、それは 8 ビットの 2 進数の 4 つのグループです。人間の便宜を図るため、URL を IP アドレスに変換するサービスが必要です。これが DNS
DNS 取得プロセス全体がレイヤーごとにキャッシュされます
1 、ブラウザは独自の DNS キャッシュを検索します。
ブラウザの DNS キャッシュ時間は、DNS サーバーから返される TTL 値とは関係ありません。
ブラウザは、Web サイトのドメイン名の実際の IP アドレスを取得した後、ネットワーク リクエストの損失を減らすためにその IP をキャッシュします。各ブラウザには固定の DNS キャッシュ時間があり、Chrome の有効期限は 1 分です。この期間中、DNS は再リクエストされません。
Chrome ブラウザは自分の DNS キャッシュ時間を確認する方が便利です。アドレス バーに
chrome://net-internals/#dns
c:\Windows\System32\drivers\etc\hosts
4. ブロードバンド オペレーター ISP への DNS システム コールを開始すると、ISP サーバーは自身のキャッシュを確認します
5. キャッシュが見つからない場合ただし、ISP サーバーがそれを置き換えます。 ローカル コンピュータは、反復的な DNS 解決要求を開始します。
6. それでも失敗する場合は、解決は失敗します。
ローカル解決 # DNS モジュールには 2 種類の関数が含まれています。そのうちの 1 つは、基盤となるオペレーティング システム ツールを使用してドメイン名解決を実行する関数であり、ネットワーク通信を必要としません。このような関数は 1 つだけあります: dns.lookup()
[dns.lookup(hostname[, options], callback)] このメソッドはドメイン名 ('cnblogs. など) を解決します。 com') 最初に見つかったレコードは A (IPV4) または AAAA (IPV6) です。パラメータ オプションにはオブジェクトまたは整数を指定できます。オプションを指定しない場合は、IP v4 アドレスと v6 アドレスの両方を使用できます。 options が整数の場合、4 または 6 である必要があります。 options パラメータには次の属性が含まれます。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);//null console.log(address);//218.11.2.249 console.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});
# このメソッドのコールバック関数のパラメータは (err、ホスト名、サービス) です。ホスト名とサービスはどちらも文字列です (「localhost」や「http」など)。エラーが発生した場合、パラメーター err は Error オブジェクト、err.code はエラー コード
var dns = require('dns'); dns.lookupService('127.0.0.1',80,function(err, hostname, service){ console.log(err);//null console.log(hostname);//bai console.log(service);//http});
ネットワーク分析
を除きます。 dns.lookup() dns モジュールのすべての関数は、ドメイン名解決のために実際の DNS サーバーに接続する必要があり、常にネットワークを使用して DNS クエリを実行します。[dns.resolve(hostname[, rrtype], callback)]
このメソッドは、ドメイン名 (「cnblogs.com」など) を rrtype で指定されたレコード タイプの配列に解析します。
有効な rrtypes 値は次のとおりです:
'A' (IPV4 地址, 默认)'AAAA' (IPV6 地址)'MX' (邮件交换记录)'TXT' (text 记录)'SRV' (SRV 记录)'PTR' (用来反向 IP 查找)'NS' (域名服务器 记录)'CNAME' (别名 记录)'SOA' (授权记录的初始值)
コールバック パラメータは
(err, addresss)です。
addresses の各項目のタイプはレコード タイプによって異なります。エラーが発生した場合、パラメータ err
は Error
オブジェクト、err.code
はエラー コード <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;toolbar:false;">var dns = require(&#39;dns&#39;);
//IPV4
dns.resolve(&#39;www.qq.com&#39;,function(err,address){
console.log(address);//[ &#39;125.39.240.113&#39;, &#39;61.135.157.156&#39; ]
});
//IPV6
dns.resolve(&#39;www.qq.com&#39;,&#39;AAAA&#39;,function(err,address){
console.log(address);//[ &#39;240e:e1:8100:28::2:16&#39; ]
});
//别名
dns.resolve(&#39;www.qq.com&#39;,&#39;CNAME&#39;,function(err,address){
console.log(address);//undefined
});</pre><div class="contentsignin">ログイン後にコピー</div></div>
[dns.resolve4] (ホスト名, コールバック)] dns.resolve() と同様に、IPv4 (A レコード) のみをクエリできます
var dns = require('dns'); dns.resolve4('www.qq.com',function(err,address){ console.log(address);//[ '125.39.240.113', '61.135.157.156' ] });
【dns.reverse(ip, callback)】
このメソッドは、IP アドレスを解決するには、IP アドレスを指すドメイン名の配列を返します。コールバック関数のパラメータ (err、ホスト名)。エラーが発生した場合、パラメーター err は Error オブジェクト、err.code はエラー コードです。
var dns = require('dns'); dns.reverse('114.114.114.114',function(err,hostnames){ console.log(hostnames);//'public1.114dns.com' });
プログラミング関連の知識の詳細については、
プログラミング教育を参照してください。 !
以上がNodejs がドメイン名解決モジュール DNS を理解することを学ぶの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。