2009-09-17 53 views
0

我有一个由碎片包引起的错误。我想通过在测试中创建一个分段的数据包并将其发送到包含该错误的软件来测试此错误。是否有可能强制数据包在Java中被分割?

我该如何去做这件事?

任何指导或替代方法表示赞赏,谢谢。

+1

是不是表示错误是在数据包重组代码中?假设它不可能是那么多的代码,或许有时间去关注它呢? – 2009-09-17 00:30:41

回答

3

如果您在谈论TCP碎片,那么在收到时应由操作系统隐藏(重新组装)这些碎片,除非您使用低级别数据包捕获工具,例如Ethereal

要强制发送TCP分片,请减少某些路由器上的最大数据包/分段大小,和/或配置发送操作系统使用比适合的更大的MSS。

1

在Windows中,您可以更改注册表中的MTU大小。不了解其他平台。

0

碎片是否需要成为TCP流的一部分?或者任何IP碎片都可以吗?只需通过使数据报大于MTU就可以轻松生成UDP。通常情况下,2k可以正常工作,但是如果你的局域网使用巨型帧,10k或20k仍然会产生碎片。

0

用UDP将数据包分段很容易。如果您发送的UDP数据报大于MTU,则它将被分段。 TCP不是那么容易,操作系统不会故意将分组分段。更改主机或路由器MTU也无济于事,因为大多数操作系统都会执行MTU发现并找到最小的一个。

你应该使用一些像Packet Generator这样的东西来模拟碎片化的TCP数据包。