首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不带SYN|ACK的Linux TCP接受

问不带SYN|ACK的Linux TCP接受
EN

Stack Overflow用户
提问于 2015-03-09 05:19:10
回答 1查看 902关注 0票数 2

我正在尝试编写一个运行在Linux上的TCP透明代理。

我希望在收到传入连接时,启动相应的传出连接,但如果传出连接成功,则仅接受(SYN|ACK)传入连接。

TCP_DEFERRED_ACCEPT不会执行我想要的操作--它总是发送SYN|ACK。

问题是:如何接受TCP连接,但使用Linux套接字API延迟SYN|ACK?

EN

回答 1

Stack Overflow用户

发布于 2015-03-19 03:59:43

您可以使用Linux来实现这一点,但不能通过套接字API实现。您可以使用NFQUEUE目标,它允许您将一些数据包重定向到用户空间,并在您的程序中决定它们的命运。

显然,您仍然需要在用户空间中解析数据包,但是搜索几个TCP标志应该不是那么难,也不需要完整的TCP堆栈。通过这种方式,Linux仍然可以完成整个网络工作。

在您的情况下,似乎可以同时使用NFQUEUE和经典套接字API。前者将为您提供早期决策,后者将提供TCP流数据访问。虽然我从来没试过。

例如,参见https://home.regit.org/netfilter-en/using-nfqueue-and-libnetfilter_queue/。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28932015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档