一侧重置TCP连接

时间:2017-11-02 11:40:16

标签: java networking iptables

是否有方法或工具仅将连接重置为一侧? 例如tcpkill向两侧发送RST数据包,但我需要模拟连接左半打开的情况:客户端关闭连接,但服务器不知道它。

Iptables配置也可能有用,当通过一些短暂超时它开始拒绝客户端数据包时:--reject-with tcp-reset

1 个答案:

答案 0 :(得分:2)

在Java程序中,对从close()获得的输入流或输出流调用Socket将关闭连接的一侧。

但是,您似乎在询问一个应用程序是否可以“半关闭”属于另一个进程的TCP / IP连接

据我所知,普通的使用空间应用程序(Java或不是Java)无法关闭或半关闭另一个应用程序的套接字。当然不在UNIX / Linux系统上。同上特权用户空间应用程序。

因此,通过注入原始数据包,您可以使用tcpkill等工具。如果您的Java应用程序具有特权,可以使用本机库(例如jpcap)在Java中执行相同类型的操作来执行“脏工作”....但是,使用Process.exec(....)来运行tcpkill或同等版本会更简单。

  

Iptables配置也可能有用,当通过一些短暂超时它开始拒绝客户端数据包时:--reject-with tcp-reset

我不会这样做。您可能会冒险使系统或虚拟机出现导致问题的iptables配置,或者更糟。