代码之家  ›  专栏  ›  技术社区  ›  Jean-Bernard Pellerin

在客户机-服务器传输中引入错误

  •  3
  • Jean-Bernard Pellerin  · 技术社区  · 15 年前

    我在一个关于编码理论的数学课上,我们必须为学期标记做一个项目。

    我的项目是一个带有Echo服务器的客户机,它显示了从客户机到服务器的旅程中引入了哪些错误,然后返回。并测试不同的纠错方案的效率以及它们是否适合这项任务。

    编码并不是真正的问题,我可以做一些可以检测错误的事情,如果无法修复错误就要求重新传输等等。

    我所面临的问题是,到目前为止,要引入任何类型的位错误,我必须人为地做到这一点——因为其他数据传输层都有自己的纠错协议。

    我的问题是:有没有办法解决这个问题?

    我不知道该怎么做,甚至不知道从哪里开始。

    另外,我知道有些协议我做不到,所以在这些级别的后台总是会进行纠错。但是我想要的是能够假装这些层中的一个没有检查事物本身,然后我的应用程序将有机会扮演这个角色。

    如果不能做到这一点,那么模拟传输过程中引入的错误的好方法是什么?我甚至在一个简单的频道示例中也找不到关于错误分布的统计信息。考虑到这些,我可以继续使用当前的方法,让服务器在消息中引入错误。

    3 回复  |  直到 15 年前
        1
  •  2
  •   Jherico    15 年前

    我会开始 here 和JPCap在一起。这将允许您伪造任何类型的网络包。

        2
  •  1
  •   D.C.    15 年前

    通过使用UDP方案而不是TCP方案,至少可以避免一级保护。

        3
  •  1
  •   Sarah K    15 年前

    我可能只需要实现一个或多个inputstream和/或outputstream的子类,并用各种方式对它们进行编码,以改变我的数据流。这将使实例化许多不同的测试用例变得容易。然后只需对Java代码进行因子化,以便代码中的错误纠正部分只看到一个简单的输入流/ OutPoSt流,并且不知道数据是如何被操作的。

    例如,写一个每N个字节,随机改变一个位。等等。然后打开一个套接字,并将该输入流包装在子类中。(同样的技术也适用于没有流的UDP!)

    如果您有这种冲动和/或需求,您可以做一些奇特的统计工作来控制错误率,但是我可能只关注以各种方式和各种速率进行的伪随机调整,然后运行大量不同的测试用例,并尝试对结果数据进行一些奇特的分析,如果您的项目需要这样做的话。

    使用一些奇特的工具在不同的TCP/UDP层上改变数据包是可能的,但是有点偏离了你在数学课上应该关注的数学。:-)