我是网络新手,只是关于帧大小的问题。我在看一本书,上面写着:
字符/字节填充的一个有趣特征是帧的大小取决于在帧的有效负载中发送的数据。事实上,不可能使所有帧的大小完全相同,因为任何帧中可能携带的数据都是任意的。
我很困惑,假设我们要传输 10MB 的数据,如果我们将帧体的大小限制为最大 500 字节,那么无论我们在每帧中进行多少次字节填充,帧的大小都是总是固定的,除非这本书的意思是“实际有效数据”,我是正确的吗?
我是网络新手,只是关于帧大小的问题。我在看一本书,上面写着:
字符/字节填充的一个有趣特征是帧的大小取决于在帧的有效负载中发送的数据。事实上,不可能使所有帧的大小完全相同,因为任何帧中可能携带的数据都是任意的。
我很困惑,假设我们要传输 10MB 的数据,如果我们将帧体的大小限制为最大 500 字节,那么无论我们在每帧中进行多少次字节填充,帧的大小都是总是固定的,除非这本书的意思是“实际有效数据”,我是正确的吗?
字符/字节填充的一个有趣特征是帧的大小取决于在帧的有效负载中发送的数据。事实上,不可能使所有帧的大小完全相同,因为任何帧中可能携带的数据都是任意的。
这实际上不是真的。一些协议(如 ATM)使用固定的帧(信元)大小并填充未使用的部分。其他协议(如以太网)使用具有最小和最大尺寸的可变帧大小 - 对于非常小的有效负载,最小值可能还需要一些填充。
帧大小是协议的一个属性——填充的需要是结果,而不是相反。当然,可以使所有帧的大小相同。它可能只是不实用或不高效。由于数据无论如何都是打包的,因此必须将过大的数据块转移到下一帧。
假设我们要传输 10MB 的数据,如果我们将帧体的大小限制为最大 500 字节,那么无论我们在每帧中进行多少次字节填充,帧的大小始终是固定的,除非书的意思是“实际有效数据”,我正确吗?
如果您使用 500 字节的帧有效负载传输 10 MB 数据,则需要 20,000 个帧。不需要时不要使用填充,这会浪费带宽。如果您的数据不能整齐地放入一定数量的帧中,则最后一个要么被填充(对于固定大小),要么只是小于最大值(对于可变大小)。
固定帧大小存在效率低下的问题。想象一个实时应用程序(如 VoIP),其中一个帧可能携带少至 64 字节的有效负载。UDP over IPv4 over Ethernet 只需“仅”66 字节开销即可。
如果您现在有 500 字节的固定有效负载大小,则开销将增加 434 字节 - 每帧。
当然,您可以为您的应用程序定制一个协议,以使用更小、固定的帧大小——但是对于大型有效负载来说,它的效率会很低。
可变帧大小允许协议适应具有不同有效负载大小的各种应用程序。它可以承载具有可容忍开销的小负载和具有非常小的开销的大负载。