Dieses Papier (When the CRC and TCP checksum disagree) schlägt vor, dass, da der TCP-Prüfsummen-Algorithmus ziemlich schwach ist, ein unerkannter Fehler alle 16 Millionen bis 10 Milliarden Pakete unter Verwendung von TCP auftreten würde.Prüfsumme auf Anwendungsebene, da die TCP-Prüfsumme zu schwach sein kann?
Gibt es Anwendungsentwickler, die die Daten vor solchen Fehlern schützen, indem sie Prüfsummen auf Anwendungsebene hinzufügen?
Gibt es Muster zum Schutz vor solchen Fehlern beim EJB-Remote-Methodenaufruf (Java EE 5)? Oder prüft Java bereits serialisierte Objekte automatisch (zusätzlich zum zugrunde liegenden Netzwerkprotokoll)?
Enterprise-Software läuft auf Computern nicht nur Speicher ECC, sondern auch Fehlerprüfung innerhalb der CPU in den Registern usw. (SPARC und andere). Bitfehler bei Speichersystemen (Festplatten, Kabel, ...) können durch Verwendung von Solaris ZFS verhindert werden.
Ich hatte nie Angst vor Netzwerkbitfehlern wegen TCP - bis ich diesen Artikel sah.
Es kann nicht so viel Arbeit sein, die Prüfsumme auf Anwendungsebene für einige wenige Client-Server-Remote-Schnittstellen zu implementieren. Aber was ist mit verteilter Unternehmenssoftware, die auf vielen Rechnern in einem einzigen Rechenzentrum läuft? Es kann eine wirklich große Anzahl von Remote-Schnittstellen geben.
Bricht jeder Enterprise Software Hersteller wie SAP, Oracle und andere diese Art von Problem einfach ab? Was ist mit Banken? Was ist mit Börsensoftware?
Follow-up: Vielen Dank für Ihre Antworten! Es scheint also ziemlich ungewöhnlich zu sein, unbemerkte Netzwerkdaten zu überprüfen - aber sie scheinen zu existieren.
Konnte ich dieses Problem nicht einfach lösen, indem ich die Java EE-Anwendungsserver (oder EJB-Implementierungsdeskriptoren) für die Verwendung von RMI über TLS mit dem für die Verwendung von MD5 oder SHA1 konfigurierten TLS konfigurierte und die Java SE-Clients dazu konfigurierte ? Wäre dies eine Möglichkeit, um ein zuverlässiges transparentes Prüfsummenverfahren zu erhalten (obwohl durch Overkill), so dass ich dies nicht auf Anwendungsebene implementieren müsste? Oder bin ich komplett verwirrt vom Netzwerk-Stack?
Einige Kommentare zu dem Thema: http://criticalindirection.com/2016/02/22/tcp-checksum-the-fault-in-the-stars/ – user31986