Linux下的c++应用程序,用于将ipv4数据包转换为ipv6
c++ applcation for linux to convert ipv4 packet to ipv6
我希望为linux开发一个c/c++应用程序,将收到的ipv4数据包转换为ipv6,反之亦然(失去一些仅ipv6的功能)
步骤1:如何从传入数据包中接收所有必要的信息?我应该使用原始数据包库来读取所有TCP/UDP标志和有关数据包的信息吗?有相关的文件吗?我已经在看北京了。我们指导)
step2:我正在寻找使用这个程序到linux机器(即Ubuntu)作为路由器转发从ipv6机器接收到的所有数据包到网卡,到连接到路由器上的ipv4卡的ipv4机器。
如何接收和解析这个应用程序中的所有数据包(除了指向路由器机器IP的数据包)?这是可能的在"应用程序级别"还是我应该触摸内核?如果有,我从哪里可以得到一些关于这个的文件?
目标:在通过路由器连接的两台机器之间使用http或其他通用协议
非常感谢任何提示
由于IPv4和IPv6之间的转换必然会改变数据包中的IP地址,因此根据定义需要NAT。你的项目归结为实现一个NAT路由器。
阅读NAT64,以了解更多您正在寻找的NAT的特殊风味。
在尝试在用户空间实现路由器的过程中,我认为tun设备可能是发送和接收数据包的最佳设计选择。这实际上是TAYGA所选择的方法(上面引用的维基百科页面上列出的第一个NAT64实现)。
在用户空间中实现路由器(任何类型的路由器,更不用说NAT)是一个相当复杂和雄心勃勃的项目,所以我能给出的最好的两条建议是:
- 不要自己实现这个。相反,贡献您的努力来改进现有的开源实现之一。
- 如果做不到这一点,可以从现有的开源实现中寻找灵感。
相关文章:
- boost::asio UDP 广播客户端仅接收"fast"数据包
- 如何使用发送数据包所花费的时间计算两个节点之间的距离?
- 发送固定大小的 UDP 数据包
- pcap_handler回调仅在使用 NPCAP v0.9991 时包含空数据包
- 在 c++ 中解析数据包数据的最佳方法是什么?
- 接受函数在发送数据包时等待
- 如何在 omnet++ 中发送自定义数据包?
- 数据包访问实践
- 在C++中创建一个简单的数据包路由器,如何跟踪"客户端"?
- 德拉吉诺 LG01-S 收到异常数据包并停止工作
- 将数据包从C++服务器发送到NodeJs服务器时出现MessagePack解码错误
- 使用C++将UDP数据包存储在Structure中
- FFmpeg av_read_frame从音频流返回数据包
- 为什么操作系统正在更改我的数据包的指定传出端口
- 是否可以将多个结构作为一个数据包存储在一个函数中,然后传递给其他函数并在那里提取?
- recvfrom 只收到几个数据包,之后它进入等待状态
- 如何调试由 C++ 编写的 npm 数据包
- 如何在INET的应用层中发送广播数据包
- Linux下的c++应用程序,用于将ipv4数据包转换为ipv6
- IPv4 上的 TCP 的最小数据包大小是多少