●ファイアウォールとNATが大きな壁
外部インターネットと内部のネットワークの間に立ち、双方向の通信をチェックするセキュリティの番人「ファイアウォール」。通常のPtoPシステムだと、ファイアウォールの内部でSkypeを使用する際は、外部からのアクセスをファイアウォールがブロックしてしまいます。もう1つの障害はグローバルIPとローカルアドレスを変換するNAT(Network Address Translation)です。NATというより家庭用のルータといった方がピンと来るかもしれません。外部から見たIPと内部のIPが違うわけですから、PtoPで接続する際の大きな障壁となります
さてこの大きな2つの壁をSkypeはどのように越えるのか? Skypeは3つの方法を使ってこれらの問題を解決します。
●解決法1 スーパーノードが代理で通知
PtoPは1対1で接続をしてサービスを展開するものですが、1対1でコネクトができない場合は、先ほど説明したクライアントのリーダー格「スーパーノード」を使って解決します。
外部からのアクセスを遮断しているファイアウォールでも内部からの外部へのアクセスを許可するパターンが多々あります。外部にいるSkypeクライアントAkiraから内部のBabaにアクセスする場合、ファイアウォールが邪魔して1対1で接続ができません。そこで、Babaと常に接続をしているスーパーノードに「Babaさんと通話がしたい」とAkiraがメッセージを送ります。スーパーノードはその旨をBabaに伝え、Babaは内部から外部のAkiraに接続要求を行い、見事に1対1で接続をするのです。
●解決法2 双方向で同時に接続要求
先ほど挙げた例は「片方がファイアウォール(NAT)、片方は行き来自由」というパターンでしたが、両方ともファイアウォールで内部からアクセスは可能だが、外部からのアクセスは不可という場合を考えてみましょう。解決法1では、相手からの接続要求をファイアウォールやNATがけってしまいます。
ここでもスーパーノードに助けてもらいます。それぞれファイアウォール・NATの内側にいるクライアントでもスーパーノードとは接続をしています。クライアントAkiraとBabaが接続を試みるとき、それぞれ同じスーパーノードに接続をし、スーパーノードに発信のタイミング管理をしてもらいながら、Akira・Bagaが同時に「AkiraからBabaに接続したい」「BabaからAkiraに接続したい」とそれぞれ接続のパケットを送ります。
ファイアウォールやNATは「内部のAkiraから外部のBabaに接続要求を出したのだから、Babaのパケットは通過させなくては!」と判断し(Baba側も同じ)、それぞれの接続要求がファイアウォールやNATを越えて互いに接続をするのです。この技術は「UDPホールパンチング」と呼ばれています。仕組みもすごいですが、名前もなかなか強烈ですね。
●解決法3 スーパーノードで完全中継
解決法1、2でもどうしても接続がうまくいかない場面もあります。そういう場合でもまだ奥の手があります。何度も繰り返しになりますが、Skypeのクライアントは常にスーパーノードとは接続をしているのです。そこで、お互いのクライアントがスーパーノードを経由してデータをやりとりするのです。この方法は「リレーノード」と呼ばれています。
ちょっと長くなってしまいましたが、上記のようなテクニックを使いSkypeは相手と接続をしようと努力をしているのです。すべて自動的に行われているので、私たち利用者は何も考えずに、設定もせずに気軽に利用ができるのです。接続に関する技術を見てきましたが、音声の品質についてもSkypeはこだわりを持っています。そのこだわりとは? 高音質の通話について次に見てみましょう。
Copyright © ITmedia, Inc. All Rights Reserved.