gpt4 book ai didi

c - 通过UDP协议(protocol)发送巨大的(大约40K字节)数据,怎么可能呢?

转载 作者:行者123 更新时间:2023-11-30 15:13:33 24 4
gpt4 key购买 nike

我正在开发以太网模块,其中我使用 IPv4 和 UDP 通过以太网传输数据。

我知道,理论上以太网可以传输 65K 字节的数据。但在单帧中,根据 MTU,我们只能传输 1518 字节(大约)的数据,包括 header 、地址。

在 1518 字节的数据之后,以太网模块是否会负责剩余数据的传输,或者程序员是否需要为此编写任何逻辑。

在互联网中,我发现可以使用 IP 分段来对大数据进行分段。

那么分片过程栈是不是厂商提供的?

供应商是否拥有自己的以太网堆栈来传输大量数据?

感谢帮助。

最佳答案

您的应用程序可以传输大约的整个有效负载。 40K 字节作为单个 UDP 消息。这是因为,IP 协议(protocol)在内部可以对最大 64KB 的数据报进行分段和重新组装,以便将其传输为更小的数据包。由于您的有效负载低于此限制,并且 IP 数据报可以承载您预期的有效负载。

由于以太网中的 MTU 为 1518 字节,IP 堆栈将在发送端将消息分段为多个 IP 数据包。在接收端,IP 堆栈会将 IP 片段重新组装成具有 40K 字节有效负载的单个 IP 数据包。只有在 IP 堆栈成功重组消息后,接收方的应用程序才能读取 40Kbytes 消息。

您可以引用Linux内核UDP代码http://lxr.free-electrons.com/source/net/ipv4/udp.c .

可以在此处找到 IP 数据报及其如何标记子数据包以进行重新组装的说明: http://www.freesoft.org/CIE/Course/Section3/7.htm

关于c - 通过UDP协议(protocol)发送巨大的(大约40K字节)数据,怎么可能呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34504710/

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