【问题标题】:How can I replay a TCP stream to my client如何将 TCP 流重播到我的客户端
【发布时间】:2014-04-23 13:25:46
【问题描述】:

我需要对我制作的新提要处理程序进行一些验证测试。我有一些从生产网络捕获的 pcap 数据,我想让我的开发提要处理程序连接到这些数据的“重放”并比较结​​果。

我的 pcap: 我有一个连接到数据馈送的产品应用程序,与外部服务器的 TCP 连接让调用假设这是 123.456.789.1:1234。然后,这个外部服务器将数据发送到我的应用程序,几乎没有客户端到服务器的通信,服务器只发送客户端数据,直到客户端断开。我有一个 pcap,其中包含发送到端口 1234 和从端口 1234 发送的所有数据包。我通过镜像交换机上的生产端口 (SPAN) 并将 tcpdump 连接到插入镜像网络端口的接口来获得这个 pcap。当我在wireshark 中查看PCAP 时,它拥有我所期望的所有数据。

我的问题: 我绝不是网络工程师,我不确定如何使用这个 pcap 来测试我的应用程序。我想做的是从 pcap 中“重放”这个流,并用我的开发应用程序连接到它,以验证数据的处理方式是否与 prod 连接上的数据相同。

我想了解如何在 127.0.0.1:1234 上“重放”从 123.456.789.1:12344 发送的数据,然后使用我的开发应用程序连接到 127.0.0.1:1234。我查看了 tcpreplay 但从文档中我似乎无法弄清楚它是否可以做到这一点,我觉得他们不处理 tcp 会话数据,如果它是 UDP 流我可以这样做,但 tcpreplay 可以不充当外部服务器。我读错了还是有其他工具可以让我这样做?

谢谢!

【问题讨论】:

  • 你查看this SO question的答案了吗?精确的 TCP 重放通常非常困难。
  • 我看了这个问题,猜想我希望因为我的交互比他的更简单(我真的没有任何客户端 -> 服务器通信它只是一个连接和监听模型)我的是我可以使用的 tcpreplay 上的一些简单设置。但我猜不是,我会按照 Slartibartfast 的建议转储数据并对其进行 netcat,并且在另一个问题中也有暗示。

标签: c++ sockets networking tcp pcap


【解决方案1】:

如果您只想将一些数据返回给您的工具,并且您不关心该工具发送的内容,您可能想要使用 netcat。

您可以通过从 pcap 文件中提取工具发送的原始数据(this 工具可能会有所帮助)然后将其通过管道传输到 netcat 中来实现。

【讨论】:

  • 作为对任何在未来阅读本文时遇到相同问题的人的更新。这个解决方案对我有用,但是有一个小问题,所有数据当然都以 netcat 可以发送的速度发送。这破坏了我的提要处理程序中的所有缓冲区。因为只要比特率有点现实,确切的时间对我来说并不是真正的问题,我只是做了“cat | cpipe -s 500 | nc -l ”来将速率限制为 500知识库。这对我来说很好,但如果您需要更精确的计时,您可能需要其他解决方案。
猜你喜欢
  • 2011-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-01
  • 2012-07-18
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
相关资源
最近更新 更多