TCPは、データの継続的なストリームを提供します。TCPはパケットを使用して実装されますが、TCPの全体的なポイントはパケットを隠すことです。
描きたい壁のように考えてください。壁はレンガでできています。レンガをモルタルで接着し、漆喰を塗って壁面を滑らかにします。レンガはIPパケットであり、TCPは石膏です。
これで、滑らかな漆喰のTCPトンネルができたので、そこに構造を追加します。ボックスを描画して、描画が互いに分離されているようにします。これがあなたがしたいことです:あなたのデータに少しの「管理」構造(図面の周りのボックス)を追加すること。
多くのプロトコルはpacket
、固定形式の管理ヘッダーで始まる一連のデータであるの概念を使用します。ヘッダーには、パケットの終了場所を決定するのに十分な情報が含まれています。たとえば、パケット長が含まれます。HTTPは、Content-Length
ヘッダーを使用して、または(HTTP / 1.1を使用して)データを1つまたは複数のミニパケットに分割する「チャンク転送エンコーディング」を使用してこれを行います。各ミニパケットには、正確にミニパケットの長さの指示で構成される単純なヘッダーがあります。
もう1つの方法は、「通常のデータ」には表示できない特別なターミネーターシーケンスを作成することです。データがテキストの場合、値ゼロのバイトをターミネータとして使用できます。
さらに別の方法は、自己終了データを使用することです。これは、要素の終わりに到達したかどうかをいつでも知ることができるように構造化されたデータです。たとえば、XMLデータは、などのマーカーのネストされたペアとして編成され<foo>...</foo>
ます。終了マーカー(</foo>
)に到達すると、要素が終了したことがわかります。