UDPヘッダ
目次
UDPヘッダフォーマット
TCP/IPプロトコルスタックのトランスポート層に含まれるUDPについて見ていくことにします。UDPはUser Datagram Protocolの略です。まずフォーマットは次の通りです。
IPやTCPに比べてずいぶんと簡単なフォーマットですね(笑)。UDPはコネクションレス型のプロトコルです。ですから、コネクションを確立したり確認応答の仕組みがない分、とても簡単なフォーマットになっています。フォーマットが簡単ということは、データ以外の余計なものが少なく、効率よくデータを転送することが可能です。よくオーバヘッドが小さいなどと表現されます。このオーバヘッドという言葉は実際のデータ以外のものという風にとらえればいいでしょう。
オーバーヘッドが小さいため、UDPは動画や音声などのマルチメディアデータを転送するときに使われることが多くなっています。
「送信元ポート番号」「送信先ポート番号」
「送信元ポート番号」「送信先ポート番号」はTCPと同じ考えです。ひとつのコンピュータでは通信をするアプリケーションが複数動作していることが考えられます。そのアプリケーションごとのデータを適切に振り分けるためにポート番号を使います。
TCPと同じように、0~1023のサーバアプリケーションを識別するためのウェルノウンポート番号と、1024以上のクライアントアプリケーションを識別するためのランダムポート番号があります。
UDPで利用する主なウェルノウンポート番号は次のようなものです。
DNS(Domain Name System) 53
DHCP(Dynamic Host Configuration Protocol) 67/68
SNMP(Simple Network Management Protocol) 161/162
RIP(Routing Infomation Protocol) 520
これらのアプリケーションプロトコルについてはまたおいおい紹介していきます。他にもたくさん、たくさんウェルノウンポート番号があるのですが、全部は載せられないのでこれぐらいに・・・興味がある人はRFCに載っていますのでそちらを見てみてください。
RFC1700 (Assinged Numbers)
(けっこう、巨大です(461KB)・・・ちなみに、ポート番号以外にもイーサネットのタイプだとかいろんなものが載せられています)
「UDP長」「ヘッダチェックサム」
「UDP長」はUDPヘッダとそのあとのデータを含んだ全体の長さになっています。ここはバイト単位で値が入ります。
「チェックサム」はUDPヘッダとデータを含めたUDPデータグラム全体でのエラーチェックを行います。チェックサムの計算方法は詳しくは触れませんが、計算する際に擬似ヘッダを付加します。(これはTCPでも同じです。TCPのときは書くのを忘れていました・・・)
UDP擬似ヘッダは次のようになります。
なぜ擬似ヘッダを付加して計算を行うのか?それはTCP/IPでは次の5つの要素で通信を識別します。
・送信元IPアドレス
・送信先IPアドレス
・プロトコル
・送信元ポート番号
・送信先ポート番号
しかし、UDPだけのチェックではこのうちの「送信元ポート番号」と「送信先ポート番号」しかチェックを行うことができません。そのため擬似ヘッダを付加して、この5つの要素がすべて正しい、つまりTCP/IPの通信全体が正しく行われていることを確認するために擬似ヘッダが付加されます。