此纸(当CRC和TCP校验和不同意)表明由于TCP校验和算法是相当弱的,就发生一个未检测到的错误的每个使用TCP 1600万至10十亿分组。

是否有任何应用程序开发人员那里谁通过在应用程序级别添加校验防止此类错误的数据?

是否有任何可用的,以防止这样的错误,而这样做EJB远程方法调用(Java EE 5的)模式?或自动执行的Java已经校验序列化的对象(附加到底层网络协议)?

企业软件已经做电脑不仅ECC内存上运行,而且还做错误的寄存器等(SPARC和其他人)在CPU内检查。在存储系统的比特错误(硬盘驱动器,电缆,...)可以通过使用Solaris ZFS被防止。

我从来没有害怕,因为TCP的网络比特错误的 - 直到我看到那篇文章

这可能不是太多的工作实现应用层的校验和一些极少数的客户端服务器的远程接口。但是,我们是在一个数据中心多台机器上运行的分布式企业级软件。可以有一个非常巨大的远程接口数量。

时的每一个像SAP,Oracle和其他人只是忽略了这样那样的问题企业软件供应商?什么银行?约证券交易所软件是什么?

后续:非常感谢你所有的答案!如此看来,这是相当罕见的核对未检测到的网络数据损坏 - 但他们似乎存在

不能我只是通过配置Java EE应用服务器(或EJB部署描述符)使用RMI通过TLS与TLS配置为使用MD5或SHA-1,并通过配置的Java SE客户做同样的解决这个问题?这将是一种方式来获得可靠的透明校验(虽然矫枉过正),这样我就不必在应用层面来实现这一点?还是我完全糊涂了网络堆栈明智?

有帮助吗?

解决方案

我相信,每一个关心数据完整性的应用程序应该使用安全哈希值。但是,大多数没有。人们简单地忽略该问题。

虽然我经常看到数据损坏,多年来 - 甚至是它得到通过校验 - 事实上,最令人难忘的涉及到股票交易系统。一个糟糕的路由器被破坏的数据,使得通常得到过去的TCP校验和。它翻转相同的比特和关闭。当然,没有人提醒的是,在事实上失败的TCP校验和的数据包。应用没有附加检查数据完整性。

消息被东西等库存订单和交易。因为它的声音破坏的数据的后果是严重。

幸运的是,损坏引起的消息,以足够的无效导致交易系统完全崩溃。一些业务损失的后果远不及作为执行虚假交易的潜在后果严重。

我们确定与运气的问题 - 两个涉及到一个奇怪的错误消息失败服务器之间某人的SSH会话。显然必须SSH确保数据的完整性。

这一事件发生后,该公司没有采取任何行动,以减轻数据损坏的风险,同时在飞行中或存储。相同的代码仍然在生产,实际上额外的代码已经投产,它假定周围的环境永远不会损坏的数据。

这实际上是对所有参与的人是正确的决定。谁防止被系统(例如记性不好,坏的硬盘驱动器控制器,坏路由器)的其他部分造成了问题的开发商是不可能获得任何东西。额外的代码创建添加一个错误,或者被指责为实际上没有相关的错误的风险。如果以后不出现问题,这将是别人的错。

有关管理,这就像在安全方面的支出时间。事故的几率很低,但“浪费”的努力是可见的。例如,请注意如何端至端数据完整性检查相比已经过早优化已经在这里。

至于改变的事情,因为这论文写 - 所有已更改的是,我们有更大的数据传输速率,更复杂的系统,以及更快的CPU,使密码散列成本更低。更多的机会腐败,和更低的成本来防止它。

真正的问题是它是否在您的环境检测/预防问题,或者忽略它更好。请记住,通过检测的问题,它可能会成为你的责任。如果你花时间预防问题,管理层不承认是一个问题,它可以让你看起来就像你是在浪费时间。

其他提示

我的交易系统工作了IBS,我可以向你保证,没有额外的校验回事 - 大多数应用程序使用明火的插座。鉴于金融业目前存在的问题,我觉得不好的TCP / IP校验应该是你最担心的。

嗯,这纸从2000年,所以从很久以前(的人,是我老)的,以及一组相当有限的痕迹。所以,把他们的数字与盐的巨大粮食。这就是说,它要看看这仍是这样会很有意思。不过,我怀疑事情已经改变,但错误的一些类可能仍远存在,如硬件故障。

比校验更多有用的,如果你真的需要额外的应用程序级别的保障将是数据的SHA-N的散列,或MD5等。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top