我正在创建一个协议,让两个应用程序通过 TCP/IP 流进行通信,并且正在研究如何为我的消息设计标头。使用 TCP 标头作为初始指南,我想知道是否需要填充。我知道,当我们处理缓存时,我们希望确保存储的数据适合一行缓存,以便在检索数据时能够高效地完成。但是,考虑到应用程序将解析字节流并将其存储为它认为合适的方式,我不明白填充标头有何意义。
例如:我想通过一个包含 3 字节字段后跟 1 字节填充字段的消息头发送 32 位对齐。然后我将发送消息数据。
在这种情况下,接收者只会从流中取出 3 个字节并丢弃填充字节。然后开始读取消息数据。正如我所看到的,他不会以他想要的方式存储 3 个字节和消息数据。字节对齐的全部意义在于以一种有效的方式对其进行检索。但是,如果检索器不关心填充,如何有效地检索它?
如果没有填充,检索器只需从流中获取 3 个标头字节,然后获取数据字节。由于检索器以他想要的方式存储这些字节,因此填充是否完成有什么关系?
也许我错过了填充点。
从这篇文章中提取一个问题有点困难,但是根据我所说的,你们可能会指出我的误解。
请让我知道你们的想法。
谢谢,jbu