ビジネス開発者必須講座

P2P/ブロードバンド時代の新・TCP/IP 入門
村上 健一郎

第9回

法政大学ビジネススクール イノベーション・マネジメント研究科教授

Skype の呼制御と NAT 越えを学ぼう

前回は、Skype と従来の IP 電話の代表である SIP との違いを中心に、その構造について説明しました。今回は、Skype の呼制御やどのように NAT やファイアウォールを越えて音声を伝えるかを説明します。

[Q1]
Skype はどのように呼制御を行っているのですか？

いう不便さがあるので、Skype のソフトサーバーが用意されており、これにすべウェアバージョン 1.2 では、ネットワーク側てのユーザーがログインしていました。しに そ れ を 保 持し 、ログイン 時 にダウンかし、これがダウンしてしまうとまったくロードするように改められました。

使えなくなる危険性があるため、現在では、ログインサーバーの分散を図ってい200 のスーパーノードを持つ
一般ノード

[A1]

るようです。
ログイン直後には、自分の状態を中継ノードである「スーパーノード」（一般ノーコンタクトリストをクリック

呼制御では、どの電話サービスでも、まず「電話番号」あるいは「識別子」が必Skype では、ログイン時にネットワーク要となります。Skype の場合は、ソフト環境やコンタクトリストに入っている相手ウェアをインストールする時に、他の人との状態などを収集します。また、相手の重複することのないユーザー名（Skype

状態は、随時このコンタクトリストに反映名 ）と パスワードを 登 録 しま す。このされます。

Skype 名が自分の電話番号になるのでコンタクトリストとは電話帳のようなもす。たとえば図 1 の skype-lover やので、仲間の名前を登録しておきます。

catherine などです。Skype ソフトウェ

こうすると、クリックするだけで電話をかアを起動するごとに、ログインサーバーけることができます。また、相手が電話で認証を受けますが、この時には、このに出られる状態かどうかについても、電Skype 名とパスワードが使用されます。

話をする前にこのリストでわかります。コ

認証されると、暗号化のための鍵（の種）ンタクトリストの表示例を図 1 に示します。

が渡されます。というのは、呼制御や音

なお、これまでは、コンタクトリストは声データの転送は暗号化されるからで自分のパソコンに保存されていましたが、これでは、パソコンごとに登録するとす。
以前は、Skype では唯一のログイン
図 1 コンタクトリスト表示例

96 │ INTERNET magazine │ 2005 │ 11 │（http://www.skype.com/intl/ja/products/より引用）
インターネットマガジン／株式会社インプレスR&D©1994-2007 Impress R&D

ドから選択されたノード）を介してネットノードの IP アドレスを示し、それらへ分散※2で接続されている場合には、そちら側かワークに通知します。これで、自分をコして検索要求を送るように指示します 。

ら先に音声のための UDP パケットを送ンタクトリストに登録しているすべての仲検索要求を受けるスーパーノードは、ればよいのです。これは、スーパーノー一般ノードの機能である電話をかけたり間に、状態の変化が伝わります。

ドが TCP で指示します。

また、自分のパソコンがどのような種受けたりする機能に加え、Skype 名とそ

しかし、もし相手が NAT を介して接類の NAT（IP アドレス変換機能付きルーのパソコンの実際の IP アドレスとの対応続されていれば、着呼時にはスーパーター、後述）やファイアウォールを介して表、つまり、電話番号簿を保持していまノードの手を借りてブロックされているインターネットに接続されているかについす。しかし、SIP のように集中して記憶す

UDP のポートに音声通信用の穴をあけても判別しておきます。たとえば、スーるのではなく、ネットワーク中のスーパーなければなりません。このとき、着呼側

パ ーノード から UDP（ User Datagram

ノードで分散して保持しています。の一般ノードには、それが接続しているProtocol）を当該パソコン（自分のパソコン）へ送ってみて、もし、当該パソコンがスーパーノードから TCP で着呼要求が送Skype の呼制御を見てみよう

られてきます〔図 2（b）①、②〕。これに何も受信できなければ、これは UDP がよって、NAT の穴あけがはじまります。

フィルターされたファイアウォールを介しSkype では、一般ノードが発呼する時実際の穴あけは、介在する装置の種類にているものと判断します。この情報は、には、すでに、相手の状態や IP アドレ

よって方法が違いますから、後で詳しく後の呼制御の時に使用されることになりス 、ど のような 装 置（ N A T やファイア説明することにしましょう。

ます。

ウォール）を介して相手がインターネット穴をあけることができない場合には、

