问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

nodejs能获取域名来结合泛解析吗

发布网友 发布时间:2022-05-14 01:18

我来回答

2个回答

懂视网 时间:2022-05-16 04:47

前面的话

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

工作原理

  打开浏览器,在上方地址栏输入网址的那一刻,这个回车按了之后,发生了很多事情。首先,计算机只懂0和1,也就是说人类的字母网址计算机是不懂的,它只认识IP地址,如果是IPV4那就是4组8位的二进制数字。为了人类方便,需要有一个把网址翻译成IP地址的服务,就是DNS

  DNS整个获取过程是被层层缓存的

  1、浏览器搜索自身的DNS缓存

  浏览器DNS缓存的时间跟DNS服务器返回的TTL值无关。

  浏览器在获取网站域名的实际IP地址后会对其IP进行缓存,减少网络请求的损耗。每种浏览器都有一个固定的DNS缓存时间,其中Chrome的过期时间是1分钟,在这个期限内不会重新请求DNS

  Chrome浏览器看本身的DNS缓存时间比较方便,在地址栏输入

chrome://net-internals/#dns

  2、搜索操作系统自身的DNS缓存

  3、读取本地的HOST文件,Windows下路径一般为

c:WindowsSystem32driversetchosts

  4、向宽带运营商ISP发起一个DNS的系统调用,ISP服务器查看本身缓存

  5、如果还没有找到,ISP服务器会代替本地计算机发起一个迭代DNS解析的请求

  6、如果仍然不成功,则解析失败

本地解析

  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);//nullconsole.log(address);//218.11.2.249console.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);//nullconsole.log(hostname);//baiconsole.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 中每一项的类型都取决于记录类型。出错时,参数errError 对象,err.code是错误代码

var dns = require('dns');//IPV4dns.resolve('www.qq.com',function(err,address){
 console.log(address);//[ '125.39.240.113', '61.135.157.156' ]});//IPV6dns.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'});

热心网友 时间:2022-05-16 01:55

研究了一下,要想程序支持泛域名解析,首先需要配置你的域名DNS记录,把 *.yourdomain.com的A记录指向到服务器的ip地址, 或者把 *.yourdomain.com 记录转发到指定URL, 这样所有的二级域名都会发到你的程序中供你处理
然后才在程序中取requset信息,然后路由到对应的地址
不过现在国内的服务商貌似很少有提供URL转发和泛域名解析的功能
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
中堡村村民公约 中港镇中港镇各村情况简介 中堡溪村人口卫生 中堡溪村村情概况 小时代3刺金时代是电影还是电视剧 江苏一氧化二氮气体厂家 原神悬浮小岛怎么上去 原神天衡山天空城上去方法 原神天空城怎么开 天空城进入方法及位置攻略 手机怎么看相册的原图 如何查看微信中图片的原图? Selenium Grid 如何在java代码中获取到node的IP? 因为代码需要所以需要知道当前执行代码的机器的IP! 开启自己电脑的node服务器,别的电脑通过自己电脑ip地址访问? node怎么获取客户端IP 方舟骇鸟吃什么饲料 方舟生存进化飞行坐骑哪个最好 给父亲送什么礼物比较合适? 马上父亲节了,你们都给父亲准备什么礼物呢? 父亲节应给父亲准备什么礼物? 总睡不着觉,在就半夜总醒,在睡就睡不着了,总做梦,怎么回事? 2020年461理科可以报二本公费师范生吗? 二本免费师范大学有哪几个 免费师范生有没有二本 请问今年有二本免费师范大学吗 免费师范生二本能上吗? 2024年高考招公费师范生吗 二本有没有免费师范生 二本可以读师范学校吗 刚到二本线的怎样报免费师范生? 小雨伞保险上的增多多增额终‎身寿险有人买过吗? 小雨伞增多多增额终身寿险是长期的还是短期的? 二本学生能不能填报农村免费医学生和公费师范生 我想真空包装,哪里可以做啊! 为什么一搜别人都自动添加上了? 哪里可以把东西真空包装起来的? 成都哪有地方可以真空包装 手机联系人里为什么会无端添加 孝感哪里可以封真空包装袋 为什么一搜别人都自动添加上了? 如何委婉地说别人很胖 说别人胖的幽默句子 如何委婉的形容一个女人长的胖 键盘上的各个键有什么功能,那些组合键又有什么功能 夜市人生剧情介绍 别字是什么意思? 别字。的意思 有哪些成语中有别字,分别是什么意思? 牌子是什么意思 想去买个手机号码(换个新的),不知道需要注意哪些问题啊?谢谢啊~! 怎么拆全自动洗衣机减速器 2020年江西省乐平市中考分数会比去年下降吗? 海尔全自动洗衣机型号XQB50-10BP怎么拆减速器怎么拆