参考:http://www.ms.u-tokyo.ac.jp/lecture/2006/901-35/2007-01-25.pdf
↑てかこいつは俺と同じ文献読んでるのがまるわかり。せめて文章表現ぐらい少しは変えろよw
NATファイアウォール越えとは簡単に言うものの、しかしながらP2Pオーバレイネットワークとはかなり大まかな概念でしかありません。
なので、現実にはルータやファイアウォールなどの障壁を乗り越えなくてはなりません。
今後はこの具体的な技術を見ていくことにしましょう。
逆向き接続
Napster、GnutellaなどのP2Pアプリケーションでは当然のテクニックとして採用されている。
リレー通信
今度は上で、もう片方のノードもファイアウォールで保護されている場合。その場合は両者以外のノードを中継として利用することでファイアウォール越えを実現している。
UPnP
そもそもNATの静的ポートフォワーディングが出来れば必要ない技術。
いわゆるポート開放をしなくてもP2Pソフトウェアが利用出来るようにするための技術。
Torrentのクライアントのほとんどは導入している。故にTorrentが初心者に優しいP2Pソフトの代表になっているのはそのため。
しかしながら、これはルーターがUPnPに対応していることが条件。
UDP Hole PunchingとSTUM
AとBというホストが、それぞれのプライベートネットワークにあるとする。N1とN2はそれぞれのNATデバイスである。SはグローバルIPアドレスを持つパブリックサーバである。
- A と B は S との UDP 通信を開始する。NATデバイス N1 と N2 は UDP 変換状態を作成し、一時的な外部ポート番号を割り当てる。
- S はそれらのポート番号を A と B にリレーして通知する。
- A と B は相手のNATデバイスと通知されたポート番号で直接通信する。NAT デバイスはそれ以前に生成されていた変換状態を使い、A および B の間でパケットの送受信が可能になる。
STUN(Simple Traversal of UDP through NATs)は、音声、映像、文章などの双方向リアルタイムIP通信を行うアプリケーションにおいて、NAT traversal(NAT通過)の方法の1つとして使われる標準化された(standards-based)インターネットプロトコルである。 STUNプロトコルは、アプリケーションがNATの存在と種類とを発見し、リモートホストへのUDP(User Datagram Protocol)接続にNATが割り当てたグローバルIPアドレスとポート番号とを得ることを許す。 STUNプロトコルが動作するには、インターネット上にSTUNサーバが存在する必要がある。 STUNプロトコルは、RFC(Request for Comments) 3489に定められる。
STUNはNATゲートウェイとファイアウォールとの存在を発見するために、RFC 3489から構成される下図のアルゴリズムを使用する。
図を通る経路が赤い箱で終わる所ではUDP通信は可能でない。経路が黄色であるか緑の箱で終わる所で、UDP通信は可能である。
HTTPカプセル化
ようはHTTP通信であると偽造してP2Pパケットの送受信を行うという手法。
0 件のコメント:
コメントを投稿