C++ 如何在Udp封装应用程序中实现Ip?

C++ 如何在Udp封装应用程序中实现Ip?,c++,networking,ipsec,nat-traversal,C++,Networking,Ipsec,Nat Traversal,我想开发一个测试应用程序(类似于IpSec,但非常简单),它可以实现将“PC”的所有IP数据包封装在带有加密的“其他数据包”中。这个“另一个数据包”被发送到另一台计算机(类似于smth的“代理”),该计算机解包原始IP数据包并将其发送到原始目的地。然后,该“代理”接收“PC”的数据包并对其进行解密、封装并发送到“PC”等。应用程序必须支持使用NAT。我知道带NAT的IPSec只使用NAT遍历工作,因此“另一个数据包”将是udp,也就是说,我将用一些加密将Ip封装在udp中 我意识到winpcap

我想开发一个测试应用程序(类似于IpSec,但非常简单),它可以实现将“PC”的所有IP数据包封装在带有加密的“其他数据包”中。这个“另一个数据包”被发送到另一台计算机(类似于smth的“代理”),该计算机解包原始IP数据包并将其发送到原始目的地。然后,该“代理”接收“PC”的数据包并对其进行解密、封装并发送到“PC”等。应用程序必须支持使用NAT。我知道带NAT的IPSec只使用NAT遍历工作,因此“另一个数据包”将是udp,也就是说,我将用一些加密将Ip封装在udp中

我意识到winpcap并不是我开发这种应用程序所需要的。
我可以不用特殊的硬件,只用软件开发这样的应用程序吗?我应该使用什么样的工具(也许我需要编写自己的驱动程序)

好的,如果您想将数据封装到ip数据包中,那么这是一件事。 这里你说你想封装IP包

考虑到OSI层:

因为IP数据包是第2层的 你不想重新实现第二层。 我认为这是你只能在司机身上找到的东西,因此很难依赖。

似乎是我需要的。隐马尔可夫模型。。。通过Udp调谐IP