如何保护tcp连接 - nodejs?

时间:2015-06-11 13:30:41

标签: javascript node.js events authentication tcp

我在sample code

中使用了tcp 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');

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

问题:

  1. 这种逻辑是否适合验证客户端/服务器。

  2. 主要的,如何从受限制的IP地址关闭特定连接。(第4行 - 评论)

  3. 场景:

    我有两个服务器,一个是客户端服务器,快递/ 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到服务器。

    5. 如何仅允许特定ip并拒绝所有其他ip访问权限?

      任何帮助或建议都将不胜感激

1 个答案:

答案 0 :(得分:3)

这取决于您的意思"验证",但显然多个人可以使用IP地址(例如在路由器后面)。因此,如果这是一个问题,你将不得不提出自己的协议或重新使用现有的协议(可能更好的想法使用已经过#34;经过测试的#34;)。一个更复杂的"例如,使用TLS,它内置于节点中,并通过证书/密钥为您提供加密身份验证,同时仍然为您提供原始套接字。

就终止连接而言,您可以通过调用套接字上的.end()来优雅地执行此操作,或.destroy()强制终止套接字。