なお、ロングイン後は、一般ノードは少に接続されているかなどがわかっていまスーパーノードが音声を中継して発呼側なくとも 1 つのスーパーノードと常に TCPす。ですから、もし発呼側のパソコンとと着呼側の間で音声通信を行います〔図で接続されています。また、一般ノード着呼側のパソコンが両方ともグローバル2（b）③〕。また、UDP をまったく通さなは約 200 のスーパーノードのリスト（IP アIP アドレスを持つならば、呼制御は簡単

い ファイアウォール など の 場 合 に は 、ドレスやサービスを受け付けるポート番です。発呼側は着呼側に直接 TCP のコ

TCP で音声を運びます。

号など）を保持しています。これを HCネクションを確立して接続要求を送り

なお、Skype のプロトコルは公開され（Host Cache、ホストキャッシュ）と呼び（①）、それが受理されれば、会話が始まておらず、ソフトウェアのアップデートにます。リストは 2 時間ごとに更新され、平ります（②）。この音声は UDP を使用し伴って変更されています。したがって、均のスーパーノードの生存時間は 2.5 時て送られます〔図 2（a）〕。

ここでの記述が正確ではない場合があ※1間と言われています 。

もし、片方が NAT やファイアウォールることを、お断りしておきます。

Skype 名（ユーザー名）の検索
コンタクトリストでは、相手がどのようスーパーノード

スーパーノードな状態にあるか、たとえば「オフラインで① 接続要求/切断要求（TCP）ある」「電話を受けることができる」などがわかるようになっています。なお、設発呼側
ノード

発呼側
ノード

② 音声（UDP）（一般ノード）定によっては、相手に状態を通知しない（一般ノード）（a）発呼側と着呼側が直接通信できる場合ようにすることも可能です。
これらの状態を、ログイン時に把握してコンタクトリストに表示します。図 1 で

スーパーノード

スーパーノード

は、Skype 名の左にアイコンでこれが示されています。
この状態を把握するため、一般ノード

スーパーノード① 接続要求/切断要求（TCP）

はスーパーノードに対して検索を依頼す発呼側
ノードるためのノード群を要求します。これに（一般ノード）② 接続要求/切断要求（TCP）③ 音声（UDPやTCP）（b）発呼側と着呼側が直接通信できない場合（音声を中継するノードは変動することがある）

発呼側
ノード（一般ノード）対してスーパーノードは、4 つのスーパー
図 2 Skype における呼制御と音声の転送経路

インターネットマガジン／株式会社インプレスR&D

P2P/ブロードバンド時代の新・TCP/IP
入門 │ INTERNET magazine │ 2005 │ 11 │ 97
©1994-2007 Impress
R&D表 1 4 種類の NAT
NAT の種類[Q2]
IP アドレスの変換やファイアウォールの穴あけの制御は、どのように行うのでしょうか？

[A2]
P2P アプリの使えないイン
ターネットアーキテクチャー

1

full core2

restricted core3

port restricted core4

symmetric

処理の軽さ

セキュリティーの堅さ

軽い

堅い

アクセスできません。しかし、ほとんどの（1）には、サーバーを経由するために、利用者は困りません。なぜならば、イン遅延が増大してスループットが落ちるとターネット上にあるサーバーで提供されいう問題があります。
（2）で挙げた UPnP

るウェブや電子メールのサービスを利用は、必ずしもすべての NAT が実装してするだけだからです。

い る わ け で は ありま せ ん 。そ こ で 、ところが、IP 電話のようにインターネッ

Skype は STUN と同じような方法で穴あト経由でパソコン同士が直接通信する必けを試み、それが駄目であればスーパー要が生じた場合には、これが障害となっノードが音声を中継するというアプロー

NAT（ Network Address Transla-てサービスが実現できません。それでチを採っています（なお、現在のバーtion、IP アドレスの変換）やファイアウォー

は、Skype などのような P2P アプリケー

ジョンでは、UPnP も使えるようです）。

ルの制御を理解するには、まず、現在のションは、どのようにしてこれを回避して他の IP 電話やファイル転送などの P2Pインターネットアーキテクチャーを整理しいるのでしょうか？ておきましょう。

アプリケーションの中にも同様のアプローチを採るものがあります。たとえば、

P2P を可能にする 2 つの方法

インターネットが作られた当初は、すべてのコンピュータは、直接インターネット検索サービスを提供しているグーグル
は 、S k y p e のような 電 話 サ ービスをP2P 通信を可能にするには、次のように接続されていました。しかし、アドレスの有効利用やセキュリティーの確保のたな方法があります。

