NodeJSにおけるドメイン名DNSの詳細説明
前の言葉
この記事では、ドメイン名解決モジュール DNS について詳しく紹介します
動作原理
ブラウザを開いて上のアドレスバーに URL を入力し、Enter キーを押した瞬間に、多くのことが起こります。まず、コンピューターは 0 と 1 しか理解できません。つまり、コンピューターは人間のアルファベットのアドレスを理解できません。IPv4 の場合、それは 8 ビットの 2 進数の 4 つのグループです。人間の便宜のためには、URL を IP アドレスに変換するサービスが必要です、それが DNS です
DNS 取得プロセス全体がレイヤーごとにキャッシュされます

1. ブラウザは独自の DNS キャッシュを検索します
ブラウザ DNSキャッシュ時間は、DNS サーバーから返される TTL 値とは関係ありません。
ウェブサイトのドメイン名の実際のIPアドレスを取得した後、ブラウザはネットワークリクエストの損失を減らすためにそのIPをキャッシュします。各ブラウザには固定の DNS キャッシュ時間があり、Chrome の有効期限は 1 分です。この期間中、DNS は再リクエストされません
Chrome ブラウザは自分の DNS キャッシュ時間を確認し、それを入力する方が便利です。アドレスバー
chrome://net-internals/#dns

2. オペレーティングシステム独自の DNS キャッシュを検索します
3. ローカル HOST ファイルを読み取ります。Windows でのパスは通常
c:\Windows\System32\drivers\etc\hosts

4. への DNS を開始します。ブロードバンド オペレーターの ISP システム コール、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、family)が含まれます。 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);//nullconsole.log(address);//218.11.2.249console.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, hostname, service) です。ホスト名とサービスはどちらも文字列です (「localhost」や「http」など)。エラーが発生した場合、パラメーター err は Error オブジェクト、err.code はエラー コードです
var dns = require('dns'); dns.lookupService('127.0.0.1',80,function(err, hostname, service){ console.log(err);//nullconsole.log(hostname);//baiconsole.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, addresses)
. 其中 addresses
中每一项的类型都取决于记录类型。出错时,参数err
是 Error
对象,err.code
はエラーコードです
var dns = require('dns');//IPV4dns.resolve('www.qq.com',function(err,address){ console.log(address);//[ '125.39.240.113', '61.135.157.156' ]});//IPV6dns.resolve('www.qq.com','AAAA',function(err,address){ console.log(address);//[ '240e:e1:8100:28::2:16' ]});//别名dns.resolve('www.qq.com','CNAME',function(err,address){ console.log(address);//undefined});
【dns.resolve4(hostname, callback)】
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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











Node.js と Tomcat の主な違いは次のとおりです。 ランタイム: Node.js は JavaScript ランタイムに基づいていますが、Tomcat は Java サーブレット コンテナです。 I/O モデル: Node.js は非同期ノンブロッキング モデルを使用しますが、Tomcat は同期ブロッキング モデルです。同時実行処理: Node.js はイベント ループを通じて同時実行を処理しますが、Tomcat はスレッド プールを使用します。アプリケーション シナリオ: Node.js はリアルタイム、データ集約型、同時実行性の高いアプリケーションに適しており、Tomcat は従来の Java Web アプリケーションに適しています。

Node.js はサーバー側の JavaScript ランタイムであり、Vue.js は対話型ユーザー インターフェイスを作成するためのクライアント側の JavaScript フレームワークです。 Node.js はバックエンド サービス API 開発やデータ処理などのサーバー側開発に使用され、Vue.js はシングルページ アプリケーションや応答性の高いユーザー インターフェイスなどのクライアント側開発に使用されます。

Node.js は、高いパフォーマンス、スケーラビリティ、クロスプラットフォーム サポート、豊富なエコシステム、開発の容易さなどの機能を備えているため、バックエンド フレームワークとして使用できます。

Node.js インストール ディレクトリには、npm と npm.cmd という 2 つの npm 関連ファイルがあります。違いは次のとおりです。拡張子が異なります。npm は実行可能ファイルで、npm.cmd はコマンド ウィンドウのショートカットです。 Windows ユーザー: npm.cmd はコマンド プロンプトから使用できますが、npm はコマンド ラインからのみ実行できます。互換性: npm.cmd は Windows システムに固有ですが、npm はクロスプラットフォームで使用できます。使用上の推奨事項: Windows ユーザーは npm.cmd を使用し、他のオペレーティング システムは npm を使用します。

はい、Node.js はバックエンド開発言語です。これは、サーバー側のビジネス ロジックの処理、データベース接続の管理、API の提供などのバックエンド開発に使用されます。

Node.js には次のグローバル変数が存在します。 グローバル オブジェクト: グローバル コア モジュール: プロセス、コンソール、require ランタイム環境変数: __dirname、__filename、__line、__column 定数: unknown、null、NaN、Infinity、-Infinity

Node.js と Java の主な違いは、設計と機能です。 イベント駆動型とスレッド駆動型: Node.js はイベント駆動型で、Java はスレッド駆動型です。シングルスレッドとマルチスレッド: Node.js はシングルスレッドのイベント ループを使用し、Java はマルチスレッド アーキテクチャを使用します。ランタイム環境: Node.js は V8 JavaScript エンジン上で実行され、Java は JVM 上で実行されます。構文: Node.js は JavaScript 構文を使用し、Java は Java 構文を使用します。目的: Node.js は I/O 集中型のタスクに適しており、Java は大規模なエンタープライズ アプリケーションに適しています。

Node.js プロジェクトのサーバー デプロイメント手順: デプロイメント環境を準備します。サーバー アクセスの取得、Node.js のインストール、Git リポジトリのセットアップ。アプリケーションをビルドする: npm run build を使用して、デプロイ可能なコードと依存関係を生成します。コードをサーバーにアップロードします: Git またはファイル転送プロトコル経由。依存関係をインストールする: サーバーに SSH で接続し、npm install を使用してアプリケーションの依存関係をインストールします。アプリケーションを開始します。node Index.js などのコマンドを使用してアプリケーションを開始するか、pm2 などのプロセス マネージャーを使用します。リバース プロキシの構成 (オプション): Nginx や Apache などのリバース プロキシを使用して、トラフィックをアプリケーションにルーティングします。
