如何保护TCP连接 – nodejs?

我有以下sample codetcp server

 var server = net.createServer(); server.on('connection', function (socket) { if(restrictedIP == sock.remoteAddress){ //How to close the particular connection safely without //affecting other connections } socket.on('data', function(data) { console.log(data); }); socket.on('close', function(data) { console.log('client disconnected'); }); }); server.listen(3000, '127.0.0.1'); 

注意:我有一个检查来validation客户端/服务器ip(第三行)。

问题:

  1. 这个逻辑听起来不错,可以validation客户端/服务器。

  2. 主要的是,如何从受限的IP地址closures特定的连接(第四行 – 评论)

场景:

我有两个服务器,一个是客户端服务器,它是express / http服务器,可以命名为server1-express ,另外一个是命名为server2-tcp tcp服务器。

  1. server1-express服务器将使用tcp与server2-tcp进行通信。

  2. server2-tcp应该只允许这个特定的server1-express服务器,它不应该允许连接任何其他的ip,

  3. 使用socket.destroy()会使server2-tcp崩溃。

  4. 使用socket.end()将强制我们write服务器。

如何只允许特定的ip和拒绝所有其他的ip访问?

任何帮助或build议将不胜感激

这取决于你的意思是“authentication”,但显然一个IP地址可以被多个人使用(例如在路由器后面)。 所以,如果这是一个问题,你将不得不拿出自己的协议或重新使用现有的协议(可能是一个更好的主意,使用一个已经“战斗testing”)。 一个更“复杂”的例子是使用TLS ,它是内置在节点中的, 并且通过证书/密钥给你encryptionauthentication,同时还给你一个原始套接字。

只要终止连接,您可以通过调用套接字上的.end().destroy()来强制终止套接字。