1

私は、リッスンしているソケットに送信されたパッケージを処理する Linux 上のサーバー サービス プログラムで作業を行っています。その仕事をしているポートでリッスンしている古いサービスが既にあり、古いサーバー サービスを停止することはできません。パッケージを古いサーバーに送信し、新しいサーバー サービスに送信して正常に動作することを確認する必要があります。パッケージを取得して新しいサービスに再送信するにはどうすればよいですか? そのようなツールはありますか、または tcpdump などのツールが既に提供している機能はありますか? ありがとう:)

4

1 に答える 1

1

UDP のようなコネクションレス プロトコルの場合、tcpdump でデータを記録し、netcat で再送信できます。

TCPのような接続指向のプロトコルの場合、TCPはパケットが確認済みの確認応答番号に適切な値を持っていることを期待しているため、それほど簡単ではないと思います。これは、記録されたパケットと新たに確立されたTCP接続で異なります。その場合、手動で接続を確立し (つまり、その目的のためにカスタム アプリを用意する)、ペイロードのみを再送信する必要があります。おそらく、その目的のためにすぐに利用できるアプリがいくつかあります(tcpdump形式からペイロードを抽出してリモートに送信します)、私にはわかりません. しかし、そのようなアプリケーションを作成するのは非常に簡単です。

ちなみに、同じことが UDP にも当てはまります。サーバーが独自に何らかの順序付けを維持している場合、再送信されたパケットには、サーバーが予期しないシーケンス番号が含まれている可能性があります。

于 2011-08-31T13:59:02.370 に答える