node dns
1.0.0
Proyek ini merupakan implementasi protokol DNS di Node.js dan TypeScript untuk tujuan pendidikan. Jika Anda tertarik untuk mempelajari cara kerja DNS atau bertanya-tanya bagaimana Anda dapat mengimplementasikan penyelesai DNS, server nama, atau bahkan protokol jaringan di Node.js, ini adalah proyek yang tepat untuk Anda pelajari.
www.instagram.com
dari DNS publik Google Contoh ini menunjukkan cara membuat kueri DNS untuk www.instagram.com
dan mengirimkannya ke server DNS publik Google.
async function lookup ( query : Buffer ) : Promise < Buffer > {
return new Promise ( ( resolve , reject ) => {
const client = dgram . createSocket ( 'udp4' ) ;
client . on ( 'error' , reject ) ;
client . on ( 'message' , ( message ) => {
client . close ( ) ;
return resolve ( message ) ;
} ) ;
client . on ( 'listening' , ( ) => {
const address = client . address ( ) ;
console . log ( `Listening on ${ address . address } : ${ address . port } ` ) ;
client . send ( query , 53 , '8.8.8.8' , ( err , bytes ) => {
if ( err ) {
return reject ( err ) ;
}
console . log ( `Sent ${ bytes } bytes to 8.8.8.8:53` ) ;
} ) ;
} ) ;
client . bind ( ) ;
} ) ;
}
async function main ( ) {
const builder = new DNSMessageBuilder ( ) ;
const message = builder
. withHeader (
new DNSMessageHeader ( {
id : 0x01 ,
isQuery : true ,
recursionDesired : true ,
} )
)
. withQuestions ( [
new QuestionEntry ( {
qname : 'www.instagram.com' ,
qclass : QCLASS . IN ,
qtype : QTYPE . AAAA ,
} ) ,
] )
. build ( ) ;
const encoder = new DNSEncoder ( message ) ;
const buffer = encoder . encode ( ) ;
const responseBuffer = await lookup ( buffer ) ;
const decoder = new DNSDecoder ( responseBuffer ) ;
const responseMessage = decoder . decode ( ) ;
console . log ( 'Response:' , responseMessage ) ;
}
main ( ) ;
Cara terbaik untuk mempelajari cara menggunakan proyek ini adalah dengan mempelajari tesnya. Anda dapat menjalankan pengujian dengan menjalankan npm run test
.