[DHT]DHT(分散ハッシュテーブル)ショートクイズ3
好評を頂いているDHTショートクイズですが、
「現在DHTを勉強中なので答えの公表は待って!」
という声を何人かから頂きましたので、年末年始あたりに
答えを公表したいと思います。皆さんも是非考えてみてくださいね。
さて、今回はNAT処理について考えてみます。
クイズ4:NAT処理(その1)
ある通信企業がDHTによってSNSを構築しようと考えている。
参加したいユーザは通信企業のWebサーバを経由してソフトをダウンロードできる。
またソフトの初回起動時にユーザ登録をする必要がある他、
ソフト自体が定期的にバージョンアップを自動的に行う。
ソフト利用条件としてブロードバンドの回線速度とOS、PCスペック等があるが、通常のファイアウォールやルータ環境下でも使用できるように設計したいと考えている。
A君は通信企業に働く研究者であり、評価版について作成している。
NAT環境でもこのソフトが動くために、プライベートアドレスのPC_AはグローバルアドレスのPC_B、1台と常にTCP接続をさせることにした。
4-1:
今、PC_AがグローバルアドレスのPC_Cと通信したいとする。
その時にはこのように動作するように設計した。
フェーズ1:PC_AがPC_BにPC_Cとの接続要求をする
フェーズ2:PC_BがPC_CのIPアドレスをDHTを使って取得する
フェーズ3:PC_BがPC_AにPC_CのIPアドレスを回答する
フェーズ4:PC_AがPC_CとTCPで接続、リンク確立
逆にPC_CがPC_Aと接続する時にはどのようなフェーズがあるか答えて下さい。
上記の作動フェーズとの違いを特に明確にして下さい。
4-2:
PC_AがPC_Cに通信する場合、4-1でのフェーズだけでは、セキュアな通信はできない。
どうしてセキュアな通信ができないか問題点を抽出してセキュアな通信ができるように設計を行って下さい。
またA君はこれを解決する方法としてIPSecを使おうと考えましが、上司からIPSecの使用は止めた方が良いといわれました。それはどうしてでしょうか?
4-3:
今、プライベードアドレスノードPC_AとPC_Dが通信するために、PC_A ⇔ PC_B ⇔ PC_C ⇔ PC_Dとするように設計を行った。いずれもTCP通信である。ただし、PC_BとPC_Cはグローバルアドレスのノードである。
状況を単純化にするためPC_AはPC_Bと一度接続したら、PC_BがDHTから抜けるまでPC_Bと接続することとする。PC_DとPC_Cの関係も同様である。
今、PC_BとPC_CのようなグローバルアドレスノードがDHTから離脱しないことを考える。(グローバルアドレスノードのDHTへの新規参入はありうる)
この時にPC_A、Dのような任意のプライベートアドレスノード間と通信するには、どのような設計なら実現できそうでしょか?DHTを使いどのノードがどのようなデータを保持するか等の設計の概案を書いてください。
なお、プライベードアドレスのノードはシステムからの参加、離脱はあり得えます。
グローバルアドレスノードのIPは参加者によって自発的にWEB等で公開されています。
(条件としてプライベードアドレスノードはDHTに参加させても参加させなくても良いとします。どちらにするかは回答者の皆様にお任せします。)
| 固定リンク
「P2P」カテゴリの記事
- WebRTCを実現するためにSTUNだけでなくTURNも必要な理由(2015.01.08)
- [P2P]P2Pストリーミングのサーベイ文書について(2014.11.09)
- Winnyの開発者、金子 勇氏の急逝を悼んで(2013.07.07)
- 「分散ハッシュシステムでのNAT超えの考察」に対する質問について(2012.12.16)
- [P2P]Websocketでブラウザ間P2P通信は実現できるか?(その2)(2011.11.20)
この記事へのコメントは終了しました。
コメント