この論文 ( CRC と TCP チェックサムが一致しない場合) は、TCP チェックサム アルゴリズムがかなり弱いため、TCP を使用する 1600 万から 100 億パケットごとに検出されないエラーが発生することを示唆しています。
アプリケーション レベルでチェックサムを追加することによって、この種のエラーからデータを保護するアプリケーション開発者はいますか?
EJB リモート メソッド呼び出し (Java EE 5) の実行中に、このようなエラーから保護するために使用できるパターンはありますか? または、Java はすでにシリアル化されたオブジェクトを自動的にチェックサムしますか (さらに、基礎となるネットワーク プロトコルに加えて)?
エンタープライズ ソフトウェアは、メモリ ECC だけでなく、レジスタなど (SPARC など) で CPU 内のエラー チェックを実行するコンピューター上で実行されています。ストレージ システム (ハード ドライブ、ケーブルなど) でのビット エラーは、Solaris ZFS を使用することで防ぐことができます。
その記事を見るまでは、TCP によるネットワーク ビット エラーを恐れたことはありませんでした。
一部の非常に少数のクライアント サーバー リモート インターフェースに対してアプリケーション レベルのチェックサムを実装するのは、それほど大変な作業ではないかもしれません。しかし、単一のデータセンター内の多数のマシンで実行される分散エンタープライズ ソフトウェアはどうでしょうか。非常に膨大な数のリモート インターフェイスが存在する可能性があります。
SAP、Oracle などのすべてのエンタープライズ ソフトウェア ベンダーは、この種の問題を無視しているのでしょうか? 銀行はどうですか?証券取引所のソフトウェアはどうですか?
フォローアップ:たくさんの回答ありがとうございました! そのため、検出されないネットワーク データの破損をチェックすることはほとんどないように思われますが、それらは存在するようです。
MD5 または SHA1 を使用するように構成された TLS で RMI over TLS を使用するように Java EE アプリケーション サーバー (または EJB デプロイメント記述子) を構成し、同じことを行うように Java SE クライアントを構成するだけで、この問題を解決できませんでしたか? これは、アプリケーションレベルでこれを実装する必要がないように、信頼できる透過的なチェックサムを取得する方法でしょうか (やり過ぎではありますが)? それとも、ネットワークスタックに関して完全に混乱していますか?