Comments
Description
Transcript
水曜日 - 東京大学
集中講義 インターネットテクノロジー 第3回 一井信吾 東京大学大学院数理科学研究科 [email protected] 昨日の補足:DHCP (Dynamic Host Configuration Protocol) ホストをネットワークにつなぐ とき、いろいろな情報が必要 IPアドレス ネットマスク ホスト名 ドメイン名 ネームサーバ デフォルトルータ 手入力は面倒 手入力は間違える ⇒ 自動設定したい! 2002/5/29 IPアドレスとネットマスク CIDR表記 157.82.16.1/22 マスク 255.255.252.0 デフォルトルータ ルーティングテーブルを簡単化 するための手段 dest net next hop hop 157.82.16.0/24 - 0 default 157.82.16.1 1 広島大学集中講義 2 通信を始めるには? 通信を行うにはIPアドレスが 必要 鶏が先か卵が先か!? ブロードキャストとは? 特別なアドレスを使う 0.0.0.0 未設定ホスト 255.255.255.255 “this network” 「このネットワーク」全体への ブロードキャスト IPアドレスがわかっている場 合はhost部all 1 一対「全体」通信 link layerの機能を使う(こと が多い) Ethernet 無線LAN 同一「ネットワーク」上の全て のホストにデータグラムが届 けられる cf. ユニキャスト(一対一) マルチキャスト(一対多) 157.82.19.255 2002/5/29 広島大学集中講義 3 DHCPサーバ DHCPを使うホスト(DHCPクライアント)に与え るべき情報を保持 IPアドレス アドレスプール DHCPで割り当ててよいアドレスをいくつか確保しておき、動的に 割り当てる 固定割り当て クライアントのMacアドレスにIPアドレスを固定対応させる netmask, default router etc. サーバは複数あってもよい 2002/5/29 クライアントが選択 広島大学集中講義 4 DHCPの動作 DHCP client startup DHCP server DHCPDISCOVER (broadcast) DHCPOFFER (unicast) 時間 DHCPREQUEST (broadcast) DHCPACK (unicast) (lease expire毎にrequest/ack繰り返し) shutdown 2002/5/29 DHCPRELEASE (unicast) 広島大学集中講義 5 本日の内容 トランスポート層プロトコル TCP (Transmission Control Protocol) UDP (User Datagram Protocol) DNS (Domain Name System) 2002/5/29 広島大学集中講義 6 トランスポート層のサービスとプロトコル ネットワーク層:エンドシステ ム間のデータ送受信 トランスポート層:プロセス間 のデータ送受信 2002/5/29 network data link physical t or sp an tr network data link physical network data link physical d en den al ic application transport network data link physical g lo 異なったホスト上で実行されて いるアプリケーションプロセス (プログラム)の間の論理的な 通信 を実現する トランスポート層プロトコルは エンドシステム上で動く トランスポート層とネットワーク 層のサービスの相違 network data link physical network data link physical application transport network data link physical ネットワーク層のサービスを 使いつつ、それをenhance する 広島大学集中講義 7 トランスポート層のプロトコル network data link physical t or sp an tr 広島大学集中講義 network data link physical network data link physical d en den al ic 2002/5/29 application transport network data link physical g lo インターネットでのトランスポート層 信頼性があるユニキャスト転送 (TCP) 輻輳(混雑) フロー制御 コネクションの確立 信頼性がない (“best-effort”), ユニキャストまたはマルチキャス トの転送(UDP) リアルタイムアプリケーションの サポート(RTP) 開発されたがまだあまり使われ ていない技術もある 帯域確保 信頼性のあるマルチキャスト network data link physical network data link physical application transport network data link physical 8 Multiplexing/demultiplexing セグメント:トランスポート層の データ転送単位 application-layer data segment header segment 2002/5/29 Ht M Hn segment P1 M application transport network Demultiplexing: ホストが受け 取ったセグメントを正しいアプリ ケーションプロセスに渡す P3 receiver M M application transport network 広島大学集中講義 P4 M P2 application transport network 9 Multiplexing/demultiplexing Multiplexing: 単一ホスト上の複数のプロセス から送信されるセグメントを demultiplexingで使うヘッダをつ けて送出 multiplexing/demultiplexing: src, destの各ポート番号、IP アドレスによって識別 各セグメントにsrc, destポー ト番号 2002/5/29 特定のアプリケーションに は”well-known port”が割り 当てられている 広島大学集中講義 32 bits source port # dest port # other header fields application data (message) TCP/UDP セグメントのフォーマット 10 Well-Known Ports purple: [263] % cat /etc/services # # Network services, Internet style # # @(#)services 8.1 (Berkeley) 6/9/93 # BSDI services,v 2.29 2001/04/17 20:55:18 jch Exp # tcpmux 1/tcp # TCP port multiplexer (RFC1078) echo 7/tcp echo 7/udp discard 9/tcp sink null discard 9/udp sink null systat 11/tcp users systat 11/udp users daytime 13/tcp daytime 13/udp netstat 15/tcp qotd 17/tcp quote qotd 17/udp quote chargen 19/tcp ttytst source chargen 19/udp ttytst source ftp 21/tcp ssh 22/tcp # Secure shell 2002/5/29 広島大学集中講義 11 Multiplexing/demultiplexing: 例 host A source port: x dest. port: 23 server B source port:23 dest. port: x Source IP: C Dest IP: B source port: y dest. port: 80 telnet Web client host A 2002/5/29 Web client host C Source IP: A Dest IP: B source port: x dest. port: 80 Source IP: C Dest IP: B source port: x dest. port: 80 Web server B Web server 広島大学集中講義 12 UDP: User Datagram Protocol [RFC 768] 「飾りのない」「裸の」トラン スポート層プロトコル “best effort”サービス UDP セグメントは なくなるかもしれない 順番は入れ替わるかも しれない コネクションレス型: UDPの送信側と受信側 でハンドシェイク等無用 ルータ上UDPセグメント は一つずつ独立に処理 される 2002/5/29 どうしてUDPがあるのか? 広島大学集中講義 コネクション確立(時間がか かる)不要 単純:送信側、受信側ともに 状態がない セグメントヘッダが小さい 輻輳制御なし:いくらでも帯 域を使える(⇔使ってしまう) 13 UDP: 続き マルチメディアストリーミ ングによく使われている 少々のパケットロスは気に しない 使える帯域は全部使う(使 えてしまう) ヘッダを含む UDP セグメント長 (バイト) 他にUDPを使うもの DNS SNMP UDPを使って信頼性ある通信 を行う NFS 2002/5/29 アプリケーションで再送な どの制御を行う 広島大学集中講義 32 bits source port # dest port # length checksum Application data (message) UDP のセグメントフォーマット 14 UDP checksum 目的: 受信したセグメントに誤り(0が1に、1が0になって しまう)がないか検査する 送信側: 受信側: checksumフィールドを0とす る セグメントの内容を16ビット 整数と思う 順に足して行き、最後に0と1 を反転する(1の補数) 得られた値をUDP checksumフィールドに入れ る 2002/5/29 受け取ったセグメントのチェッ クサムを計算する 11111...1になるかどうか? 広島大学集中講義 NO – エラー発見 YES – エラーは見つからなかっ た 15 Reliable Transport unreliableなIPを使ってreliableな転送をしたい reliableとは?データの欠落、重複、順序の入れ替えなどが起こらない こと Link層の性質が、機能や性能に影響を与える 2002/5/29 広島大学集中講義 16 TCP: Overview point-to-point: socket door 1対1通信 バイト単位の「データの流れ」 のようなサービス メッセージ境界はない application writes data application reads data TCP send buffer TCP receive buffer データ交換を始める前に handshakingが必要 フロー制御 socket door 単一のコネクションで双 方向通信 MSS: maximum segment size connection-oriented: TCP輻輳制御、フロー制御 によりwindow sizeがきまる send & receive buffers 全二重 パイプライン reliableで順序を保つバイトス トリーム RFCs: 793, 1122, 1323, 2018, 2581 受信側が受け取れるスピー ドで送信 segment 2002/5/29 広島大学集中講義 17 Pipelined protocols パイプライン: 送信側が(受信側からの到達確認ack を待たずに)次々にパケットを送る 2002/5/29 送信側、受信側ともにバッファが必要 RTT (round trip time)が長いとき、throughputを上げる ために有効 広島大学集中講義 18 TCP segment structure 32 bits URG: urgent data (generally not used) ACK: ACK # valid PSH: push data now (generally not used) RST, SYN, FIN: connection estab (setup, teardown commands) Internet checksum (as in UDP) 2002/5/29 source port # dest port # sequence number acknowledgement number head not UA P R S F len used checksum rcvr window size ptr urgent data Options (variable length) counting by bytes of data (not segments!) # bytes rcvr willing to accept application data (variable length) 広島大学集中講義 19 TCPのシーケンス番号とACK シーケンス番号 セグメントの先頭のバ イトがバイトストリー ム中で何バイト目か ACK: 次に受信することが 期待されるシーケン ス番号 cumulative ACK まとめてACK Q: セグメント到着の順序が 変わったら? A: RFCには何も書い てない。実装任せ Host B Host A User types ‘C’ Seq=4 2 , A CK =79, d a = ACK , 9 7 Seq= host ACKs receipt of echoed ‘C’ Seq=4 3 ta = ‘C ata = 43, d ’ ‘C’ host ACKs receipt of ‘C’, echoes back ‘C’ , A CK = 80 simple telnet scenario 2002/5/29 広島大学集中講義 time 20 TCP: reliable data transfer event: 上位のアプリケーション層 からデータ到着 セグメントを作成、送信 wait wait for for event event 送信側(simplified) •片方向通信 •フロー制御、輻輳制御なし event: シーケンス番号yを待っている 間にタイムアウト セグメント再送 event: ACK y受信 ACK 処理 2002/5/29 広島大学集中講義 21 TCP: reliable data transfer Simplified TCP sender 2002/5/29 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 sendbase = initial_sequence number nextseqnum = initial_sequence number loop (forever) { switch(event) event: data received from application above create TCP segment with sequence number nextseqnum start timer for segment nextseqnum pass segment to IP nextseqnum = nextseqnum + length(data) event: timer timeout for segment with sequence number y retransmit segment with sequence number y compue new timeout interval for segment y restart timer for sequence number y event: ACK received, with ACK field value of y if (y > sendbase) { /* cumulative ACK of all data up to y */ cancel all timers for segments with sequence numbers < y sendbase = y } else { /* a duplicate ACK for already ACKed segment */ increment number of duplicate ACKs received for y if (number of duplicate ACKS received for y == 3) { /* TCP fast retransmit */ resend segment with sequence number y restart timer for segment y } } /* end of loop forever */ 広島大学集中講義 22 TCP ACK 生成ルール [RFC 1122, RFC 2581] Event TCP Receiver action セグメントが順序どおり到着 ギャップなし 他のセグメントは全てACK済 delayed ACK. 次のセグメントが来るまで 最大500ms待つ。セグメントがこなければ、 ACK送信 セグメントが順序どおり到着 ギャップなし delayed ACK待ち cumulative ACK を即時送信 セグメント到着順序誤り 期待より大きなシーケンス番号 ギャップ発見 期待するシーケンス番号をつけた duplicate ACK送信 ギャップを一部または全部 埋めるセグメント到着 ギャップの低い側が埋まったら、 ACKを即時送信 2002/5/29 広島大学集中講義 23 TCP: 再送のシナリオ Host A , 8 byt es da ta =100 K C A X loss Seq=9 2 , 8 byt es da ta =100 K C A time 2002/5/29 Host B Seq=9 2 Seq=100 timeout Seq=92 timeout Seq=9 2 timeout Host A Host B lost ACK scenario Seq= 1 , 8 byt es da 00, 2 0 byt 広島大学集中講義 es da ta 0 10 = K 120 = C K A AC Seq=9 2 , 8 byt es da A time ta ta =1 2 CK 0 premature timeout, cumulative ACKs 24 TCP フロー制御 フロー制御 受信側: バッファの開き スペースを RcvWindowフィール ドに入れて受信側に 伝える 受信側の受信バッファが あふれないように 送信側が送信速度を 制御する RcvBuffer = size of TCP Receive Buffer RcvWindow = amount of spare room in Buffer 送信側: 送信済、未 ACKデータの量が直 近受信した RcvWindowフィール ドの値を超えないよう に制御 receiver buffering 2002/5/29 広島大学集中講義 25 RTTとタイムアウト Q: タイムアウト時間を どう決めるか? RTTより長く RTTは変動すること に注意 タイムアウト時間が短す ぎるとpremature timeout 不必要な再送につ ながる 長すぎると、セグメント 損失への対応(再送)が 遅くなる 2002/5/29 Q: RTTをどう推定するか? SampleRTT: セグメント送信 時刻からACK受信までの時間 再送とcumulatively ACKさ れたセグメントは除く SampleRTTは「ばたばた」 変動するので、変動を滑ら かにしたい SampleRTTの移動平均を 使う 広島大学集中講義 26 RTTとタイムアウト EstimatedRTT = (1-x)*EstimatedRTT + x*SampleRTT 指数重み付け移動平均 ここのサンプルの影響は指数関数的に減少 x = 0.1程度 タイムアウト時間の設定 EstimtedRTT +安全マージン EstimatedRTTの変動が大 ⇒ 安全マージンも大 Timeout = EstimatedRTT + 4*Deviation Deviation = (1-x)*Deviation + x*|SampleRTT-EstimatedRTT| 2002/5/29 広島大学集中講義 27 コネクション管理 TCPでは、データ交換を始 める前にコネクション設定 が必要 Control segmentを使う 変数の設定 シーケンス番号 RcvWindowなどの値 クライアント:コネクションを始 める Socket clientSocket = new Socket("hostname","port number"); サーバ:クライアントからのコネ クションを受け付ける Socket connectionSocket = welcomeSocket.accept(); 2002/5/29 Three way handshake: Step 1: クライアント側 TCP SYN セグメントをサーバ に送信 初期シーケンス番号を通知 Step 2: サーバ側 SYNACKを返送 サーバ側バッファ割り当て 初期シーケンス番号を通知 Step 3:クライアント側 ACKを返送 バッファ割り当て 広島大学集中講義 28 TCP コネクション管理 client コネクションの終了 client closes socket: clientSocket.close(); close Step 1: クライアント側 TCP FIN送信 Step 2: サーバ側 ACK送信 通信終了 FIN送信 FIN AC K close FIN timed wait server A CK closed (続く) 2002/5/29 広島大学集中講義 29 TCP コネクション管理 Step 3: クライアント側 ACK送信 timed waitに入る client closing Step 4:サーバ側 closing FIN 通信終了 注: もし双方が同時にFINを送 信しても大丈夫 FIN AC K timed wait server A CK closed closed 2002/5/29 広島大学集中講義 30 TCP コネクション管理 サーバ側 クライアント側 2002/5/29 広島大学集中講義 31 +---------+ ---------¥ active OPEN | CLOSED | ¥ ----------+---------+<---------¥ ¥ create TCB | ^ ¥ ¥ snd SYN passive OPEN | | CLOSE ¥ ¥ ------------ | | ---------¥ ¥ create TCB | | delete TCB ¥ ¥ V | ¥ ¥ +---------+ CLOSE | ¥ | LISTEN | ---------- | | +---------+ delete TCB | | rcv SYN | | SEND | | ----------| | ------| V +---------+ snd SYN,ACK / ¥ snd SYN +---------+ | |<---------------------------------->| | | SYN | rcv SYN | SYN | | RCVD |<-----------------------------------------------| SENT | | | snd ACK | | | |------------------------------------| | +---------+ rcv ACK of SYN ¥ / rcv SYN,ACK +---------+ | -------------| | ----------| x | | snd ACK | V V | CLOSE +---------+ | ------| ESTAB | | snd FIN +---------+ | CLOSE | | rcv FIN V ------| | ------+---------+ snd FIN / ¥ snd ACK +---------+ | FIN |<---------------------------------->| CLOSE | | WAIT-1 |-----------------| WAIT | +---------+ rcv FIN ¥ +---------+ | rcv ACK of FIN ------| CLOSE | | -------------snd ACK | ------- | V x V snd FIN V +---------+ +---------+ +---------+ |FINWAIT-2| | CLOSING | | LAST-ACK| +---------+ +---------+ +---------+ | rcv ACK of FIN | rcv ACK of FIN | | rcv FIN -------------- | Timeout=2MSL -------------- | | ------x V -----------x V ¥ snd ACK +---------+delete TCB +---------+ ------------------------>|TIME WAIT|------------------>| CLOSED | +---------+ +---------+ TCP Connection State Diagram 2002/5/29 広島大学集中講義 32 輻輳制御 輻輳(congestion)とは ネットワーク(≒ルータ、スイッチ)が処理しきれないほど たくさんのデータが一度に送信されている状態 フロー制御とは別(ホストのバッファあふれを防ぐ) 症状 パケット損失(ルータでのバッファあふれ) 遅延増大(ルータでの待ち行列) ネットワーク3大問題(?)の一つ 2002/5/29 広島大学集中講義 33 輻輳が起こるとき 80Mbps 100Mbps 100Mbps 100Mbps 100Mbps 100Mbps 80Mbps このルータの「出口」でパケット廃棄! 2002/5/29 広島大学集中講義 34 このときは? 50Mbps 100Mbps 100Mbps 100Mbps 100Mbps 100Mbps 50Mbps トラフィックには統計的変動があるので、 この場合でもやはり輻輳発生! ⇒ トラフィックの統計的性質の解明が重要! 2002/5/29 広島大学集中講義 35 輻輳によるコスト 輻輳が起きると... パケット廃棄が起きるので 同じデータを送るために、再送を繰り返す必要がある packet-loss sensitiveなアプリケーションが使えなくなる パケット転送時間が長くなるので TCPのRTT推定値が長くなる バッファ消費量が増える throughputが下がる RTT-sensitiveなアプリケーションが使えなくなる 2002/5/29 余計な時間がかかる 帯域の無駄遣いが生じる 例:IP電話 広島大学集中講義 36 輻輳制御の方法 End-end 輻輳制御: ネットワークからの特別な情 報はない end systemが検知するパケッ ト損失、遅延から輻輳状態を 推定 (original) TCPの道 2002/5/29 ネットワークによる輻輳制 御 ネットワーク(≒ルータ)が輻輳 状態をend systemに通知 single bit indicating congestion (SNA, DECbit, TCP/IP ECN, ATM) 送信側の送信レートを指定 TCPでも使われる可能性 (ECN) 広島大学集中講義 37 TCP の輻輳制御 end-end control(ネットワークの手助けなし) congestion window size Congwin によって制御 Congwin MSSバイトのセグメント w 個が1 RTTの間に送られ る w * MSS throughput = 2002/5/29 RTT Bytes/sec 広島大学集中講義 38 TCP の輻輳制御 利用可能なバンド幅を推 定する できるだけ速く送信 (Congwinをできるだけ大 きく) slow start congestion avoidance 変数 Congwin threshold Congwin を増やす パケット損失が起きると 2002/5/29 パケット損失が起きるまで 2つのフェイズ 理想的には Congwin を小さくする 再度、徐々にCongwinを 大きくしていく 広島大学集中講義 slow start と congestion avoidance の境界を与え る 39 TCP Slowstart Host A initialize: Congwin = 1 for (each segment ACKed) Congwin++ until (loss event OR CongWin > threshold) CongWin は RTT 毎に指数的に増え る パケット損失の検出 2002/5/29 timeout (Tahoe TCP) and/or or three duplicate ACKs (Reno TCP) 広島大学集中講義 RTT Slowstart algorithm Host B one segm ent two segm en ts four segm ents time 40 TCP Congestion Avoidance Congestion avoidance /* slowstart is over */ /* Congwin > threshold */ Until (loss event) { every w segments ACKed: Congwin++ } threshold = Congwin/2 Congwin = 1 perform slowstart 1 1: TCP Reno skips slowstart (fast recovery) after three duplicate ACKs 2002/5/29 広島大学集中講義 41 AIMD TCP congestion avoidance: AIMD: additive increase, multiplicative decrease RTT毎にwindowを1ず つ増やす パケット損失検出毎に windowを半分にする TCP Fairness Fairnessの目標 N個のTCPセッションが同一 のリンクを共用しているとき、 おのおののセッションが得る 帯域は1/N TCP connection 1 TCP connection 2 2002/5/29 広島大学集中講義 bottleneck router capacity R 42 Why is TCP fair? 2つのセッションがあるとする throughputが増えるとき、additive increaseによって傾き1の方向にすすむ パケット損失があると、各々のセッションのthroughputはそのときに実現している throughputに比例した量だけ減少する equal bandwidth share Connection 2 throughput R loss: decrease window by factor of 2 congestion avoidance: additive increase loss: decrease window by factor of 2 congestion avoidance: additive increase Connection 1 throughput R 2002/5/29 広島大学集中講義 43 TCP の遅延のモデル Q: WWWサーバにリクエストを送って から、オブジェクト(例:HTMLファイ ル)が届くまでにどれだけの時間が かかるか? 記号と仮定 TCP コネクション確立 データ転送時間 サーバとクライアントは転送レー トRのリンクで接続されている W: congestion window (固定) S: MSS (bits) O: オブジェクトの大きさ (bits) 再送なし 場合わけ •WS/R > RTT + S/R •window内の最初のセグメントに対するACKが、window一杯のデータを送り 終わる前に帰ってくる •WS/R < RTT + S/R •window一杯のデータを送り終わってから、ACKを待つ時間がある 2002/5/29 広島大学集中講義 44 TCP latency Modeling Case 1: latency = 2RTT + O/R 2002/5/29 K:= O/WS Case 2: latency = 2RTT + O/R + (K-1)[S/R + RTT - WS/R] 広島大学集中講義 45 Slow Start の効果 Example: O/S = 15 segments K = 4 windows initiate TCP connection request object first window = S/R RTT second window = 2S/R Q=2 third window = 4S/R P = min{K-1,Q} = 2 Server stalls P=2 times. fourth window = 8S/R complete transmission object delivered time at client 2002/5/29 広島大学集中講義 time at server 46 DNS: Domain Name System インターネットのホスト、ルー Domain Name System: タ等を識別するもの IPアドレス(32ビットの数) 分散データベース 経路を与える 「名前」 purple.ms.u-tokyo.ac.jp 人間がわかりやすい Q: IPアドレスと「名前」をど う結びつけるか? 2002/5/29 多数の「ネームサーバ」 を階層的に構成して全 世界をカバー 名前の「解決」 (resolve) 広島大学集中講義 ホスト、ルータ、ネーム サーバ等がアプリケー ション層プロトコルを通 じて通信 47 ドメイン名とは URL http://www.ms.u-tokyo.ac.jp/~ichii/hiroshima2002/ メールアドレス [email protected] ホスト名 $ ssh as301.ecc.u-tokyo.ac.jp 2002/5/29 広島大学集中講義 48 ドメイン名の構造 RFC1035 “DOMAIN NAMES – IMPLEMENTATION AND SPECIFICATION” as amended by RFC1123 “Requirements for Internet Hosts – Application and Support”, Section 2.1 2002/5/29 広島大学集中講義 49 TLD: Top Level Domain gTLD: generic TLD ccTLD: country code TLD .com, .org, .net .int, .edu, .mil, .gov .us, .jp, etc. .uk (.gbでなく) New TLDs 2002/5/29 .biz, .info .aero, .coop, .museum, .name, .pro 広島大学集中講義 50 .jp 属性型ドメイン名 地域型ドメイン名 AC, AD, CO, ED, GO, GR, NE, OR tokyo.jp, chiba.jp etc. 汎用JPドメイン名 2002/5/29 本国内に住所があればだれでも登録できる。 いくつでも登録できる。 <名前>.JP と短いドメイン名 日本語を使ってドメイン名が登録できる。 ドメイン名の移転(登録名義の変更)ができる。 広島大学集中講義 51 ICANN etc. ICANN: Internet Corporation for Assigned Names and Numbers Registry Registrar .org, .net, .com: VeriSign, Inc. ICANN accredited registrars JP 株式会社日本レジストリサービス 2002/5/29 かつてはJPNICだったが、2002.4.1より移管 広島大学集中講義 52 多言語ドメイン名 iDN: “Internationalized Domain Name” 標準化 現在英数字と一部の特殊記号しか許されていないドメイン名に、 さまざまな国や地域で日常的に使われている文字を使えるよう にしようというもの 多言語化されたドメイン名 (Multilingual Domain Name) とも Multilingual Internet Names Consortium IETF idn WG 日本語implementation IEの機能を使った先行利用 2002/5/29 アドレスバーに「日本語.jp」と入力 DNSとは独立のデータベースにより接続 RealNames社のサービス終了により停止(2002.5/e) 広島大学集中講義 53 DNS ネームサーバ 集中データベースではなぜ いけないか single point of failure 分割して統治せよ ローカルネームサーバ: 近くのネームサーバ(同じ大 学、学部、研究室...) ホストはまずローカルネー ムサーバに「聞きに行く」 大量のトラフィック データベースが遠くにある メンテナンス不可能 authoritative ネームサーバ: スケールしない! データベースを持つ 2002/5/29 広島大学集中講義 IPアドレスと名前 そのほかの情報 アドレス解決の機能を持つ 54 DNS: ルートネームサーバ ネームサーバの木の根 元(root) 役割 local name server や host からの問い合わ せに対し、 authoritative name server を返事する A–M 2002/5/29 M は日本にある 広島大学集中講義 55 簡単な例 root name server host surf.eurecom.fr が gaia.cs.umass.edu の IPアドレスを知りたい 2 4 5 1. local DNS server, dns.eurecom.frに問い合 local name server わせ dns.eurecom.fr 2. dns.eurecom.fr は root 1 name server に問い合わせ 6 3. root name server は authoritative name server dns.umass.edu に問い合requesting host surf.eurecom.fr わせ 2002/5/29 広島大学集中講義 3 authorititive name server dns.umass.edu gaia.cs.umass.edu 56 DNSの例 root name server ルートネームサーバ は authoratiative name serverのデータを持っ ていないかもしれない authoritative name serverのデータを持っ ている、途中のネーム サーバのデータを持っ ているかもしれない (そうでないと動かな い!) 6 2 7 local name server dns.eurecom.fr 1 8 requesting host 3 intermediate name server dns.umass.edu 4 5 authoritative name server dns.cs.umass.edu surf.eurecom.fr gaia.cs.umass.edu 2002/5/29 広島大学集中講義 57 DNS: 問い合わせ2態 root name server recursive query: 問い合わせを受けた ネームサーバの負荷 が高い root server どうする? iterated query: 別の、より適切なネー ムサーバを回答 “I don’t know this name, but ask this server” iterated query 2 3 4 7 local name server dns.eurecom.fr 1 8 requesting host intermediate name server dns.umass.edu 5 6 authoritative name server dns.cs.umass.edu surf.eurecom.fr gaia.cs.umass.edu 2002/5/29 広島大学集中講義 58 DNS: キャッシュ ネームサーバ(どれも)は、アドレス/名前の解決 を行った後、そのデータをキャッシュしておく キャッシュは一定時間の後消去される(expire) “authoritative” でない回答になる 2002/5/29 広島大学集中講義 59 DNS レコード データベースの中身:resource records (RR) RR format: (name, Type=A value, type,ttl) Type=CNAME name :ホスト名 value:IPアドレス Type=NS 2002/5/29 name:ドメイン value:そのドメインの authoritative name serverのIPアドレス name:ホスト名(「別名」) value:ホスト名(「本名」 (cannonical name) Type=MX 広島大学集中講義 value:メールサーバのホス ト名 60 DNS プロトコル DNS プロトコル: query と reply メッセージからなる フォーマットは同じ メッセージヘッダ identification: 16 ビット、 query と reply は同じ番号 flags: query/reply recursion desired recursion available reply is authoritative 2002/5/29 広島大学集中講義 61 参考文献 RFC TCP UDP RFC768, “User Datagram Protocol”, 1980. DNS RFC793, “Transmission Control Protocol”, 1981. RFC1122 , “Requirements for Internet Hosts --- Communication Layers”, 1989. RFC1323 , “TCP Extensions for High Performance”, 1992. RFC2018 , “TCP Selective Acknowledgment Options”, 1996. RFC2581 , “TCP Congestion Control”, 1999. RFC1034, “Domain Names --- Concepts and Facilities”, 1987. RFC1035, “Domain Names --- Implementation and Specification”, 1987. その他 昨日の参考文献 2002/5/29 広島大学集中講義 62