一侧重置 TCP 连接
Reset TCP connection one side
有没有一种方法或工具可以仅将连接重置为一侧?
例如tcpkill
向双方发送RST数据包,但我需要模拟连接半开时的情况:客户端关闭连接,但服务器不知道。
Iptables 配置也可能有帮助,当它通过一些短的超时开始拒绝客户端数据包时:--reject-with tcp-reset
在 Java 程序中,对从 Socket
获得的输入流或输出流调用 close()
将关闭连接的一侧。
但是,您似乎在问一个应用程序是否可以 "half close" 属于另一个进程的 TCP/IP 连接
据我所知,一个普通的 use-space 应用程序(Java 或不)不能关闭或半关闭另一个应用程序的套接字。当然不是在 UNIX / Linux 系统上。同上特权用户-space 应用程序。
因此,这为您提供了像 tcpkill
这样的工具,它们通过注入原始数据包来工作。可以在 Java 中使用本机库(例如 jpcap)做同样的事情来做 "dirty work" .... 只要您的 Java 应用程序是特权的。但是只使用 Process.exec(....)
到 运行 tcpkill
或等价物会更简单。
Iptables configuration could be also helpful, when by some short timeout it starts rejecting client packets: --reject-with tcp-reset
我不会那样做。您冒着让系统或虚拟机的 iptables 配置导致问题或更糟的风险。
有没有一种方法或工具可以仅将连接重置为一侧?
例如tcpkill
向双方发送RST数据包,但我需要模拟连接半开时的情况:客户端关闭连接,但服务器不知道。
Iptables 配置也可能有帮助,当它通过一些短的超时开始拒绝客户端数据包时:--reject-with tcp-reset
在 Java 程序中,对从 Socket
获得的输入流或输出流调用 close()
将关闭连接的一侧。
但是,您似乎在问一个应用程序是否可以 "half close" 属于另一个进程的 TCP/IP 连接
据我所知,一个普通的 use-space 应用程序(Java 或不)不能关闭或半关闭另一个应用程序的套接字。当然不是在 UNIX / Linux 系统上。同上特权用户-space 应用程序。
因此,这为您提供了像 tcpkill
这样的工具,它们通过注入原始数据包来工作。可以在 Java 中使用本机库(例如 jpcap)做同样的事情来做 "dirty work" .... 只要您的 Java 应用程序是特权的。但是只使用 Process.exec(....)
到 运行 tcpkill
或等价物会更简单。
Iptables configuration could be also helpful, when by some short timeout it starts rejecting client packets:
--reject-with tcp-reset
我不会那样做。您冒着让系统或虚拟机的 iptables 配置导致问题或更糟的风险。