(57)【要約】【課題】端末装置間で通信が開始されるまでの時間が短く、且つ、通信時における遅延が発生し難い端末装置、通信方法、通信プログラムを提供する。【解決手段】異なるＮＡＴ装置の配下にある端末装置９と端末装置１０との間で映像データの通信が行われる。はじめに端末装置９は、ＨＴＴＰサーバ４を介したトンネリング通信によって、端末装置１０と通信を開始する（１１９）。トンネリング通信が実行されている状態で、ＮＡＴ装置のＮＡＴ種別が特定される（１２１，１２３）。端末装置９，１０間でＰ２Ｐ通信を行うために必要な開始手順の通信が、判定されたＮＡＴ種別によって特定され、特定された開始手順に基づいて、端末装置９，１０間で通信が行われる（１２５）。通信後、端末装置９，１０間でＰ２Ｐ通信が実行され（１２７）、次いでトンネリング通信が中止される。【選択図】図１５
2011061594.tif 000002
【特許請求の範囲】
【請求項１】
外部ネットワークに接続するＮＡＴ装置の配下の内部ネットワークに接続され、前記ＮＡＴ装置とは異なる他の前記ＮＡＴ装置の配下にある他の端末装置と通信を行う端末装置であって、
前記外部ネットワークに接続するサーバであって、前記ＮＡＴ装置が転送可能な通信プロトコルに基づいてパケットをカプセル化／非カプセル化することによって、前記端末装置間のトンネリング通信を実現するサーバを介し、異なる前記ＮＡＴ装置の配下の前記内部ネットワークに接続された通信相手の前記端末装置である相手端末装置との間でトンネリング通信を行う第一通信手段と、
前記第一通信手段によって前記相手端末装置との間で前記トンネリング通信が行われている状態で、前記ＮＡＴ装置におけるポートマッピングの方法毎に前記ＮＡＴ装置を種別した種別情報であって、自身が直接接続する前記ＮＡＴ装置である自身ＮＡＴ装置の種別情報と、前記相手端末装置が直接接続する前記ＮＡＴ装置である相手ＮＡＴ装置の種別情報とのうち少なくとも一方を、前記外部ネットワークに接続された管理サーバとの通信によって前記管理サーバから取得し特定する第一特定手段と、
前記第一特定手段において特定された前記種別情報に基づいて、前記自身ＮＡＴ装置及び前記相手ＮＡＴ装置を介して前記相手端末装置とＰ２Ｐ（Peer to Peer）通信を開始させる場合に必要な開始手順を、記憶手段に記憶した手順リストから選択する選択手段と、
前記選択手段において選択された前記開始手順に基づいた通信を行うことによって、前記相手端末装置との間で前記Ｐ２Ｐ通信を開始させ、次いで、前記第一通信手段によって行われている前記トンネリング通信を終了させることによって、前記トンネリング通信を前記Ｐ２Ｐ通信に切り替える切替手段と、
前記切替手段によって前記トンネリング通信から前記Ｐ２Ｐ通信に切り替えられた後、前記相手端末装置との間で前記Ｐ２Ｐ通信を行う第二通信手段と
を備えたことを特徴とする端末装置。
【請求項２】
前記第一通信手段において前記トンネリング通信を開始する前に、前記自身ＮＡＴ装置の種別情報と、前記相手ＮＡＴ装置の種別情報とのうち少なくとも一方を、前記管理サーバとの通信によって前記管理サーバから取得し特定する第二特定手段と、
前記第二特定手段において特定された前記種別情報に基づいて、前記開始手順に基づいた通信を行わなければ前記相手端末装置との前記Ｐ２Ｐ通信を開始できないか否かを判定する判定手段と
を備え、
前記第一通信手段は、
前記判定手段において前記開始手順に基づいた通信を行わなければ前記相手端末装置との前記Ｐ２Ｐ通信を開始できないと判断された場合に、前記相手端末装置との間で前記トンネリング通信を行うことを特徴とする請求項１に記載の端末装置。
【請求項３】
前記トンネリング通信によって前記相手端末装置から受信したパケットである第一パケットに含まれるデータと、前記Ｐ２Ｐ通信時によって前記相手端末装置から受信したパケットである第二パケットに含まれるデータとの少なくともずれかを出力する出力手段と、
前記切替手段において前記トンネリング通信が前記Ｐ２Ｐ通信に切り替えられる前の状態で、前記第一パケットに含まれるデータを前記出力手段に出力し、前記トンネリング通信が前記Ｐ２Ｐ通信に切り替えられた後の状態で、前記第二パケットに含まれるデータを前記出力手段に出力する出力制御手段を備え、
前記出力制御手段は、
前記Ｐ２Ｐ通信の開始時点において、前記第一パケットよりも前記第二パケットの方が先行している場合には、受信した前記第二パケットに含まれるデータを、所定の第一周期で出力し、前記第二パケットよりも前記第一パケットの方が先行している場合には、受信した前記第一パケットに含まれるデータを、前記第一周期よりも長い第二周期で出力することを特徴とする請求項１又は２に記載の端末装置。
【請求項４】
外部ネットワークに接続するＮＡＴ装置の配下の内部ネットワークに接続され、前記ＮＡＴ装置とは異なる他の前記ＮＡＴ装置の配下にある他の端末装置と通信を行う端末装置であって、
前記ＮＡＴ装置におけるポートマッピングの方法毎に前記ＮＡＴ装置を種別した種別情報であって、自身が直接接続する前記ＮＡＴ装置である自身ＮＡＴ装置の種別情報と、通信相手の前記端末装置である相手端末装置が直接接続する前記ＮＡＴ装置である相手ＮＡＴ装置の種別情報とのうち少なくとも一方を、前記外部ネットワークに接続された管理サーバとの通信によって前記管理サーバから取得し特定する第三特定手段と、
前記第三特定手段において特定された前記種別情報に基づいて、前記自身ＮＡＴ装置及び前記相手ＮＡＴ装置を介して前記相手端末装置とＰ２Ｐ（Peer to Peer）通信を開始させる場合に必要な開始手順に基づいた通信を行わなければ、前記相手端末装置との前記Ｐ２Ｐ通信を開始できないか否かを判定する判定手段と、
前記判定手段において前記開始手順に基づいた通信を行わなくても前記相手端末装置との前記Ｐ２Ｐ通信を開始できると判断された場合に、前記相手端末装置との間でＰ２Ｐ通信を行う第三通信手段と
を備えたことを特徴とする端末装置。
【請求項５】
外部ネットワークに接続するＮＡＴ装置の配下の内部ネットワークに接続され、前記ＮＡＴ装置とは異なる他の前記ＮＡＴ装置の配下にある他の端末装置と通信を行うための通信方法であって、
前記外部ネットワークに接続するサーバであって、前記ＮＡＴ装置が転送可能な通信プロトコルに基づいてパケットをカプセル化／非カプセル化することによって、前記端末装置間のトンネリング通信を実現するサーバを介し、異なる前記ＮＡＴ装置の配下の前記内部ネットワークに接続された通信相手の前記端末装置である相手端末装置との間でトンネリング通信を行う第一通信ステップと、
前記第一通信ステップによって前記相手端末装置との間で前記トンネリング通信が行われている状態で、前記ＮＡＴ装置におけるポートマッピングの方法毎に前記ＮＡＴ装置を種別した種別情報であって、自身が直接接続する前記ＮＡＴ装置である自身ＮＡＴ装置の種別情報と、前記相手端末装置が直接接続する前記ＮＡＴ装置である相手ＮＡＴ装置の種別情報とのうち少なくとも一方を、前記外部ネットワークに接続された管理サーバとの通信によって前記管理サーバから取得し特定する第一特定ステップと、
前記第一特定ステップにおいて特定された前記種別情報に基づいて、前記ＮＡＴ装置を介して他の通信端末とＰ２Ｐ（Peer to Peer）通信を開始させる場合に必要な開始手順を、記憶手段に記憶した手順リストから選択する選択ステップと、
前記選択ステップにおいて選択された前記開始手順に基づいた通信を行うことによって、前記相手通信端末との間で前記Ｐ２Ｐ通信を開始させ、次いで、前記第一通信ステップによって行われている前記トンネリング通信を終了させることによって、前記トンネリング通信を前記Ｐ２Ｐ通信に切り替える切替ステップと、
前記切替ステップによって前記トンネリング通信から前記Ｐ２Ｐ通信に切り替えられた後、前記相手端末装置との間で前記Ｐ２Ｐ通信を行う第二通信ステップと
を備えたことを特徴とする通信方法。
【請求項６】
前記第一通信ステップにおいて前記トンネリング通信を開始する前に、前記自身ＮＡＴ装置の種別情報と、前記相手ＮＡＴ装置の種別情報とのうち少なくとも一方を、前記管理サーバとの通信によって前記管理サーバから取得し特定する第二特定ステップと、
前記第二特定ステップにおいて特定された前記種別情報に基づいて、前記開始手順に基づいた通信を行わなければ前記相手端末装置との前記Ｐ２Ｐ通信を開始できないか否かを判定する判定ステップと
を備え、
前記第一通信ステップは、
前記判定ステップにおいて前記開始手順に基づいた通信を行わなければ前記相手端末装置との前記Ｐ２Ｐ通信を開始できないと判断された場合に、前記相手端末装置との間で前記トンネリング通信を行うことを特徴とする請求項５に記載の通信方法。
【請求項７】
請求項１から４のいずれかに記載の端末装置の各処理手段としてコンピュータを機能させるための通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は端末装置、通信方法、及び通信プログラムに関する。より詳細には、異なるＮＡＴ装置の配下にある他の端末装置との間で通信を行う端末装置、通信方法、及び通信プログラムに関する。
【背景技術】
【０００２】
インターネットを介し、端末装置間で映像や音声の通信を行う場合、ＮＡＴ（Network Address Translation）機能を備えた装置（以下「ＮＡＴ装置」という。）が障害となる場合がある。ＮＡＴ装置は、インターネット側からＬＡＮ側に向かう方向のパケットを受信した場合、ＮＡＴ装置に記憶されているポート番号宛てのパケットのみＬＡＮ側に転送し、その他のポート番号宛てのパケットはブロックしてしまうためである。
【０００３】
異なるＮＡＴ装置の配下の端末装置と通信を行うための方法として、様々な方法が提案されている。例えば、端末装置間でＰ２Ｐ（Peer to Peer）通信を開始するために必要な開始手順としてＵＰｎＰ（Universal Plug and Play）やUDP Hole Punching等の複数の開始手順から最適な手順を選択して実行し、その後Ｐ２Ｐ通信を行う方法が提案されている。また例えば特許文献１では、通信データをＨＴＴＰ（HyperText Transfer Protocol）によってカプセル化し、ＨＴＴＰトンネリングサーバを中継させることによって通信を行う方法が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−１９７１８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
端末装置間でＰ２Ｐ通信を行う場合に必要な開始手順は、ＮＡＴ装置の種類（Cone NAT、Symmetric NATなど）に応じて決定される。ここで、端末装置がサーバを介してＮＡＴ装置の種類を判定するためには、多くのテスト用パケットがＮＡＴ装置を介してサーバに送信される必要がある。このため、ＮＡＴ装置の種類を判定して開始手順を特定し、この開始手順に基づいて通信を行ってＰ２Ｐ通信を開始するまでに、時間がかかってしまうという問題点がある。また特許文献１に記載の方法では、ＨＴＴＰサーバが音声や映像をリアルタイムに中継する必要があるので、サーバに負荷がかかってしまって遅延が発生し易いという問題点がある。
【０００６】
本発明は上述の問題点を解決するためになされたものであり、端末装置間で通信が開始されるまでの時間が短く、且つ、通信時における遅延の発生を低減させることのできる端末装置、通信方法、及び通信プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の第一態様に係る端末装置では、外部ネットワークに接続するＮＡＴ装置の配下の内部ネットワークに接続され、前記ＮＡＴ装置とは異なる他の前記ＮＡＴ装置の配下にある他の端末装置と通信を行う端末装置であって、前記外部ネットワークに接続するサーバであって、前記ＮＡＴ装置が転送可能な通信プロトコルに基づいてパケットをカプセル化／非カプセル化することによって、前記端末装置間のトンネリング通信を実現するサーバを介し、異なる前記ＮＡＴ装置の配下の前記内部ネットワークに接続された通信相手の前記端末装置である相手端末装置との間でトンネリング通信を行う第一通信手段と、前記第一通信手段によって前記相手端末装置との間で前記トンネリング通信が行われている状態で、前記ＮＡＴ装置におけるポートマッピングの方法毎に前記ＮＡＴ装置を種別した種別情報であって、自身が直接接続する前記ＮＡＴ装置である自身ＮＡＴ装置の種別情報と、前記相手端末装置が直接接続する前記ＮＡＴ装置である相手ＮＡＴ装置の種別情報とのうち少なくとも一方を、前記外部ネットワークに接続された管理サーバとの通信によって前記管理サーバから取得し特定する第一特定手段と、前記第一特定手段において特定された前記種別情報に基づいて、前記自身ＮＡＴ装置及び前記相手ＮＡＴ装置を介して前記相手端末装置とＰ２Ｐ（Peer to Peer）通信を開始させる場合に必要な開始手順を、記憶手段に記憶した手順リストから選択する選択手段と、前記選択手段において選択された前記開始手順に基づいた通信を行うことによって、前記相手端末装置との間で前記Ｐ２Ｐ通信を開始させ、次いで、前記第一通信手段によって行われている前記トンネリング通信を終了させることによって、前記トンネリング通信を前記Ｐ２Ｐ通信に切り替える切替手段と、前記切替手段によって前記トンネリング通信から前記Ｐ２Ｐ通信に切り替えられた後、前記相手端末装置との間で前記Ｐ２Ｐ通信を行う第二通信手段とを備えている。
【０００８】
第一態様に係る端末装置では、Ｐ２Ｐ通信が開始されるまではトンネリング通信によって通信が行われるので、端末装置間の通信を遅滞なく開始させることができる。選択された開始手順に基づいて通信が行われた後、トンネリング通信がＰ２Ｐ通信に切り替えられるので、サーバにおける処理負荷を極力低減させることができる。Ｐ２Ｐ通信に切り替えられた後は、よりスループットの大きな通信を行うことができる。
【０００９】
また第一態様において、前記第一通信手段において前記トンネリング通信を開始する前に、前記自身ＮＡＴ装置の種別情報と、前記相手ＮＡＴ装置の種別情報とのうち少なくとも一方を、前記管理サーバとの通信によって前記管理サーバから取得し特定する第二特定手段と、前記第二特定手段において特定された前記種別情報に基づいて、前記開始手順に基づいた通信を行わなければ前記相手端末装置との前記Ｐ２Ｐ通信を開始できないか否かを判定する判定手段とを備え、前記第一通信手段は、前記判定手段において前記開始手順に基づいた通信を行わなければ前記相手端末装置との前記Ｐ２Ｐ通信を開始できないと判断された場合に、前記相手端末装置との間で前記トンネリング通信を行ってもよい。このようにすることで、開始手順に基づいた通信を行わなければＰ２Ｐ通信を開始させることができない場合にのみ、トンネリング通信を行うようにすることができる。
【００１０】
また第一態様において、前記トンネリング通信によって前記相手端末装置から受信したパケットである第一パケットに含まれるデータと、前記Ｐ２Ｐ通信時によって前記相手端末装置から受信したパケットである第二パケットに含まれるデータとの少なくともずれかを出力する出力手段と、前記切替手段において前記トンネリング通信が前記Ｐ２Ｐ通信に切り替えられる前の状態で、前記第一パケットに含まれるデータを前記出力手段に出力し、前記トンネリング通信が前記Ｐ２Ｐ通信に切り替えられた後の状態で、前記第二パケットに含まれるデータを前記出力手段に出力する出力制御手段を備え、前記出力制御手段は、前記Ｐ２Ｐ通信の開始時点において、前記第一パケットよりも前記第二パケットの方が先行している場合には、受信した前記第二パケットに含まれるデータを、所定の第一周期で出力し、前記第二パケットよりも前記第一パケットの方が先行している場合には、受信した前記第一パケットに含まれるデータを、前記第一周期よりも長い第二周期で出力してもよい。このようにすることで、受信した第一パケット及び第二パケットに含まれるデータの表示周期が調整されるので、トンネリング通信からＰ２Ｐ通信に切り替える場合であっても、出力手段に出力させるデータをスムーズに切り替えることができる。
【００１１】
また、第二態様に係る端末装置では、外部ネットワークに接続するＮＡＴ装置の配下の内部ネットワークに接続され、前記ＮＡＴ装置とは異なる他の前記ＮＡＴ装置の配下にある他の端末装置と通信を行う端末装置であって、前記ＮＡＴ装置におけるポートマッピングの方法毎に前記ＮＡＴ装置を種別した種別情報であって、自身が直接接続する前記ＮＡＴ装置である自身ＮＡＴ装置の種別情報と、通信相手の前記端末装置である相手端末装置が直接接続する前記ＮＡＴ装置である相手ＮＡＴ装置の種別情報とのうち少なくとも一方を特定する第三特定手段と、前記第三特定手段において特定された前記種別情報に基づいて、前記自身ＮＡＴ装置及び前記相手ＮＡＴ装置を介して前記相手端末装置とＰ２Ｐ（Peer to Peer）通信を開始させる場合に必要な開始手順に基づいた通信を行わなければ、前記相手端末装置との前記Ｐ２Ｐ通信を開始できないか否かを判定する判定手段と、前記判定手段において前記開始手順に基づいた通信を行わなくても前記相手端末装置との前記Ｐ２Ｐ通信を開始できると判断された場合に、前記相手端末装置との間でＰ２Ｐ通信を行う第三通信手段とを備えている。
【００１２】
第二態様に係る端末装置では、特別な開始手順に基づいて通信を行わなくてもＰ２Ｐ通信を開始させることができると判断された場合には、トンネリング通信を行わずＰ２Ｐ通信を開始させることができる。サーバに負荷をかけることなく、端末装置間で通信を開始させることができる。
【００１３】
また、第三態様に係る通信方法は、外部ネットワークに接続するＮＡＴ装置の配下の内部ネットワークに接続され、前記ＮＡＴ装置とは異なる他の前記ＮＡＴ装置の配下にある他の端末装置と通信を行うための通信方法であって、前記外部ネットワークに接続するサーバであって、前記ＮＡＴ装置が転送可能な通信プロトコルに基づいてパケットをカプセル化／非カプセル化することによって、前記端末装置間のトンネリング通信を実現するサーバを介し、異なる前記ＮＡＴ装置の配下の前記内部ネットワークに接続された通信相手の前記端末装置である相手端末装置との間でトンネリング通信を行う第一通信ステップと、前記第一通信ステップによって前記相手端末装置との間で前記トンネリング通信が行われている状態で、前記ＮＡＴ装置におけるポートマッピングの方法毎に前記ＮＡＴ装置を種別した種別情報であって、自身が直接接続する前記ＮＡＴ装置である自身ＮＡＴ装置の種別情報と、前記相手端末装置が直接接続する前記ＮＡＴ装置である相手ＮＡＴ装置の種別情報とのうち少なくとも一方を、前記外部ネットワークに接続された管理サーバとの通信によって前記管理サーバから取得し特定する第一特定ステップと、前記第一特定ステップにおいて特定された前記種別情報に基づいて、前記ＮＡＴ装置を介して他の通信端末とＰ２Ｐ（Peer to Peer）通信を開始させる場合に必要な開始手順を、記憶手段に記憶した手順リストから選択する選択ステップと、前記選択ステップにおいて選択された前記開始手順に基づいた通信を行うことによって、前記相手通信端末との間で前記Ｐ２Ｐ通信を開始させ、次いで、前記第一通信ステップによって行われている前記トンネリング通信を終了させることによって、前記トンネリング通信を前記Ｐ２Ｐ通信に切り替える切替ステップと、前記切替ステップによって前記トンネリング通信から前記Ｐ２Ｐ通信に切り替えられた後、前記相手端末装置との間で前記Ｐ２Ｐ通信を行う第二通信ステップとを備えている。
【００１４】
第三態様では、Ｐ２Ｐ通信が開始されるまではトンネリング通信によって通信が行われるので、端末装置間の通信を遅滞なく開始させることができる。選択された開始手順に基づいて通信が行われた後、トンネリング通信がＰ２Ｐ通信に切り替えられるので、サーバにおける処理負荷を極力低減させることができる。Ｐ２Ｐ通信に切り替えられた後は、よりスループットの大きな通信を行うことができる。
【００１５】
また第三態様において、前記第一通信ステップにおいて前記トンネリング通信を開始する前に、前記自身ＮＡＴ装置の種別情報と、前記相手ＮＡＴ装置の種別情報とのうち少なくとも一方を、前記管理サーバとの通信によって前記管理サーバから取得し特定する第二特定ステップと、前記第二特定ステップにおいて特定された前記種別情報に基づいて、前記開始手順に基づいた通信を行わなければ前記相手端末装置との前記Ｐ２Ｐ通信を開始できないか否かを判定する判定ステップとを備え、前記第一通信ステップは、前記判定ステップにおいて前記開始手順に基づいた通信を行わなければ前記相手端末装置との前記Ｐ２Ｐ通信を開始できないと判断された場合に、前記相手端末装置との間で前記トンネリング通信を行ってもよい。このようにすることで、開始手順に基づいた通信を行わなければＰ２Ｐ通信を開始させることができない場合にのみ、トンネリング通信を行うようにすることができる。
【００１６】
また第四態様に係る通信プログラムは、端末装置の各処理手段としてコンピュータを機能させる。これによって通信プログラムは、端末装置の各処理手段としてコンピュータを機能させることができる。
【図面の簡単な説明】
【００１７】
【図１】通信システム１の概要を示す模式図である。
【図２】サーバ５の電気的構成を示すブロック図である。
【図３】ＮＡＴ装置８の電気的構成を示すブロック図である。
【図４】端末装置１１の電気的構成を示すフロック図である。
【図５】手順リスト８４１を示す模式図である。
【図６】端末装置処理を示すフローチャートである。
【図７】端末装置処理を示すフローチャートである。
【図８】ＵＰｎＰ判別処理を示すフローチャートである。
【図９】ＮＡＴ種別判定処理を示すフローチャートである。
【図１０】ＮＡＴ種別判定処理を示すフローチャートである。
【図１１】変更パターン推測処理を示すフローチャートである。
【図１２】タイミング調整処理を示すフローチャートである。
【図１３】第一同期処理を示すフローチャートである。
【図１４】第二同期処理を示すフローチャートである。
【図１５】端末装置９，１０間の通信を示すシーケンス図である。
【図１６】再生パケットが選択される様子を示す図である。
【図１７】再生パケットが選択される様子を示す図である。
【図１８】変形例における端末装置処理を示すフローチャートである。
【発明を実施するための形態】
【００１８】
以下、本発明に係る通信システム１について、図面を参照して説明する。これらの図面は、本発明が採用しうる技術的特徴を説明するために用いられるものである。記載されている端末の構成、各種処理のフローチャートなどは、それのみに限定する趣旨ではなく、単なる説明例である。
【００１９】
図１を参照し、通信システム１の概要について説明する。通信システム１は、サーバ５（ＳＴＵＮサーバ２、ＳＩＰサーバ３、ＨＴＴＰサーバ４）、ＮＡＴ装置６，７（以下、これらを区別しない場合、「ＮＡＴ装置８」という。）、及び端末装置９，１０（以下、これらを区別しない場合、「端末装置１１」という。）を少なくとも備えている。サーバ５とＮＡＴ装置８とは、インターネット１５に接続している。ＮＡＴ装置８は、配下のＬＡＮ１２，１３（以下、これらを区別しない場合、「ＬＡＮ１４」という。）に接続している。端末装置１１は、ＬＡＮ１４に接続している。図１に示す例では、ＮＡＴ装置６の配下のＬＡＮ１２に端末装置９が接続している。ＮＡＴ装置７の配下のＬＡＮ１３に端末装置１０が接続している。
【００２０】
ＳＴＵＮサーバ２は、端末装置１１と通信を行うことによって、端末装置１１間でＰ２Ｐ（Peer to Peer）通信を行うために必要な情報を、端末装置１１に対して提供する。ＳＩＰサーバ３は、ＳＩＰ（Session Initiation Protocol）に基づいて、端末装置１１間の呼制御を行う。ＨＴＴＰサーバ４は、ＨＴＴＰ（HyperText Transfer Protocol）に基づいたパケットを転送することによって、端末装置１１にＷｅｂ情報を配信する制御を行う。またＨＴＴＰサーバ４は、パケットをＨＴＴＰによってカプセル化することによって、端末装置１１間でトンネリング通信を実現させる。端末装置１１は、ＨＴＴＰサーバ４を介して、他の端末装置１１とトンネリング通信を行う。また端末装置１１は、他の端末装置１１との間でＰ２Ｐ通信を行う。端末装置１１としては、例えばＰＣ（パーソナルコンピュータ）が使用できる。ＮＡＴ装置８は、ＮＡＴ（Network Address Translation）機能を備えた装置である。
【００２１】
ＮＡＴ装置８は、ＩＰアドレスやポート番号の変換方法によって、Full Cone NAT、Address-Restricted Cone NAT、Port-Restricted Cone NAT、及び、Symmetric NATに分類される。所謂「ＮＡＴ越え」の問題を解消し、端末装置１１間でＰ２Ｐ通信を実行するためには、上述したＮＡＴの分類（以下「ＮＡＴ種別」という。）毎に最適な開始手順（例えば、ＵＰｎＰ、UDP Hole Punching、UDP Multi Hole Punchingなど）が選択され、この開始手順に基づいた通信が実行される必要がある。
【００２２】
本実施の形態では、ＮＡＴ装置８のＮＡＴ種別が特定され開始手順が実行されることと平行して、端末装置１１間でＨＴＴＰサーバ４を介したトンネリング通信が実行される。通常、ＨＴＴＰサーバ４を介した通信は不特定の端末装置１１間でも認められ、ＨＴＴＰサーバ４を介したパケットがＮＡＴ装置８によってブロックされることはない。このため、ＨＴＴＰサーバ４を介したトンネリング通信を行うことによって、端末装置１１間の通信が迅速に開始される。一方、ＮＡＴ装置８のＮＡＴ種別が特定され、開始手順に基づいた通信が実行された後は、端末装置１１間でＰ２Ｐ通信を行うことが可能な状態となる。この場合、ＨＴＴＰサーバ４を介したトンネリング通信は中止され、代わって端末装置１１間でＰ２Ｐ通信が行われる。Ｐ２Ｐ通信では、サーバ等を介さず通信が行われるので、通信遅延等の問題を解消できる。
【００２３】
図２を参照し、サーバ５の電気的構成について説明する。サーバ５は、ＣＰＵ２１、ＲＯＭ２２、ＲＡＭ２３、ＨＤＤ２４を備えている。ＣＰＵ２１は、ＮＡＴ装置８や端末装置１１との通信を制御する。ＲＯＭ２２には、Ｂｏｏｔプログラムや初期設定パラメータが少なくとも記憶される。ＲＡＭ２３には、ＣＰＵ２１の処理時に発生する一時的なデータが少なくとも記憶される。ＨＤＤ２４には、ＣＰＵ２１のプログラムが少なくとも記憶される。ＣＰＵ２１は、ＲＯＭ２２、ＲＡＭ２３、及びＨＤＤ２４と電気的に接続している。ＣＰＵ２１は、ＲＯＭ２２、ＲＡＭ２３、及びＨＤＤ２４の記憶領域にアクセスできる。
【００２４】
サーバ５は、入力ドライバ２５を備えている。入力ドライバ２５は、キーボード２５１を介して入力された情報を検出する。ＣＰＵ２１は、入力ドライバ２５と電気的に接続している。入力ドライバ２５は、キーボード２５１と電気的に接続する。ＣＰＵ２１は、キーボード２５１を介して入力された情報を認識できる。サーバ５は、表示ドライバ２６を備えている。表示ドライバ２６は、ディスプレイ２６１に像を表示させるための制御を行う。ＣＰＵ２１は、表示ドライバ２６と電気的に接続している。表示ドライバ２６は、ディスプレイ２６１と電気的に接続する。ＣＰＵ２１は、ディスプレイ２６１に所望の像を表示させることができる。
【００２５】
サーバ５は、通信モジュール２７を備えている。通信モジュール２７は、インターネット１５を介した通信を可能とする。ＣＰＵ２１は、通信モジュール２７と電気的に接続している。ＣＰＵ２１は、インターネット１５を介して通信を行うことができる。サーバ５は、ディスクドライブ２８を備えている。ディスクドライブ２８は、記憶媒体２８１に記憶された情報にアクセスする為の駆動装置である。ＣＰＵ２１は、ディスクドライブ２８と電気的に接続している。ＣＰＵ２１は、ディスクドライブ２８に記憶媒体２８１が挿入された状態で、記憶媒体２８１に記憶された情報にアクセスできる。記憶媒体２８１には、例えば、ＣＰＵ２１が実行するプログラムが記憶される。サーバ５の導入時には、プログラムが記憶媒体２８１からＨＤＤ２４にセットアップされる。
【００２６】
図３を参照し、ＮＡＴ装置８の電気的構成について説明する。ＮＡＴ装置８は、ＣＰＵ５１、ＲＯＭ５２、ＲＡＭ５３、フラッシュメモリ５７を備えている。ＣＰＵ５１は、サーバ５や端末装置１１との通信を制御する。ＲＯＭ５２には、ＣＰＵ５１のプログラムが少なくとも記憶される。ＲＡＭ５３には、ＣＰＵ５１の処理時に発生する一時的なデータが少なくとも記憶される。フラッシュメモリ５７には、ポート番号が履歴情報として記憶される。ＣＰＵ５１は、ＲＯＭ５２、ＲＡＭ５３、及びフラッシュメモリ５７と電気的に接続している。ＣＰＵ５１は、ＲＯＭ５２、ＲＡＭ５３、及びフラッシュメモリ５７の記憶領域にアクセスできる。
【００２７】
ＮＡＴ装置８は、表示部５４を備えている。表示部５４は、ＮＡＴ装置８の状態等を表示することができる。ＣＰＵ５１は、表示部５４と電気的に接続している。ＣＰＵ５１は、表示部５４に所望の情報を表示させることができる。表示部５４としては、例えばＬＥＤが使用できる。ＮＡＴ装置８は、入力部５５を備えている。入力部５５は、ユーザによるＮＡＴ装置８への入力操作を受け付ける。ＣＰＵ５１は、入力部５５と電気的に接続している。ＣＰＵ５１は、入力部５５を介して入力された情報を認識できる。入力部５５としては、例えばスイッチやタッチセンサが使用できる。
【００２８】
ＮＡＴ装置８は、通信モジュール５８を備えている。通信モジュール５８は、インターネット１５を介した通信を可能とする。ＣＰＵ５１は、通信モジュール５８と電気的に接続している。ＣＰＵ５１は、インターネット１５を介して通信を行うことができる。ＮＡＴ装置８は、通信モジュール５９を備えている。通信モジュール５９は、ＬＡＮ１４を介した通信を可能とする。ＣＰＵ５１は、通信モジュール５９と電気的に接続している。ＣＰＵ５１は、ＬＡＮ１４を介して通信を行うことができる。
【００２９】
図４を参照し、端末装置１１の電気的構成について説明する。端末装置１１は、ＣＰＵ８１、ＲＯＭ８２、ＲＡＭ８３、ＨＤＤ８４を備えている。ＣＰＵ８１は、ＮＡＴ装置８やサーバ５との通信を制御する。ＲＯＭ８２には、Ｂｏｏｔプログラムや初期パラメータが少なくとも記憶される。ＲＡＭ８３は、ＣＰＵ８１の処理時に発生する一時的なデータが少なくとも記憶される。ＨＤＤ８４は、ＣＰＵ８１のプログラムや、端末装置１１間でＰ２Ｐ通信を開始させる場合の開始手順のリスト（以下「手順リスト」という。）が少なくとも記憶される。ＣＰＵ８１は、ＲＯＭ８２、ＲＡＭ８３、及びＨＤＤ８４と電気的に接続している。ＣＰＵ８１は、ＲＯＭ８２、ＲＡＭ８３、及びＨＤＤ８４の記憶領域にアクセスできる。
【００３０】
端末装置１１は、入力ドライバ８５を備えている。入力ドライバ８５は、キーボード８５１を介して入力された情報を検出する。ＣＰＵ８１は、入力ドライバ８５と電気的に接続している。入力ドライバ８５は、キーボード８５１と電気的に接続する。ＣＰＵ８１は、キーボード８５１を介して入力された情報を認識できる。端末装置１１は、表示ドライバ８６を備えている。表示ドライバ８６は、ディスプレイ８６１に像を表示させるための制御を行う。ＣＰＵ８１は、表示ドライバ８６と電気的に接続している。表示ドライバ８６は、ディスプレイ８６１と電気的に接続する。ＣＰＵ８１は、ディスプレイ８６１に所望の像を表示させることができる。
【００３１】
端末装置１１は、通信モジュール８７を備えている。通信モジュール８７は、ＬＡＮ１４を介した通信を可能とする。ＣＰＵ８１は、通信モジュール８７と電気的に接続している。ＣＰＵ８１は、ＬＡＮ１４を介して通信を行うことができる。端末装置１１は、ディスクドライブ８８を備えている。ディスクドライブ８８は、記憶媒体８８１に記憶された情報にアクセスする為の駆動装置である。ＣＰＵ８１は、ディスクドライブ８８と電気的に接続している。ＣＰＵ８１は、ディスクドライブ８８に記憶媒体８８１が挿入された状態で、記憶媒体８８１に記憶された情報にアクセスできる。記憶媒体８８１には、例えば、ＣＰＵ８１が実行するプログラムが記憶される。端末装置１１の導入時には、プログラムが記憶媒体８８１からＨＤＤ８４にセットアップされる。
【００３２】
図５を参照し、ＨＤＤ８４に記憶されている手順リストの一例である手順リスト８４１について説明する。手順リスト８４１には、自身がＬＡＮを介して直接接続するＮＡＴ装置（「自身ＮＡＴ装置」という。）のＮＡＴ種別と、Ｐ２Ｐ通信を行う相手方の端末装置１１がＬＡＮを介して直接接続するＮＡＴ装置（「相手ＮＡＴ装置」という。）のＮＡＴ種別とが記憶されている。また、其々のＮＡＴ種別の組み合わせに対応する開始手順が記憶されている。後述する端末装置処理では、手順リストに基づいて開始手順が決定される。
【００３３】
例えば図５に示す例では、自身ＮＡＴ装置又は相手ＮＡＴ装置のいずれかがのＮＡＴ種別が、「（ＮＡＴ装置なし）」「Full Cone NAT」のいずれかである場合、開始手順を必要としないことが記憶されている。また、双方のＮＡＴ種別が「Cone NAT」（Address-Restricted Cone NAT、Port-Restricted Cone NATのうちいずれか）である場合、開始手順としてUDP Hole Punchingが記憶されている。また、双方のＮＡＴ種別が「Symmetric NAT」である場合、開始手順としてUDP Multi Hole Punching（ポート番号の変更パターンが推測可能な場合のみ）が記憶されている。手順リストの使用形態の詳細については後述する。
【００３４】
図６〜図１４を参照し、端末装置１１のＣＰＵ８１において実行される端末装置処理について説明する。端末装置処理は、他の端末装置１１との間で通信を行うための指示がキーボード８５１を介してユーザによってなされた場合に、ＣＰＵ８１によって起動され実行される。以下では、端末装置９が端末装置１０との間でＰ２Ｐ通信を行う場合に、端末装置９のＣＰＵ８１において実行される端末装置処理について説明する。
【００３５】
図６に示すように、端末装置処理が起動されると、はじめに、端末装置１０との間でＨＴＴＰサーバ４を介したトンネリング通信を開始させるための通信が実行される（Ｓ１１）。処理の詳細は後述する。この通信によって端末装置９は、端末装置１０との間でトンネリング通信が実行可能となる。トンネリング通信では、ＨＴＴＰサーバ４においてパケットがＨＴＴＰによってカプセル化される。ＨＴＴＰによってカプセル化されたパケットは、ＮＡＴ装置６，７においてブロックされることなく、端末装置９，１０に到達する。
【００３６】
トンネリング通信が可能となった状態で、端末装置９では、端末装置１０との間でＳＩＰに基づいた呼制御通信が行われる。これによって、端末装置９は、端末装置１０と接続状態となる。接続状態となった端末装置９，１０間で、ＲＴＰ等に基づいたパケットの送受信が開始される（Ｓ１３）。なお本実施の形態では、端末装置９，１０間で映像データの通信が行われるものとする。映像データは端末装置１０においてパケット化され、端末装置９は、端末装置１０から送信された映像パケットを受信する。
【００３７】
次いで、ＮＡＴ装置６及びＮＡＴ装置７がＵＰｎＰ機能を搭載しているかを判断するＵＰｎＰ判別処理が実行される（Ｓ１５）。図８を参照し、ＵＰｎＰ判別処理について説明する。ＵＰｎＰ判別処理では、はじめに、ＵＰｎＰ機能を搭載したＮＡＴ装置８を検索する為の検索用パケットが、マルチキャスト送信される（Ｓ６１）。ＵＰｎＰ機能を搭載したＮＡＴ装置は、この検索用パケットを受信した場合に応答パケットを返信する。端末装置９では、送信した検索用パケットに対する応答パケットを受信したかが判断される（Ｓ６３）。ＮＡＴ装置６，７の両方から応答パケットを受信できない場合（Ｓ６３：ＮＯ）、ＮＡＴ装置６、７のうち少なくとも一方は、ＵＰｎＰ機能を搭載していないことになるので、そのままＵＰｎＰ判別処理を終了して端末装置処理（図６参照）に戻る。
【００３８】
一方、ＮＡＴ装置６，７の両方から応答パケットを受信できた場合（Ｓ６３：ＹＥＳ）、ＮＡＴ装置６，７はＵＰｎＰ機能を搭載しているということになる。続いて、ＮＡＴ装置６，７に対し、インターネット１５側に割り当てられているＩＰアドレスとポート番号とを要求する要求パケットが送信される（Ｓ６５）。ＮＡＴ装置６，７は、要求パケットに対し、ＩＰアドレス及びポート番号を付加した応答パケットを返信する。端末装置９では、この応答パケットを受信したかが判断される（Ｓ６７）。応答パケットを受信できなかった場合（Ｓ６７：ＮＯ）、ＮＡＴ装置６，７を介してＵＰｎＰに基づいた通信を行うことができないので、そのままＵＰｎＰ判別処理を終了し、端末装置処理（図６参照）に戻る。
【００３９】
一方、要求パケットに対する応答パケットをＮＡＴ装置６，７から受信した場合（Ｓ６７：ＹＥＳ）、端末装置１０との間でＵＰｎＰに基づいた通信を行うことが可能である。この場合、端末装置９，１０は、特別な開始手順を経ることなく、双方間でＰ２Ｐ通信を行うことができる。ＵＰｎＰに基づいた通信を行うことが可能であることを示すフラグ情報が、ＲＡＭ８３に一時的に記憶される（Ｓ６９）。そしてＵＰｎＰ判別処理を終了し、端末装置処理（図６参照）に戻る。
【００４０】
図６に示すように、ＵＰｎＰ判別処理（Ｓ１５）が終了した後、端末装置１０との間でＵＰｎＰに基づいた通信が可能であるかが判断される（Ｓ１７）。ＲＡＭ８３に記憶されたフラグ情報が参照される。ＵＰｎＰに基づいた通信が可能である場合（Ｓ１７：ＹＥＳ）、特定の開始手順に基づいた通信は不要である。端末装置９は、端末装置１０とのＰ２Ｐ通信を開始させることが可能な状態である。Ｐ２Ｐ通信によって、端末装置９，１０間で映像データを含むパケットが送受信される（Ｓ２７）。そしてＳ３７（図７参照）の処理に進む。
【００４１】
これに対し、ＵＰｎＰに基づいた通信を端末装置９，１０間で実行できない場合（Ｓ１７：ＮＯ）、ＮＡＴ装置６のＮＡＴ種別を判別する処理（ＮＡＴ種別判定処理）が実行される（Ｓ１９、図９参照）。ＮＡＴ種別判定処理では、端末装置９がＳＴＵＮサーバ２と所定の通信を行うことによって、ＮＡＴ装置６のＮＡＴ種別が特定される。
【００４２】
図９を参照し、ＮＡＴ種別判定処理について説明する。ＮＡＴ種別判定処理では、はじめに、要求パケットがＳＴＵＮサーバ２に対して送信され、応答パケットを自身に対して返信するように要求される。要求パケットは、ＳＴＵＮサーバ２のポート番号（第一ポート）に対して送信される（Ｓ７１）。次いで、応答パケットを受信したかが判断される（Ｓ７３）。応答パケットを受信できない場合（Ｓ７３：ＮＯ）、端末装置１０との間でＰ２Ｐ通信を行うことができないことになる。Ｐ２Ｐ通信を行うことができない旨を示すフラグ情報が、ＲＡＭ８３に一時的に記憶される（Ｓ８３）。そしてＮＡＴ種別判定処理を終了し、端末装置処理（図６参照）に戻る。
【００４３】
一方、ＳＴＵＮサーバ２から応答パケットを受信した場合（Ｓ７３：ＹＥＳ）、受信した応答パケットに含まれているＩＰアドレス及びポート番号であって、ＮＡＴ装置６におけるインターネット１５側のＩＰアドレス（以下、「ＮＡＴ  ＩＰ」という。）とポート番号（以下「ＮＡＴポート」という。）とが、応答パケットから抽出される。自身が要求パケットを送信した場合の送信元ＩＰアドレスとＮＡＴ  ＩＰとが一致し、且つ、自身が要求パケットを送信した場合の送信元ポート番号とＮＡＴポートとが一致するかが判断される（Ｓ７５）。一致しない場合（Ｓ７５：ＮＯ）、ＮＡＴ装置６がＳＴＵＮサーバ２との間に介在していることになるので、Ｓ８５（図１０参照）の処理に進む。
【００４４】
送信元ＩＰアドレスとＮＡＴ  ＩＰとが一致し、且つ、送信元ポート番号とＮＡＴポートとが一致する場合（Ｓ７５：ＹＥＳ）、要求パケットがＳＴＵＮサーバ２に対して送信され、応答パケットを自身に対して返信するように要求される。要求パケットは、ＳＴＵＮサーバ２の第一ポートに対して送信される。応答パケットは、Ｓ７１の要求パケットに応じて返信された応答パケットとは別の送信元ＩＰアドレス及び送信元ポート番号から送信するように、ＳＴＵＮサーバ２に要求される（Ｓ７７）。そして応答パケットを受信したかが判断される（Ｓ７９）。応答パケットを受信できない場合（Ｓ７９：ＮＯ）、端末装置１０との間でＰ２Ｐ通信を行うことができないことになる。Ｐ２Ｐ通信を行うことができない旨を示すフラグ情報が、ＲＡＭ８３に一時的に記憶される（Ｓ８３）。そしてＮＡＴ種別判定処理を終了し、端末装置処理（図６参照）に戻る。
【００４５】
一方、ＳＴＵＮサーバ２から応答パケットを受信した場合（Ｓ７９：ＹＥＳ）、端末装置１０との間にＮＡＴ装置は介在していないことになる。この場合端末装置９は、特別な開始手順を経ることなく、端末装置１０とＰ２Ｐ通信を行うことができる。ＮＡＴ装置が介在していないことを示すフラグ情報がＲＡＭ８３に一時的に記憶される（Ｓ８１）。そしてＮＡＴ種別判定処理を終了し、端末装置処理（図６参照）に戻る。
【００４６】
図１０のＳ８５の処理では、要求パケットがＳＴＵＮサーバ２に対して送信され、応答パケットを自身に対して返信するように要求される。要求パケットは、ＳＴＵＮサーバ２の第一ポートに対して送信される。応答パケットは、Ｓ７１において送信された要求パケットに対して返信された応答パケットとは別の送信元ＩＰアドレス及び送信元ポート番号から送信するように、ＳＴＵＮサーバ２に要求される（Ｓ８５）。そして、応答パケットを受信したかが判断される（Ｓ８７）。応答パケットを受信した場合（Ｓ８７：ＹＥＳ）、ＳＴＵＮサーバ２との間にＮＡＴ装置６が介在しているが、送信元ＩＰアドレス及び送信元ポート番号の異なる応答パケットをいずれもＮＡＴ装置６が転送しているので、ＮＡＴ装置６のＮＡＴ種別がFull Cone Natであると特定される。特定されたＮＡＴ種別を示すフラグ情報が、ＲＡＭ８３に一時的に記憶される（Ｓ８９）。そしてＮＡＴ種別判定処理を終了し、端末装置処理（図６参照）に戻る。
【００４７】
一方、応答パケットを受信できない場合（Ｓ８７：ＮＯ）、要求パケットがＳＴＵＮサーバ２に対して送信され、応答パケットを自身に対して返信するように要求される。要求パケットは、ＳＴＵＮサーバ２のポート番号であって第一ポートとは異なるポート番号（第二ポート）に対して送信される（Ｓ９１）。そして、応答パケットを受信したかが判断される（Ｓ９２）。応答パケットを受信した場合（Ｓ９２：ＹＥＳ）、Ｓ７３（図９参照）において受信された応答パケットのＮＡＴ  ＩＰ及びＮＡＴポートと、今回受信した応答パケットのＮＡＴ  ＩＰ及びＮＡＴポートとが比較される（Ｓ９３）。双方が一致する場合（Ｓ９３：ＹＥＳ）、次いで要求パケットがＳＴＵＮサーバ２に対して送信され、応答パケットを自身に対して返信するように要求される。要求パケットは、第一ポートに対して送信される。応答パケットは、Ｓ９２において受信された応答パケットと同じ送信元ＩＰアドレスであり、且つ、Ｓ９２において受信された応答パケットとは異なる送信元ポート番号から送信するように、ＳＴＵＮサーバ２に要求される（Ｓ９５）。そして、応答パケットを受信したかが判断される（Ｓ９７）。応答パケットを受信した場合（Ｓ９７：ＹＥＳ）、送信元ポート番号が異なる場合であっても、ＮＡＴ装置６は応答パケットを転送しているので、ＮＡＴ装置６のＮＡＴ種別がAddress‐Restricted Cone NATであると特定される。特定されたＮＡＴ種別を示すフラグ情報が、ＲＡＭ８３に一時的に記憶される（Ｓ９９）。そしてＮＡＴ種別判定処理を終了し、端末装置処理（図６参照）に戻る。一方、応答パケットを受信できない場合（Ｓ９７：ＮＯ）、送信元ポート番号が異なると、ＮＡＴ装置６は応答パケットを転送しないということになるので、ＮＡＴ装置６のＮＡＴ種別がPort-Restricted Cone NATであると特定される。特定されたＮＡＴ種別を示すフラグ情報が、ＲＡＭ８３に一時的に記憶される（Ｓ１０１）。そしてＮＡＴ種別判定処理を終了し、端末装置処理（図６参照）に戻る。
【００４８】
一方、Ｓ９２の処理において応答パケットを受信できない場合（Ｓ９２：ＮＯ）や、Ｓ９３の処理においてＩＰアドレスとポート番号のうち少なくとも一方が一致しない場合（Ｓ９３：ＮＯ）、ＮＡＴ装置６のＮＡＴ種別がSymmetric NATであると特定される。特定されたＮＡＴ種別を示すフラグが、ＲＡＭ８３に一時的に記憶される（Ｓ１０３）。次いで、ＮＡＴ装置６においてポートマッピングが行われる場合のポート番号の変更パターンを推測するために、変更パターン推測処理（Ｓ１０５、図１１参照）が実行される。変更パターン推測処理が終了した場合、ＮＡＴ種別特定処理を終了して端末装置処理（図６参照）に戻る。
【００４９】
変更パターン推測処理について、図１１を参照して説明する。変更パターン推測処理では、要求パケットがＳＴＵＮサーバ２に対して送信され、応答パケットを自身に対して返信するように要求される。要求パケットは、ＳＴＵＮサーバ２のポート番号であって、第一ポート及び第二ポートとは異なるポート番号（第三ポート）に対して送信される（Ｓ１１１）。そして応答パケットを受信したかが判断される（Ｓ１１３）。応答パケットを受信できない場合（Ｓ１１３：ＮＯ）、変更パターンを推測できないので、変更パターンを推測できない旨を示すフラグ情報をＲＡＭ８３に一時的に記憶する（Ｓ１２３）。そして変更パターン推測処理を終了し、ＮＡＴ種別判定処理（図１０参照）に戻る。
【００５０】
一方、応答パケットを受信した場合（Ｓ１１３：ＹＥＳ）、ＳＴＵＮサーバ２に第一ポート〜第三ポート以外のポート番号が準備されているかが判断される（Ｓ１１５）。第一ポート〜第三ポート以外のポート番号が準備されている場合（Ｓ１１５：ＹＥＳ）、Ｓ１１１の処理に戻る。そして、未だ使用されていないポート番号に対して要求パケットを送信するために、上述の処理が繰り返し実行される。
【００５１】
ＳＴＵＮサーバ２に準備されている全てのポート番号宛てに要求パケットを送信した場合（Ｓ１１５：ＮＯ）、受信した応答パケットのＮＡＴ  ＩＰやＮＡＴポートの変化の様子から、変更パターンが推測される（Ｓ１１７）。例えば、ポート番号が所定のポート幅ずつ加算されている場合には、変更パターンが推測可能であると判断される。変更パターンが推測可能である場合（Ｓ１１９：ＹＥＳ）、推測された変更パターンを示す情報がＲＡＭ８３に一時的に記憶される（Ｓ１２１）。そして変更パターン推測処理を終了してＮＡＴ種別判定処理（図１０参照）に戻る。一方、例えばポート番号がランダムに変化している場合には、変更パターンを推測することができない。この場合（Ｓ１１９：ＮＯ）、変更パターンを推測できない旨を示す情報をＲＡＭ８３に一時的に記憶する（Ｓ１２３）。そして変更パターン推測処理を終了し、ＮＡＴ種別判定処理（図１０参照）にもどる。
【００５２】
図６に示すように、ＮＡＴ種別判定処理（Ｓ１９）が終了した後、ＮＡＴ装置６のＮＡＴ種別と、手順リスト（図５参照）とに基づいて、端末装置１０との間でＰ２Ｐ通信を開始させるために必要な開始手順が選択される。
【００５３】
ＮＡＴ種別判定処理においてＲＡＭ８３に記憶された情報が参照される。以下の（１）又は（２）の条件を満たすかが判断される（Ｓ２１）。
（１）ＳＴＵＮサーバ２との間にＮＡＴ装置が介在していない。
（２）ＮＡＴ装置６の種別がＦｕｌｌ  Ｃｏｎｅ  ＮＡＴである。
（１）又は（２）の条件を満たす場合（Ｓ２１：ＹＥＳ）、特定の開始手順に基づいた通信を行うことなく、端末装置９は端末装置１０との間でＰ２Ｐ通信を行うことが可能である。Ｐ２Ｐ通信によって、端末装置９と端末装置１０との間で映像データの送受信が実行される（Ｓ２７）。そしてＳ３７（図７参照）の処理に進む。
【００５４】
（１）及び（２）のいずれの条件も満たさない場合（Ｓ２１：ＮＯ）、端末装置１０に接続するＮＡＴ装置７のＮＡＴ種別を取得するために、ＳＴＵＮサーバ２との間で通信が行われる。ＮＡＴ装置７のＮＡＴ種別が取得される（Ｓ２３）。次いで、ＮＡＴ種別判定処理（Ｓ１９）において判定されたＮＡＴ装置６のＮＡＴ種別と、Ｓ２３において取得されたＮＡＴ装置７のＮＡＴ種別と、手順リスト（図５参照）とに基づいて、開始手順が選択される。
【００５５】
以下の（３）又は（４）の条件を満たすかが判断される（Ｓ２５）。
（３）ＳＴＵＮサーバ２と端末装置１０との間にＮＡＴ装置が介在していない。
（４）ＮＡＴ装置７の種別がＦｕｌｌ  Ｃｏｎｅ  ＮＡＴである。
（３）又は（４）の条件を満たす場合（Ｓ２５：ＹＥＳ）、特定の開始手順に基づいた通信を行うことなく、端末装置９と端末装置１０との間でＰ２Ｐ通信を行うことが可能である。Ｐ２Ｐ通信によって、端末装置９は端末装置１０との間で映像データの送受信を実行する（Ｓ２７）。そしてＳ３７（図７参照）の処理に進む。
【００５６】
（３）及び（４）のいずれの条件も満たさない場合（Ｓ２５：ＮＯ）、次いで、（５）〜（７）のうちいずれかの条件を満たすかが判断される（Ｓ２９）。
（５）ＮＡＴ装置７のＮＡＴ種別が、Address‐Restricted Cone NATである。
（６）ＮＡＴ装置７のＮＡＴ種別がPort-Restricted Cone NATであり、且つ、ＮＡＴ装置６のＮＡＴ種別がAddress‐Restricted Cone NAT又はPort-Restricted Cone NATである。
（７）ＮＡＴ装置７のＮＡＴ種別がSymmetric NATであり、且つ、ＮＡＴ装置６のＮＡＴ種別がAddress‐Restricted Cone NATである。
【００５７】
（５）〜（７）のうちいずれかの条件を満たす場合（Ｓ２９：ＹＥＳ）、開始手順としてＵＤＰ  Ｈｏｌｅ  Ｐｕｎｃｈｉｎｇが選択される。ＵＤＰ  Ｈｏｌｅ  Ｐｕｎｃｈｉｎｇに基づいた通信が実行される（Ｓ３１）。これによって、端末装置９と端末装置１０との間でＰ２Ｐ通信が可能となる。Ｐ２Ｐ通信によって、端末装置９は端末装置１０との間で映像データの送受信を実行する（Ｓ２７）。そしてＳ３７（図７参照）の処理に進む。
【００５８】
（５）〜（７）のいずれの条件も満たさない場合（Ｓ２９：ＮＯ）、次いで、（８）又は（９）の条件を満たし、且つ、端末装置９及び端末装置１０におけるポートマッピングの変更パターンが推測可能であるかが判断される（Ｓ３３）。
（８）ＮＡＴ装置７のＮＡＴ種別がSymmetric NATであり、且つ、ＮＡＴ装置６のＮＡＴ種別がPort-Restricted Cone NAT又はSymmetric NATである。
（９）ＮＡＴ装置７のＮＡＴ種別がPort-Restricted Cone NATであり、且つ、ＮＡＴ装置６のＮＡＴ種別がSymmetric NATである。
【００５９】
上述の条件を満たす場合（Ｓ３３：ＹＥＳ）、開始手順としてＵＤＰ  Ｍｕｌｔｉ  Ｈｏｌｅ  Ｐｕｎｃｈｉｎｇが選択される。ＵＤＰ  Ｍｕｌｔｉ  Ｈｏｌｅ  Ｐｕｎｃｈｉｎｇに基づいた通信が実行される（Ｓ３５）。これによって、端末装置９と端末装置１０との間でＰ２Ｐ通信が可能となる。Ｐ２Ｐ通信が可能となった状態で、端末装置９は端末装置１０との間で映像データの通信を実行する（Ｓ２７）。そしてＳ３７（図７参照）の処理に進む。一方、上述の全ての条件を満たさない場合には（Ｓ３３：ＮＯ）、そのままＳ３７（図７参照）の処理に進む。
【００６０】
図７のＳ３７では、上述の処理のうちＳ２７、Ｓ３１、及びＳ３５（図６参照）の処理によって、端末装置９，１０間でＰ２Ｐ通信が開始されたかが判断される（Ｓ３７）。Ｐ２Ｐ通信を行うことが不可能であり（例えばＳ８３、図９参照）、Ｐ２Ｐ通信が行われていない場合には（Ｓ３７：ＮＯ）、ＨＴＴＰサーバ４を介したトンネリング通信を中止させることができないので、そのまま端末装置処理を終了する。これに対し、Ｐ２Ｐ通信が実行されている場合（Ｓ３７：ＹＥＳ）、ＨＴＴＰサーバ４を介したトンネリング通信からＰ２Ｐ通信に切り替えるために、タイミング調整処理（Ｓ４１、図１２〜図１４参照）が実行される。
【００６１】
図１２〜図１４を参照し、タイミング調整処理について説明する。図１２に示すように、タイミング調整処理では、はじめに、ＨＴＴＰサーバ４を介したトンネリング通信によって、端末装置１０からパケットを受信しているかが判断される（Ｓ１３１）。受信している場合（Ｓ１３１：ＹＥＳ）、パケットに付加されている連続的な番号（「パケット番号」という。）が変数「ｎＨ」としてＲＡＭ２３に格納される（Ｓ１３３）。ｎＨは、ＨＴＴＰサーバ４を介して受信したパケットのパケット番号のうち最も新しいパケット番号を管理する変数である。そして、受信したパケットに含まれている映像データをディスプレイ８６１に表示させ、映像データを再生させる（Ｓ１３５）。ユーザは、ディスプレイ８６１を介して映像データを視聴することができる。次いで、再生した映像データの基となるパケットのパケット番号（ｎＨ）が、変数「ｎＴ」としてＲＡＭ２３に格納される。ｎＴは、最後に再生された映像データの基となるパケットのパケット番号を管理する変数である。そしてＳ１３１の処理に戻り、上述の処理が繰り返し実行される。
【００６２】
ＨＴＴＰサーバ４を介してパケットを受信していない場合（Ｓ１３１：ＮＯ）、Ｐ２Ｐ通信によって端末装置１０からパケットを受信したかが判断される（Ｓ１３７）。受信していない場合（Ｓ１３７：ＮＯ）、Ｓ１３１の処理に戻り、上述の処理が繰り返し実行される。端末装置１０からパケットを受信している場合（Ｓ１３７：ＹＥＳ）、受信したパケットのパケット番号が変数「ｎＤ」としてＲＡＭ２３に格納される（Ｓ１３９）。ｎＤは、Ｐ２Ｐ通信によって端末装置１０から受信したパケットのパケット番号のうち最も新しいパケット番号を管理する変数である。
【００６３】
次いで、再生する為の映像データが抽出されるパケット（以下「再生パケット」という。）を、ＨＴＴＰサーバ４を介したトンネリング通信によって受信したパケット（「ＨＴＴＰパケット」という。）から、Ｐ２Ｐ通信によって受信したパケット（「直接パケット」という。）に切り替えるための処理が実行される（Ｓ１４１〜Ｓ１４５）。
【００６４】
ｎＨとｎＤとの値が比較される（Ｓ１４１）。ｎＤの方がｎＨよりも大きい場合（Ｓ１４１：ＹＥＳ）、直接パケットの方がＨＴＴＰパケットよりも先行して端末装置９に到達していることになる。この場合、第一同期処理（Ｓ１４３、図１３参照）が実行される。第一同期処理では、ＨＴＴＰパケットを再生パケットとする状態から、直接パケットを再生パケットとする状態に切り替えられる。その後、ＨＴＴＰサーバ４を介したトンネリング通信が中止される。そしてタイミング調整処理を終了し、端末装置処理（図６参照）に戻る。
【００６５】
一方、ｎＤがｎＨ以下である場合（Ｓ１４１：ＮＯ）、ＨＴＴＰパケットの方が直接パケットよりも先行して端末装置９に到達していることになる。この場合、第二同期処理（Ｓ１４５、図１４参照）が実行される。第二同期処理では、直接パケットの方がＨＴＴＰパケットよりも先行して端末装置９に到達する状態となるまで待機される。その後、ＨＴＴＰパケットを再生パケットとする状態から、直接パケットを再生パケットとする状態に切り替えられる。その後ＨＴＴＰサーバ４を介した通信を中止させる。そしてタイミング調整処理を終了し、端末装置処理（図６参照）に戻る。
【００６６】
第一同期処理について、図１３を参照して説明する。図１３に示すように、第一同期処理では、Ｓ１３７（図１２参照）において受信した直接パケットを、ＨＤＤ２４に用意されたキューの末尾に記憶する。次いで受信した直接パケットのパケット番号（ｎＤ）を、キューの先頭に記憶したパケット番号（一番最初にキューから取り出されるパケット番号）を示す変数「ｎＱ」としてＲＡＭ２３に記憶する（Ｓ１６１）。
【００６７】
次いで、ｎＱが「ｎＨ＋１」よりも大きいかが判断される（Ｓ１６３）。ｎＱが「ｎＨ＋１」より大きい（Ｓ１６３：ＹＥＳ）、ＨＴＴＰパケットをさらに受信しなければ、直接パケットを再生パケットとすることができない。そこで、新たにＨＴＴＰパケットを受信したかが判断される（Ｓ１６５）。ＨＴＴＰパケットを受信した場合（Ｓ１６５：ＹＥＳ）、受信したＨＴＴＰパケットのパケット番号がｎＨとして記憶される（Ｓ１７３）。そして、受信したＨＴＴＰパケットに含まれている映像データをディスプレイ８６１に表示させる（Ｓ１７４）。次いで、映像データを表示させた時刻を、映像データを表示させた場合の時刻を示す変数「ｔ」としてＲＡＭ２３に記憶する（Ｓ１７５）。そしてＳ１６３の処理に戻り、上述の処理が繰り返し実行される。
【００６８】
Ｓ１６５の処理でＨＴＴＰパケットを受信していない場合（Ｓ１６５：ＮＯ）、直接パケットを受信したかが判断される（Ｓ１６７）。受信していない場合（Ｓ１６７：ＮＯ）、Ｓ１６５の処理に戻り、継続してＨＴＴＰパケット及び直接パケットの受信が監視される。直接パケットを受信している場合（Ｓ１６７：ＹＥＳ）、受信した直接パケットのパケット番号がｎＤとして記憶される（Ｓ１６９）。次いで、受信した直接パケットをキューの末尾に記憶する（Ｓ１７１）。そしてＳ１６５の処理に戻り、上述の処理が繰り返し実行される。
【００６９】
上述の処理が繰り返されてｎＨが更新され、ｎＱが「ｎＨ＋１」以下となった場合（Ｓ１６３：ＮＯ）、ＨＴＴＰパケットを再生パケットとする状態から、直接パケットを再生パケットとする状態に切り替えることができる。そこで、ＨＴＴＰサーバ４を介したトンネリング通信を中止させる（Ｓ１７７）。
【００７０】
次いで、映像データが断続的にディスプレイ８６１に表示された場合にユーザが違和感を感じない最小の表示間隔（「Ｔｍｉｎ」という。）が、前述したｔに加算される。算出された値（ｔ＋Ｔｍｉｎ）が、タイマ割り込み時間としてセットされ、タイマ割り込みが許可される（Ｓ１７９）。許可されたタイマ割り込みは、時刻「ｔ＋Ｔｍｉｎ」が到来した場合に割り込みを発生させる。その後、Ｔｍｉｎ間隔で周期的に割り込みを発生させる。
【００７１】
この状態で、直接パケットを受信したかが判断される（Ｓ１８１）。直接パケットを受信した場合（Ｓ１８１：ＹＥＳ）、受信した直接パケットのパケット番号がｎＤとして記憶される（Ｓ１８３）。次いで、受信した直接パケットをキューの末尾に記憶する（Ｓ１８５）。そしてＳ１８１の処理に戻り、上述の処理が繰り返し実行される。
【００７２】
一方、直接パケットを受信していない場合（Ｓ１８１：ＮＯ）、Ｓ１７９の処理で設定したタイマ割り込みが発生しているかが判断される（Ｓ１８９）。タイマ割り込みが発生していない場合（Ｓ１８９：ＮＯ）、Ｓ１８１の処理に戻り、上述の処理が繰り返し実行される。タイマ割り込みが発生している場合（Ｓ１８９：ＹＥＳ）、キューに直接パケットが記憶されているかが判断される（Ｓ１９１）。キューに直接パケットが記憶されていない場合（Ｓ１９１：ＹＥＳ）、ディスプレイ８６１に表示させるための直接パケットがないので、特段処理を行うことなく第一同期処理を終了し、タイミング調整処理（図１２参照）に戻る。
【００７３】
キューに直接パケットが記憶されている場合（Ｓ１９１：ＮＯ）、キューに記憶されている直接パケットのうち、パケット番号がｎＱの直接パケットが取り出される（Ｓ１９３）。取り出された直接パケットに含まれている映像データが、ディスプレイ８６１に表示される（Ｓ１９５）。表示時刻がｔとして記憶される（Ｓ１９７）。ｎＱに１加算され更新される（Ｓ１９９）。そしてＳ１７９に戻り、上述の処理が繰り返し実行される。
【００７４】
第二同期処理について、図１４を参照して説明する。図１４に示すように、第二同期処理では、はじめに、映像データが繰り返しディスプレイ８６１に表示された場合にユーザが違和感を感じない最大の表示間隔（「Ｔｍａｘ」という。）が、前述したｔに加算される。算出された値（ｔ＋Ｔｍａｘ）は、タイマ割り込み時間としてセットされ、タイマ割り込みが許可される（Ｓ２１１）。許可されたタイマ割り込みは、時刻「ｔ＋Ｔｍａｘ」が到来した場合に割り込みを発生させる。その後、Ｔｍａｘ間隔で周期的に割り込みを発生させる。
【００７５】
ＨＴＴＰパケットを受信したかが判断される（Ｓ２１３）。受信した場合（Ｓ２１３：ＹＥＳ）、受信したＨＴＴＰパケットのパケット番号がｎＨとして記憶される（Ｓ２１５）。次いで、受信したＨＴＴＰパケットが、ＨＤＤ２４に用意されたキューの末尾に記憶される。受信したＨＴＴＰパケットのパケット番号がｎＱに格納される（Ｓ２１７）。そしてＳ２１３の処理に戻り、繰り返しＨＴＴＰパケットの受信が監視される。
【００７６】
一方、ＨＴＴＰパケットを受信していない場合（Ｓ２１３：ＮＯ）、直接パケットを受信したかが判断される（Ｓ２１９）。受信している場合（Ｓ２１９：ＹＥＳ）、受信した直接パケットのパケット番号が、ｎＤとして記憶される（Ｓ２２１）。次いで、ｎＤとｎＴとが比較される（Ｓ２２３）。ｎＤがｎＴ以下である場合（Ｓ２２３：ＮＯ）、直接パケットを再生パケットとすることができない。そこでＳ２１３の処理に戻り、継続してＨＴＴＰパケットの受信が監視される。
【００７７】
一方、ｎＤがｎＴよりも大きい場合（Ｓ２２３：ＹＥＳ）、ＨＴＴＰパケットを再生パケットとする状態から、直接パケットを再生パケットとする状態に切り替えることができる。そこで、ＨＴＴＰサーバ４を介したトンネリング通信を中止させる（Ｓ２２５）。そして第二同期処理を終了し、タイミング調整処理（図１２参照）に戻る。
【００７８】
一方、Ｓ２１９の処理で直接パケットを受信していない場合（Ｓ２１９：ＮＯ）、Ｓ２１１の処理で設定したタイマ割り込みが発生しているかが判断される（Ｓ２２７）。タイマ割り込みが発生していない場合（Ｓ２２７：ＮＯ）、Ｓ２１３の処理に戻り、上述の処理が繰り返し実行される。タイマ割り込みが発生している場合（Ｓ２２７：ＹＥＳ）、キューに記憶されているＨＴＴＰパケットのうち、パケット番号がｎＱのＨＴＴＰパケットが取り出される（Ｓ２２９）。取り出されたＨＴＴＰパケットに含まれている映像データがディスプレイ８６１に表示される（Ｓ２３１）。表示させたＨＴＴＰパケットのパケット番号（ｎＱ）がｎＴとして記憶され（Ｓ２３３）、表示時刻がｔに格納される（Ｓ２３５）。ｎＱに１加算され更新される（Ｓ２３７）。そしてＳ２１１の処理に戻り、上述の処理が繰り返し実行される。
【００７９】
図７に示すように、第一同期処理（図１３）及び第二同期処理（図１４）が終了してタイミング調整処理（図１２参照）が終了した後、端末装置処理では、直接パケットを受信したかが判断される（Ｓ４５）。なおこの状態では、ＨＴＴＰサーバ４を介したトンネリング通信は中止されているので、ＨＴＴＰパケットは受信しない。直接パケットを受信している場合（Ｓ４５：ＹＥＳ）、受信した直接パケットに含まれている映像データがディスプレイ８６１に表示される（Ｓ４９）。そしてＳ４５の処理に戻り、継続して直接パケットの受信が監視される。直接パケットを受信していない場合（Ｓ４５：ＮＯ）、端末装置１０との通信を中止させるための操作がキーボード８５１を介してユーザによってなされたかが判断される（Ｓ５３）。キー操作がなされていない場合（Ｓ５３：ＮＯ）、Ｓ４５の処理に戻り、継続して直接パケットの受信が監視される。一方、通信を中止させる操作がなされた場合（Ｓ５３：ＹＥＳ）、端末装置１０との通信を中止し、端末装置処理は終了する。
【００８０】
図１５に示す通信シーケンスについて、上述のフローチャートを参照しつつ説明する。なお図１５では、端末装置９，１０とサーバ２，３，４との間に接続されるＮＡＴ装置６，７は省略されている。
【００８１】
はじめに、端末装置９と端末装置１０との間でＨＴＴＰサーバ４を介したトンネリング通信を開始させる為に、端末装置９からＨＴＴＰサーバ４に対して接続要求パケットが送信される（１０１）。ＨＴＴＰサーバ４では、トンネリング通信を許可する旨を端末装置９に対して通知するために、許可通知パケットが端末装置９に対して返信される（１０３）。次いで端末装置９は、ＳＩＰに基づいて端末装置１０とセッションを確立させるために、接続要求パケット（ＩＮＶＩＴＥ）がＳＩＰサーバ３に対して送信される（１０５）。ＳＩＰサーバ３では、受信した接続要求パケット（ＩＮＶＩＴＥ）が端末装置１０に対して転送される（１０７）。なお、ＳＩＰサーバ３を介した接続要求パケット（ＩＮＶＩＴＥ）の通信は、ＨＴＴＰサーバ４を介したトンネリング通信によって行われる。
【００８２】
一方、端末装置１０では、ＳＩＰサーバ３及びＨＴＴＰサーバ４を介して接続要求パケット（ＩＮＶＩＴＥ）を受信した場合、ＨＴＴＰサーバ４を介したトンネリング通信を開始させる為に、ＨＴＴＰサーバ４に対して接続要求パケットが送信される（１０９）。ＨＴＴＰサーバ４では、許可通知パケットが端末装置１０に対して返信される（１１１）。
【００８３】
次いで端末装置１０は、ＳＩＰに基づいて端末装置９とセッションを確立させるために、接続応答パケット（２００  ＯＫ）がＳＩＰサーバ３に対して送信される（１１３）。ＳＩＰサーバ３では、受信した接続応答パケット（２００  ＯＫ）が端末装置９に対して転送される（１１５）。端末装置９では、受信した接続応答パケット（２００  ＯＫ）に対してＡＣＫパケットが送信される（１１７）。ＡＣＫパケットは、ＳＩＰサーバ３を介して端末装置１０に到達する（１１８）。なお、ＳＩＰサーバ３を介した接続応答パケット（２００  ＯＫ）及びＡＣＫパケットの通信は、ＨＴＴＰサーバ４を介したトンネリング通信によって行われる。以上の通信によって、端末装置９、１０間でＨＴＴＰサーバ４を介したトンネリング通信が可能な状態となる（Ｓ１１、図６参照）。また、ＳＩＰに基づいた通信によってセッションが確立し、端末装置９と端末装置１０とは接続状態になっている。
【００８４】
端末装置９，１０の間で、映像データを含むパケットの通信が実行される（１１９、Ｓ１３（図６参照））。端末装置９では、受信したＨＴＴＰパケットに含まれている映像データがディスプレイ８６１に表示される（Ｓ１７４（図１３参照）、Ｓ２２３（図１４参照））。
【００８５】
トンネリング通信が行われている状態で、端末装置９，１０間でＰ２Ｐ通信を実行するための処理が開始される。はじめに、ＮＡＴ装置６，７がＵＰｎＰ機能を搭載しているかが判断される（Ｓ１５（図６参照））。次いで、ＳＴＵＮサーバ２との通信によって、ＮＡＴ装置６，７のＮＡＴ種別が特定される（１２１、１２３、Ｓ１９（図６参照），Ｓ２３（図６参照））。ＵＰｎＰ機能の搭載の可否、及び、ＮＡＴ種別に基づいて、端末装置９，１０間でＰ２Ｐ通信を行うために必要となる開始手順の通信が選択される（Ｓ１７、Ｓ２１、Ｓ２５、Ｓ２９、Ｓ３３（図６参照））。選択された開始手順に基づいて、端末装置９，１０間で通信が実行される（１２５、Ｓ３１（図６参照）、Ｓ３３（図６参照））。これによって、端末装置９，１０間でＰ２Ｐ通信が可能な状態となるので、映像データを含むパケットの通信が実行される（１２７、Ｓ２７（図６参照））。
【００８６】
Ｐ２Ｐ通信が開始された後、所定のタイミングで、ＨＴＴＰサーバ４を介したトンネリング通信を終了させる（Ｓ１７７（図１３参照）、Ｓ２２５（図１４参照））。ＨＴＴＰパケットを再生パケットとする状態から、直接パケットを再生パケットとする状態に切り替えられる。（（Ｓ４１（図７参照）））。これによって、直接パケットに含まれている映像データが抽出され、ディスプレイ８６１に表示される（Ｓ１９７（図１３参照）、Ｓ４９（図７参照））。
【００８７】
通信を終了させる指示が、端末装置９のキーボード８５１を介して入力された場合、端末装置９から端末装置１０に対して、通信を終了させるための終了パケット（ＢＹＥ）が送信される（１２９）。終了パケット（ＢＹＥ）を受信した端末装置１０は、端末装置９に対して応答パケット（２００  ＯＫ）を返信する（１３１）。これによって、端末装置９，１０間の通信は終了する（Ｓ５３（図７参照））。
【００８８】
図１６を参照し、第一同期処理（図１３参照）時における映像データの表示タイミングについて、図７、図１２、及び図１３のフローチャートを参照しつつ説明する。図１６では、端末装置１０から送信されたパケット（ＨＴＴＰパケット及び直接パケット）を端末装置９が受信した場合の受信タイミングが示されている。また、再生パケットに含まれる映像データがディスプレイ８６１に表示されるタイミングが示されている。
【００８９】
ＨＴＴＰサーバ４を介したトンネリング通信が開始されることによって、ＨＴＴＰパケットの受信が開始される（１４０、Ｓ１３１（図１２参照））。ＨＴＴＰパケットが受信され（１４１）、ＨＴＴＰパケットが再生パケットとされて（１４３）、再生パケットに含まれている映像データがディスプレイ８６１に表示される（１４５、Ｓ１３５（図１２参照））。
【００９０】
所定の開始手順に基づいて通信が行われた結果、Ｐ２Ｐ通信が可能となり、Ｐ２Ｐ通信が開始される（１４７）。直接パケットが受信される（１４９、Ｓ１３７（図１２参照））。受信した直接パケットのパケット番号は「５」であり、この時点での再生パケットのパケット番号は「２」であるので（Ｓ１４１：ＹＥＳ（図１２参照））、第一同期処理（Ｓ１４３（図１２参照））が実行される。受信した直接パケットは、キューに記憶される（Ｓ１６１（図１３参照））。ｎＱ（＝５）の方が「ｎＨ＋１」（＝３）よりも大きいので（Ｓ１６３：ＹＥＳ（図１２参照））、受信したＨＴＴＰパケットが継続して再生パケットとされ、ディスプレイ８６１に映像データが表示される（１５１、１５３、Ｓ１７４（図１３参照））。受信した直接パケットはキューに記憶される（Ｓ１７１（図１３参照））。
【００９１】
処理が進む中、パケット番号が「７」の直接パケットを受信した場合（１５５）、ｎＱ（＝５）が「ｎＨ＋１」（＝５）以下となるので（Ｓ１６３：ＮＯ（図１３参照））、ＨＴＴＰサーバ４を介したトンネリング通信が中止される（１５７、Ｓ１７７（図１３参照））。次いで、キューに記憶された直接パケットが所定の周期（Ｔｍｉｎ、１５９）で取り出される（１６１、Ｓ１９３（図１３参照））。取り出された直接パケットが再生パケットとされ、ディスプレイ８６１に映像データが表示される（１６３、１６５、Ｓ１９５（図１３参照））。
【００９２】
処理が進む中、キューに記憶されている直接パケットがなくなった場合（Ｓ１９１：ＹＥＳ（図１３参照））、直接パケットから抽出される映像データは、直接パケットを受信したタイミング（１６７）で抽出される（１６９）。抽出された映像データがディスプレイ８６１に表示される（１７１、Ｓ４９、図７参照）。
【００９３】
以上のように、ＨＴＴＰパケットを再生パケットとする状態から、直接パケットを再生パケットとする状態に切り替えた場合であっても、ディスプレイ８６１に表示される映像データの表示周期は最短でＴｍｉnになる。これによって、映像データの表示周期が短すぎることによる違和感をユーザに感じさせることなく、直接パケットを再生パケットとする状態に切り替えることができる。
【００９４】
図１７を参照し、第二同期処理（図１４参照）時における映像データの表示タイミングについて、図７、図１２、及び図１４のフローチャートを参照しつつ説明する。
【００９５】
ＨＴＴＰサーバ４を介したトンネリング通信が開始されることによって、ＨＴＴＰパケットの受信が開始される（１７２、１７３、Ｓ１３１（図１２参照））。受信されたＨＴＴＰパケットが再生パケットとされて（１７４）、再生パケットに含まれている映像データがディスプレイ８６１に表示される（１７５、Ｓ１３５（図１２参照））。
【００９６】
所定の開始手順に基づいて通信が行われた結果、Ｐ２Ｐ通信が可能となり、Ｐ２Ｐ通信が開始される（１７７）。直接パケットが受信される（１７９、Ｓ１３７（図１２参照））。受信した直接パケットのパケット番号は「２」であり、この時点での再生パケットのパケット番号は「３」であるので（Ｓ１４１：ＮＯ（図１２参照））、第二同期処理（Ｓ１４５（図１２参照））が実行される。ＨＴＴＰパケットを受信した場合（Ｓ２１３：ＹＥＳ（図１４参照））、受信されたＨＴＴＰパケットはキューに記憶される（Ｓ２１７（図１４参照））。
【００９７】
直接パケットを受信した場合（１８１，１８３、Ｓ２１９：ＹＥＳ（図１４参照））、受信した直接パケットのパケット番号「３，４」が、再生パケットのパケット番号「４」以下であるので（Ｓ２２３：ＮＯ（図１４参照））、ＨＴＴＰサーバ４を介したトンネリング通信は終了しない。所定の周期（Ｔｍａｘ、１８４）でキューに記憶されたＨＴＴＰパケットが取り出される（１８５，１８７、Ｓ２２９（図１４参照））。取り出されたＨＴＴＰパケットが再生パケットとされ、ディスプレイ８６１に映像データが表示される（１８９，１９１、Ｓ２３１（図１４参照））。
【００９８】
処理が進む中、受信した直接パケットのパケット番号「７」（１９３）が、この時点での再生パケットのパケット番号「６」（１９５）よりも大きくなった場合（Ｓ２２３：ＹＥＳ（図１４参照））、ＨＴＴＰサーバ４を介したトンネリング通信が中止される（１９７、Ｓ２２５（図１４参照））。以後、直接パケットを受信したタイミングで映像データが抽出される（２０１）。抽出された映像データがディスプレイ８６１に表示される（２０３、Ｓ４９（図７参照））。
【００９９】
以上のように、ＨＴＴＰパケットを再生パケットとする状態から、直接パケットを再生パケットとする状態に切り替えた場合であっても、ディスプレイ８６１に表示される映像データの表示周期は最長でＴｍａｘになる。映像データの表示周期が長すぎることによる違和感をユーザに感じさせることなく、直接パケットを再生パケットとする状態に切り替えることができる。
【０１００】
以上説明したように、通信システム１においては、端末装置９，１０間でＰ２Ｐ通信が開始されるまでは、ＨＴＴＰサーバ４を介したトンネリング通信によって通信が行われる。このため、端末装置９，１０間でＰ２Ｐ通信が開始されるまでに必要な時間を短縮することができる。また、所定の開始手順に基づいて通信が行われた後、トンネリング通信がＰ２Ｐ通信に切り替えられるので、トンネリング通信時に発生し易い通信遅延を抑制できる。端末装置９は、端末装置１０から送信されたパケットを遅延なく受信し、出力することができる。
【０１０１】
また端末装置９，１０は、トンネリング通信を中止させてＰ２Ｐ通信に切り替えるタイミングの前後で、映像データをディスプレイ８６１に表示させるタイミングを調整する。このようにして、映像データの表示間隔がＴｍｉnより小さくならないようにし、且つＴｍａxより大きくならないようにしている。トンネリング通信とＰ２Ｐ通信とでスループットが大きく異なる場合、端末装置９側に到達するパケットの到達タイミングは、ＨＴＴＰパケットと直接パケットとで異なる可能性がある。しかしながら本実施の形態では、映像データの表示タイミングを調節するので、到達タイミングの相違が表示態様に及ぼす影響を抑制している。ユーザは、映像データを違和感なく視認できる。
【０１０２】
なお、図１のＨＴＴＰサーバ４が本発明の「サーバ」に相当し、ＳＴＵＮサーバ２が本発明の「管理サーバ」に相当する。図６のＳ１３の処理を行うＣＰＵ８１が、本発明の「第一通信手段」に相当し、Ｓ１９及びＳ２３の処理を行うＣＰＵ８１が、本発明の「第一特定手段」に相当し、Ｓ２１、Ｓ２５、Ｓ２９、Ｓ３３の処理を行うＣＰＵ８１が、本発明の「選択手段」に相当する。図１２のＳ１４３、Ｓ１４５の処理を行うＣＰＵ８１が、本発明の「切替手段」に相当する。図６のＳ２７の処理を行うＣＰＵ８１が本発明の「第二通信手段」に相当する。図４のディスプレイ８６１が本発明の「出力手段」に相当する。図１３のＳ１７４、Ｓ１９５、図１４のＳ２３１の処理を行うＣＰＵ８１が本発明の「出力制御手段」に相当する。
【０１０３】
図６のＳ１３の処理が、本発明の「第一通信ステップ」に相当し、Ｓ１９及びＳ２３の処理が、本発明の「第一特定ステップ」に相当し、Ｓ２１、Ｓ２５、Ｓ２９、Ｓ３３の処理が、本発明の「選択ステップ」に相当する。図１２のＳ１４３、Ｓ１４５の処理が、本発明の「切替ステップ」に相当する。図６のＳ２７の処理が本発明の「第二通信ステップ」に相当する。
【０１０４】
なお、本発明は上記実施の形態に限定されるものではなく、種々の変更が可能である。以下、本実施の形態の変形例について説明する。
【０１０５】
図１８を参照し、変形例における端末装置処理について説明する。変形例では、開始手順を経ることなく端末装置１０とＰ２Ｐ通信を行うことができる場合、ＨＴＴＰサーバ４を介したトンネリング通信を行わないこととする。なお、端末装置処理を除く処理については、上述の実施の形態と同一であるので、以下では説明を省略している。また、上述の実施の形態における端末装置処理と同一処理部分については、説明を簡略化している。
【０１０６】
図１８に示すように、端末装置処理が起動されると、はじめに、端末装置９，１０間でＵＰｎＰに基づいた通信が可能であるかが特定される（Ｓ１５）。ＵＰｎＰに基づいた通信が可能である場合（Ｓ１７：ＹＥＳ）、特定の開始手順に基づいた通信は不要である。端末装置９，１０間では、Ｐ２Ｐ通信によって映像データが送受信される（Ｓ２７）。そしてＳ３７（図７参照）の処理に進む。
【０１０７】
ＵＰｎＰに基づいた通信を端末装置９，１０間で実行できない場合（Ｓ１７：ＮＯ）、ＮＡＴ装置６のＮＡＴ種別を判別する処理が実行される（Ｓ１９）。次いで、判別されたＮＡＴ装置６のＮＡＴ種別に基づいて、特定の開始手順に基づいた通信を行うことなくＰ２Ｐ通信を行うことが可能であるかが判断される（Ｓ２１）。特定の開始手順に基づいた通信が不要な場合（Ｓ２１：ＹＥＳ）、端末装置９，１０間では、Ｐ２Ｐ通信によって映像データが送受信される（Ｓ２７）。そしてＳ３７（図７参照）の処理に進む。
【０１０８】
特定の開始手順に基づいた通信が必要な場合（Ｓ２１：ＮＯ）、端末装置９，１０間でＨＴＴＰサーバ４を介したトンネリング通信を開始させるための通信が実行される（Ｓ２５１）。トンネリング通信が可能となった状態で、端末装置９，１０間でパケットの送受信が開始される（Ｓ２５３）。そしてＳ２３の処理に進む。Ｓ２５、Ｓ２９、及びＳ３３では、ＮＡＴ装置６、及びＮＡＴ装置７のＮＡＴ種別に基づいて、特定の開始手順に基づいた通信が必要であるかが判断される。必要に応じて、所定の開始手順に基づいた通信が実行される（Ｓ３１、Ｓ３５）。通信後、端末装置９，１０間では、Ｐ２Ｐ通信によって映像データが送受信される（Ｓ２７）。そしてＳ３７（図７参照）の処理に進む。
【０１０９】
以上説明したように、変形例では、ＮＡＴ装置６のＮＡＴ種別に基づいて、特定の開始手順に基づいた通信が可能であるかが判断される。開始手順に基づいた通信が不要であると判断された場合、ＨＴＴＰサーバ４を介したトンネリング通信は行わず、Ｐ２Ｐ通信が実行される。これによって、トンネリング通信時に発生し易い通信遅延を発生させることなく、端末装置１０との間で迅速にＰ２Ｐ通信を開始させることができる。
【０１１０】
なお、図１８のＳ１９の処理を行うＣＰＵ８１が本発明の「第二特定手段」「第三特定手段」に相当し、Ｓ２１の処理を行うＣＰＵ８１が本発明の「判定手段」に相当する。図６のＳ２７の処理を行うＣＰＵ８１が本発明の「第三通信手段」に相当する。図１８のＳ１９の処理が本発明の「第二特定ステップ」に相当し、Ｓ２１の処理が本発明の「判定ステップ」に相当する。
【０１１１】
なお、本発明は上記実施の形態及び変形例に限定されるものではなく、種々の変更が可能である。本実施の形態では、ＨＴＴＰサーバ４においてパケットがＨＴＴＰでカプセル化されることによって、トンネリング通信を実現していた。しかしながら本発明はこの方法に限定されず、他の一般的なトンネリング通信技術を使用することができる。例えば、ＳＳＨ（Ｓｅｃｕｒｅ  ＳＨｅｌｌ）によってカプセル化することによって、トンネリング通信を実現してもよい。
【０１１２】
本実施の形態では、ＳＩＰサーバ２の通信制御によって端末装置９，１０間のセッションが確立された後、端末装置９，１０間でパケットの送受信が行われていた。しかしながら本発明はこの方法に限定されない。他の通信プロトコル（ＦＴＰなど）に基づいた通信がトンネリング通信下で行われてもよい。
【０１１３】
上述の変形例では、ＮＡＴ装置６のＮＡＴ種別に応じて、所定の開始手順に基づいた通信の要否が判断されていたが、本発明はこの方法に限定されず、ＮＡＴ装置７のＮＡＴ種別や、ＮＡＴ装置６，７のＮＡＴ種別に応じて、所定の開始手順に基づいた通信の要否が判断されてもよい。
【符号の説明】
【０１１４】
１      通信システム
２      ＳＴＵＮサーバ
３      ＳＩＰサーバ
４      ＨＴＴＰサーバ
６，７，８  ＮＡＴ装置
９，１０，１１  端末装置
１５    インターネット
１２，１３，１４  ＬＡＮ
８１    ＣＰＵ
【図１】
2011061594.tif 000003
【図２】
2011061594.tif 000004
【図３】
2011061594.tif 000005
【図４】
2011061594.tif 000006
【図５】
2011061594.tif 000007
【図６】
2011061594.tif 000008
【図７】
2011061594.tif 000009
【図８】
2011061594.tif 000010
【図９】
2011061594.tif 000011
【図１０】
2011061594.tif 000012
【図１１】
2011061594.tif 000013
【図１２】
2011061594.tif 000014
【図１３】
2011061594.tif 000015
【図１４】
2011061594.tif 000016
【図１５】
2011061594.tif 000017
【図１６】
2011061594.tif 000018
【図１７】
2011061594.tif 000019
【図１８】
2011061594.tif 000020