이번 글에서는 도메인 이름 확인 모듈 DNS에 대해 자세히 소개합니다
브라우저를 열고 위의 주소 표시줄에 URL을 입력하는 순간 Enter 키를 누른 후 많은 일이 일어났습니다. . 우선, 컴퓨터는 0과 1만 이해합니다. 즉, 컴퓨터는 사람의 알파벳 주소만 이해합니다. IPv4인 경우 8비트 이진수 4개 그룹입니다. 인간의 편의를 위해 URL을 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:\Windows\System32\drivers\etc\hosts
입니다. 4. DNS를 시작합니다. 광대역 사업자 ISP 시스템 호출을 통해 ISP 서버는 자체 캐시를 확인합니다
5. 아직 캐시를 찾지 못한 경우 ISP 서버는 로컬 컴퓨터를 대신하여 반복적인 DNS 확인 요청을 시작합니다
6. 여전히 실패하는 경우, 확인이 실패합니다
dns 모듈에는 두 가지 유형의 기능이 포함되어 있으며, 그 중 하나는 기본 운영 체제 도구를 사용하여 도메인 이름 확인을 수행하는 기능이며 네트워크 통신이 필요하지 않습니다. 그러한 함수는 단 하나뿐입니다: dns.lookup()
【dns.lookup(hostname[, options], callback)】
이 메서드는 도메인 이름(예: 'cnblogs.com')을 처음 발견한 레코드로 확인합니다. A(IPV4) 또는 AAAA(IPV6). 매개변수 옵션은 객체 또는 정수일 수 있습니다. 옵션이 제공되지 않으면 IP v4 및 v6 주소가 모두 허용됩니다. 옵션이 정수인 경우 4 또는 6이어야 합니다.
옵션 매개변수에는 다음 속성이 포함됩니다
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 매개변수는 IP v4 또는 v6 주소를 나타냅니다. family 매개변수는 4 또는 6으로, 주소 계열을 나타냅니다(이전에 조회에 전달된 값이 반드시 필요한 것은 아님). 오류가 발생하면 매개변수 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, 호스트 이름, 서비스)입니다. 호스트 이름과 서비스는 모두 문자열(예: 'localhost' 및 'http')입니다. 오류가 발생하면 매개변수 err은 오류 객체이고 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')을 확인합니다. 레코드 유형 Array를 지정하는 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');//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(호스트 이름, 콜백)】
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 주소를 가리키는 도메인 이름 배열을 반환하는 데 사용됩니다. IP 주소. 콜백 함수 매개변수(err, 호스트 이름). 오류가 발생하면 매개변수 err은 Error 객체이고 err.code는 오류 코드
var dns = require('dns'); dns.reverse('114.114.114.114',function(err,hostnames){ console.log(hostnames);//'public1.114dns.com'});
위 내용은 nodeJS의 도메인 이름 DNS에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!