ネットワーク接続が失われた場合、データはメモリに残りますか?では、このデータをどのように表示できますか?

ネットワーク接続が失われた場合、データはメモリに残りますか?では、このデータをどのように表示できますか?

マシン3のシャットダウンによってネットワーク接続が失われた場合は、データがメモリに残っていることを確認しようとしています。すべてのマシンはRHEL 7を実行しています。私の設定は次のとおりです。

マシン1 > マシン2 > マシン3

マシン3の接続を切断し、マシン1から送信された情報が数秒間保持されていても、マシン2にそのまま残っていることを確認したいと思います。 Machine 2は基本的に単にルーティングであり、実際に情報を処理しません。情報は、TCPまたはUDPを介してnetcatを介して送信されます。

この情報を見るための最良の方法は何ですか?プロセスpidを追跡すると仮定しますが、有用な情報を収集することはできません。他のスレッドを見ると、誰かが/proc/[pid]/mapsを実行し、メモリをgdbにダンプすると言ったことがわかりました。

私が探していることをするより良い方法はありますか?ありがとうございます!

ベストアンサー1

M2が何をしているのか、M3がどのように閉じられるかによって異なります。さらに、セキュリティの観点から考えると、脅威モデルの定義方法と必要なセキュリティレベルによって、その重要性が異なります。

M2が積極的に通信に参加している場合TCPレベルでつまり、M1とM2の間に1つのTCP接続があり、M2とM3の間に別のTCP接続がある場合、M2のオペレーティングシステムはM3が受信を確認するまで(またはさまざまなタイマーが期限切れになるまで)送信します。すべてのデータを保存する必要があります。エラー)。 UDP接続である場合、またはM2がIPルーターとしてのみ機能している場合は、これを行う必要はありません。 IPとUDPを使用すると、パケット/データグラムが送信された後に忘れられます。これを処理するのは上位層プロトコルの責任です。

また、M3が閉じる方法もこれと少し関連しています。停電やネットワークケーブルの切断によって単に応答を停止した場合、M2は自分が消えたかどうかを知らず(TCPを使用して)再送信しようとします。ただし、事前にシャットダウンした場合、M3のオペレーティングシステムはすべてのアクティブなネットワーク接続を順番にシャットダウンしようとします。この場合、M2は接続が閉じられたというメッセージを受信し、未送信データを削除することができる。

ネットワークバッファはオペレーティングシステム内に存在するため、プロセスメモリをダンプしても表示されませんが、プロセスはいくつかのバッファリングも実行できます。 M3接続でエラーが検出されたときにプロセスが終了した場合、同様の引数が適用されることがあります。

上記のすべては、将来の使用のために保持する必要があるデータに適用されます。また、一部のデータがM2メモリに使用されなくなりましたが、実際に上書きされていないバッファに残っている可能性があります。簡単に識別できるデータを使用してこの実験を実際に実行し、オペレーティングシステム全体のメモリをダンプして残りのコピーを見つけることは興味深い練習になります。

脅威モデルによっては、M2のプログラムやオペレーティングシステム自体が破損し、通信コピーが不明な当事者に送信されるシナリオを検討することがあります。

おすすめ記事