PR

 IPの上位層でパケットの転送を担うプロトコルには、先月まで学んだTCP以外にUDP(user datagram protocol)があります。UDPはTCPとは異なる性質を持ち、違う用途で使われています。今回はUDPについて見ていきましょう。

上位と下位で機能を分担

 TCP/IPネットワークの通信機能で特徴的なのは、上位プロトコル(TCPやUDP)と下位プロトコル(IP)で通信に必要な機能を分担している点です。IPの役割はパケットの搬送です。指定されたあて先の場所を調べながら送信元から受信者へパケットを届けます。通信にあたって送信者と受信者の間でコネクションを確立しませんから、IPはコネクションレス型プロトコルと呼ばれます。一方、上位プロトコルであるTCPは、送信者と受信者の間にコネクションを確立して、通信に信頼性を与えています。TCPはコネクション型プロトコルです。

 つまりTCP/IPでは、信頼性のある通信に必要なコネクションの機能をTCPが提供するように役割を分担しています。TCPを利用するアプリケーションは、パケットの紛失や順番の間違い、重複といったエラーへの対応を考える必要がなく、アプリケーションが本来提供する通信機能だけに注力できます。

 TCP/IPの通信機能の構成および機能分担は、必要と思われる機能を下のレイヤーに持たせるボトムアップの考え方で設計され、アプリケーションの負担を軽くしています。しかしこれとは逆にトップダウンの考え方もあります。アプリケーションが十分な通信機能を備えていればその下のレイヤー、つまりIPの上位層プロトコルにそうした機能は必要ありません。また厳密な信頼性を必要としないアプリケーションもあり得ます。UDPはこうした要請から生まれました。

 信頼性を提供するためにTCPの処理は重くなります。それに比べてUDPは、処理が軽いのが特徴です(pict.1)。

拡大表示
 ネットワークを利用するアプリケーションから見たTCPとUDPの違いは処理の重さです。図ではそれぞれの機能を分銅に例えて,天秤で処理の重さを比べています。伝送機能,IP通信機能,トランスポート層機能(TCPとUDP)をそれぞれ分銅だとすると,同じネットワークを使うなら下位の2層は同じですから,違いは結局トランスポート層の機能の差になります。
 UDPはIPの機能をほとんどそのまま利用するように作られています。TCPが提供するような機能を自前で用意するアプリケーションでは,UDPを使う方が無駄が省けます。