dns-packet
An abstract-encoding compliant module for encoding / decoding DNS packets. Lifted out of multicast-dns as a separate module.
npm install dns-packetUsage
var packet = require('dns-packet')
var dgram = require('dgram')
var socket = dgram.createSocket('udp4')
var buf = packet.encode({
type: 'query',
id: 1,
flags: packet.RECURSION_DESIRED,
questions: [{
type: 'A',
name: 'google.com'
}]
})
socket.on('message', function (message) {
console.log(packet.decode(message)) // prints out a response from google dns
})
socket.send(buf, 0, buf.length, 53, '8.8.8.8')API
var buf = packets.encode(packet, [buf], [offset])
var buf = packets.encode(packet, [buf], [offset])Encodes a DNS packet into a buffer.
var packet = packets.decode(buf, [offset])
var packet = packets.decode(buf, [offset])Decode a DNS packet from a buffer
var len = packets.encodingLength(packet)
var len = packets.encodingLength(packet)Returns how many bytes are needed to encode the DNS packet
Packets
Packets look like this
The bit flags available are
To use more than one flag bitwise-or them together
And to check for a flag use bitwise-and
A question looks like this
And an answers, additional, or authority looks like this
Currently the different available records are
A
AAAAA
AAAATXT
TXTNS
NSNULL
NULLSOA
SOASRV
SRVHINFO
HINFOPTR
PTRCNAME
CNAMEDNAME
DNAMECAA
CAAIf you need another one, open an issue and we'll try to add it.
License
MIT
Last updated
Was this helpful?