我正在创建一个协议,让两个应用程序通过TCP/IP流进行通话,并计算出如何为我的消息设计标题。使用TCP标头作为初始指南,我想知道是否需要填充。我明白,当我们处理缓存时,我们希望确保存储的数据适合缓存行,以便在检索时高效完成。然而,我不明白如何考虑应用程序解析字节流并存储它看起来合适的信息是否合理。填充或不填充 - 创建通信协议
例如:我想发送一个消息头,它由一个3字节的字段和一个1字节的填充字段组成,用于32位对齐。然后我会发送消息数据。
在这种情况下,接收器只需从流中取出3个字节并丢弃填充字节。然后开始阅读消息数据。正如我所看到的,他不会以他想要的方式存储3个字节和消息数据。整个字节对齐点是为了能够以有效的方式进行检索。但是,如果检索器不关心填充,它将如何有效地检索?
没有填充,检索器只是从流中取出3个头字节,然后取出数据字节。由于检索器存储这些字节,但他想要,填充是否完成有什么关系?
也许我错过了填充点。
从这篇文章中提取一个问题有点难,但是我说过你们可以指出我的误解。
请让我知道你们的想法。
谢谢, JBU
+1使用文本进行可读性,调试,日志记录,扩展性等和/或压缩文本以最小化尺寸;二进制格式很可能是“过早优化”。尽管如此,二进制格式*可以*优化CPU利用率和内存,这对于TCP来说是一个重要的考虑因素(并且可能对自制协议/应用程序可能不重要)。 – ChrisW 2009-06-17 02:41:32