UDPはInternet Protocol 上で利用されるプロトコルであり[2] 、IPと合わせてUDP/IPスタックとして機能する。一方でUDPはそれ単体でプロトコルであり、UDP自体で提供する明確な機能がある。以下はこの2つの観点に基づいた機能の説明である。
次の表はIP、UDP/IPスタック、TCP/IPスタックが提供する機能の比較である。
表. IP, UDP/IP, TPC/IP 比較
IP
UDP/IP
TCP/IP
ホスト間通信 by アドレス
✔
✔
✔
アプリ間通信 by ポート
-
✔
✔
パケットトランザクション
△[6]
✔
✔
バイトストリーム送信
-
-
✔
信頼性/到達保証
-
-
✔
流量制御
-
-
✔
順序制御
-
-
✔
輻輳制御
-
-
✔
すなわちUDP/IPは「ネットワークのネットワークにおけるトランザクション指向のアプリケーション間データグラム送信[1] 」を実現する。UDPはこれを最小限のプロトコルで実現するよう意図されているため[7] 、UDP/IPはTCP/IPより少ない機能のみを提供する。単一パケットの到達保証や複数パケットに渡る流量制御・順序制御はサポートしていない(データグラムモデル)。このため、UDPを Unreliable Datagram Protocol (信頼できないデータグラム・プロトコル)と呼ぶこともある[8] 。
UDPは2つの機能のみを提供する。
ホスト内通信振り分け: ポート
データグラム完全性チェック: チェックサム
IPはホスト間通信を可能にするが、そのままだとホストへの全信号を1つのアプリケーションのみが受け取る。UDPはポート機能を提供することで1ホスト内複数アプリケーションへの通信振り分けを可能にする。またIPはヘッダチェックサムによる宛先誤り検出を可能にするが、そのままだとペイロードの破壊を検出できない。UDPはIPアドレス・ポート・ペイロードに基づくチェックサムを提供することで単一データグラムのルーティング誤りおよびデータ破壊を (100%ではないが) 検出できる[9] 。
すなわちUDPはアプリケーション間通信を可能にし[3] 、パケットトランザクション(all-or-nothing通信[10] )を提供する[11] [12] 。
UDPの送受信単位はユーザデータグラム (英 : user datagram )であり、UDPヘッダ (英 : UDP header )およびデータ (英 : data )から構成される。ビット列として次の構造を持つ。
オフセット(ビット)
0 – 15
16 – 31
0
送信元ポート番号
宛先ポート番号
32
データ長
チェックサム
64+
データ
UDPヘッダには4つのフィールドがあり、それぞれ2バイト(16ビット)である[5] 。そのうち2つ(ピンク色の部分)はIPv4ではオプションである。IPv6では送信元ポート番号だけがオプションである(後述)。
送 信 元 ポ ー ト ︵ 英 : S o u r c e P o r t ︶ は 送 信 側 プ ロ セ ス の ポ ー ト で あ る [ 13 ] 。
送 信 元 ポ ー ト は U D P ヘ ッ ダ の 任 意 フ ィ ー ル ド で あ る [ 14 ] 。 不 使 用 時 は ゼ ロ 埋 め さ れ る [ 15 ] 。 追 加 情 報 が な け れ ば 返 信 宛 先 ポ ー ト は こ の 番 号 と 想 定 さ れ る [ 16 ] 。 送 信 元 が ク ラ イ ア ン ト の 場 合 、 エ フ ェ メ ラ ル ポ ー ト 番 号 と い う こ と が 多 い 。 送 信 元 が サ ー バ の 場 合 、 ウ ェ ル ノ ウ ン ポ ー ト 番 号 と い う こ と が 多 い [ 4 ] 。
宛先ポート (英 : Destination Port )は受信側プロセスのポートである。
宛先ポートはUDPヘッダの必須フィールドである。送信元ポート番号と同様、宛先がクライアントならエフェメラルポート、サーバならウェルノウンポートということが多い[4] 。
デ ー タ 長 ︵ 英 : L e n g t h ︶ は ユ ー ザ ー デ ー タ グ ラ ム ︵ U D P ヘ ッ ダ + デ ー タ ︶ の オ ク テ ッ ト 数 で あ る [ 17 ] 。
デ ー タ 長 は U D P ヘ ッ ダ の 必 須 フ ィ ー ル ド で あ る 。 U D P ヘ ッ ダ が 8 バ イ ト 固 定 で あ る た め 最 小 値 は 8 で あ る [ 18 ] 。 理 論 上 の 上 限 は 6 5 , 5 3 5 バ イ ト ︵ ヘ ッ ダ 8 バ イ ト + デ ー タ 6 5 , 5 2 7 バ イ ト ︶ で あ る 。 下 位 層 が I P v 4 の 場 合 、 実 際 の 上 限 は 6 5 , 5 0 7 バ イ ト ︵ IP ヘ ッ ダ 20 バ イ ト と U D P ヘ ッ ダ 8 バ イ ト を 差 し 引 い た 値 ︶ と な る [ 4 ] 。 I P v 6 の ジ ャ ン ボ グ ラ ム 機 能 で は 、 6 5 , 5 3 5 バ イ ト を 越 え る サ イ ズ の U D P パ ケ ッ ト を 扱 え る [ 19 ] 。 こ の 場 合 、 I P v 6 の オ プ シ ョ ン ヘ ッ ダ で サ イ ズ を 指 定 し 、 最 大 4 , 2 9 4 , 9 6 7 , 2 9 5 バ イ ト ︵ 2 32 - 1 ︶ を 指 定 で き る の で 、 ヘ ッ ダ 部 の 8 バ イ ト を 差 し 引 く と 最 大 4 , 2 9 4 , 9 6 7 , 2 8 7 バ イ ト の デ ー タ を 扱 え る 。
チ ェ ッ ク サ ム ︵ 英 : C h e c k s u m ︶ は ﹁ IP 疑 似 ヘ ッ ダ + ユ ー ザ ー デ ー タ グ ラ ム + パ デ ィ ン グ ﹂ に 対 す る チ ェ ッ ク サ ム で あ る [ 20 ] 。
チ ェ ッ ク サ ム は U D P ヘ ッ ダ の 条 件 付 き 任 意 フ ィ ー ル ド で あ る [ 21 ] 。 不 使 用 時 は ゼ ロ 埋 め さ れ る [ 22 ] 。 ヘ ッ ダ と デ ー タ の 誤 り 検 出 に 使 用 。 I P v 6 で は オ プ シ ョ ン で は な い の で 、 ゼ ロ に は で き な い [ 23 ] 。 [ 24 ]
チ ェ ッ ク サ ム の 計 算 法 は R F C 7 6 8 で 以 下 の よ う に 定 義 さ れ て い る 。
IP ヘ ッ ダ か ら の 情 報 で 作 ら れ る 擬 似 ヘ ッ ダ と U D P ヘ ッ ダ と デ ー タ を 長 さ が 2 オ ク テ ッ ト の 倍 数 に な る よ う に ︵ 必 要 な ら ︶ 値 が ゼ ロ の オ ク テ ッ ト で パ デ ィ ン グ し 、 各 2 オ ク テ ッ ト の 1 の 補 数 の 総 和 の 1 の 補 数 の 下 位 16 ビ ッ ト を チ ェ ッ ク サ ム と す る [ 25 ] 。
つ ま り 、 全 16 ビ ッ ト ワ ー ド を 1 の 補 数 演 算 で 足 し あ わ せ る 。 そ の 合 計 を 1 の 補 数 化 す れ ば U D P の チ ェ ッ ク サ ム ・ フ ィ ー ル ド の 値 に な る 。
チ ェ ッ ク サ ム 計 算 の 結 果 が ゼ ロ に な る 場 合 ︵ 16 ビ ッ ト 全 部 が 0 ︶ 、 チ ェ ッ ク サ ム を 省 略 す る 場 合 と 区 別 す る た め 、 そ の 1 の 補 数 ︵ 全 ビ ッ ト が 1 ︶ を 設 定 す る 。
I P v 4 と I P v 6 で は チ ェ ッ ク サ ム 計 算 に 使 う デ ー タ に 差 異 が あ る 。
I P v 4 上 の U D P で は 、 実 際 の I P v 4 ヘ ッ ダ か ら の 情 報 か ら 作 っ た 擬 似 ヘ ッ ダ を チ ェ ッ ク サ ム 計 算 に 使 用 す る 。 擬 似 ヘ ッ ダ は 実 際 の I P v 4 ヘ ッ ダ そ の も の で は な い 。 以 下 に チ ェ ッ ク サ ム 計 算 に の み 使 用 す る 擬 似 ヘ ッ ダ を 示 す 。
bits
0 – 7
8 – 15
16 – 23
24 – 31
0
送信元IPアドレス
32
あて先IPアドレス
64
ゼロ
プロトコル番号
UDP長
96
送信元ポート番号
宛先ポート番号
128
データ長
チェックサム
160+
データ
送 信 元 IP ア ド レ ス と あ て 先 IP ア ド レ ス は I P v 4 ヘ ッ ダ に あ る 値 で あ る 。 プ ロ ト コ ル 番 号 は U D P を 表 す の で 1 7 ( 0 x 1 1 ) で あ る 。 U D P 長 フ ィ ー ル ド は U D P の ヘ ッ ダ と デ ー タ の 全 長 で あ る 。
U D P チ ェ ッ ク サ ム 計 算 は I P v 4 で は オ プ シ ョ ン で あ る 。 チ ェ ッ ク サ ム を 使 わ な い 場 合 は ゼ ロ を 設 定 す る 。
I P v 6 上 の U D P で は 、 チ ェ ッ ク サ ム は 基 本 的 に 必 須 で あ る 。 た だ し U D P 上 で ト ン ネ リ ン グ プ ロ ト コ ル を 利 用 す る 場 合 は 例 外 的 に 計 算 を 省 略 し ゼ ロ に 設 定 し て 良 い [ 26 ] 。 チ ェ ッ ク サ ム の 計 算 法 は R F C 2 4 6 0 で 次 の よ う に 文 書 化 さ れ て い る 。
ト ラ ン ス ポ ー ト 層 か そ れ よ り 上 位 の プ ロ ト コ ル で 、 IP ヘ ッ ダ 内 の ア ド レ ス を チ ェ ッ ク サ ム 計 算 に 使 う 場 合 、 I P v 6 で は 1 2 8 ビ ッ ト の I P v 6 の ア ド レ ス を 使 用 す る [ 23 ] 。
チ ェ ッ ク サ ム 計 算 で は 、 実 際 の I P v 6 ヘ ッ ダ を 真 似 た 次 の よ う な 擬 似 ヘ ッ ダ を 用 い る 。
bits
0 – 7
8 – 15
16 – 23
24 – 31
0
送信元IPアドレス
32
64
96
128
あて先IPアドレス
160
192
224
256
UDP長
288
ゼロ
次のヘッダ
320
送信元ポート番号
宛先ポート番号
352
データ長
チェックサム
384+
データ
送 信 元 IP ア ド レ ス は I P v 6 ヘ ッ ダ に あ る 値 を 使 う 。 あ て 先 IP ア ド レ ス は 最 終 的 な あ て 先 で あ り 、 I P v 6 パ ケ ッ ト に ル ー テ ィ ン グ ヘ ッ ダ が な け れ ば I P v 6 ヘ ッ ダ 内 の あ て 先 IP ア ド レ ス を 使 い 、 さ も な く ば 送 信 側 で は ル ー テ ィ ン グ ヘ ッ ダ の 最 後 の 要 素 を 、 受 信 側 で は I P v 6 ヘ ッ ダ の あ て 先 IP ア ド レ ス を 使 う 。 次 の ヘ ッ ダ と い う フ ィ ー ル ド は プ ロ ト コ ル 番 号 を 意 味 し 、 U D P な の で 17 を 指 定 す る 。 U D P 長 フ ィ ー ル ド は U D P の ヘ ッ ダ と デ ー タ を 合 わ せ た 長 さ で あ る 。
伝達したい情報が収納される。
UDPモジュールはソケット を介してプログラムからアクセスする場合が多い。ポート番号0は送信側プロセスが応答を期待していない場合は使うことも許されている。
UDPは設計方針として輻輳 制御を提供しない。これがネットワーク全体への負荷を引き起こすケースがある。
帯域の大きな部分を消費して輻輳を起こしやすいUDPアプリケーションは、インターネットの安定性を危険にさらす可能性があり、実際に帯域を大幅に占める事態が発生している。制御できないUDPトラフィックによって輻輳崩壊になる可能性を低減するためのネットワーク機構が提案されてきた。現状では、ルーター などのネットワーク機器でのパケット・キューイングやパケット・ドロッピングが過度なUDPトラフィックをスローダウンさせる唯一の手段となっている。Datagram Congestion Control Protocol (DCCP) はこの問題を部分的に解決すべく設計されたプロトコルで、ストリーミングなどの高転送レートのUDPストリームに対してTCPのような輻輳制御を追加するものである。
POS 、会計 、データベース などのTCPを使っているシステムはUDPトラフィックに圧迫されつつある。TCPでパケットを喪失すると、輻輳制御が働いて転送レートを抑えるというのも一因である。リアルタイム・アプリケーションもビジネス・アプリケーションもビジネスには重要なので、Quality of Service のソリューション開発が大切だとする者もいる[27] 。
(一) ^ a b " U s e r D a t a g r a m P r o t o c o l . . . m a k e a v a i l a b l e a d a t a g r a m m o d e o f p a c k e t - s w i t c h e d c o m p u t e r c o m m u n i c a t i o n i n t h e e n v i r o n m e n t o f a n i n t e r c o n n e c t e d s e t o f c o m p u t e r n e t w o r k s . . . . p r o v i d e s a p r o c e d u r e f o r a p p l i c a t i o n p r o g r a m s t o s e n d m e s s a g e s t o o t h e r p r o g r a m s . . . i s t r a n s a c t i o n o r i e n t e d " R F C 7 6 8 よ り 引 用 。
(二) ^ a b " T h i s p r o t o c o l a s s u m e s t h a t t h e I n t e r n e t P r o t o c o l . . . i s u s e d a s t h e u n d e r l y i n g p r o t o c o l . " R F C 7 6 8 よ り 引 用 。
(三) ^ a b " T h i s p r o t o c o l p r o v i d e s a p r o c e d u r e f o r a p p l i c a t i o n p r o g r a m s t o s e n d m e s s a g e s t o o t h e r p r o g r a m s " R F C 7 6 8 よ り 引 用 。
(四) ^ a b c d e F o r o u z a n , B . A . ( 2 0 0 0 ) . T C P / I P : P r o t o c o l S u i t e , 1 s t e d . N e w D e l h i , I n d i a : T a t a M c G r a w - H i l l P u b l i s h i n g C o m p a n y L i m i t e d .
(五) ^ a b c K u r o s e , J . F . ; R o s s , K . W . ( 2 0 1 0 ) . C o m p u t e r N e t w o r k i n g : A T o p - D o w n A p p r o a c h ( 5 t h e d . ) . B o s t o n , M A : P e a r s o n E d u c a t i o n . I S B N 9 7 8 0 1 3 1 3 6 5 4 8 3
(六) ^ I P h e a d e r の み ト ラ ン ザ ク シ ョ ン 成 立
(七) ^ " T h i s p r o t o c o l p r o v i d e s a p r o c e d u r e . . . w i t h a m i n i m u m o f p r o t o c o l m e c h a n i s m " R F C 7 6 8 よ り 引 用 。
(八) ^ c o n t e n t @ i p v 6 . c o m . “ U D P P r o t o c o l O v e r v i e w ” . I p v 6 . c o m . 2 0 1 2 年 2 月 27 日 閲 覧 。
(九) ^ " U D P h e a d e r c o n t a i n s . . . t h e d e s t i n a t i o n a d d r e s s . . . T h i s i n f o r m a t i o n g i v e s p r o t e c t i o n a g a i n s t m i s r o u t e d d a t a g r a m s . " R F C 7 6 8 よ り 引 用 。
(十) ^ ﹁ 正 常 か わ か ら な い パ ケ ッ ト ﹂ が 存 在 せ ず 、 ﹁ 壊 れ た / 届 か な い パ ケ ッ ト ﹂ と ﹁ 正 常 な パ ケ ッ ト ﹂ の み か ら な る
(11) ^ " T h e p r o t o c o l i s t r a n s a c t i o n o r i e n t e d " U D P s p e c i f i c a t i o n .
(12) ^ C l a r k , M . P . ( 2 0 0 3 ) . D a t a N e t w o r k s I P a n d t h e I n t e r n e t , 1 s t e d . W e s t S u s s e x , E n g l a n d : J o h n W i l e y & S o n s L t d .
(13) ^ " S o u r c e P o r t . . . i n d i c a t e s t h e p o r t o f t h e s e n d i n g p r o c e s " R F C 7 6 8 よ り 引 用 。
(14) ^ " S o u r c e P o r t i s a n o p t i o n a l f i e l d " R F C 7 6 8 よ り 引 用 。
(15) ^ " I f n o t u s e d , a v a l u e o f z e r o i s i n s e r t e d . " R F C 7 6 8 よ り 引 用 。
(16) ^ " S o u r c e P o r t . . . m a y b e a s s u m e d t o b e t h e p o r t t o w h i c h a r e p l y s h o u l d b e a d d r e s s e d i n t h e a b s e n c e o f a n y o t h e r i n f o r m a t i o n . " R F C 7 6 8 よ り 引 用 。
(17) ^ " L e n g t h i s t h e l e n g t h i n o c t e t s o f t h i s u s e r d a t a g r a m " R F C 7 6 8 よ り 引 用 。
(18) ^ " t h e m i n i m u m v a l u e o f t h e l e n g t h i s e i g h t . " R F C 7 6 8 よ り 引 用 。
(19) ^ R F C 2 6 7 5
(20) ^ " C h e c k s u m i s o f a p s e u d o h e a d e r o f i n f o r m a t i o n f r o m t h e I P h e a d e r , t h e U D P h e a d e r , a n d t h e d a t a , p a d d e d " R F C 7 6 8 よ り 引 用 。
(21) ^ " n o c h e c k s u m ( f o r d e b u g g i n g o r f o r h i g h e r l e v e l p r o t o c o l s t h a t d o n ' t c a r e ) " R F C 7 6 8 よ り 引 用 。
(22) ^ " A n a l l z e r o t r a n s m i t t e d c h e c k s u m v a l u e m e a n s t h a t t h e t r a n s m i t t e r g e n e r a t e d n o c h e c k s u m " R F C 7 6 8 よ り 引 用 。
(23) ^ a b D e e r i n g S . & H i n d e n R . ( D e c e m b e r 1 9 9 8 ) . R F C 2 4 6 0 : I n t e r n e t P r o t o c o l , V e r s i o n 6 ( I P v 6 ) S p e c i f i c a t i o n . I n t e r n e t E n g i n e e r i n g T a s k F o r c e . R e t r i e v e d f r o m / / t o o l s . i e t f . o r g / h t m l / r f c 2 4 6 0
(24) ^ 井 上 直 也 、 松 山 公 保 、 荒 井 透 、 苅 田 幸 雄 ﹃ マ ス タ リ ン グ T C P / I P 入 門 編 第 6 版 ﹄ オ ー ム 社 、 2 0 1 9 年 、 2 6 0 - 2 6 1 頁 。 I S B N 9 7 8 - 4 - 2 7 4 - 2 2 4 4 7 - 8 。
(25) ^ P o s t e l , J . ( A u g u s t 1 9 8 0 ) . R F C 7 6 8 : U s e r D a t a g r a m P r o t o c o l . I n t e r n e t E n g i n e e r i n g T a s k F o r c e . R e t r i e v e d f r o m / / t o o l s . i e t f . o r g / h t m l / r f c 7 6 8
(26) ^ E u b a n k s , M . , C h i m e n t o , P . , a n d M . W e s t e r l u n d , " I P v 6 a n d U D P C h e c k s u m s f o r T u n n e l e d P a c k e t s " , R F C 6 9 3 5 , A p r i l 2 0 1 3 .
(27) ^ “ T h e i m p a c t o f v o i c e / v i d e o o n d a t a a p p l i c a t i o n s ” . N e t w o r k p e r f o r m a n c e d a i l y . c o m . 2 0 1 1 年 8 月 17 日 閲 覧 。