node.js - TCP 服务器 : Drop Connection, 而不是重置或响应?

标签 node.js http tcp solaris

在 Node.JS 中是否有可能以这样的方式“断开”连接

  • 客户端永远不会收到响应(200、404 或其他)
  • 客户端永远不会收到连接终止的通知(永远不会收到连接重置或流结束)
  • 服务器的资源被释放(服务器不应该试图以任何方式维持连接)

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

我为什么要这个?

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

我知道这并不是真正重要的事情,但这些类型的问题可以更好地帮助我了解我的程序的边界。

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

最佳答案

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

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

您可能想探索为这些机器人设置防火墙并使用 iptables (linux) 或 solaris 上的等效项来阻止/限制它们的 IP 地址。

关于node.js - TCP 服务器 : Drop Connection, 而不是重置或响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8127336/

相关文章:

javascript - 当 gulp-eslint 失败时抛出 gulp-notify 消息

node.js - 填充的聚合查询

android - Qt 网络服务器与移动浏览器

python - 如何使用 Python 发布到 Google Measurement 协议(protocol)?

node.js - node-forge 如何从文件中读取私有(private) rsa key

node.js - 如何在 NodeJS 中使用多部分表单数据时访问正文参数

http - 使 flask 返回响应头 http1.1 而不是 http1.0

Android - 通过 TCP/IP 传输数据

c++ - 如何确保 TCP 文件传输完成(c++)

java - java中的TCP网络摄像头流