背景:使用点对点UDP传输为模拟器(Windows,.net)编码多人游戏。此Q不是关于UDP与TCP的优点,也不是关于数据包标头。对此Q的相关讨论是here。
考虑:我发送一个有效负载大小为X的UDP数据包,其中X可以是1到500字节之间的任何数据。
问:在传输过程中的任何时刻,是否存在/可以暂时将松弛字节添加到数据包中,即。字节另外到所需的标头/有效负载?例如,可能是传输中的任何参与者(Windows操作系统 - NAT - 互联网 - NAT - Windows操作系统)添加了字节以满足特定的块大小,因此这些添加的字节成为传输的一部分(即使切断以后,实际上是传输,因此消耗处理器(交换机,服务器CPU)周期?
(询问的原因是在编写/分解数据包上花了多少精力,当然:-)。将其挤压到最后一位(小的,更本地的CPU周期)与允许数据包部分自描述(更大,更少本地CPU)。请注意,数据包大小始终小于(最接近我,我知道)MTU,通常接近1500字节)
THX!
答案 0 :(得分:1)
简短的回答是:是。
以以太网为例。出于冲突检测的目的,以太网帧的最小有效载荷大小为42字节。如果有效载荷(包括应用程序数据,UDP和IP头,在这种情况下)小于该值,则填充将添加到以太网帧。
另外,据我所知,网卡将用于此工作,而不是它的驱动程序或操作系统。
如果您想确定发送小数据包或等待发送更大数据包是否更好,请查看Nagle的算法。
在这里你可以看到以太网填充: What are the 0 bytes at the end of an Ethernet frame in Wireshark?