連載
» 2006年10月19日 00時00分 公開

5分でネットがわかるシリーズ(5):通話網を脅かすSkypeの仕組み、分かりやすく解剖! (3/5)

[江原顕雄,@IT]

3. どんな場面でも接続をするよ!

●ファイアウォールとNATが大きな壁

 外部インターネットと内部のネットワークの間に立ち、双方向の通信をチェックするセキュリティの番人「ファイアウォール」。通常のPtoPシステムだと、ファイアウォールの内部でSkypeを使用する際は、外部からのアクセスをファイアウォールがブロックしてしまいます。もう1つの障害はグローバルIPとローカルアドレスを変換するNAT(Network Address Translation)です。NATというより家庭用のルータといった方がピンと来るかもしれません。外部から見たIPと内部のIPが違うわけですから、PtoPで接続する際の大きな障壁となります

 さてこの大きな2つの壁をSkypeはどのように越えるのか? Skypeは3つの方法を使ってこれらの問題を解決します。

図3-1 ファイアウォールを使っているネットワークは接続が難しい 図3-1 ファイアウォールを使っているネットワークは接続が難しい
外部・内部のアクセスをコントロールするファイアウォール。当然許可されていない、外部からのアクセスはブロックされてしまう
図3-2 NATを使っているネットワークは接続が難しい 図3-2 NATを使っているネットワークは接続が難しい
内部からのアクセスはポート番号を使って、どのローカルアドレスからのアクセスか判別している。が、外部からのアクセスの場合、どのローカルアドレスに対してアクセスを求めているか分からない

●解決法1 スーパーノードが代理で通知

 PtoPは1対1で接続をしてサービスを展開するものですが、1対1でコネクトができない場合は、先ほど説明したクライアントのリーダー格「スーパーノード」を使って解決します。

 外部からのアクセスを遮断しているファイアウォールでも内部からの外部へのアクセスを許可するパターンが多々あります。外部にいるSkypeクライアントAkiraから内部のBabaにアクセスする場合、ファイアウォールが邪魔して1対1で接続ができません。そこで、Babaと常に接続をしているスーパーノードに「Babaさんと通話がしたい」とAkiraがメッセージを送ります。スーパーノードはその旨をBabaに伝え、Babaは内部から外部のAkiraに接続要求を行い、見事に1対1で接続をするのです。

図3-3 解決法1 スーパーノードが代理で通知 図3-3 解決法1 スーパーノードが代理で通知

●解決法2 双方向で同時に接続要求

 先ほど挙げた例は「片方がファイアウォール(NAT)、片方は行き来自由」というパターンでしたが、両方ともファイアウォールで内部からアクセスは可能だが、外部からのアクセスは不可という場合を考えてみましょう。解決法1では、相手からの接続要求をファイアウォールやNATがけってしまいます。

 ここでもスーパーノードに助けてもらいます。それぞれファイアウォール・NATの内側にいるクライアントでもスーパーノードとは接続をしています。クライアントAkiraとBabaが接続を試みるとき、それぞれ同じスーパーノードに接続をし、スーパーノードに発信のタイミング管理をしてもらいながら、Akira・Bagaが同時に「AkiraからBabaに接続したい」「BabaからAkiraに接続したい」とそれぞれ接続のパケットを送ります。

 ファイアウォールやNATは「内部のAkiraから外部のBabaに接続要求を出したのだから、Babaのパケットは通過させなくては!」と判断し(Baba側も同じ)、それぞれの接続要求がファイアウォールやNATを越えて互いに接続をするのです。この技術は「UDPホールパンチング」と呼ばれています。仕組みもすごいですが、名前もなかなか強烈ですね。

図3-4 解決法2 双方向で同時に接続要求 図3-4 解決法2 双方向で同時に接続要求
上の例のようにお互いにファイアウォールやNATを使っている場合にはうまく接続ができない。そこで、同時にパケットをだすことでファイアウォールを相手からの返信のように装い、通過させてしまう

●解決法3 スーパーノードで完全中継

 解決法1、2でもどうしても接続がうまくいかない場面もあります。そういう場合でもまだ奥の手があります。何度も繰り返しになりますが、Skypeのクライアントは常にスーパーノードとは接続をしているのです。そこで、お互いのクライアントがスーパーノードを経由してデータをやりとりするのです。この方法は「リレーノード」と呼ばれています。

図3-5 スーパーノードで完全中継 図3-5 スーパーノードで完全中継
お互いに接続ができない場合は、スーパーノード経由でデータのやりとりをする

 ちょっと長くなってしまいましたが、上記のようなテクニックを使いSkypeは相手と接続をしようと努力をしているのです。すべて自動的に行われているので、私たち利用者は何も考えずに、設定もせずに気軽に利用ができるのです。接続に関する技術を見てきましたが、音声の品質についてもSkypeはこだわりを持っています。そのこだわりとは? 高音質の通話について次に見てみましょう。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。