FastCGI サーバーから情報を読み取る非常に単純なプログラムを作成しました。ファイル記述子 0 のソケットを受け入れ、サーバーから受信したすべてのデータをraw.binary (1KB)に「pukes」します。926 バイトを受け取りましたが、バッファーのサイズが 1014 であるため、ファイルの長さは 1014 です。
このFastCGI 仕様を使用して手動でデータを分析しようとしましたが、データが仕様と一致していないようです。
最初の 2 バイトは両方とも 1 です。これは、プロトコル バージョン 1、タイプ 1 を意味します (これは、要求の開始を表します。)
次の 2 バイトは、1 を含む int16 を構成します。これは要求 ID であり、1 は最初の要求であるため、これも予想どおりです。
ただし、次の 2 バイト (16 進数)00 08
は、コンテンツの長さが 8 であることを教えてくれます...これは不可能ですが、バイナリをダウンロードした場合にわかるように、この 8 値の範囲内にさえないコンテンツがたくさんあります。ちんぷんかんぷん。
私は何を間違っていますか?