Maison > Article > interface Web > Comment utiliser le module DNS dans Node.js (tutoriel détaillé)
Cet article vous donne une introduction détaillée aux points de connaissances pertinents du module DNS dans Node.js, ainsi que l'exemple de code pertinent. Les amis intéressés peuvent s'y référer.
1. DNS
Dans Node.js, un module DNS est fourni pour implémenter le traitement de recherche de nom de domaine et de résolution de nom de domaine.
Dans le module DNS, trois méthodes principales et une série de méthodes pratiques sont fournies.
méthode de résolution : utilisée pour résoudre un nom de domaine en un ensemble d'enregistrements DNS.
méthode inverse : Utilisée pour convertir une adresse IP en un ensemble de noms de domaine.
méthode de recherche : utilisée pour convertir un nom de domaine en adresse IP.
Les méthodes pratiques restantes du module DNS sont une forme pratique de la méthode de résolution.
2. Utilisez la méthode de résolution pour résoudre le nom de domaine en un enregistrement DNS
`DNS.resolve( domain, [rrtype ], callback(err, address){...})`
Le paramètre de domaine est une chaîne, utilisée pour spécifier le nom de domaine qui doit être résolu et peut inclure des noms de sous-domaines.
Le paramètre rrtypr est une chaîne utilisée pour spécifier le type d'enregistrement à obtenir. Les types d'enregistrement qui peuvent être spécifiés sont les suivants.
A, cette valeur de paramètre est la valeur par défaut. Lorsque le type d'enregistrement est A, l'enregistrement mappe une adresse IPv4 à un nom de domaine.
AAAA, lorsque le type d'enregistrement est AAAA, cet enregistrement mappe une adresse IPv6 à un nom de domaine.
CNAME, lorsque le type d'enregistrement est CNAME, cela signifie que l'enregistrement est un enregistrement d'alias d'un nom de domaine. Par exemple, un enregistrement de nom de domaine www.example.com peut être un. Enregistrement de nom de domaine exemple.com.
MX, l'enregistrement MX pointe vers un serveur de messagerie dans un domaine qui utilise SMTP. Par exemple, lorsque vous souhaitez envoyer un e-mail à l'adresse e-mail personne@domain.com, le MX du domaine domain.com L'enregistrement contient l'adresse du serveur de messagerie à partir duquel l'e-mail a été envoyé.
TXT, l'enregistrement TXT est un enregistrement de description attaché au nom de domaine.
SRV, les enregistrements SRV sont utilisés pour fournir des informations sur tous les services disponibles dans un domaine spécifique.
PTR, l'enregistrement PTR est utilisé pour la résolution inversée d'adresse. Cet enregistrement mappe un nom de domaine à une adresse IPv4.
Les enregistrements NS, NS (Name Server) sont des enregistrements de serveur de noms de domaine, utilisés pour spécifier quel serveur DNS résout le nom de domaine.
La fonction de rappel a deux paramètres. err est l'objet d'erreur déclenché lorsque la résolution du nom de domaine échoue. Le paramètre adresses est un tableau qui stocke tous les enregistrements DNS obtenus.
3. Diverses méthodes pratiques personnalisées pour la méthode de résolution
DNS.resolve4(domain, callback), Get l'adresse IPv4
DNS.resolve6(domaine, rappel), obtenez l'adresse IPv6
DNS.resolveMx(domaine, rappel), obtenez les enregistrements MX, les enregistrements du serveur d'échange de courrier
DNS.resolveTxt (domaine, rappel), obtenir les enregistrements TXT, les enregistrements de description attachés au nom de domaine
DNS. solveSrv (domaine, rappel), obtenez les enregistrements SRV, les enregistrements de service
DNS.resolveNs (domaine, rappel), obtenez les enregistrements NS, les enregistrements du serveur de noms de domaine
DNS.resolveCname(domain, callback), obtenez l'enregistrement d'alias
Utilisez la méthode de recherche pour interroger l'adresse IP
Lors de l'utilisation de la méthode solve4 ou de la méthode solve6, car le tableau de valeurs du paramètre d'adresses dans la fonction de rappel de valeur de paramètre de rappel stocke toutes les adresses IPv4 ou IPv6 obtenues. Par conséquent, le module DNS fournit une méthode de recherche pour obtenir la première adresse IPv4 ou IPv6 découverte
`DNS.lookup(domain, [family], callback(err, adresses, family) {.. .})`
Le paramètre de domaine est une chaîne, utilisée pour spécifier le nom de domaine qui doit être résolu
La valeur du paramètre de famille est une valeur entière, utilisée pour spécifier le type d'adresse IP à obtenir. La valeur du paramètre qui peut être spécifiée est 4 ou 6. La valeur du paramètre par défaut est nulle, ce qui signifie qu'IPv4 et IPv6 peuvent être obtenus
La valeur du paramètre err de la fonction de rappel est l'objet d'erreur déclenché lorsque l'adresse ne parvient pas à être obtenue. Lorsque le nom de domaine n'existe pas ou que la requête échoue, la valeur de l'attribut de code de l'objet d'erreur est. ENOENT
La valeur du paramètre d'adresses est une chaîne, qui est l'adresse IP obtenue
Lorsque la valeur du paramètre de famille est 4, elle est. représenté comme une adresse IPv4. Lorsqu'il vaut 6, il est représenté comme une adresse IPv6.
5. Utilisez la méthode inverse pour résoudre inversement une adresse IP
Dans le module DNS, utilisez la méthode inverse pour inverser une adresse IP. La direction se résout en un ensemble de noms de domaine liés à l'adresse IP
`DNS.reverse(ip, callback(err, domains){...})`
La valeur du paramètre ip est une chaîne, utilisée pour spécifier l'adresse IP qui doit être résolue
L'erreur de la fonction de rappel est l'objet d'erreur après l'échec de l'adresse de résolution inverse
La valeur du paramètre domains est un tableau qui stocke tous les noms de domaine obtenus
6. codes d'erreur dans le module DNS
La valeur du paramètre err est l'objet d'erreur déclenché lors de l'exécution de diverses opérations d'analyse ou d'analyse inverse. Vous pouvez déterminer quelle erreur s'est produite en fonction de la valeur de l'attribut de code du. objet d'erreur, c'est-à-dire le code d'erreur déclenché
ENODATA : Le serveur DNS a renvoyé un résultat de requête sans données
EFORMERR : Le serveur DNS a constaté que le client a utilisé des paramètres de requête mal formés lors de la demande d'une requête
ESERVFAIL : Le serveur DNS n'a pas réussi à effectuer l'opération de requête
ENOTFOUND : Aucun nom de domaine trouvé
ENOTIMP : Le serveur DNS ne peut pas effectuer l'opération de requête demandée par le client
EREFUSED : Le serveur DNS a refusé d'effectuer l'opération de requête
EBADQUERY : Requête DNS mal formée
EBADNAME : Format du nom de domaine est incorrect
EBADFAMILY : Type d'adresse IP non pris en charge
EBADRESP : réponse DNS mal formée
ECONNREFUSED : Impossible d'établir la connexion au serveur DNS
ETIMEOUT : délai d'attente pour établir la connexion au serveur DNS
EEOF : bas du fichier atteint
EFILE : Échec de la lecture du fichier
ENOMEM : Pas assez d'espace mémoire
EDESTRUCTION : Chaîne déjà détruite
EBADSTR : Erreur de format de chaîne
EBADFLAGS : indicateur de jugement incorrect spécifié
ENONAME : Le le nom d'hôte spécifié n'est pas au format numérique
EBADHINTS : l'indicateur d'invite spécifié n'est pas valide
ENOTINITIALIZED : la bibliothèque de classes c-ares n'a pas été initialisée été terminé
ELOADIPHLPAPI : Une erreur s'est déclenchée lors du chargement de iphlpapi.dll
EADDREGETNETWORKPARAMS : fonction GetNetworkParams introuvable
ECANCELÉ : Opération de requête DNS annulée
Utilisation de base du module 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' ] });Ce qui précède est ce que j'ai compilé pour vous. J'espère qu'il vous sera utile à l'avenir. Articles connexes :
Connaissances de base et principes de fonctionnement de vue-router
Exemple de post axios soumettant des données de formulaire
Comment utiliser axios dans le composant vue
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!