2015-08-20 27 views
0

我准备写一个将要发送/接收UDP数据报的程序。我应该拆分数据还是允许分片

这是我的问题: 我应该如何管理数据以便我发送的内容适合单个数据报?基本上在应用程序中分割数据,然后发送多个数据报。或者,我应该允许网络处理碎片和重新组装吗?

我假设1500字节的标准MTU大小。理论上,IPv4之上的最大UDP有效载荷是65507字节。

赞赏性能/额外开销信息,最佳实践和其他信息。

+0

真正的问题是你为什么在乎,这是依赖于性能,还是你需要一致性和有保证的交付? – Petah

+0

它是UDP,因此交付永远不会得到保证。我想我是从性能的角度来问的,而且可能更理论化。如果我想尽可能多地服务客户,同时希望(但不依赖于)不丢失数据...... – n01d3a

回答

0

IP堆栈层(和OSI层)的设计使得一层中的工作对上层是透明的。因此,最初,您不必担心如何发送数据。您应该只知道与UDP有关的方面:无连接,不可靠...并且不应该关心IP层。

除非您有自己的定制堆栈,否则在考虑更高层的MTU时看不到任何优势。

+0

这就是我试图解决这个问题的原因。如果我只是在UDP数据包中发送尽可能多的数据,并让网络对其进行分段,或者应该花费时间(处理和编码)将所有数据放入具有标准MTU大小的数据包中,那么这很重要吗? – n01d3a

+0

@ n01d3a,不用担心MTU,发送你必须发送的所有内容。不应该有任何问题。去尝试一下!通过几行代码,客户端和服务器,您可以在最多4个小时内对其进行测试。 – rodolk