dns-packet

An abstract-encoding compliant module for encoding / decoding DNS packets. Lifted out of multicast-dns as a separate module.

npm install dns-packet

build status

Usage

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])

Encodes a DNS packet into a buffer.

var packet = packets.decode(buf, [offset])

Decode a DNS packet from a buffer

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

AAAA

TXT

NS

NULL

SOA

SRV

HINFO

PTR

CNAME

DNAME

CAA

If you need another one, open an issue and we'll try to add it.

License

MIT

Last updated

Was this helpful?