めに、現在では、多くの企業や家庭が、（1）バックボーンに直接接続されたサーNAT やファイアウォールを通して接続さバーを用意し、それが音声を中継するれています。つまり、当初は、インター方法

Google Talk というインスタントメッセンジャーで提供しています。

NAT による P2P 通信

ネットは 1 つのネットワークだったのが、（ 2 ）R FC 3489 で 規 定 さ れ た STUN

現在の NAT は、アドレスの変換方式

今では、中心のインターネットバックボー（Simple Traversal of UDP throughによって表 1 のように 4 つの種類に分けンと、その外側に NAT やファイアウォーNATs）に代表される NAT を巧みに制られます。このうち、STUN で UDP ポールで接続されたイントラネット群との 2 階御して、ピンポイントで直接通信する

トに穴をあけることができるのは、1 〜 3層で構成されたネットワークアーキテク

た め の 穴 をあ ける 方 法 、あるい は 、の NAT です。この場合には、図 2（a）のチャーに変わりました（図 3）。

NAT 自身に穴を制御する機能を入れように、発呼側と着呼側のノードは直接る UPnP（Universal Plug and Play）

音声を送ることができます。

NAT やファイアウォールのために、イ

一 方 、4 の symmetric NAT や UDPという方式を利用する方法

ンターネット側からイントラネット側へはをまったく通さないファイアウォールの場
合 に は 、直 接 音 声 を 送 れ な い た め 、Skype は図 2（b）のように、スーパーノードを介して音声を送ることになります。
このとき、一般ノードは、音声を中継しNATやファイアウォールインターネットバックボーンているスーパーノード以外に、常に 4、5個のスーパーノードと通信しており、そアクセス可能

アクセス不可れぞれの接続遅延や負荷の情報を得ています。そして、状態の良いものがあれ

家庭や企業内のイントラネット
NAT : Network Address Translation

ば、次第に中継ノードを変更していきます。たとえば、135 分間の会話中に 4 回

図 3 現在の 2 階層のインターネットアーキテクチャー

98 │ INTERNET magazine │ 2005 │ 11 │インターネットマガジン／株式会社インプレスR&D©1994-2007 Impress R&D

図 4 full core NAT の場合の穴あけの切り替わりがあったことも報告されています※ 2。

イントラネット

インターネット

この仕組みのおかげで、中継ノードが変換後UDPパケット転送元IPアドレス 202.123.211.25
転送元ポート 12345

突然停止したり、そこまでのネットワークが切れたりしても、次善のスーパーノード①

NAT

内部一般ノードC
転送元IPアドレス 10.0.0.1
転送元ポート 8000

へ中継を引き継ぐことができるのです。

スーパーノードA
転送先IPアドレス 222.111.99.1
転送先ポート 20202②

実際の穴あけを見てみよう③

変換後UDPパケット
転送先IPアドレス 10.0.0.1
転送先ポート 8000

UDP の穴をあけ、その穴の IP アドレス

スーパーノードB
転送先IPアドレス 222.111.99.2
転送先ポート 10101と UDP ポート番号を、外部のノードが知UDPパケット
転送先IPアドレス 202.123.211.25
転送先ポート 12345

るためには、NAT の内側のノード（家庭内や企業内の一般ノード C）から外のスー【NATのテーブル形式例】

パーノード A へパケットを送ればよいので変換後ポート番号

転送元ポート番号

転送先IPアドレス（グローバル）

転送先ポート番号

経過時間す（図 4 の①）
。NAT は、インターネット側

転送元IPアドレス（ローカル）

12345

8000

10.0.0.1

222.111.99.1

20202

30秒

12346

8000

10.0.0.2

222.111.99.1

2020234秒

へ UDP パケットを転送する時には、（内部ノード C の）転送元 IP アドレスと転送元ポート番号を書き換えます。
ここでは、図 4 の例で説明します。書（2）restricted core

一方、symmetric NAT は、他の 3 つき換え後の転送元 IP アドレスは、常に一度転送した先の IP アドレスからでなの種類の NAT と大きく異なり、転送先のN A T の 持 つ グ ロー バル I P アドレス

いと応答パケットを受理しません。ですかIP アドレスごとに変換するポート番号も異（202.123.211.25）
です。書き換え後の転送

ら、C からは A だけでなくB にも、あらかなるものになります。したがって、その IP元ポートは、このパケットに対する応答をじめパケットを送っておく必要があります。

アドレスを転送元アドレスに持ち、しかも、受信した時に、ローカル IP アドレスを持つ

そうすれば、B からのパケットも受理しま

