Node.JS DNS服务器;接收奇怪的字符串

时间:2015-10-16 16:31:05

标签: node.js dns server

我正在开发Node.js中的DNS服务器,(是的,也许这很愚蠢,但它只是4个乐趣)。我的服务器正在侦听端口53 UDP,我正在调试所有数据。为了尝试它,我只是将系统中的DNS服务器(Windows)更改为localhost。我收到了奇怪的字符串:

enter image description here

这是我的nodeJS服务器,一个侦听端口53 UDP并输出所有数据的简单服务器。

var PORT = 53;
var HOST = '127.0.0.1';

var dgram = require('dgram');
var server = dgram.createSocket('udp4');

server.on('listening', function () {
    var address = server.address();
    console.log('UDP Server listening on ' + address.address + ":" + address.port);
});

server.on('message', function (message, remote) {
	var StringDecoder = require('string_decoder').StringDecoder;
	var decoder = new StringDecoder('utf8');

	var cent = new Buffer(message);
    val = decoder.write(cent);
    console.log( val);

});

server.bind(PORT, HOST);

我的问题是,有没有办法从这些字符串中提取网址?

1 个答案:

答案 0 :(得分:1)

您正在使用DNS有线格式数据,将它们视为UTF-8编码字符串并打印结果。由于DNS有线格式远不是基于字符串的(更不用说UTF-8),因此这不是很有用。如果您想要了解有线格式,您必须知道它是如何工作的,并根据其规格进行解析。首先阅读RFC 1035