ネットワークに面したアプリケーションは、通常、トランスポートとビジネス ロジックが明確に分離されています。
ビジネス層はメッセージ全体のみを操作します。トランスポートはメッセージ全体を上流のビジネス層に配信し、フラグメントから連続ストリームを組み立て、再スライスし、一連のメッセージとして再解釈する可能性があります。
トランスポート層は通常、[サイズ (長さ = S)] [ペイロード (可変長)] の形式のプロトコル メッセージを使用して、リモート トランスポート層と通信します。ここで、[サイズ] は、マーシャリングされた長さ S がすべての通信相手に知られている単一の数値です。
トランスポート層が最初に行うことは、ダウンストリームから S バイトを受信するのを待機することです (非同期か同期かは関係ありません) 一時バッファーに入れます。完了すると、受信したデータをアンマーシャルし、受信するペイロードの長さ L を認識するようになります。
ペイロードの長さが L になると、トランスポートは L バイトをダウンストリームから一時バッファーに受信するのを待機し (複数の読み取りを組み合わせる必要がある場合があります)、完了するとアプリケーション層に通知し、組み立てられたメッセージ全体を 1 つのバッファーに渡します。