1. DNS
在Node.js中,提供DNS模块,以实现域名查找及域名解析的处理。
- 在DNS模块中,提供了三个主方法及一系列便捷方法。
- resolve方法:用于将一个域名解析为一组DNS记录。
- reverse方法: 用于将IP地址转换为一组域名。
- lookup方法: 用于将一个域名转换成IP地址。
- DNS模块中的其余便捷方法均为resolve方法的一种便捷形式。
2. 使用resolve方法将域名解析为DNS记录
`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(Name Server)记录是域名服务器记录,用来指定该域名由哪个DNS服务器进行解析。
回调函数有两个参数,err是域名解析失败时触发的错误对象,addresses参数为一个数组,其中存放了所有获取到的DNS记录。
3. 为resolve方法定制的各种便捷方法
- DNS.resolve4(domain, callback),获取IPv4地址
- DNS.resolve6(domain, callback),获取IPv6地址
- DNS.resolveMx(domain, callback),获取MX记录,邮件交换服务器记录
- DNS.resolveTxt(domain, callback),获取TXT记录,域名附加的描述记录
- DNS.resolveSrv(domain, callback),获取SRV记录,服务记录
- DNS.resolveNs(domain, callback),获取NS记录,域名服务器记录
- DNS.resolveCname(domain, callback),获取别名记录
4. 使用lookup方法查询IP地址
当使用resolve4方法或者resolve6方法时,由于callback参数值回调函数中的addresses参数值数组中存放着所有获取到的IPv4地址或IPv6地址。因此DNS模块中提供了一个获取第一个被发现的IPv4地址或者IPv6地址的lookup方法
`DNS.lookup(domain, [family], callback(err, addresses, family){...})`
- domain参数为一个字符串,用于指定需要解析的域名
- family参数值为一个整数值,用于指定需要获取的IP地址类型,可指定的参数值为4或6,默认参数值为null,表示既可以获取IPv4,又可以获取IPv6
- 回调函数err参数值为获取地址失败时触发的错误对象,当域名不存在或查询失败时该错误对象的code属性值为ENOENT
- addresses参数值为一个字符串,为获取到的IP地址
- family参数值为4时,表示为一个IPv4地址,为6时,表示为一个IPv6地址。
5. 使用reverse方法反向解析IP地址
在DNS模块中,使用reverse方法将一个IP地址反向解析为一组与该IP地址绑定的域名
`DNS.reverse(ip, callback(err, domains){...})`
- ip参数值为一个字符串,用于指定需要解析的IP地址
- 回调函数的err为反向解析地址失败后的错误对象
- domains参数值为一个数组,存放了所有获取到的域名
6. DNS模块中的各种错误代码
err参数值为执行各种解析或反向解析操作时触发的错误对象,可根据该错误对象的code属性值,即触发的错误代号判断出发了什么错误
- ENODATA:DNS服务器返回一个没有数据的查询结果
- EFORMERR:DNS服务器发现客户端请求查询时使用了格式错误的查询参数
- ESERVFAIL:DNS服务器执行查询操作失败
- ENOTFOUND:未发现任何域名
- ENOTIMP:DNS服务器不能进行客户端所请求的查询操作
- EREFUSED:DNS服务器拒绝进行查询操作
- EBADQUERY:格式错误的DNS查询
- EBADNAME:域名格式错误
- EBADFAMILY:不支持的IP地址类型
- EBADRESP:DNS答复的格式错误
- ECONNREFUSED:不能建立与DNS服务器之间的连接
- ETIMEOUT:与DNS服务器之间建立连接超时
- EEOF:已到达文件底部
- EFILE:读取文件失败
- ENOMEM:没有足够的内存空间
- EDESTRUCTION:通道已经被销毁
- EBADSTR:字符串格式错误
- EBADFLAGS:指定了错误的判断标志
- ENONAME:指定的主机名不是数值格式的
- EBADHINTS:指定的提示标志无效
- ENOTINITIALIZED:c-ares类库初始化工作尚未完成
- ELOADIPHLPAPI:加载iphlpapi.dll时触发了一个错误
- EADDREGETNETWORKPARAMS:未发现GetNetworkParams函数
- ECANCELLED: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' ] });
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]