第11章 UDPユーザ・データグラム・プロトコル IPデータグラムのユーザ・インターフェース
UDP IP datagram … host と host の間 どのプロセスに届けるか これにも問題がある プロセスは動的に生成・消滅 他のマシンから特定のプロセスの同定は困難 送信者(プロセス)に非通知で受信プロセスを入れ替えたいこともある. 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 src port (または0) dst port length Header を含めて全octet数 UDP checksum
Checksum の範囲 Psuedo header 正しい相手に着いたかどうかのチェック proto = 17 (UDP)
プロトコルの階層
Encapsulation UDP UDP data header IP IP datagram data header frame Frame data
階層化の矛盾 アドレス dest. IP addr これはわかっている src IP addr 不明 どのネットワーク経由になるかで異なってくる. → UDP では決められない. 二つの選択 IP 層に頼む. UDP 層でIP datagram を作ってしまう.
階層化と checksum 強い相互作用 (checksum) 階層化は機能を分離する…に反するか? 主に実装上の理由,効率の点から UDP IP UDPはIPに比し実質的にたいして新しいことはやっていない. 主に実装上の理由,効率の点から
Port の取り扱い port はOSによって割り当てられる. 到着UDP Queue の長さを指定 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/port-numbers 0-1023 well-known ports 1024-49151 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は密接な相互結合がある.