运行Ubuntu。
我有机器A – >机器B( 从A到B的单向连接 )。 机器一个目标是转发TCP数据包到机器B( 它dosnt与机器B有tcp连接,它只是转发它从其他机器获得的tcp数据包)在机器A中有c ++代码,它们根据业务规则收集一些tcp数据包,把它们通过原始套接字写入机器B.
我想在机器A上对我的代码进行性能testing,所以为了做到这一点,我需要发送大量的TCP数据包到机器上。我的c ++代码将它们转发给B.最后,我将validation所有的数据包都恢复了机器B.你有什么build议工具? 将模拟大量发送和工具,将有助于断言(可以通过数量,校验和,任何其他想法断言)
我认为上传大文件文件转储上传stream量,并与tcpreplay重播(我将创build100个线程,重播相同的上传转储,以便有大量的tcpstream)。 为了validation,我将分析接收方的tcpdump,以检查它是否与发送的数据包数量相同。
这不是关于tcp的,因为协议只生成真正的tcp数据包(作为结构)发送大量的数据,并通过比较有效负载或数量或任何其他方式进行validation。 有什么build议?
我有机器A – >机器B(从A到B的单向连接)。 我需要从A发送大量TCP数据包到B,并validation所有数据包都恢复了。 你有什么build议的工具?
我推荐TCP ,它确保reliable, ordered delivery的数据reliable, ordered delivery 。
(你正在问我们一个工具来做什么底层协议已经做了。)
还要注意,TCP 本质上是双向的 : ACK必须从机器B发送回机器A.“单向连接”是不可能的 – 没有ACK意味着传输将永远停止。
我想上传从A到B的大文件(这样做,当他们有双向连接)转储stream量从A到B,并重播与tcpreplay它(我将创build100个线程,将重放它,以便有大量的TCPstream)。 为了validation,我将分析接收方的tcpdump,以检查它是否与发送的数据包数量相同。
TCP不能这样工作。 由于不同的窗口/ MTU大小,丢弃和重发的数据包,延迟的ACK(导致几次数据包的双重传输)等,导线上的数据包计数可能不同。
你不能仅仅通过networking推送相同的数据,并期望它的工作方式完全相同 – 在实践中,这通常是有效的(并且是重放攻击的基础),但是TCP是由状态机pipe理的,而且你真的需要通过每个连接运行。
如果您需要生成大量的TCPstream量,而不关心数据,您应该简单地启动多个stream,将数据发送给远程系统上的监听器(据推测可以放弃)。
如果你关心的数据,你应该做的build议拉斯维加斯和校验和接收到的数据 (完整)后退出TCP / IP协议栈…