IPの上でデータを運ぶ上位プロトコルは2種類あります。TCP(テーシーピー、Transmission Control Protocol)とUDP(ユーディーピー、User Datagram Protocol)です。両者には提供する機能が違うので、それぞれ適する用途が異なります。

TCPは信頼性の高い通信を提供

 IPは、送信元コンピュータからいくつかのネットワークを経由してあて先コンピュータにパケットを配送する機能を持っています。しかし、途中でパケットが紛失したり、パケットがあて先に届く順番が送信した順番と違ってしまうことがあります。

 TCPはIPの持つこうした欠点を補い、通信の信頼性を確保する機能を持ちます。TCPはデータ送受信の前に、コネクションと呼ばれる仮想的な通信回線を送信元とあて先との間に確立します。そのため、コネクション型プロトコルと呼ばれます(pict.1)。

 TCPを使うと、上位のアプリケーションはパケットの紛失や順番の変化を意識しなくて済みます。ただ、コネクションごとに、コンピュータの資源(メモリーやCPUの能力など)を一定量消費するので、同時に確立できるコネクションの数に上限があります。

 一方、UDPはIPプロトコルの機能をアプリケーションから直接利用するシンプルなプロトコルです。コネクションを確立しないのでコネクションレス型プロトコルと呼ばれます。UDPでは、信頼性がIPと同じレベルになるので、上位のアプリケーション側で必要とする通信制御を施すことになります。またコンピュータの資源を消費しないのでTCPと違い通信相手の数にとくに制限はありません。

拡大表示
 TCPはIP通信の不安定さを補うため,通信の前にコネクションと呼ばれる仮想的な通信回線を確立します。図では川を越えて荷物を渡すためにロープを張っていますが,これがコネクションです。ロープを張るには手間がかかりますが,一度渡してしまえば,安全で確実な通信ができます。
 一方,中にはコネクションを張る手間に見合った通信量がない一時的な通信や,それほど信頼性を必要としない通信があります。また,コネクションを張っている時間が惜しいこともあります。こうした通信ではUDP を使います。UDPはコネクションを張らず直接相手にパケットを送るので,信頼性は低くなります。