この記事では、Node.js の DNS モジュールの関連知識ポイントを詳細に紹介し、関連するサンプル コードを共有します。興味のある友人は参照してください。
1. DNS
Node.jsでは、ドメイン名検索とドメイン名解決処理を実装するDNSモジュールが提供されています。
DNS モジュールでは、3 つの主要なメソッドと一連の便利なメソッドが提供されています。
resolve メソッド: ドメイン名を DNS レコードのセットに解決するために使用されます。
リバースメソッド: IP アドレスをドメイン名のセットに変換するために使用されます。
lookup メソッド: ドメイン名を IP アドレスに変換するために使用されます。
DNS モジュールの残りの便利なメソッドは、resolve メソッドの便利な形式です。
2. ドメイン名を DNS レコードに解決するには、resolve メソッドを使用します
`DNS.resolve(domain, [rrtype], callback(err, address){...})`
domain パラメータは、解決する必要があるドメイン名を指定するために使用される文字列です。これにはサブドメイン名を含めることができます。
rrtyprパラメータは取得するレコードタイプを指定する文字列です。指定できるレコードタイプは以下の通りです。
A、このパラメーター値は、レコード タイプが A の場合、レコードは IPv4 アドレスをドメイン名にマップします。
AAAA、レコード タイプが AAAA の場合、このレコードは IPv6 アドレスをドメイン名にマップします。
CNAME、レコード タイプが CNAME の場合、レコードがドメイン名のエイリアス レコードであることを意味します。たとえば、www.example.com ドメイン名レコードは example.com ドメインのエイリアス レコードである可能性があります。ネームレコード。
MX、MX レコードは、SMTP を使用するドメイン内のメール サーバーを指します。たとえば、person@domain.com の電子メール アドレスに電子メールを送信する場合、domain.com ドメインの MX レコードは次のようになります。メール送信時に保存されるアドレスです。
TXT、TXTレコードはドメイン名に付加される説明レコードです。
SRV、SRV レコードは、特定のドメインで利用可能なすべてのサービスの情報を提供するために使用されます。
PTR、PTR レコードは、ドメイン名を IPv4 アドレスにマッピングする逆アドレス解決に使用されます。
NS、NS (ネームサーバー) レコードは、ドメイン名を解決する DNS サーバーを指定するために使用されるドメイン ネーム サーバー レコードです。
コールバック関数には 2 つのパラメーターがあります。 err は、ドメイン名解決が失敗したときにトリガーされるエラー オブジェクトです。 address パラメーターは、取得されたすべての DNS レコードを格納する配列です。
3.resolveメソッドにカスタマイズされた様々な便利なメソッド
- DNS.resolve4(domain, callback)、IPv4アドレスを取得
- DNS.resolve6(domain, callback)、IPv6アドレスを取得
- DNS.resolveTxt(domain, callback)、TXT レコード、ドメイン名に添付された説明レコードの取得
- DNS.resolveSrv (ドメイン, コールバック)、SRV レコード、サービス レコードを取得
- DNS.resolveNs(domain, callback)、NS レコード、ドメイン ネーム サーバー レコードを取得
- DNS.resolveCname(domain, callback)、エイリアス レコードを取得
resolve4 メソッドまたはsolve6 メソッドを使用する場合、コールバック パラメーターにより取得されたすべての IPv4 アドレスまたは IPv6 アドレスがコールバック関数のアドレス パラメーター値の配列に格納されます。価値。したがって、DNS モジュールは、最初に検出された IPv4 アドレスまたは IPv6 アドレスを取得するための検索メソッドを提供します
`DNS.lookup(domain, [family], callback(err, accounts, family){...}) `
- ドメイン パラメーターは、解決する必要があるドメイン名を指定するために使用される文字列です。ファミリー パラメーターの値は、取得する必要がある IP アドレスの種類を指定するために使用されます。は 4 または 6 です。デフォルトのパラメーター値は null です。これは、IPv4 と IPv6 の両方を取得できることを意味します
- コールバック関数の err パラメーター値は、ドメイン名の取得が失敗したときにトリガーされるエラー オブジェクトです。存在するかクエリが失敗した場合、エラー オブジェクトのコード属性は ENOENT です
- アドレス パラメータの値は取得された IP アドレスである文字列です
- family パラメータの値が 4 の場合、それは次のことを表しますIPv4 アドレス、6 の場合は IPv6 アドレスを表します。
- 5. リバースメソッドを使用して IP アドレスを逆解決します
`DNS .reverse(ip, callback(err, Domains){...})`
ip パラメータ値は文字列で、解析する必要がある IP アドレスを指定するために使用されます
- コールバック関数は逆解析です アドレスが失敗した後のエラー オブジェクト
- domains パラメータ値は、取得されたすべてのドメイン名を格納する配列です
- 6 DNS モジュール内のさまざまなエラー コード
ENODATA: DNSサーバーはデータなしでクエリ結果を返します
EFORMERR: DNS サーバーは、クライアントがクエリのリクエスト時に不正な形式のクエリ パラメーターを使用したことを検出しました
ESERVFAIL: DNS サーバーはクエリ操作の実行に失敗しました
ENOTFOUND: ドメイン名が見つかりませんでした
ENOTIMP: DNS サーバー クライアントによって要求されたクエリ操作を実行できません
EREFUSED: DNS サーバーがクエリ操作の実行を拒否しました
EBADQUERY: DNS クエリの形式が正しくありません
EBADNAME: ドメイン名の形式は間違っていないebadfamily:サポートされていないIPアドレスタイプ
ebadResp:DNS返信フォーマットエラー
エコーフ化:DNSサーバーとの接続を確立できない
eetimeOut:DNSサーバーとの接続を確立するためのタイムアウト
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); // 邮件交换服务器记录 // [ { 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); // 服务记录 // [] }); dns.resolveNs('www.github.com', (err, addresses) => { console.log(addresses); // 域名服务器记录 // [ '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) => { // 查询IP地址 // address,查询到的地址 // 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' ] });
上記は私が皆さんのためにまとめたもので、将来皆さんのお役に立てれば幸いです。
関連記事:
vue-router関連の基礎知識と動作原理以上がNode.js で DNS モジュールを使用する方法 (詳細なチュートリアル)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

Pythonはデータサイエンスや機械学習により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、簡潔な構文とリッチライブラリエコシステムで知られており、データ分析とWeb開発に適しています。 2。JavaScriptは、フロントエンド開発の中核です。 node.jsはサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。

JavaScriptは、最新のブラウザにすでに組み込まれているため、インストールを必要としません。開始するには、テキストエディターとブラウザのみが必要です。 1)ブラウザ環境では、タグを介してHTMLファイルを埋め込んで実行します。 2)node.js環境では、node.jsをダウンロードしてインストールした後、コマンドラインを介してJavaScriptファイルを実行します。

Quartzタイマーを使用してタスクをスケジュールする場合、Quartzでタスク通知を事前に送信する方法、タスクの実行時間はCron式によって設定されます。今...


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

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

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