微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Linux中终止单个TCP连接?

我有一个进程,可以在不同的端口上打开几个tcp连接到多个浏览器.

使用netsat输出是这样的:

tcp 0 0 server1.something:myprog client1.something:49987 ESTABLISHED
tcp 0 0 server1.something:myprog client1.something:65987 ESTABLISHED
tcp 0 0 server1.something:myprog client1.something:89987 ESTABLISHED

现在我想杀死其中一个连接?我该怎么做? (因为杀死进程会杀死所有连接)

解决方法

以下是一些选项:

>使用gdb附加并在fd上调用close().您可以使用ls -la / proc / $pid / fd从addr / port到inode编号通过/ proc / net / tcp和inode编号映射到进程内的FD.
>欺骗RST数据包.你需要在本地生成它并以某种方式猜测SEQ号.
>也许设置一个iptables规则来生成一个数据包的RST.
>编写内核模块.

似乎没有一个很好的支持方式来做到这一点.如果他们的FD无论如何意外关闭,那么进程很可能会崩溃.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