TCP服务器:丢弃连接,而不是重置或响应?

时间:2011-11-14 20:02:36

标签: node.js http tcp solaris

Node.JS是否有可能以“

”的方式“删除”连接
  • 客户端从未收到回复(200,404或其他)
  • 永远不会通知客户端连接已终止(永远不会收到连接重置或流结束)
  • 释放服务器的资源(服务器不应尝试以任何方式维护连接)

我在Solaris上特别询问Node.JS HTTP服务器(实际上只是复杂的TCP服务器),但是如果在其他操作系统(Windows,Linux)或编程语言(C / C ++,Java)上存在这种情况,允许这个,我感兴趣。

为什么我要这个?

惹恼或放慢(可能是单线程)机器人,例如phpMyAdmin Probe

我知道这不重要,但这些类型的问题可以更好地帮助我了解我的课程的界限。

我知道客户端主机可能会重新传输连接数据包,因为我从不发送重置。

2 个答案:

答案 0 :(得分:1)

这些在通用TCP堆栈中是不可能的(与您自己的自定义TCP堆栈相比)。原因是:

  1. 关闭套接字会发送RST
  2. 即使您避免发送RST,客户端仍会认为在服务器关闭连接时连接已打开。如果客户端在此连接上发送任何数据包,则服务器将发送RST。
  3. 您可能希望探索这些机器人的防火墙,并使用iptables(linux)或solaris上的等效物来阻止/限制其IP地址。

答案 1 :(得分:1)

关闭连接不应发送RST。有一种3向拆卸过程。