(57)【特許請求の範囲】
【請求項１】
１つまたは複数のプロセッサとシステムメモリとを含むコンピュータシステムにおいて、双方向データストリーム用のトランスポートとしてアプリケーション層のプロトコルを用いた通信を使用する方法であって、前記方法は、
トランスポート層のプロトコルを使用して他のコンピュータシステムとの第１の通信を試みる動作と、
ファイアウォールが前記第１の通信を遮断したとの指示にアクセスする動作と、
前記ファイアウォールが前記第１の通信を遮断したことに応答して、前記ファイアウォールを介して前記他のコンピュータにアプリケーション層のプロトコルを用いた第２の通信を送信する動作と、
前記第２の通信に応答して、前記他のコンピュータシステムからアップストリームＵＲＩとダウンストリームＵＲＩとをアプリケーション層のプロトコルを用いた通信を介して受信する動作と、
前記アップストリームＵＲＩで識別される前記他のコンピュータシステムのモジュールへのデータ送信のための要求を前記他のコンピュータシステムにアプリケーション層のプロトコルを用いた通信を介して送信する動作と、
前記ダウンストリームＵＲＩで識別される前記他のコンピュータシステムのモジュールからのデータ受信のための要求を前記他のコンピュータシステムにアプリケーション層のプロトコルを用いた通信を介して送信する動作と、
前記データ送信のための要求と前記データ受信のための要求とを前記コンピュータシステムと前記他のコンピュータシステムとの間の双方向データストリームにバインドする動作と
を含む、前記アプリケーション層のプロトコルを用いた通信を介して双方向データソケットをシミュレートする動作と
を備えたことを特徴とする方法。
【請求項２】
前記トランスポート層のプロトコルはトランスミッション・コントロール・プロトコル（ＴＣＰ）であることを特徴とする請求項１に記載の方法。
【請求項３】
前記アプリケーション層のプロトコルはハイパーテキスト・トランスファー・プロトコル（ＨＴＴＰ）であることを特徴とする請求項１又は２に記載の方法。
【請求項４】
前記アップストリームＵＲＩで識別される前記他のコンピュータシステムのモジュールへのデータ送信のための要求を送信する動作は、ＨＴＴＰ  ＰＵＴおよびＨＴＴＰ  ＰＯＳＴのうちの１つを送信する動作を含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記ダウンストリームＵＲＩで識別される前記他のコンピュータシステムのモジュールからのデータ受信のための要求を送信する動作は、ＨＴＴＰ  ＧＥＴを送信する動作を含むことを特徴とする請求項３又は４に記載の方法。
【請求項６】
前記データ送信のための要求と前記データ受信のための要求とを双方向データストリームにバインドする動作は、仲介者に対しては前記コンピュータシステムから送信されるアプリケーション層のプロトコルのデータに見える少量のデータを所定時間間隔で送信することにより、前記データ送信のための要求を連続的に維持する動作を含むことを特徴とする請求項１〜５のいずれか一項に記載の方法。
【請求項７】
前記データ送信のための要求と前記データ受信のための要求とを双方向データストリームにバインドする動作は、仲介者に対しては前記コンピュータシステムにおいて受信されるアプリケーション層のプロトコルのデータに見える少量のデータを所定時間間隔で受信することにより、前記データ受信の要求を連続的に維持する動作を含むことを特徴とする請求項１〜６のいずれか一項に記載の方法。
【請求項８】
前記データ送信のための要求と前記データ受信のための要求とを双方向データストリームにバインドする動作は、前記コンピュータシステムから前記他のコンピュータシステムに送信するデータのデータ転送速度を調整する動作と、前記他のコンピュータシステムから前記コンピュータシステムに送信するデータのデータ転送速度を調整する動作とを含むことを特徴とする請求項１〜７のいずれか一項に記載の方法。
【請求項９】
１つまたは複数のプロセッサとシステムメモリとを含むコンピュータシステムにおいて、双方向データストリーム用のトランスポートとしてアプリケーション層のプロトコルを用いた通信を使用する方法であって、
ファイアウォールを介して他のコンピュータシステムからアプリケーション層のプロトコルを用いた通信を受信する動作と、
前記アプリケーション層のプロトコルを用いた通信に応答して、前記他のコンピュータシステムにアップストリームＵＲＩとダウンストリームＵＲＩとをアプリケーション層のプロトコルを用いた通信を介して送信する動作と、
前記アップストリームＵＲＩで識別される前記コンピュータシステムのモジュールへのデータ送信のための要求を前記他のコンピュータシステムからアプリケーション層のプロトコルを用いた通信を介して受信する動作と、
前記ダウンストリームＵＲＩで識別される前記コンピュータシステムのモジュールからのデータ受信のための要求を前記他のコンピュータシステムからアプリケーション層のプロトコルを用いた通信を介して受信する動作と、
前記データ送信のための要求と前記データ受信のための要求とを、前記コンピュータシステムと前記他のコンピュータシステムとの間の双方向データストリームにバインドする動作と
を含む、前記アプリケーション層のプロトコルを用いた通信を介して双方向データソケットをシミュレートする動作と
を備えたことを特徴とする方法。
【請求項１０】
前記トランスポート層のプロトコルはトランスミッション・コントロール・プロトコル（ＴＣＰ）であることを特徴とする請求項９に記載の方法。
【請求項１１】
前記アプリケーション層のプロトコルはハイパーテキスト・トランスファー・プロトコル（ＨＴＴＰ）であることを特徴とする請求項９又は１０に記載の方法。
【請求項１２】
前記アップストリームＵＲＩで識別されるモジュールへのデータ送信のための要求を受信する動作は、ＨＴＴＰ  ＰＵＴおよびＨＴＴＰ  ＰＯＳＴのうちの１つを受信する動作を含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記ダウンストリームＵＲＩで識別されるモジュールからのデータ受信のための要求を受信する動作は、ＨＴＴＰ  ＧＥＴを受信する動作を含むことを特徴とする請求項１１又は１２に記載の方法。
【請求項１４】
前記データ送信のための要求と前記データ受信のための要求とを双方向データストリームにバインドする動作は、仲介者には前記他のコンピュータシステムから送信されるアプリケーション層のプロトコルのデータに見える少量のデータを所定時間間隔で送信することにより前記データ送信のための要求を連続的に維持する動作を含むことを特徴とする請求項９〜１３のいずれか一項に記載の方法。
【請求項１５】
前記データ送信のための要求と前記データ受信のための要求とを双方向データストリームにバインドする動作は、仲介者には前記他のコンピュータシステムにおいて受信されるアプリケーション層のプロトコルのデータに見える少量のデータを所定時間間隔で受信することで前記データ受信のための要求を連続的に維持する動作を含むことを特徴とする請求項９〜１４のいずれか一項に記載の方法。
【請求項１６】
請求項１〜１５のいずれか一項に記載の方法を実行するためのプログラム。
【請求項１７】
請求項１〜１５のいずれか一項に記載の方法を実行するためのプログラムを記録した記録媒体。
【請求項１８】
双方向データストリーム用のトランスポートとしてアプリケーション層のプロトコルを用いた通信を使用する、１つまたは複数のプロセッサとシステムメモリとを含むコンピュータシステムにおいて、
双方向データストリーム用のトランスポートとしてのアプリケーション層のプロトコルを用いた通信の使用に参加するためのコンピュータ実行可能命令であって、
トランスポート層のプロトコルを用いた通信を使用して他のコンピュータシステムとの第１の通信を試みる命令と、
ファイアウォールが前記第１の通信を遮断したとの指示にアクセスする命令と、
前記ファイアウォールが前記トランスポート層のプロトコルを用いた通信を遮断したことに応答して、前記ファイアウォールを介して前記他のコンピュータにアプリケーション層のプロトコルを用いた第２の通信を送信する命令と、
前記第２の通信に応答して、前記他のコンピュータシステムからアップストリームＵＲＩとダウンストリームＵＲＩとをアプリケーション層のプロトコルを用いた通信を介して受信する命令と、
前記アップストリームＵＲＩで識別される前記他のコンピュータシステムのモジュールへのデータ送信のための要求を前記他のコンピュータシステムにアプリケーション層のプロトコルを用いた通信を介して送信する命令と、
前記ダウンストリームＵＲＩで識別される前記他のコンピュータシステムのモジュールからのデータ受信のための要求を前記他のコンピュータシステムにアプリケーション層のプロトコルを用いた通信を介して送信する命令と、
前記データ送信のための要求と前記データ受信のための要求とを前記コンピュータシステムと前記他のコンピュータシステムとの間の双方向データストリームにバインドする命令と
を含む、前記アプリケーション層のプロトコルを用いた通信を介して双方向データソケットをシミュレートする
コンピュータシステム。
【請求項１９】
双方向データストリーム用のトランスポートとしてアプリケーション層のプロトコルを用いた通信を使用する、１つまたは複数のプロセッサとシステムメモリとを含むコンピュータシステムにおいて、
双方向データストリーム用のトランスポートとしてのアプリケーション層のプロトコルを用いた通信の使用に参加するためのコンピュータ実行可能命令であって、
ファイアウォールを介して他のコンピュータシステムからアプリケーション層のプロトコルを用いた通信を受信する命令と、
前記アプリケーション層のプロトコルを用いた通信に応答して、前記他のコンピュータシステムにアップストリームＵＲＩとダウンストリームＵＲＩとをアプリケーション層のプロトコルを用いた通信を介して送信する命令と、
前記アップストリームＵＲＩで識別される前記コンピュータシステムのモジュールへのデータ送信のための要求を前記他のコンピュータシステムからアプリケーション層のプロトコルを用いた通信を介して受信する命令と、
前記ダウンストリームＵＲＩで識別される前記コンピュータシステムのモジュールからのデータ受信のための要求を前記他のコンピュータシステムからアプリケーション層のプロトコルを用いた通信を介して受信する命令と、
前記データ送信のための要求と前記データ受信のための要求とを、前記コンピュータシステムと前記他のコンピュータシステムとの間の双方向データストリームにバインドする命令と
を含む、前記アプリケーション層のプロトコルを用いた通信を介して双方向データソケットをシミュレートする
コンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、双方向データストリーム用トランスポートとしてのハイパーテキスト転送プロトコルの使用に関する。
【背景技術】
【０００２】
コンピュータシステムとその関連技術は、社会の多くの側面に影響を与える。実際に、コンピュータシステムの情報処理能力は、生活や仕事の様式を変えた。現在では、コンピュータシステムは、一般に、コンピュータシステムが出現する前には手動で行っていた多くのタスク（例えば、文書処理、スケジュール管理、会計など）を実行する。最近になって、コンピュータシステムは、互いに結合され、また他の電子装置に結合されて、有線および無線ネットワークを形成し、そのネットワーク経由で、コンピュータシステムおよび他の電子装置は、電子データを転送することができる。したがって、多くのコンピューティングタスクの実行は、多数の異なるコンピュータシステムおよび／または多数の異なるコンピューティング環境に分散される。
【０００３】
ファイアウォールは、保護されたネットワーク（例えば、企業内ＬＡＮ）と保護されていないネットワーク（例えば、インターネット）との間の通信を制御するために、多くのコンピューティング環境で使用されている。さまざまなレベルの複雑さを踏まえて、ファイアウォールを、保護されたネットワークおよび／または保護されていないネットワーク内で発生する種々のプロトコル、サービスなどを遮断するように構成することができる。プロトコールおよびサービスは、通常は遮断されていて、保護されたネットワーク上で悪意のある活動が生じる可能性を軽減する。
【０００４】
しかし、ＩＴ（情報技術）担当者は、ファイアウォールの設定時に、慎重過ぎるくらい慎重になる傾向にある。したがって、多くのファイアウォールは、保護されたネットワークと保護されていないネットワークとの間でファイアウォールを通過することができる通信のタイプをかなり制限するように構成される。例えば、ＩＴ担当者は、単にセキュリティを最大限に強化するためにネットワークに可能な限りの最も厳しい制限を設定する場合がある。しかし、ＩＴ担当者は、必要とされる正当な通信のタイプを適切なレベルの粒度で考慮することができない場合が多い。したがって、１つまたは複数のタイプの正当な通信がファイアウォールによって遮断されてしまうのは珍しくない。
【発明の概要】
【０００５】
本発明は、双方向データストリーム用トランスポートプロトコルとしてＨＴＴＰ（ハイパーテキスト転送プロトコル）を使用する方法、システム、コンピュータプログラム製品にまで及ぶ。一部の実施形態では、双方向データストリームの特性は、ＴＣＰ（伝送制御プロトコル）を使用して確立された双方向データストリームの特性に近い。コンピュータシステムは、ＴＣＰ通信を使用して別のコンピュータシステムとの通信を試みる。コンピュータシステムは、ファイアウォールがＴＣＰ通信を遮断したとの指示を受信する。コンピュータシステムは、ファイアウォールがＴＣＰ通信を遮断したことに応答して、ファイアウォールを介して他のコンピュータシステムにＨＴＴＰ通信を送信する。
【０００６】
他のコンピュータシステムは、ファイアウォールを介してコンピュータシステムからＨＴＴＰ通信を受信する。他のコンピュータシステムは、ＨＴＴＰ通信に応答して、アップストリームＵＲＩとダウンストリームＵＲＩとをコンピュータシステムに送信する。コンピュータシステムは、他のコンピュータシステムからアップストリームＵＲＩとダウンストリームＵＲＩとを受信する。
【０００７】
双方向データソケット（例えば、ＴＣＰソケットに近い）は、ＨＴＴＰ通信を介してシミュレートされる。コンピュータシステムは、他のコンピュータシステムに対して、アップストリームＵＲＩへのデータ送信のＨＴＴＰ要求を送信し、ダウンストリームＵＲＩからのデータ受信のＨＴＴＰ要求を送信する。他のコンピュータシステムは、コンピュータシステムから、アップストリームＵＲＩへのデータ送信のＨＴＴＰ要求を受信し、ダウンストリームＵＲＩからのデータ受信のＨＴＴＰ要求を受信する。アップストリームＵＲＩへのデータ送信のＨＴＴＰ要求とダウンストリームＵＲＩからのデータ受信のＨＴＴＰ要求とは、コンピュータシステムと他のコンピュータシステムとの間で（例えば、ＴＣＰ双方向データストリームと同様の特性を有する）双方向データストリームにまとめられてバインドされる。
【０００８】
本概要は、以下で説明する「発明を実施するための形態」の概念の抜粋を簡略化して紹介するためのものである。この概要は、特許請求の範囲に記載された主題の重要な特徴または基本的な特徴を特定するものでなく、また特許請求の範囲に記載された主題の範囲の決定を助けるために使用されるものでもない。
【０００９】
本発明のさらなる特徴および利点は、以下の説明の中で述べるが、ある程度その説明から明らかになり、または本発明を実施することで理解されるであろう。本発明の特徴および利点は、添付の特許請求の範囲で特に指摘されている機器および組み合わせを使用して実現され、得られるものである。本発明のこれらおよび他の特徴は、以下の説明と添付の請求項からより十分に明らかになるであろう、または以下で説明するように本発明を実施することで理解されるであろう。
【図面の簡単な説明】
【００１０】
上述した本発明の他の利点および特徴を理解できるように、添付図面に示されている本発明の特定の実施形態を参照しながら、簡潔に上述の本発明についてより詳細に説明する。これらの図面は本発明の典型的な実施形態のみを示したものであり、したがって、本発明の範囲を制限するものでないという条件の下に、添付図面を使用して本発明をさらに具体的に詳細に説明する。
【００１１】
【図１】双方向データストリーム用トランスポートとしてＨＴＴＰ（ハイパーテキスト転送プロトコル）を使用することを容易にするコンピュータアーキテクチャ例を示す図である。
【図２】ＨＴＴＰ通信が双方向データストリームによる通信用のトランスポートとして使用される際にデータフローの制限およびＨＴＴＰ要求の維持を容易にするコンピュータアーキテクチャ例を示す図である。
【図３】双方向データストリーム用トランスポートとしてＨＴＴＰ通信を使用する方法の一例のフロー図である。
【発明を実施するための形態】
【００１２】
本発明は、双方向データストリーム用トランスポートとしてＨＴＴＰ（ハイパーテキスト転送プロトコル）を使用する方法、システムおよびコンピュータプログラム製品にまで及ぶ。一部の実施形態では、双方向データストリームの特性は、ＴＣＰ（伝送制御プロトコル）を使用して確立された双方向データストリームの特性に近い。コンピュータシステムは、ＴＣＰ通信を使用して別のコンピュータシステムとの通信を試みる。コンピュータシステムは、ファイアウォールがＴＣＰ通信を遮断したとの指示を受信する。コンピュータシステムは、ファイアウォールがＴＣＰ通信を遮断したことに応答して、ファイアウォールを介して他のコンピュータシステムにＨＴＴＰ通信を送信する。
【００１３】
他のコンピュータシステムは、ファイアウォールを介してコンピュータシステムからＨＴＴＰ通信を受信する。他のコンピュータシステムは、ＨＴＴＰ通信に応答して、アップストリームＵＲＩとダウンストリームＵＲＩとをコンピュータシステムに送信する。コンピュータシステムは、他のコンピュータシステムからアップストリームＵＲＩとダウンストリームＵＲＩとを受信する。
【００１４】
双方向データソケット（例えば、ＴＣＰソケットに近い）を、ＨＴＴＰ通信を介してシミュレートする。コンピュータシステムは、他のコンピュータシステムに対して、アップストリームＵＲＩへのデータ送信のＨＴＴＰ要求を送信し、ダウンストリームＵＲＩからのデータ受信のＨＴＴＰ要求を送信する。他のコンピュータシステムは、コンピュータシステムから、アップストリームＵＲＩへのデータ送信のＨＴＴＰ要求を受信し、ダウンストリームＵＲＩからのデータ受信のＨＴＴＰ要求を受信する。アップストリームＵＲＩへのデータ送信のＨＴＴＰ要求とダウンストリームＵＲＩからのデータ受信のＨＴＴＰ要求とは、コンピュータシステムと他のコンピュータシステムとの間で（例えば、ＴＣＰ双方向データストリームと同様の特性を有する）双方向データストリームにまとめられてバインドされる。
【００１５】
したがって、コンピュータシステムは、アップストリームＵＲＩを使用して、ファイアウォールを介して他のコンピュータシステムに通信を送信する。同様に、他のコンピュータシステムは、アップストリームＵＲＩを使用して、ファイアウォールを介してコンピュータシステムから通信を受信する。コンピュータシステムは、ダウンストリームＵＲＩを使用して、ファイアウォールを介して他のコンピュータシステムから通信を受信する。同様に、他のコンピュータシステムは、ダウンストリームＵＲＩを使用して、ファイアウォールを介してコンピュータシステムに通信を送信する。各コンピュータシステムでのモジュールを使用して、ＨＴＴＰ要求のデータ転送速度を制御して、ＨＴＴＰ要求を連続的に維持することができる。
【００１６】
本発明の実施形態は、以下でより詳細に説明するように、コンピュータハードウェアを含む専用コンピュータまたは汎用コンピュータを備えるまたは使用することができる。本発明の範囲内の実施形態はまた、コンピュータ実行可能命令および／またはデータ構造を伝送または記憶するための物理的および他のコンピュータ可読媒体を含む。このようなコンピュータ可読媒体は、汎用または専用コンピュータシステムによってアクセス可能な任意の利用可能な媒体とすることができる。コンピュータ実行可能命令を記憶するコンピュータ可読媒体は、物理的記憶媒体である。コンピュータ実行可能命令を伝送するコンピュータ可読媒体は、伝送媒体である。したがって、例として、本発明の実施形態は、少なくとも２つの異なる種類のコンピュータ可読媒体、つまり、コンピュータ記憶媒体と伝送媒体とを備えることができるが、これらに限定されない。
【００１７】
コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶装置、またはコンピュータ実行可能命令またはデータ構造の形の所望のプログラムコード手段を記憶するのに使用でき、汎用または専用のコンピュータによってアクセス可能な任意の他の媒体を含む。
【００１８】
「ネットワーク」を、コンピュータシステムおよび／またはモジュールおよび／または他の電子装置間の電子データのトランスポートを可能にする１つまたは複数のデータリンクとして定義する。情報をネットワークまたは別の通信接続（有線、無線、または有線もしくは無線の組み合わせのいずれか）経由でコンピュータに転送または提供する場合、コンピュータは適切にその接続を伝送媒体と見なす。伝送媒体は、コンピュータ実行可能命令またはデータ構造の形の所望のプログラムコード手段を伝送するのに使用できかつ汎用または専用のコンピュータによってアクセス可能なネットワークおよび／またはデータリンクを含むことができる。また、上述の媒体の組み合わせもコンピュータ可読媒体の範囲内に含まれるべきである。
【００１９】
さらに、コンピュータ実行可能命令またはデータ構造の形のプログラムコード手段は、種々のコンピュータシステムコンポーネントに達すると、伝送媒体からコンピュータ記憶媒体に自動的に転送可能である（逆もまた同様である）。例えば、ネットワークまたはデータリンク経由で受信されたコンピュータ実行可能命令またはデータ構造を、ネットワークインタフェースモジュール（例えば、「ＮＩＣ」）内のＲＡＭ内にバッファし、最終的には、コンピュータシステムのＲＡＭおよび／またはコンピュータシステムでのより揮発性が低いコンピュータ記憶媒体に転送する。したがって、コンピュータ記憶媒体は、伝送媒体をさらに（または主として）利用するコンピュータシステムコンポーネント内に含まれる場合もあることを理解されたい。
【００２０】
コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理装置に特定の機能または特定のグループの機能を実行させる命令およびデータを含む。コンピュータ実行可能命令は、例えば、バイナリ、アセンブリ言語のような中間フォーマット命令、またはソースコードとすることができる。本主題は、構造的特徴および／または方法動作に固有の言葉で示されているが、添付の請求項で定義される主題は必ずしも上述の特徴または動作に限定されないことは理解されたい。むしろ、示されている特徴および動作は、特許請求の範囲を実施する形態の例として開示されている。
【００２１】
本明細書および後述の特許請求の範囲内では、「ＨＴＴＰ通信」は、１つまたは複数のＨＴＴＰ（ハイパーテキスト転送プロトコル）およびＨＴＴＰＳ（ハイパーテキスト転送プロトコルセキュア）を使用する通信として定義される。
【００２２】
本明細書および後述の特許請求の範囲内では、「ＨＴＴＰ要求」は、１つまたは複数のＨＴＴＰおよびＨＴＴＰＳを使用する要求として定義される。
【００２３】
本明細書および後述の特許請求の範囲内では、「ＴＣＰライク」は、実際にＴＣＰ（伝送制御プロトコル）ではなくＴＣＰに非常に似た特性を有するものとして定義される。
【００２４】
本明細書および後述の特許請求の範囲内では、「ＴＣＰ等価」は、実際にＴＣＰ（伝送制御プロトコル）ではなくＴＣＰと同等の特性を示すものとして定義される。
【００２５】
当業者は、本発明が多くのタイプのコンピュータシステム構成、例えば、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム制御可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、携帯電話、ＰＤＡ、ページャ、ルータ、切換装置などを有するネットワークコンピューティング環境で実施されてもよいことは理解されよう。本発明をさらに、ネットワークを介して（有線データリンク、無線データリンク、または有線データリンクおよび無線データリンクの組み合わせのいずれかによって）接続されたローカルおよびリモートコンピュータシステムが共にタスクを実行する分散システム環境で実施することができる。分散システム環境では、プログラムモジュールを、ローカルメモリ記憶装置およびリモートメモリ記憶装置の両方に設置することができる。
【００２６】
図１は、双方向データストリーム用トランスポートとしてのＨＴＴＰ通信またはＨＴＴＰＳ通信の使用を容易にするコンピュータアーキテクチャ１００の一例を示す図である。一部の実施形態では、双方向データストリームの特性は、ＴＣＰ（伝送制御プロトコル）を使用して確立された双方向データストリームの特性に近い。
【００２７】
図１を参照すると、コンピュータアーキテクチャ１００は、コンピュータシステム１０２、ネットワーク１０３、ファイアウォール１０１、ネットワーク１０４、およびコンピュータシステム１０６を含む。したがって、図示されているコンピュータシステムの各々は、例えば、ＬＡＮ（ローカルエリアネットワーク）、ＷＡＮ（広域ネットワーク）、さらにインターネットなどのネットワーク経由で互いに接続される（またはネットワークの一部である）。したがって、図示されているコンピュータシステムの各々、ならびに任意の他の接続されているコンピュータシステムならびにそれらのコンポーネントは、メッセージ関連データを作成して、メッセージ関連データ（例えば、ＩＰ（インターネットプロトコル）のデータグラムおよびＩＰのデータグラムを使用する他の上位層のプロトコル、例えば、ＵＤＰ（ユーザ・データグラム・プロトコル）、ＴＣＰ、ＨＴＴＰ、ＨＴＴＰＳ、ＳＭＴＰ（簡易メール転送プロトコル）など）を、ネットワーク経由で交換することができる。
【００２８】
一般に、ファイアウォール１０１は、ネットワーク１０３（例えば、企業内ＬＡＮ）とネットワーク１０４（例えば、インターネット）との間のエッジデバイスとすることができる。ファイアウォール１０１を、規則に従って特定のタイプの通信がネットワーク１０３に出入りすることを遮断するように構成することができる。例えば、ファイアウォール１０１を、ＴＣＰ通信がネットワーク１０３からネットワーク１０４に渡ることを防ぐように構成することができる。ファイアウォール１０１を、全てのＴＣＰ通信を遮断するように、またはＴＣＰ用に構成された特定のポート（例えば、ＩＡＮＡ（インターネット・アサインド・ナンバー・オーソリティ）によって管理されるポート番号公式リストに示されている）を通過するＴＣＰ通信を遮断するに、構成することができる。
【００２９】
したがって、ファイアウォール１０１は、ネットワーク１０３で発生する少なくとも一部のＴＣＰ通信がネットワーク１０４を通過することを防ぐ。例えば、ファイアウォール１０１を、コンピュータシステム１０２からコンピュータシステム１０６に送信された少なくとも一部のＴＣＰ通信を遮断するように構成する。ファイアウォール１０１は、ネットワーク１０３が望ましくないネットワーク１０４上の（特定のポート番号に対応する）特定のサービスと対話することから保護するためにＴＣＰ通信を遮断することができる。例えば、ファイアウォール１０１は、企業内ＬＡＮのコンピュータシステムがインターネット上のピアツーピアファイル共有ネットワークに参加することを防ぐことができる。
【００３０】
一方、ファイアウォール１０１を、一般に、ネットワーク１０３で生じるＨＴＴＰ通信が（例えば、トランスポートとしてＴＣＰを使用して）ネットワーク１０４を通過することを許可するように構成することができる。ＨＴＴＰ通信がファイアウォール１０１を通過することを許可することで、ネットワーク１０３上のコンピュータシステムがネットワーク１０４上のコンピュータシステムと共にさまざまな（潜在的に、より制御された）コンピューティング活動に参加することが可能になる。例えば、コンピュータシステム１０２は、ＨＴＴＰ通信を使用して、ＷＷＷ（ワールドワイドウェブ）を閲覧することができる。ＨＴＴＰ通信を許可するということは、ポート８０（ＨＴＴＰ）および／またはポート４４３（ＨＴＴＰＳ）を介する通信を許可することを含むことができる。
【００３１】
コンピュータシステム１０２および１０６は共に、ＨＴＴＰ要求を連続的に維持し、ＨＴＴＰ要求におけるデータフローを制限し、ＨＴＴＰ要求の組み合わせを双方向データストリームにバインドするためのモジュールを含むことができる。双方向データストリームは、ＴＣＰを使用して確立された双方向データストリームの特性に近いＴＣＰライクの双方向データストリームとすることができる。さらに、双方向データストリームを、ＴＣＰを用いて確立された双方向データストリームと同等の特性を有するＴＣＰ等価双方向データストリームとすることができる。
【００３２】
図３は、双方向データストリーム用トランスポートとしてＨＴＴＰ通信を使用するための例示の方法３００のフローチャートである。コンピュータアーキテクチャ１００のコンポーネントおよびデータに関して、方法３００を説明する。
【００３３】
方法３００は、ＴＣＰ通信を使用して別のコンピュータシステムとの通信を試みる動作（動作３０１）を含む。例えば、コンピュータシステム１０２は、ＴＣＰ通信１０７をコンピュータシステム１０６に送信することを試みることができる。ＴＣＰ通信１０７は、ＴＣＰを使用しかつ特定のポートに送信される電子通信を表す。特定のポートは、より上位層のプロトコル、例えば、トランスポートプロトコルとしてＴＣＰを使用する、ＦＴＰ（ファイル転送プロトコル）、ＳＭＴＰ、テルネット、ＲＴＰ（リアルタイム転送プロトコル）を表すことができる。ＨＴＴＰも、潜在的に、トランスポートとしてＴＣＰを使用することができる。したがって、ＴＣＰ通信１０７は、ＴＣＰ経由のＨＴＴＰである場合もある。その場合、ＨＴＴＰもＴＣＰ通信と見なされる可能性がある。
【００３４】
ファイアウォール１０１は、ＴＣＰ通信１０７を受信することができる。上述したように、ファイアウォール１０１を、汎用または専用のポートでＴＣＰ通信を遮断するように構成することができる。いずれにしても、ファイアウォール１０１は、ＴＣＰ通信１０７を遮断する。例えば、ファイアウォール１０１は、ピアツーピアファイル共有ネットワークへのファイル転送要求を遮断することができる。ファイアウォール１０１を、ＴＣＰ経由のＨＴＴＰ通信を遮断するがＵＤＰ経由のＨＴＴＰ通信が通過することを許可するように構成することができる。したがって、ＴＣＰ通信１０７がＴＣＰ経由のＨＴＴＰ通信である場合、このＨＴＴＰ通信を遮断することが可能である。しかし、ＴＣＰ通信を他のポートで遮断しても、ＴＣＰ経由のＨＴＴＰ通信が通過することを許可するように、ファイアウォール１０１を構成することができる。したがって、ＴＣＰ経由のＨＴＴＰ通信またはＵＤＰ経由のＨＴＴＰ通信は共にファイアウォール１０１を通過することができる。
【００３５】
ＴＣＰ通信１０７の遮断に応答して、ファイアウォール１０１は、遮断指示１０８をコンピュータシステム１０２に送り返すことができる。方法３００は、ファイアウォールがＴＣＰ通信を遮断したとの指示にアクセスする動作（動作３０２）を含む。例えば、コンピュータシステム１０１は、遮断指示１０８を受信することができる。
【００３６】
方法３００は、ファイアウォールがＴＣＰ通信を遮断したことに応答して、ファイアウォールを介してＨＴＴＰ通信を他のコンピュータシステムに送信する動作（動作３０３）を含む。例えば、コンピュータシステム１０２は、ＨＴＴＰ通信１０９をコンピュータシステム１０６に送信することができる。ファイアウォール１０１は、ＨＴＴＰ通信１０９を受信することができる。ファイアウォール１０１は、（ＵＤＰ経由またはＴＣＰ経由の）ＨＴＴＰ通信１０９がネットワーク１０４を通過することを許可することができる。
【００３７】
方法３００は、ファイアウォールを介して、発信元のコンピュータシステムからＨＴＴＰ通信を受信する動作（動作３０４）を含む。例えば、コンピュータシステム１０６は、コンピュータシステム１０２からＨＴＴＰ通信１０９を受信することができる。
【００３８】
方法３００は、ＨＴＴＰ通信に応答して、アップストリームＵＲＩおよびダウンストリームＵＲＩを発信元のコンピュータシステムに送信する動作（動作３０５）を含む。例えば、コンピュータシステム１０６は、ＨＴＴＰ通信１０９に応答して、アップストリームＵＲＩ１１１およびダウンストリームＵＲＩ１１２をコンピュータシステム１０２に送信することができる。ＵＲＩ１１１およびＵＲＩ１１２は、ＨＴＴＰ要求を連続して維持しかつＨＴＴＰ要求の組み合わせを双方向データストリームにバインドするように構成されたコンピュータシステム１０６におけるモジュールを識別することができる。一部の実施形態では、双方向データストリームは、ＴＣＰライクまたはＴＣＰ等価な双方向データストリームである。
【００３９】
ファイアウォール１０１は、ＵＲＩ１１１およびＵＲＩ１１２を受信することができる。ＵＲＩ１１１、１１２は、ＨＴＴＰ通信１０９への応答を表すので、ファイアウォール１０１は、ＵＲＩ１１１、１１２がネットワーク１０３を通過することを許可する。
【００４０】
方法３００は、ＨＴＴＰ通信に応答して、受信側のコンピュータシステムからアップストリームＵＲＩおよびダウンストリームＵＲＩを受信する動作（動作３０６）を含む。例えば、コンピュータ１０２は、コンピュータシステム１０６から、アップストリームＵＲＩ１１１およびダウンストリームＵＲＩ１１２を受信することができる。ＨＴＴＰ要求を連続的に維持し、かつＨＴＴＰ要求の組み合わせを双方向データストリームにバインドするように構成されたコンピュータシステム１０２におけるモジュールは、ＵＲＩ１１１、１１２を使用してコンピュータ１０６における対応モジュールと通信することができる。
【００４１】
方法３００は、ＨＴＴＰ通信を介して双方向データソケットをシミュレートする動作（動作３０７）を含む。例えば、コンピュータシステム１０２および１０６は、ＨＴＴＰ要求１１６およびＨＴＴＰ要求１１７の通信を介して、双方向データソケットをシミュレートすることができる。一部の実施形態では、双方向データソケットは、ＴＣＰライクの双方向データソケットまたはＴＣＰ等価の双方向データソケットである。
【００４２】
ＨＴＴＰを介して双方向データソケットをシミュレートすることは、アップストリームＵＲＩへのデータ送信のＨＴＴＰ要求を送信する動作（動作３０８）を含む。例えば、コンピュータシステム１０２は、ＨＴＴＰ要求１１６、例えば、ＨＴＴＰ  ＰＯＳＴ、ＰＵＴまたは他の同等の要求をＵＲＩ１１１に送信することができる。ＨＴＴＰを介して双方向データソケットをシミュレートすることは、アップストリームＵＲＩへのデータ送信のＨＴＴＰ要求を受信する動作（動作３０９）を含む。例えば、コンピュータシステム１０６は、アップストリームＵＲＩ１１１に送信されたＨＴＴＰ要求１１６を受信することができる。コンピュータシステム１０２は、ＨＴＴＰ要求１１６を介して少量のデータを断続的に送信することで、ＨＴＴＰ要求１１６を連続的に維持することができる。
【００４３】
ＨＴＴＰを介して双方向データソケットをシミュレートすることは、ダウンストリームＵＲＩからのデータ受信のＨＴＴＰ要求を送信する動作（動作３１０）を含む。例えば、コンピュータシステム１０２は、ＨＴＴＰ要求１１７、例えば、ＨＴＴＰ  ＧＥＴまたは他の同等の要求をダウンストリームＵＲＩ１１２に送信することができる。ＨＴＴＰを介して双方向データソケットをシミュレートすることは、ダウンストリームＵＲＩからのデータ受信のＨＴＴＰ要求を受信する動作（動作３１１）を含む。例えば、コンピュータシステム１０６は、ダウンストリームＵＲＩ１１２に送信されたＨＴＴＰ要求１１７を受信することができる。コンピュータシステム１０２は、ＨＴＴＰ要求１１７を介して少量のデータを断続的に受信することで、ＨＴＴＰ要求１１７を連続的に維持することができる。
【００４４】
ＨＴＴＰ通信を介して双方向データソケットをシミュレートすることは、データ送信のＨＴＴＰ要求とデータ受信のＨＴＴＰ要求とをコンピュータシステムと他のコンピュータシステムとの間の双方向データストリームにまとめてバインドする動作（動作３１２）を含む。例えば、コンピュータシステム１０２および１０６は、ＨＴＴＰ要求１１６とＨＴＴＰ要求１１７とを双方向データストリーム１１８にまとめてバインドすることができる。双方向データストリーム１１８の特性は、ＴＣＰを用いて確立された双方向データストリームの特性に近づけることができる。例えば、双方向データストリーム１１８は、ＴＣＰライクの双方向データストリームまたはＴＣＰ等価の双方向データストリームとすることができる。
【００４５】
その後、双方向データストリーム１１８を使用して、ＴＣＰ通信１０７をファイアウォール１０１を介して送信することができる。ＴＣＰ通信１０７は、ＨＴＴＰの上層で進んでいるので、ファイアウォール１０１はＴＣＰ通信１０７をＨＴＴＰ通信と見なし、ＴＣＰ通信を遮断しない。コンピュータシステム１０２におけるモジュールとコンピュータシステム１０６におけるモジュールとを同時に使用して、双方向データストリーム１１８経由の適切なＴＣＰプロトコル特性を提供することができる。一部のプロトコル特性を、ＨＴＴＰ要求を維持してＨＴＴＰ要求を介するデータフローを制限することで得ることができる。
【００４６】
上述したように、コンピュータシステム１０２および１０６は共に、ＨＴＴＰ要求を連続的に維持し、データフローを制限し、およびＨＴＴＰ要求の組み合わせを双方向ＴＣＰストリームにバインドするためのモジュールを含むことができる。図２は、ＨＴＴＰ通信をＴＣＰ通信用トランスポートとして使用する際に、データフローの制限およびＨＴＴＰ要求の維持を容易にする例示のコンピュータアーキテクチャ２００を示す図である。
【００４７】
図示されているように、ＨＴＴＰ  ＰＯＳＴ２３１およびＨＴＴＰ  ＧＥＴ２３２を使用して、コンピュータシステム２０１とコンピュータシステム２０２との間の二重複合ストリーム２２１を確立する。ＨＴＴＰ  ＰＯＳＴ２３１を使用して、コンピュータシステム２０２での読み出しのためにコンピュータシステム２０１からのデータを書き込む。一方、ＨＴＴＰ  ＧＥＴ２３２を使用して、コンピュータシステム２０１での読み出しのためにコンピュータシステム２０２からのデータを書き込む。
【００４８】
ＨＴＴＰ  ＰＯＳＴ２３１を介して、ＨＴＴＰデータを、コンピュータシステム２０１からコンピュータシステム２０２に書き込む際、コンピュータシステム２０１は、送信メッセージ２１１（例えば、フレーム）にバイトのブロックを書き込む。次に、送信メッセージ２１１を、フレーミング出力ポンプ(framing output pump)２０３に転送する。ＨＴＴＰは下層のＴＣＰフロー制御を隠しているので、ＨＴＴＰの抽象化層経由でフロー制御を行う必要がある。フレーミング出力ポンプ２０３は、ＨＴＴＰデータのデータ転送速度を制御して、送信メッセージ２１１を制限パイプストリーム(throttled pipe stream)２１２に変換する。
【００４９】
一部の実施形態では、フレーミング出力ポンプ２０３を、アップストリームからフレームへの複数の書き込み動作が所定時間内、例えば、数ミリ秒内で生じる場合にその書き込み動作をマップするように構成する。したがって、フレーミング出力ポンプ２０３は、複数の送信メッセージを受け入れて、その後、制限パイプストリーム２１２に渡されるフレームを形成することができる。制限パイプストリーム２１２により、アップストリーム書き込みから分離される送信ＨＴＴＰストリームに、予め組み立てられたこれらのフレームを、ある転送速度で配信することができる。しかし、ＨＴＴＰの下層のＴＣＰフロー制御が、ネットワークにデータを押し出すポンプへのバックプレッシャを開始すると、制限パイプストリーム２１２は、それ以上のフレームの受け入れを遮断することができる。混雑が緩和されると、データをより速い転送速度で制限パイプストリーム２１２から押し出し、制限パイプストリーム２１２はそれ以上のフレーミングポンプを解除する。
【００５０】
バッファポンプを、フレーミング出力ポンプ２０３とフレーミング入力ポンプ２０４との間に配置することができる。バッファポンプを、バイトのブロックを１つのストリームから次のストリームに移すように構成する。例えば、バッファポンプは、制限パイプストリーム２１２から（例えば、ネットワーク経由）のデータをウェブ要求ストリーム２１３にフラッシュすることができる。ウェブ要求ストリーム２１３を、フレーミング入力ポンプ２０４に転送する。フレーミング入力ポンプ２０４は、コンピュータシステム２０２に配信するために着信ウェブ要求ストリーム２１３をパイプストリーム２１４に変換する。
【００５１】
同様に、ＨＴＴＰ  ＧＥＴ２３２を介して、ＨＴＴＰデータをコンピュータシステム２０２からコンピュータシステム２０１に書き込む際、コンピュータシステム２０２は送信メッセージ２１９（例えば、フレーム）にバイトのブロックを書き込む。次に、送信メッセージ２１９を、フレーミング出力ポンプ２０６に転送する。ＨＴＴＰは下層のＴＣＰフロー制御を隠しているので、ＨＴＴＰの抽象化層経由でフロー制御を行う必要がある。フレーミング出力ポンプ２０６は、ＨＴＴＰデータのデータ転送速度を制御して、送信メッセージ２１９を制限パイプストリーム２１８に変換する。
【００５２】
バッファポンプを、フレーミング出力ポンプ２０６とフレーミング入力ポンプ２０７との間に配置することができる。バッファポンプを、バイトのブロックを１つのストリームから次のストリームに移すように構成する。例えば、バッファポンプは、制限パイプストリーム２１８から（例えば、ネットワーク経由）のデータをウェブ応答ストリーム２１７にフラッシュすることができる。ウェブ応答ストリーム２１７を、フレーミング入力ポンプ２０７に転送する。フレーミング入力ポンプ２０７は、コンピュータシステム２０１に配信するために着信ウェブ応答ストリーム２１７をパイプストリーム２１６に変換する。
【００５３】
フレーミング出力ポンプ２０３およびフレーミング入力ポンプ２０４の１つまたは複数は、所定時間の間に他のデータを検出しない場合、ＨＴＴＰ  ＰＯＳＴ２３１を介して、少量のデータを送信するように構成することができる。所定時間は、ＨＴＴＰ要求のタイムアウト未満に設定することができる。そのため、少量のデータの送信を使用して、コンピュータシステム２０１からコンピュータシステム２０２へのデータ転送をシミュレートすることができる。したがって、コンピュータシステム２０１が実際にＨＴＴＰ  ＰＯＳＴ２３１にデータの書き込みをしていない場合でさえ、ＨＴＴＰ  ＰＯＳＴ２３１は仲介者に対してアクティブに見える。したがって、仲介者は、リソースの割り当てを継続し、ＨＴＴＰ  ＰＯＳＴ２３１を維持する可能性がある。
【００５４】
同様に、フレーミング出力ポンプ２０６およびフレーミング入力ポンプ２０７の１つまたは複数は、所定時間の間に他のデータを検出しない場合、ＨＴＴＰ  ＧＥＴ２３２を介して、少量のデータを送信するように構成することができる。所定時間は、ＨＴＴＰ要求のタイムアウト未満に設定することができる。そのため、少量のデータの送信を使用して、コンピュータシステム２０１からコンピュータシステム２０２へのデータ転送をシミュレートすることができる。したがって、コンピュータシステム２０２が実際にＨＴＴＰ  ＧＥＴ２３２にデータの書き込みをしていない場合でさえ、ＨＴＴＰ  ＧＥＴ２３２は仲介者に対してはアクティブに見える。したがって、仲介者は、リソースの割り当てを継続し、ＨＴＴＰ  ＧＥＴ２３２を維持する可能性がある。
【００５５】
本発明の実施形態は、別の方法で遮断されたＴＣＰ通信をファイアウォールに通過させることを容易にする。ファイアウォールを正当なＴＣＰ通信を遮断するように構成しても、本発明の実施形態を使用すれば正当なＴＣＰ通信がファイアウォールを通過することができる。例えば、サービスコールの技術者は、別の方法で企業内ファイアウォールによって遮断されるサービスを使用して、リモートウェブサイトのドキュメンテーションにアクセスすることができる。
【００５６】
本発明を、本発明の意図または本質的特徴から逸脱せずに、他の特定の形態で具現化することができる。説明されている実施形態は、全ての点で、単なる一例であって、これに制限されないと考えるべきである。したがって、本発明の範囲は、前述の説明でなく添付の特許請求の範囲によって示される。特許請求の範囲の等価な意味および範囲に含まれる全ての変更は、特許請求の範囲の範囲に含まれるものとする。
【図１】
0005754572.tif 000002
【図２】
0005754572.tif 000003
【図３】
0005754572.tif 000004