将数据包redirect到用户空间TCP堆栈而不修改应用程序【JAVA教程】

!
也想出现在这里? 联系我们
信息

将数据包redirect到用户空间TCP堆栈而不修改应用程序,第1张

概述将数据包redirect到用户空间TCP堆栈而不修改应用程序

我正在使用基于在linux下运行的linux堆栈的用户空间TCP堆栈。 不幸的是,它要求应用程序专门调用它自己的正常套接字API函数的修改版本,然后使用libpcap抓取收到的响应数据包。

现在我的问题是,是否有任何方法将数据包从应用程序redirect到此TCP堆栈,而无需修改应用程序本身。 换句话说,我正在寻找一种方法来拦截对套接字API的调用,并将它们redirect到相应的用户空间。

希望这或多或less地明确我的意思。

spIDev无法控制片选信号

带密码的ssh-agent不会产生太多的进程

MessageQueue名称和消息队列大小

如何计算黑白像素(linux,imagemagik等)的数量

我怎样才能在linux的XAMPP的PHP GD库中启用WebP支持

如何testing一个进程是否在bash中运行grep?

chroot-ed环境中的当前时间与当地时间不同

如何在双variables中检查inf(和|或)NaN

目前的linux仍然支持a.out可执行格式吗?

CMake找不到Curses

两个想法(未经测试,首先谷歌他们看看有人以前做过):

设置一个替代stdlib ,它使用TCP lib而不是系统调用。 然后使用ld.so在加载时覆盖它。

设置一个tun网络设备,让这些应用程序在这个对话框上,然后编写另一个任务,将tun的另一端连接到用户空间TCP lib。

我想第一个表现更好,可能会更脆弱。 它需要一些微妙的stdlib知识,思想。 此外, tun设备似乎只给你IP数据包。

最好的办法是搜索TCP库的其他用户,很可能已经有某种“加载器”能够完成这些工作。

使用tuntap作为一个桥梁是一个好主意,tap(不是tun)可以给你完整的以太网数据包,包括ehternet(mac)头。 在这里,我有一个问题,你的用户空间堆栈如何处理传入的数据包。 在你的文章中,你提到它使用libpcap来抓取数据包,但是据我所知,libpcap只会得到一个传入数据包的副本,然后这个数据包仍然会进入正常的内核堆栈路径,这可能不是你想。 例如,如果它是基于用户空间tcp / ip堆栈运行的应用程序的tcp数据包,并且内核不知道它,可能只是发送一个可能会破坏正常连接的第一个数据包。 所以我认为你的用户空间的TCP / IP堆栈可能会应用一些特殊的方法,以防止包传入内核,对不对? 它是如何做到的?

总结

以上是内存溢出为你收集整理的将数据包redirect到用户空间TCP堆栈而不修改应用程序全部内容,希望文章能够帮你解决将数据包redirect到用户空间TCP堆栈而不修改应用程序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞83 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容