node dns
1.0.0
โครงการนี้เป็นการใช้โปรโตคอล DNS ใน Node.js และ Typescript เพื่อวัตถุประสงค์ทางการศึกษา หากคุณสนใจที่จะเรียนรู้วิธีการทำงานของ DNS หรือสงสัยว่าคุณสามารถใช้ตัวแก้ไข DNS, เนมเซิร์ฟเวอร์ หรือแม้แต่โปรโตคอลเครือข่ายใน Node.js ได้อย่างไร นี่เป็นโปรเจ็กต์ที่เหมาะสำหรับคุณในการศึกษา
www.instagram.com
จาก DNS สาธารณะของ Google ตัวอย่างนี้แสดงวิธีสร้างการสืบค้น DNS สำหรับ www.instagram.com
และส่งไปยังเซิร์ฟเวอร์ DNS สาธารณะของ 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 ( ) ;
วิธีที่ดีที่สุดในการเรียนรู้วิธีใช้โครงงานนี้คือการศึกษาแบบทดสอบ คุณสามารถรันการทดสอบได้โดยการรัน npm run test