我正在编写关于编码理论的数学课,我们必须为我的术语标记做一个项目。
我的项目是一个带有回显服务器的客户端,它显示从客户端到服务器,然后返回的行程中引入的错误。并测试不同的错误纠正方案的效率以及它们适合这项任务的程度。
编码并不是真正的问题,我能够制作能够检测到错误的东西,如果无法解决错误就要求重传等等。
我遇到的问题是,到目前为止,为了引入任何类型的误码,我必须人为地进行 - 因为其他数据传输层都有自己的纠错协议。
我的问题:有没有办法解决这个问题?
我不知道我会怎么做,甚至从哪里开始。
另外,我知道有些协议我无法修改,所以总是会在这些级别的后台进行纠错。但我想要的是能够假装其中一个层本身没有检查事物,然后我的应用程序将有机会扮演这个角色。
如果无法做到这一点,那么模拟传输过程中引入的错误有哪些好方法。即使是一个简单的频道示例,我也无法找到有关错误分布的统计信息。鉴于那些我可以继续使用服务器在消息中引入错误的当前方法。
答案 0 :(得分:2)
我会用JPCap开始here。这应该允许您伪造任何类型的网络数据包。
答案 1 :(得分:1)
您至少可以通过使用UDP方案而不是TCP方案来避免一级保护。
答案 2 :(得分:1)
我可能只是实现了一个或多个InputStream和/或OutputStream的子类,并对它们进行编码以便以各种方式改变我的数据流。这样可以很容易地实例化大量不同的测试用例。然后只考虑你的java代码,以便纠正部分代码只能看到普通的InputStream / OuputStream,并且不知道数据是如何被操纵的。
例如,写一个每第N个字节,随机改变一个位。等等。然后打开一个套接字,并将该InputStream包装在您的子类中。 (类似的技术适用于UDP,只是没有流!)
如果你有冲动和/或要求,你可以做一些奇特的统计事件来控制错误率,但我可能只是以各种方式和不同的速度专注于伪随机调整,然后运行一堆不同的测试用例,如果您的项目需要,请尝试对结果数据进行一些奇特的分析。
使用某种奇特的工具来改变不同TCP / UDP层的数据包可能是可能的,但有点偏离数学,你真的应该专注于数学课程! : - )