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

在Node.JS中是否有可能以这种方式“删除”连接

  • 客户永远不会收到回应(200,404或其他)
  • 客户端永远不会被通知连接被终止(从来没有收到连接重置或stream结束)
  • 服务器的资源被释放(服务器不应该试图以任何方式维护连接)

我在Solaris上特别询问了关于Node.JS HTTP服务器(它实际上只是复杂的TCP服务器),但是如果在其他操作系统(Windows,Linux)或编程语言(C / C ++,Java)我有兴趣。

我为什么要这个?

惹恼或放慢(可能是单线程)机器人,如phpMyAdmin探针 。

我知道这并不重要,但这些types的问题可以更好地帮助我学习我的程序的边界。

我知道客户端主机很可能重新传输连接的数据包,因为我从来没有发送重置。

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

  1. closures一个套接字发送一个RST
  2. 即使您避免发送RST,客户端仍然认为连接在服务器closures连接时打开。 如果客户端在此连接上发送任何数据包,则服务器将发送RST。

您可能想要探索防火墙这些机器人,阻止/速度限制他们的IP地址像iptables(linux)或solaris上的等价物。

closures连接不应发送RST。 有一个3路拆卸过程。