nodeJS之域名DNS

前面的话

  本文将详细介绍域名解析模块DNS

本地解析

  dns模块包含两个类型的函数,其中一种是使用底层操作系统工具进行域名解析的函数,并不须要进行网络通信。这类函数只有一个:dns.lookup()

【dns.lookup(hostname[, options], callback)】

  该方法将域名(比如‘cnblogs.com‘)解析为第一条找到的记录 A (IPV4)或 AAAA(IPV6)。参数 options可以是一个对象或整数。如果没有提供 options,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,表示 address 家族(不一定是之前传入 lookup 的值)。出错时,参数 err 是 Error 对象,err.code是错误代码

  [注意]err.code等于‘ENOENT‘,可能是因为域名不存在,还有可能是其他原因,如没有可用文件描述符

var dns = require(‘dns‘);
dns.lookup(‘www.cnblogs.com‘, function(err, address, family){
    console.log(err);//null
    console.log(address);//218.11.2.249
    console.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)。 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);//null
    console.log(hostname);//bai
    console.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‘);
//IPV4
dns.resolve(‘www.qq.com‘,function(err,address){
    console.log(address);//[ ‘125.39.240.113‘, ‘61.135.157.156‘ ]
});

//IPV6
dns.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, hostnames)。出错时,参数err 是 Error 对象,err.code是错误代码

var dns = require(‘dns‘);
dns.reverse(‘114.114.114.114‘,function(err,hostnames){
    console.log(hostnames);//‘public1.114dns.com‘
});
时间: 2024-11-10 13:12:26

nodeJS之域名DNS的相关文章

通过DOS命令nslookup查域名DNS服务器

怎样查询域名的DNS服务器?这里介绍一种通过本地DOS命令就能查询的方法. 在使用的操作系统里进入MS-DOS(命令提示行)界面 1.输入 nslookup 回车 图中Address是本地使用的DNS,可以通过本地连接修改. 2.输入 set type=ns 回车 3.输入域名(不带WWW的),如:baidu.com 回车 看到列出至少一个 nameserver = x.x.x.x 那就是域名现在使用的DNS服务器了. 查询域名DNS服务器的更值得推荐的方法是,使用卡卡网DNS查询工具,这是一个

减少域名DNS解析时间将网页加载速度提升新层次-DNS缓存/预读取/拆分域名

我们知道在用户访问网站时先得经过域名DNS解析这一过程,可能很多人对于DNS解析时间平常并没有太在意.性能稳定.响应时间快的DNS域名解析服务与不稳定.响应过慢的DNS的域名解析时间可能相差1秒,而对于网站存在过多的域名解析请求,这个时间积累起来就非常地多了. 本篇文章就来分享一下通过优化网站DNS域名解析,减少域名DNS解析时间,从而让网站在原来的访问速度的前提下继续实现新的飞跃.想要了解更多的有关于网站和服务器优化加速的方法,可以试试: 1.加快SSL:Nginx和Apache上安装SPDY

服务商域名DNS大全

服务商域名DNS:  服务商 DNS服务器   常用DNS: 英文域名DNS 主DNS名称:ns11.xincache.com 辅DNS名称:ns12.xincache.com 说明:新网共有5组DNS,对应数字编号分别为11/12:13/14:15/16:17/18:19/20: 备用DNS: 主DNS名称:ns.xinnetdns.com 辅DNS名称:ns.xinnet.cn  中文域名DNS 主DNS名称:dns-ch.xinnet.com 辅DNS名称:dns-ch2.xinnet.c

域名dns查询_查询域名dns ip地址

最近有部分用户反应管理的天气网站打开偏慢,决定从每一个可以出现的问题点查起!首先就是dns! 通过360dns监控对比发现,同一组域名,15tianqi.cn的dns响应时间比较长,在300-700间,而其它的哉名响应则20-300间,发现dsn有一定的问题,接下来分析dns 首先要知道域名dns服务器的IP,在这里和大家分享查询域名dns ip地址: 域名dns查询方法: 1.打开cmd.exe (运行 输入 cmd 回车就可以出来了) 2.输入 nslookup 回车 3.输入 set ty

TTL值的含义以及与域名DNS TTL值的区别

TTL值的含义以及与域名TTL值的区别 本文来源于时光漂流瓶 http://www.9usb.net , 原文地址: http://www.9usb.net/201004/ttl-yuyuming-ttl.html TTL是 Time To Live的缩写,该字段指定IP包被路由器丢弃之前允许通过的最大网段数量.TTL是IPv4包头的一个8 bit字段. 什么是TTL?TTL是IP协议包中的一个值,指定数据报被路由器丢弃之前允许通过的网段数量.在很多情况下数据包在一定时间内不能被传递到目的地.解

linux-Apache权限限制IP端口域名+DNS域名解析

高兴原创,每日手记 先安装DNS,bind包 rpm -ivh bind-*** 安装完成,修改DNS配置文件 vim /var/named/chroot/etc/named.conf   进入主配置文件 写入下面配置信息 options    { directory"/var/named" }; 配置文件地址 zone    "****.com"    in    { type master file "****.com.zone" } ; 进

域名DNS服务器遭攻击,我们怎么办?

昨天国内根域名服务器遭攻击,国内部分用户不能访问COM域名,这是因为域名服务器被攻击篡改,将域名解析的IP地址恶意修改成其他IP,这样就造成了域名无法正常访问.举个例子,电脑技术网的域名是www.it892.com,这个域名并不是网站的真实地址,只是一个引路人,所有网站只有IP地址才是真实地址,然后服务器根据引路人来将用户引导到真实地址,用户才可以看到网站,那么根域名服务器被攻击了,就等于引路人的公司出问题了,引路人拿的都是错误的地址,所以用户访问网站就被引导到错误的地址去了,原理就是这样. 其

vps+tomcat+域名+DNS流程了解

太晚了,只有手机.只能大致写个流程. 目的,输入域名能够访问我们的网站主页. 1.vps服务器端架好tomcat,并且server.xml里配置好(1.去掉8080端口号,2.去掉ip地址或者说localhost) 2.购买注册域名,用DNS服务进行域名解析,这个是现在客服端角度看,你给我一个域名,我要进行解析,帮你在茫茫服务器主机中,找到对应ip主机.!!第一列的主机名或者主机记录就是对应完整域名"主机名.三级域名.二级域名.顶级域名"格式的第一位,@空解析,其实就是主机名为空,输入

免备案\免审批号\廉价教你构建自己的网站\域名DNS解析\超实用的端口映射转发

前段时间写书的时候,涉及到一个关于服务器构建的章节,需要涉及很多范围,特此拿一篇最简单的来分享一下给大家,希望能帮得上某些人 是不是常常为没有自己的网站或者域名而烦恼?或者是有自己的服务器却没有域名,申请域名备案去有关部门盖章是不是特别麻烦?今天教你们一个简单的办法跳过这些繁 琐的流程,轻松拥有自己的域名.网站! 本篇就以 Tomcat .Net123 为例为大家说说配制方法 准备工作:一个tomcat 和一个 net123客户端: 首先需要写一个测试项目 Java Web ,在通过开发工具编译