この記事では、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メソッドにカスタマイズされた様々な便利なメソッド
resolve4 メソッドまたはsolve6 メソッドを使用する場合、コールバック パラメーターにより取得されたすべての IPv4 アドレスまたは IPv6 アドレスがコールバック関数のアドレス パラメーター値の配列に格納されます。価値。したがって、DNS モジュールは、最初に検出された IPv4 アドレスまたは IPv6 アドレスを取得するための検索メソッドを提供します
`DNS.lookup(domain, [family], callback(err, accounts, family){...}) `
`DNS .reverse(ip, callback(err, Domains){...})`
ip パラメータ値は文字列で、解析する必要がある IP アドレスを指定するために使用されます
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 サイトの他の関連記事を参照してください。