2

我注意到 FastCGI 协议定义了一个 7 字节的记录(通信中使用的数据结构)标头和 1 字节的填充。必要时还会填充其他结构。想知道这个字节是否改变了任何东西,我对 7 字节和 8 字节缓冲区的 1000000 次顺序发送和接收进行了计时,结果发现……没有什么特别的。几次执行提供的数据如此多变,甚至不值得平均。(测试代码

如果我必须通过 TCP 发送 7 字节数据是否值得添加一个字节,所以我的发送和读取操作在 8 字节缓冲区上进行?那来自哪里以及如何知道什么填充是合适的?如果套接字是 Unix 文件套接字还是 INET 套接字,有什么不同吗?如果发件人和收件人在同一主机上,会有所不同吗?

4

2 回答 2

1

不,填充与网络无关。

通常会看到以这种方式定义的结构,以便它们在 4 字节边界上对齐(或 64 位操作系统上的 8 字节)。请参阅此处了解更多信息:

http://en.wikipedia.org/wiki/Data_structure_alignment

于 2012-08-29T17:36:59.897 回答
0

这又回到了不同架构的对齐要求,这里的主要目的是尽量减少必须在严格对齐平台上完成的数据复制,并利用商用 PC 硬件上更快的执行速度。这就是为什么大多数低级协议(如 IP 和 TCP)的标头中的整数在 32 位或 64 位边界上对齐。

于 2012-08-29T17:38:00.847 回答