第11章 UDPユーザ・データグラム・プロトコル

第11章 UDPユーザ・データグ
ラム・プロトコル
IPデータグラムのユーザ・インター
フェース
UDP

IP datagram … host と host の間
– ホスト中の複数の宛先のうちどれに宛てたも
のかを決めるメカニズムを追加→UDP

どのプロセスに届けるか
これにも問題がある
– プロセスは動的に生成・消滅
• 他のマシンから特定のプロセスの同定は困難
– 送信者(プロセス)に非通知で受信プロセスを
入れ替えたいこともある.
• Reboot, kill & run, …
UDP (続き)
– 通信の相手は通信したい相手機能を持ったプ
ロセス
• 相手マシンのどのプロセスがファイルサーバかを
知らないでもファイルサーバと通信したい.
– 一つのプロセスがいくつかの機能を扱うかもし
れない
→ どの機能と通信したいかを指定しないと意味がな
い.
UDP (続き)

Protocol port (正整数)
ポート
○○○○○…○ 待ち行列
– プロセスはportから読む(データがなければ
block)
– 送信は相手IPアドレスとprotocol port番号を
指定
– 自分のポート番号も同時に知らせる(受信用)
UDP (user datagram
protocol)
相手ホストの受信者を選択する仕組みを持つ
(port number)

unreliable, connectionless
– メッセージ到着の確認をしない.
– 順序を保たない.
– 流量制御のフィードバックをしない.
紛失・順不同・多重配送
UDPを用いた応用プログラムで,LANではうまく動
くのにinternでは劇的に動作不能となることがあ
る.
UDP message の format
0
16
UDP source port
UDP destination port
UDP message length
UDP checksum
Data
…
– src port
(または0)
– dst port
– length
Header を含めて全octet数
– UDP checksum
32
psuedo header
UDP header
UDP data
0 pad


Checksum
の範囲
Psuedo header
正しい相手に着いたかどうかのチェック
– proto = 17 (UDP)
プロトコルの階層
Encapsulation
UDP
header
IP
header
frame
header
UDP data
IP datagram data
Frame data
階層化の矛盾

アドレス
– dest. IP addr
– src IP addr
これはわかっている
不明
• どのネットワーク経由になるかで異なってくる.
→ UDP では決められない.
– 二つの選択
• IP 層に頼む.
• UDP 層でIP datagram を作ってしまう.
階層化と checksum

強い相互作用 (checksum)
– 階層化は機能を分離する…に反するか?
UDP
IP
UDPはIPに比し実質的にたいして新しいことはやっ
ていない.
– 主に実装上の理由,効率の点から
Port の取り扱い

port はOSによって割り当てられる.
– Queue の長さを指定

到着UDP
– port があるか?
• No- port unreachable
– queue に余地があるか?
• No- discard
Demultiplexing


IP層 ホスト間のインターネット通信を分担
UDP層 ホスト内の発信元・宛先を識別
ポート番号

どの機能にはどのポート番号を使うかの
合意が必要である.
– 中央のauthorityが決めて公布(予約済み番
号)
• universal assignment
• “well-known port assignments”
– ダイナミックな結合
• 必要なつどネットワークプログラムに割り当てても
らう.
• 相手ポートは問い合わせる.
ポート番号の割り当て
– IANA (Internet Assigned Numbers Authority)
– RFC1700
– ftp://ftp.isi.edu/in-notes/iana/assignments/portnumbers
• 0-1023
• 1024-49151
well-known ports
registered ports
– e.g. 6000 - 6063 X Window server
• 49152-65536
dynamic or private ports
(ephemeral) 後ろの1/4
予約済みポート番号
/etc/services を見よ
UDP
– UDP はIPとは独立したIPの上位層であるが,
IPとUDPは密接な相互結合がある.
– 実質的にはUDPはユーザにIPデータグラム
の機能を提供するのが主な目的であるから,
IPとはほとんど変わらない.