0

在我的应用程序中,我通过原始套接字将数据包发送到另一台计算机,而不是取回数据包并通过原始套接字将返回数据包写入另一台计算机。我的应用程序是在 Ubuntu 上运行的 c++ 应用程序,使用 nfqueue。

我想测试计算机 1 和计算机 2 的发送数据包,以检查它们是否符合预期。我需要编写一个自动化测试来检查我的程序,这个自动化测试需要监听 eth 加载发送的数据包并检查它们是否符合预期(ip、端口、有效负载)。

我正在寻找一种简单的方法(工具(带有简单的 API)、代码)来做到这一点。 我需要一种简单的方法来收听(自动) eth 。 我更喜欢测试将检查发送者,但可能很难找到一个 api 来监听 eth(我通过原始套接字发送),所以一个建议的 API 来检查接收者的计算机也很好。测试应用程序可以用 c++、java、python 编写。

4

3 回答 3

0

自动生成大量随机数据包,将列表提供给两台计算机并开始发送它们,当收到时,让它们对照列表进行检查。计算机 1 将发送,然后等待计算机 2 的回复。计算机 2 将检查数据包,然后发送成功或失败数据包。在任一计算机上记录结果(没关系),然后您可以从日志文件中生成统计信息。如果需要,在两个方向上使用此方法来测试两个连接。在python中应该非常简单。

或者疯狂地使用汉明码: http ://en.wikipedia.org/wiki/Hamming_code (wiki) http://lionel.textmalaysia.com/hamming-code-in-python.html(解释和一些代码)

于 2012-08-01T15:55:14.513 回答
0

检查数据包是否已正确发送的唯一方法是在接收端验证它的完整性。

于 2012-08-01T15:55:41.157 回答
0

我在接收器计算机上运行 tcpdump 并将所有数据包保存到文件中。我用 python 分析了 tcpdump,并在测试中检查了数据包是否按预期发送。

于 2012-08-04T15:47:13.170 回答