2

FastCGIプロトコルが1バイトのパディングで7バイトのレコード(通信で使用されるデータ構造)ヘッダーを定義していることに気づきました。他の構造も必要に応じて埋められます。この1バイトが何かを変えるかどうか疑問に思って、私は7バイトと8バイトのバッファーの1000000の順次送信と受信の時間を計り、そして...特に何も見つけませんでした。いくつかの実行により、データが非常に可変になり、平均化する価値さえありませんでした。(テストコード

TCP経由で7バイトのデータを送信する必要がある場合、1バイトを追加する価値があるので、送信と読み取りは8バイトのバッファーで動作しますか?それはどこから来て、どのパディングが適切かを知る方法は?ソケットがUnixファイルソケットなのかINETソケットなのか違いますか?送信者と受信者が同じホスト上にある場合は違いますか?

4

2 に答える 2

1

いいえ、パディングはネットワークとは関係ありません。

4バイト境界(または64ビットOSでは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 に答える