通过UDP协议发送大量(约40K字节)数据,怎么可能?

时间:2015-12-29 05:02:54

标签: c udp embedded ethernet ipv4

我正在研究以太网模块,我使用IPv4和UDP通过以太网传输数据。

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

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

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

因此,碎片程序堆栈是否由供应商提供?

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

帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

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

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

您可以在http://lxr.free-electrons.com/source/net/ipv4/udp.c参考Linux内核UDP代码。

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