それぞれの外部ノードごとに異なったオリジナルの転送元に渡せるようにポートす（図 4 の③）

ポート番号を持つパケットしか受理しませ（12345）を割り振り、テーブルに記憶して（3）port restricted coreん。つまり、ポート番号はそれぞれの外おきます（図 4 中の表）。表 1 に示した

IP アドレスに加え、これまでパケットを部ノードごとに異なるので、特定のポート「 full core」「 restricted core」、そして送ったことのある転送先ポート番号から番号で一意に内部のホストを特定するこ「port restricted core」は、転送先 IP アのパケットしか受理しません。ですから、とができません。これではスーパーノードドレスにかかわらず、転送元が同じローカそれ以外のポートを利用したいのであれと協力してあけた穴はスーパーノード以

ル IP アドレスからの場合には、同じポー

ば 、そ れらを 転 送 先 ポートとして 持 つ外が利用できないので、スーパーノードがト番号（12345）へ変換します。ですから、UDP パケットを、外部ノードへ送っておく音声を中継することになります。

図 4 のノード C へ外部のスーパーノード A必要があります。

なお、NAT で注意しなければならなからパケットを送る時には、ポート番号

表 1 に 示 し た よ う に 、 full core、いのは、一定時間内に変換テーブルに該12345 を転送先ポートとしたパケットをrestricted core、port restricted core の当するパケットが送られない場合、当該NAT へ送れば（図 4 の②）、NAT はオリ順にセキュリティーが堅くなっていますのエントリーが消去されてしまうことです。

ジナルのローカルアドレス（10.0.0.1）とポーで、穴をあける処理も同じ順番で複雑さ

そこで Skype では、定期的に keep-aliveト番号（8000）に変換してノード C へ渡しが増しているというわけです。しかし、少（接続確認）パケットを転送することによってくれます。

なくとも穴をあけることは可能です。て、その穴を開けたままにしておきます。

（1）full core

【参考文献】

上記のように、変換後のポート番号さえわかれば、どの外部ノードからでもその番号に対応したローカルアドレスを持つ内部ノードへ UDP パケットが送れます。

※ 1 An Analysis of the Skype Peer-to-Peer Internet Telephony Protocol, Salman A. Baset andHenning Schulzrinne, Columbia University, http://www1.cs.columbia.edu/˜salman/publications/baset̲schulzrinne̲04̲01.pdf, September, 15, 2004
※ 2 Final Project : Skype, Frank Bulk, http://www1.cs.columbia.edu/˜salman/skype/frank.pdf, May5, 2004

インターネットマガジン／株式会社インプレスR&D

P2P/ブロードバンド時代の新・TCP/IP
入門 │ INTERNET magazine │ 2005 │ 11 │ 99
©1994-2007 Impress
R&D［インターネットマガジン バックナンバーアーカイブ］ ご利用上の注意
この PDF ファイルは、株式会社インプレス R&D（株式会社インプレスから分割）が 1994 年～2006 年まで発行した月刊誌『インターネットマガジン』の誌面を PDF 化し、「インターネットマガジン バックナンバーアーカイブ」として以下のウェブサイト「All-in-One INTERNET magazine 2.0」で公開しているものです。

http://i.impressRD.jp/bn
このファイルをご利用いただくにあたり、下記の注意事項を必ずお読みください。
z 記載されている内容（技術解説、URL、団体・企業名、商品名、価格、プレゼント募集、アンケートなど）は発行当時のものです。
z 収録されている内容は著作権法上の保護を受けています。著作権はそれぞれの記事の著作者（執筆者、写真の撮影者、イラストの作成者、編集部など）が保持しています。
z 著作者から許諾が得られなかった著作物は収録されていない場合があります。
z このファイルやその内容を改変したり、商用を目的として再利用することはできません。あくまで個人や企業の非商用利用での閲覧、複製、送信に限られます。
z 収録されている内容を何らかの媒体に引用としてご利用する際は、出典として媒体名および月号、該当ページ番号、発行元（株式会社インプレス R&D）、コピーライトなどの情報をご明記ください。
z オリジナルの雑誌の発行時点では、株式会社インプレス R&D（当時は株式会社インプレス）と著作権者は内容が正確なものであるように最大限に努めましたが、すべての情報が完全に正確であることは保証できません。このファイルの内容に起因する直接的および間接的な損害に対して、一切の責任を負いません。お客様個人の責任においてご利用ください。

このファイルに関するお問い合わせ先
All-in-One INTERNET magazine 編集部
im-info@impress.co.jp
Copyright © 1994-2007 Impress R&D, an Impress Group company. All rights reserved.