前の章では、アプリケーションからのデータを種々の層に伝達していくことでプロトコル データ ユニット(PDU)がどのように構築されるのかを説明しました。こうして作成された PDU はメディアに送出されます。 宛先ホストでは、データをアプリケーションに伝達できるまで逆のプロセスが進行します。
アプリケーションによっては、ときに何ギガバイトにもなる大量のデータを伝送するものがあります。 そのようなデータをすべて 1 つの大きなかたまりとして送信するのは実際的ではありません。 そのデータを送信している間は、他のネットワーク トラフィックを伝送できないからです。 データの大きなかたまりを送信しようとすると、数分から、ときには数時間かかることさえあり得ます。 また、エラーがあれば、データ ファイル全体が失われたり、再送信しなければならなくなったりするでしょう。 ネットワーク デバイスには、そんなに大きなデータを送信中や受信中に格納できるほどのメモリ バッファはないでしょう。 この制限は、使用しているネットワーク テクノロジーと物理メディアによって違ってきます。
アプリケーション データをセグメントに分割すれば、伝送データがメディアの制限の範囲内に収まるとともに、さまざまなアプリケーションからのデータをメディア上で多重化できるようになります。
TCP と UDP によるセグメント化の違い
図に示すように、各 TCP セグメントのヘッダーにはシーケンス番号が含まれています。宛先ホストのトランスポート層の機能は、このシーケンス番号を使用することで、セグメントを送信された順序で再構成できるのです。 そのため、宛先アプリケーションはデータを送信側が意図したとおりの形式で受け取ることができます。
UDP を使用するサービスもアプリケーション間の会話を追跡しますが、それらのサービスは情報が送信された順序にも、接続を維持することにも関心を払いません。 UDP ヘッダーにはシーケンス番号がありません。 UDP はシンプルな設計になっていて、TCP よりもオーバーヘッドが少ないため、データの転送は速くなります。
パケットによってネットワーク上で通るパスが異なることもあるので、情報の到達順序は、送信された順序と違ったものになることがあります。 UDP を使用するアプリケーションは、データが送信されたときの順序で到着しないこともあるという点を受け入れなければなりません。