我已经计算出在两个udp端点之间分片前的最大数据量为1472(其他端点可能不同)。这说明MTU为1500字节,每个数据包的头部开销为28字节。如果我发送0字节数据(有效载荷),那么实际传输的数据是28字节吗?由于我正在进行一些基准测试,所以知道通道中发生的情况非常重要。
MTU是指可以在不进行分段的情况下传输的IP数据包的最大大小。
IPv4要求路径MTU至少为576字节,IPv6至少为1280字节。
Ethernet的MTU为1500字节。
IP数据包由两部分组成:包头和有效数据负载。
IPv4报头的大小至少为20字节,IPv6报头大小至少为40字节。
IP数据包的有效负载通常为TCP分段或UDP数据报。
UDP数据报由UDP报头和传输的数据组成。
UDP报头的大小为8字节。
这意味着一个空UDP数据报有效负载的IP数据包至少需要28(IPv4)或48(IPv6)字节,但可能会占用更多字节。
此外,请注意,在以太网中,IP数据包将另外被包装在MAC数据包中(14字节头+4字节CRC),并嵌入在以太网帧(8字节前导序列)中。这增加了26字节的数据到IP数据包中,但不计入MTU。
因此,您不能假设UDP数据报将导致传输特定数量的字节。
IP头部开销为20字节,UDP头部开销为8字节,所以是28字节。
http://en.wikipedia.org/wiki/User_Datagram_Protocol
如果你正在进行内部测试,请不要忘记以太网开销。