我可以在 Linux 中使用原始套接字创建侦听 TCP 套接字吗?

发布于 2024-10-05 00:32:42 字数 326 浏览 0 评论 0原文

我想创建一个侦听 TCP 套接字,在其中我可以控制它在收到来自客户端的初始 SYN 数据包后何时使用第一个 SYN+ACK 响应客户端。

我想这样做是为了引入一些延迟或忽略一些初始 SYN 数据包。我现在可以使用 iptables 来完成此操作,但我想知道是否可以使用操作系统套接字接口来完成此操作。

请注意,如果我使用普通的 TCP 套接字,一旦服务器在套接字描述符上调用listen(),操作系统就会在客户端连接到它时建立连接。

我想知道是否可以使用原始套接字来实现此行为。到目前为止,我看到的有关原始套接字的所有示例都是关于主动套接字(客户端到服务器)而不是被动套接字(侦听套接字)。

I would like to create a listening TCP socket where I could control when it responds to the client with the first SYN+ACK after it receives the initial SYN packet from the client.

I want to do this to introduce some delays or ignore some initial SYN packets. I can do this using iptables at the moment, but I'm wondering if this could be done using the OS socket interface.

Note that if I use a normal TCP socket, once the server calls listen() on the socket descriptor, the OS will establish the connection when a client connects to it.

I am wondering then if I could use raw sockets to implement this behavior. All the examples I have seen so far about raw sockets are about active sockets (client to server) and not passive sockets (listening sockets).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

并安 2024-10-12 00:32:42

理论上,您可以通过原始套接字编写自己的 TCP 实现。但在原始套接字获得副本之前,内核仍会响应任何传入的 TCP 数据包。所以你必须通过使用 iptables 或其他东西来阻止内核看到你感兴趣的数据包来解决这个问题。

我认为通过 netfilter 接口在内核模块中执行此操作会更容易(这可能是你已经在做了)。您还可以查看 libnetfilter_queue ,如果您确实想在用户空间中执行此操作,它可能会起作用。

You could theoretically write your own TCP implementation over raw sockets. But the kernel will still respond to any incoming TCP packets before your raw socket gets a copy. So you'd have to work around this by using iptables or something to block the kernel from seeing the packets you're interested in.

I think it would be easier to do this in a kernel module via the netfilter interface (which may be what you're already doing). You could also check out libnetfilter_queue which might work if you really want to do it in userspace.

无人问我粥可暖 2024-10-12 00:32:42

看看 Honeynet 项目,他们实现了具有基本 IP 堆栈的低成本虚拟机来调整 TCP 协议操作。

https://projects.honeynet.org/sebek/browser/linux-2.6 /主干/src

Have a look at the Honeynet project, they implement low cost virtual machines with a basic IP stack to adjust the TCP protocol operation.

https://projects.honeynet.org/sebek/browser/linux-2.6/trunk/src

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文