Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js TCP服务器:断开连接,而不是重置或响应?_Node.js_Http_Tcp_Solaris - Fatal编程技术网

Node.js TCP服务器:断开连接,而不是重置或响应?

Node.js TCP服务器:断开连接,而不是重置或响应?,node.js,http,tcp,solaris,Node.js,Http,Tcp,Solaris,在Node.JS中,是否可以通过以下方式“删除”连接: 客户端从未收到响应(200、404或其他) 从未通知客户端连接已终止(从未接收到连接重置或流结束) 服务器的资源已释放(服务器不应尝试以任何方式维护连接) 我特别想问一下Solaris上的Node.JS HTTP服务器(实际上只是复杂的TCP服务器),但是如果其他操作系统(Windows、Linux)或编程语言(C/C++、Java)上有这样的情况,我很感兴趣 我为什么要这个 骚扰或减慢(可能是单线程)机器人,如 我知道这并不重要,但这

在Node.JS中,是否可以通过以下方式“删除”连接:

  • 客户端从未收到响应(200、404或其他)
  • 从未通知客户端连接已终止(从未接收到连接重置或流结束)
  • 服务器的资源已释放(服务器不应尝试以任何方式维护连接)
我特别想问一下Solaris上的Node.JS HTTP服务器(实际上只是复杂的TCP服务器),但是如果其他操作系统(Windows、Linux)或编程语言(C/C++、Java)上有这样的情况,我很感兴趣

我为什么要这个

骚扰或减慢(可能是单线程)机器人,如

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


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

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

  • 关闭套接字将发送RST
  • 即使避免发送RST,当服务器关闭连接时,客户端仍然认为连接已打开。如果客户端在此连接上发送任何数据包,服务器将发送RST

  • 您可能希望探索如何对这些机器人进行防火墙保护,并使用诸如iptables(linux)或solaris上的等效工具对其IP地址进行阻止/速率限制。

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

    我不确定,但我想你可以。。没有回应。如果您不res.anything(),那么客户端将不会收到任何响应(200、400等),不会发送任何头。我不确定,但我认为这仍然会占用标记为打开连接的操作系统资源,并最终耗尽内存或TCP端口。您的第二个问题非常好。我想我也应该看看现场规则的添加。我可以为当前连接源和目标IP和端口添加临时规则。这将导致当前连接上的预期挂起,并且仍然允许新连接通过。现在我只需要等到我找到一个软件防火墙,然后我必须决定是否要这样做。是的,一些实时规则的添加在这里是有用的。像apache这样的web服务器也有内置的速率限制选项。