[11] '''仕様書''' - [[RFC 768]] [CITE@en[User Datagram Protocol]] [1] '''UDP データグラムの書式''': :0〜15 ビット:[[送信元ポート]] :16〜31 ビット:[[宛先ポート]] :32〜47 ビット:[[長さ]] :48〜63 ビット:[[検査和]] :64 ビット〜:[[データ]] [2] '''[RUBYB[送信元ポート]@en[source port]]''': - 省略可能 (未使用時は零) - 送信プロセスのポートを示します。 - 他に情報が無ければ、返答のためのポートと理解して構いません。 [3] '''[RUBYB[宛先ポート]@en[destination port]]''': - 特定の[[インターネット宛先番地]]の文脈で意味があります。 [4] '''[RUBYB[長さ]@en[length]]''': - [[データグラム]]の長さです。 - [[頭部]]と[[データ]]を共に含みます。 - 従って、最小値は8です。 [5] '''[RUBYB[検査和]@en[checksum]]''': = [[IP]][[頭部]]から作った[[擬似頭部]], [[UDP]][[頭部]], [[データ]]に、 = [[偶数]][[オクテット]]になるように末尾に零の[[オクテット]]を加えたものの、 = [[1の補数]]和の = [[16ビット]]の[[1の補数]] - 誤った[[経路]]に送られたことを検出できます。 - [[TCP]]と同じ方法を使っています。 - 算出した[[検査和]]が零なら、すべて1にします ([[1の補数]]として等しい)。 - [[検査和]]の欄が零なら、転送者が[[検査和]]を生成しなかったことを表します。 -- [[虫取り]]や、上位プロトコルが[[検査和]]を要求していない時につかいます。 [6] '''[RUBYB[擬似頭部]@en[pseudo header]]''': [[検査和]]の計算に用いる[[擬似頭部]]は、 [[IP]][[頭部]]に含まれる次の情報で、[[UDP]][[頭部]]の前に起きます。 :0〜31 ビット:[[送信元番地]] :32〜63 ビット:[[宛先番地]] :64〜71 ビット:零 :72〜79 ビット:[[プロトコル]] :80〜95 ビット:[[UDP]][[長さ]] [7] '''利用者界面''': [[利用者界面]]は、次の機能を提供するべきです。 - 新しい[[受信ポート]]の作成。 - [[受信ポート]]での[[受信]]操作。 [[データ・オクテット]]と、[[送信元ポート]]と[[送信元番地]]を返す。 - [[データグラム]]の[[送信]]操作。 [[データ]]、[[送信元]]と[[宛先]]の[[ポート]]と[[番地]]を指定。 [8] '''IP 界面''': [[UDP]]モジュールは[[IP]][[頭部]]から[[送信元]]と[[宛先]]の[[IP番地]]と[[プロトコル]]欄を決定できなければなりません。 [[UDP/IP]][[界面]]の[[受信]]操作に対する応答として[[IP]][[頭部]]も含めた全体を返すのもありです。 また、[[UDP]]側が[[IP]][[頭部]]も埋めて渡すのもありです。 [[IP]]側では欄の整合性を検証して[[IP]][[頭部]]の[[検査和]]を計算することになります。 [10] '''プロトコル番号''': [[IP]]における[[UDP]]の[[プロトコル番号]]は17です。 [9] '''応用の例''': - [[インターネット名前鯖]] - [[自明ファイル転送]]