1

我正在Linux上的服务器服务程序上做我的工作,该程序处理发送到它所侦听的套接字的包。已经有一个旧的这样的服务在端口上监听它的工作,我无法停止旧的服务器服务,并且我需要将包发送到旧服务器并将它们发送到我的新服务器服务以确保它运行良好。我怎样才能获取包并将它们重新发送到我的新服务?是否有这样的工具,或者 tcpdump 等工具已经提供了一些功能?谢谢:)

4

1 回答 1

1

对于像 UDP 这样的无连接协议,您可以使用 tcpdump 记录数据并使用 netcat 重新发送。

对于像 TCP 这样的面向连接的协议,我认为这并不容易,因为 TCP 期望您的数据包在确认的确认号中具有正确的值,这在您记录的数据包和新建立的 TCP 连接之间会有所不同。在这种情况下,您需要手动建立连接(即,为此目的使用自定义应用程序)并仅重新发送有效负载。也许,有一些现成的应用程序可用于此目的(从 tcpdump 格式中提取有效负载并将其发送到远程),我不知道。但是编写这样的应用程序很容易。

顺便说一句,同样的事情甚至适用于 UDP,如果您的服务器自己维护某种排序 - 重新发送的数据包可能具有您的服务器不希望接收的序列号。

于 2011-08-31T13:59:02.370 回答