LAN技術研究室(LANに関心がある人のために情報を提供しているサイト)

このページでは、UDPUser Datagram Protocol)について初心者向けに解説しています。



LANの初歩

トランスポート層プロトコル

UDPUser Datagram Protocol

UDPUser Datagram Protocol)は、OSI参照モデルにおけるレイヤ4のトランスポート層プロトコルです。
UDPは、一つ下の階層レイヤ3(ネットワーク層)のIPと一つ上の階層のレイヤ5のセション層との間に入って情報の中継の役割を果たします。
UDPでは、アプリケーションプログラムからデータを貰うと、UDPデータグラムと呼ばれるパケットのようなデータの塊に分割します。
UDPデータグラムは、IPで言えばIPパケットのようなものです。
このUDPデータグラムUDPヘッダー表1)というタグやラベルのようなものを頭に付けて、下位のレイヤに相当するIPに渡して送信されます。
受信した後は、下位のレイヤIP)からIPヘッダーをカットされたUDPデータグラムが渡されてきます。
UDPでは、このUDPデータグラムに記述されている宛先ポート番号を見て適切なアプリケーションプログラムにデータを渡す役割を果たします。
おおざっぱに言うと、UDPというプロトコルはだいたいこんなことをしています。
実際は、ポート番号で通信対象のアプリケーションプログラムを識別できるサービスを提供するくらいのことしかしていません。
従って、正しくUDPデータグラムが順番に送信されてきたかどうかを判断するすべもありません。
この点では、下位レイヤプロトコルであるIPと変わりありません。
従って、TCPのような伝送制御手順は一切ありません。
それでは、UDPヘッダーについて説明します。

1531
送信元ポート番号
(16 bit)
宛先ポート番号
(16 bit)
UDPデータ長
(16 bit)
チェックサム
(16 bit)
データ(ない場合もある)
(可変長)

表1


上記の表1に書いたTCPヘッダーの説明をします。

  1. 送信元ポート番号

  2. 16ビットの長さなでの、0〜65535までのポート番号を設定し、この番号は送信元を表しています。
    ただし、0のポート番号は予約されています。
    また、ポート番号は、皆さんが良く知っているアプリケーションプログラムなどで予約されている番号がたくさんあります。
    独自のネットワークアプリケーションプログラムを開発する際、これらの番号は避けなければなりません。
    つまり、1023番以下は勝手に使えないということです。
    例えば、DHCPクライアントでは、68というポート番号、DHCPサーバーでは、67というポート番号を使用しています。

  3. 宛先ポート番号

  4. 0〜65535までのポート番号を設定し、この番号は宛先を表しています。

  5. UDPデータ長

  6. UDPデータグラムの長さが設定されます。
    ただし、UDPヘッダーを含みます。

  7. チェックサム

  8. UDPデータグラムチェックサムがここに設定され、データの誤り検出に使われます。
    チェックサムは、送られてきたにUDPデータグラムの内容が破壊されていないかどうかを確認することを目的としてあります。
    具体的には、データの誤りをチェックするために使われる値です。
    データの誤りの検査のための決まった計算方法があります。
    この計算を行って検査を行うことで、データの信頼性を保証します。
    チェックサムの計算を行うために、UDP擬似ヘッダー(Pseudo Header)という以下の表に示した特殊なヘッダーを使用します。

    UDP擬似ヘッダーの先頭からの位置長さ(オクテット項目内容
    送信元IPアドレス
    宛先IPアドレス
    パディング(未使用:0)
    プロトコル番号(UDPを表す番号:17)
    11UDPデータグラムの長さ(UDPヘッダーを含む)

    送信側では、チェックサムの計算の際に、一時的にこのUDP擬似ヘッダーUDPデータグラムの先頭に入れます。
    UDPデータグラムの先頭には、当然本物のUDPヘッダーがあります。
    次に、UDP擬似ヘッダーUDPヘッダーに続くデータ領域のサイズが奇数オクテットだった場合、データの最後に0を1つ追加しておきます。
    チェックサムがチェックする対象は、UDP擬似ヘッダーUDPヘッダー、及び、続くデータの3つです。
    データはない場合もあります。
    これらのチェック対象を1の補数和で加算したものがUDPヘッダーチェックサムのフィールドに設定されます。
    以下のページで、IPヘッダーチェックサムの例ですが、プログラムで実際にチェックサムの計算を行うための方法を解説しました。

    チェックサムの具体的な計算方法の紹介

    IPヘッダーチェックサムの計算でも、1の補数和が利用されているので計算方法はだいたい同じです。
    対象ヘッダーやデータが違うくらいです。
    1の補数和についての説明も「チェックサムの具体的な計算方法の紹介」のページに書かれています。

UDPヘッダーは、チェックサムまでです。
それに続く領域は、可変長のデータとなり、実際にデータがない場合もあります。
UDPについては、RFC768に記載されています。
RFCの詳細は、以下のサイトで御覧下さい。

IETF RFC Page
JPNIC RFC-JP(社団法人:日本ネットワークインフォメーションセンター)
RFC768(英文)

UDPヘッダーに続くデータの領域には、DHCPDynamic Host Configuration ProtocolDNSDomain Name System)、RIPRouting Information Protocol)などの代表的な上位レイヤプロトコルがあります。
DNSでは、ポート番号は53、RIPでは、ポート番号は520となります。


ページトップ
トランスポート層プロトコル[メニュー]へ戻る
サイトマップ(LAN技術研究室の案内図)
ネットワーク技術用語集へ行く
LAN技術研究室のトップページ

© 2007 Toyozi Masuda All rights reserved.