githubEdit

dns-packet

An abstract-encodingarrow-up-right compliant module for encoding / decoding DNS packets. Lifted out of multicast-dnsarrow-up-right as a separate module.

npm install dns-packet

build statusarrow-up-right

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