IPの上でデータを運ぶ上位プロトコルは2種類あります。TCP(テーシーピー、Transmission Control Protocol)とUDP(ユーディーピー、User Datagram Protocol)です。両者には提供する機能が違うので、それぞれ適する用途が異なります。
TCPは信頼性の高い通信を提供
IPは、送信元コンピュータからいくつかのネットワークを経由してあて先コンピュータにパケットを配送する機能を持っています。しかし、途中でパケットが紛失したり、パケットがあて先に届く順番が送信した順番と違ってしまうことがあります。
TCPはIPの持つこうした欠点を補い、通信の信頼性を確保する機能を持ちます。TCPはデータ送受信の前に、コネクションと呼ばれる仮想的な通信回線を送信元とあて先との間に確立します。そのため、コネクション型プロトコルと呼ばれます(pict.1)。
TCPを使うと、上位のアプリケーションはパケットの紛失や順番の変化を意識しなくて済みます。ただ、コネクションごとに、コンピュータの資源(メモリーやCPUの能力など)を一定量消費するので、同時に確立できるコネクションの数に上限があります。
一方、UDPはIPプロトコルの機能をアプリケーションから直接利用するシンプルなプロトコルです。コネクションを確立しないのでコネクションレス型プロトコルと呼ばれます。UDPでは、信頼性がIPと同じレベルになるので、上位のアプリケーション側で必要とする通信制御を施すことになります。またコンピュータの資源を消費しないのでTCPと違い通信相手の数にとくに制限はありません。