gpt4 book ai didi

Java UDP 服务器 IP 碎片

转载 作者:行者123 更新时间:2023-12-02 09:56:26 25 4
gpt4 key购买 nike

我正在通过以太网发送 2000 字节 JSON(以太网 MTU 1500 字节),因为我的数据包大于以太网 MTU,所以我的消息被分段,如您在下面的 Wireshark 捕获中看到的那样。现在我正在尝试在目标服务器中重新组装这个数据包,该数据包是用 Java 开发的。

如果我发送较小的数据包,我的服务器就能够接收数据并在命令窗口中打印它。但是当我发送 2000 字节的数据包时,我什么也没看到。

我不知道如何捕获这两个数据包并将其重新组装在 Java 中。我读到 IP 层正是这样做的,但我不知道为什么无法正常工作.

enter image description here

最佳答案

I don't know how to capture both packets and reassemble it in one in Java.

您不能使用标准 Java API。操作系统要么将 IP 数据包重新组装成 UDP 数据报,要么数据报将丢失。部分 UDP 数据报将不会传送到您的 Java 应用程序。

但是,我不确定如何解释 Wireshark 输出。在我看来,Wireshark 只看到了分段 UDP 数据报的第一个片段。

是否有可能MTU不匹配;例如发送者正在发送怪物数据包?

您是否可能没有告诉 Wireshark 在分析数据包之前重新组装数据包? (参见https://wiki.wireshark.org/IP_Reassembly)

<小时/>

我的建议是让 UDP 数据报大小小于 MTU 大小。如果您的消息需要大于此值,请使用 TCP 而不是 UDP。

关于Java UDP 服务器 IP 碎片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55983790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com