検索
ホームページウェブフロントエンドjsチュートリアルNodejs がドメイン名解決モジュール DNS を理解することを学ぶ

Nodejs がドメイン名解決モジュール DNS を理解することを学ぶ

この記事では、ドメイン名解決モジュール 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

# と入力します 2. オペレーティング システムの DNS キャッシュを検索します

3. ローカル HOST ファイルを読み取ります Windows でのパスは通常 # です# #
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
}
コールバック関数にはパラメータ (err、アドレス、ファミリー) が含まれます。 address パラメーターは、IP v4 または v6 アドレスを表します。 family パラメータは 4 または 6 で、アドレス ファミリを示します (以前にルックアップに渡された値である必要はありません)。エラーが発生した場合、パラメータ err は Error オブジェクト、err.code はエラー コード

[注] err.code は 'ENOENT' と等しくなります。これは、ドメイン名が存在しないことが考えられます。 、または利用可能なファイルがないなどのその他の理由 記述子

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});
同じドメイン名が複数の異なる IP に対応する場合があります。これは、 options = {all: true}

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});
[dns.lookupService(address, port, callback)]

と設定することで取得できます。 lookup に対応して、lookupService() メソッドは次の処理を実行します。 IP アドレスからのステップと、ポートからドメイン名への逆解決

# このメソッドのコールバック関数のパラメータは (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

の各項目のタイプはレコード タイプによって異なります。エラーが発生した場合、パラメータ errError オブジェクト、err.code はエラー コード <pre class='brush:php;toolbar:false;'>var dns = require(&amp;#39;dns&amp;#39;); //IPV4 dns.resolve(&amp;#39;www.qq.com&amp;#39;,function(err,address){ console.log(address);//[ &amp;#39;125.39.240.113&amp;#39;, &amp;#39;61.135.157.156&amp;#39; ] }); //IPV6 dns.resolve(&amp;#39;www.qq.com&amp;#39;,&amp;#39;AAAA&amp;#39;,function(err,address){ console.log(address);//[ &amp;#39;240e:e1:8100:28::2:16&amp;#39; ] }); //别名 dns.resolve(&amp;#39;www.qq.com&amp;#39;,&amp;#39;CNAME&amp;#39;,function(err,address){ console.log(address);//undefined });</pre>[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 サイトの他の関連記事を参照してください。

声明
この記事は博客园で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
舞台裏:JavaScriptをパワーする言語は何ですか?舞台裏:JavaScriptをパワーする言語は何ですか?Apr 28, 2025 am 12:01 AM

JavaScriptはブラウザとnode.js環境で実行され、JavaScriptエンジンに依存してコードを解析および実行します。 1)解析段階で抽象的構文ツリー(AST)を生成します。 2)ASTをコンパイル段階のバイトコードまたはマシンコードに変換します。 3)実行段階でコンパイルされたコードを実行します。

PythonとJavaScriptの未来:傾向と予測PythonとJavaScriptの未来:傾向と予測Apr 27, 2025 am 12:21 AM

PythonとJavaScriptの将来の傾向には、1。Pythonが科学コンピューティングの分野での位置を統合し、AI、2。JavaScriptはWebテクノロジーの開発を促進します。どちらもそれぞれのフィールドでアプリケーションシナリオを拡大し続け、パフォーマンスをより多くのブレークスルーを行います。

Python vs. JavaScript:開発環境とツールPython vs. JavaScript:開発環境とツールApr 26, 2025 am 12:09 AM

開発環境におけるPythonとJavaScriptの両方の選択が重要です。 1)Pythonの開発環境には、Pycharm、Jupyternotebook、Anacondaが含まれます。これらは、データサイエンスと迅速なプロトタイピングに適しています。 2)JavaScriptの開発環境には、フロントエンドおよびバックエンド開発に適したnode.js、vscode、およびwebpackが含まれます。プロジェクトのニーズに応じて適切なツールを選択すると、開発効率とプロジェクトの成功率が向上する可能性があります。

JavaScriptはCで書かれていますか?証拠を調べるJavaScriptはCで書かれていますか?証拠を調べるApr 25, 2025 am 12:15 AM

はい、JavaScriptのエンジンコアはCで記述されています。1)C言語は、JavaScriptエンジンの開発に適した効率的なパフォーマンスと基礎となる制御を提供します。 2)V8エンジンを例にとると、そのコアはCで記述され、Cの効率とオブジェクト指向の特性を組み合わせて書かれています。3)JavaScriptエンジンの作業原理には、解析、コンパイル、実行が含まれ、C言語はこれらのプロセスで重要な役割を果たします。

JavaScriptの役割:WebをインタラクティブでダイナミックにするJavaScriptの役割:WebをインタラクティブでダイナミックにするApr 24, 2025 am 12:12 AM

JavaScriptは、Webページのインタラクティブ性とダイナミズムを向上させるため、現代のWebサイトの中心にあります。 1)ページを更新せずにコンテンツを変更できます。2)Domapiを介してWebページを操作する、3)アニメーションやドラッグアンドドロップなどの複雑なインタラクティブ効果、4)ユーザーエクスペリエンスを改善するためのパフォーマンスとベストプラクティスを最適化します。

CおよびJavaScript:接続が説明しましたCおよびJavaScript:接続が説明しましたApr 23, 2025 am 12:07 AM

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

Webサイトからアプリまで:JavaScriptの多様なアプリケーションWebサイトからアプリまで:JavaScriptの多様なアプリケーションApr 22, 2025 am 12:02 AM

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Python vs. JavaScript:ユースケースとアプリケーションと比較されますPython vs. JavaScript:ユースケースとアプリケーションと比較されますApr 21, 2025 am 12:01 AM

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン