説明

双方向データストリーム用トランスポートとしてのハイパーテキスト転送プロトコルの使用

本発明は、双方向データストリーム用トランスポートプロトコルとしてHTTP(ハイパーテキスト転送プロトコル)を使用する方法、システムおよびコンピュータプログラム製品にまで及ぶ。本発明の実施形態は、ファイアウォールを介して、別の方法で遮断されたTCP通信をファイアウォールに通過させることを容易にする。ファイアウォールが正当なTCP通信を遮断するように構成されていても、本発明の実施形態を使用すれば、正当なTCP通信はファイアウォールを通過することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、双方向データストリーム用トランスポートとしてのハイパーテキスト転送プロトコルの使用に関する。
【背景技術】
【0002】
コンピュータシステムとその関連技術は、社会の多くの側面に影響を与える。実際に、コンピュータシステムの情報処理能力は、生活や仕事の様式を変えた。現在では、コンピュータシステムは、一般に、コンピュータシステムが出現する前には手動で行っていた多くのタスク(例えば、文書処理、スケジュール管理、会計など)を実行する。最近になって、コンピュータシステムは、互いに結合され、また他の電子装置に結合されて、有線および無線ネットワークを形成し、そのネットワーク経由で、コンピュータシステムおよび他の電子装置は、電子データを転送することができる。したがって、多くのコンピューティングタスクの実行は、多数の異なるコンピュータシステムおよび/または多数の異なるコンピューティング環境に分散される。
【0003】
ファイアウォールは、保護されたネットワーク(例えば、企業内LAN)と保護されていないネットワーク(例えば、インターネット)との間の通信を制御するために、多くのコンピューティング環境で使用されている。さまざまなレベルの複雑さを踏まえて、ファイアウォールを、保護されたネットワークおよび/または保護されていないネットワーク内で発生する種々のプロトコル、サービスなどを遮断するように構成することができる。プロトコールおよびサービスは、通常は遮断されていて、保護されたネットワーク上で悪意のある活動が生じる可能性を軽減する。
【0004】
しかし、IT(情報技術)担当者は、ファイアウォールの設定時に、慎重過ぎるくらい慎重になる傾向にある。したがって、多くのファイアウォールは、保護されたネットワークと保護されていないネットワークとの間でファイアウォールを通過することができる通信のタイプをかなり制限するように構成される。例えば、IT担当者は、単にセキュリティを最大限に強化するためにネットワークに可能な限りの最も厳しい制限を設定する場合がある。しかし、IT担当者は、必要とされる正当な通信のタイプを適切なレベルの粒度で考慮することができない場合が多い。したがって、1つまたは複数のタイプの正当な通信がファイアウォールによって遮断されてしまうのは珍しくない。
【発明の概要】
【0005】
本発明は、双方向データストリーム用トランスポートプロトコルとしてHTTP(ハイパーテキスト転送プロトコル)を使用する方法、システム、コンピュータプログラム製品にまで及ぶ。一部の実施形態では、双方向データストリームの特性は、TCP(伝送制御プロトコル)を使用して確立された双方向データストリームの特性に近い。コンピュータシステムは、TCP通信を使用して別のコンピュータシステムとの通信を試みる。コンピュータシステムは、ファイアウォールがTCP通信を遮断したとの指示を受信する。コンピュータシステムは、ファイアウォールがTCP通信を遮断したことに応答して、ファイアウォールを介して他のコンピュータシステムにHTTP通信を送信する。
【0006】
他のコンピュータシステムは、ファイアウォールを介してコンピュータシステムからHTTP通信を受信する。他のコンピュータシステムは、HTTP通信に応答して、アップストリームURIとダウンストリームURIとをコンピュータシステムに送信する。コンピュータシステムは、他のコンピュータシステムからアップストリームURIとダウンストリームURIとを受信する。
【0007】
双方向データソケット(例えば、TCPソケットに近い)は、HTTP通信を介してシミュレートされる。コンピュータシステムは、他のコンピュータシステムに対して、アップストリームURIへのデータ送信のHTTP要求を送信し、ダウンストリームURIからのデータ受信のHTTP要求を送信する。他のコンピュータシステムは、コンピュータシステムから、アップストリームURIへのデータ送信のHTTP要求を受信し、ダウンストリームURIからのデータ受信のHTTP要求を受信する。アップストリームURIへのデータ送信のHTTP要求とダウンストリームURIからのデータ受信のHTTP要求とは、コンピュータシステムと他のコンピュータシステムとの間で(例えば、TCP双方向データストリームと同様の特性を有する)双方向データストリームにまとめられてバインドされる。
【0008】
本概要は、以下で説明する「発明を実施するための形態」の概念の抜粋を簡略化して紹介するためのものである。この概要は、特許請求の範囲に記載された主題の重要な特徴または基本的な特徴を特定するものでなく、また特許請求の範囲に記載された主題の範囲の決定を助けるために使用されるものでもない。
【0009】
本発明のさらなる特徴および利点は、以下の説明の中で述べるが、ある程度その説明から明らかになり、または本発明を実施することで理解されるであろう。本発明の特徴および利点は、添付の特許請求の範囲で特に指摘されている機器および組み合わせを使用して実現され、得られるものである。本発明のこれらおよび他の特徴は、以下の説明と添付の請求項からより十分に明らかになるであろう、または以下で説明するように本発明を実施することで理解されるであろう。
【図面の簡単な説明】
【0010】
上述した本発明の他の利点および特徴を理解できるように、添付図面に示されている本発明の特定の実施形態を参照しながら、簡潔に上述の本発明についてより詳細に説明する。これらの図面は本発明の典型的な実施形態のみを示したものであり、したがって、本発明の範囲を制限するものでないという条件の下に、添付図面を使用して本発明をさらに具体的に詳細に説明する。
【0011】
【図1】双方向データストリーム用トランスポートとしてHTTP(ハイパーテキスト転送プロトコル)を使用することを容易にするコンピュータアーキテクチャ例を示す図である。
【図2】HTTP通信が双方向データストリームによる通信用のトランスポートとして使用される際にデータフローの制限およびHTTP要求の維持を容易にするコンピュータアーキテクチャ例を示す図である。
【図3】双方向データストリーム用トランスポートとしてHTTP通信を使用する方法の一例のフロー図である。
【発明を実施するための形態】
【0012】
本発明は、双方向データストリーム用トランスポートとしてHTTP(ハイパーテキスト転送プロトコル)を使用する方法、システムおよびコンピュータプログラム製品にまで及ぶ。一部の実施形態では、双方向データストリームの特性は、TCP(伝送制御プロトコル)を使用して確立された双方向データストリームの特性に近い。コンピュータシステムは、TCP通信を使用して別のコンピュータシステムとの通信を試みる。コンピュータシステムは、ファイアウォールがTCP通信を遮断したとの指示を受信する。コンピュータシステムは、ファイアウォールがTCP通信を遮断したことに応答して、ファイアウォールを介して他のコンピュータシステムにHTTP通信を送信する。
【0013】
他のコンピュータシステムは、ファイアウォールを介してコンピュータシステムからHTTP通信を受信する。他のコンピュータシステムは、HTTP通信に応答して、アップストリームURIとダウンストリームURIとをコンピュータシステムに送信する。コンピュータシステムは、他のコンピュータシステムからアップストリームURIとダウンストリームURIとを受信する。
【0014】
双方向データソケット(例えば、TCPソケットに近い)を、HTTP通信を介してシミュレートする。コンピュータシステムは、他のコンピュータシステムに対して、アップストリームURIへのデータ送信のHTTP要求を送信し、ダウンストリームURIからのデータ受信のHTTP要求を送信する。他のコンピュータシステムは、コンピュータシステムから、アップストリームURIへのデータ送信のHTTP要求を受信し、ダウンストリームURIからのデータ受信のHTTP要求を受信する。アップストリームURIへのデータ送信のHTTP要求とダウンストリームURIからのデータ受信のHTTP要求とは、コンピュータシステムと他のコンピュータシステムとの間で(例えば、TCP双方向データストリームと同様の特性を有する)双方向データストリームにまとめられてバインドされる。
【0015】
したがって、コンピュータシステムは、アップストリームURIを使用して、ファイアウォールを介して他のコンピュータシステムに通信を送信する。同様に、他のコンピュータシステムは、アップストリームURIを使用して、ファイアウォールを介してコンピュータシステムから通信を受信する。コンピュータシステムは、ダウンストリームURIを使用して、ファイアウォールを介して他のコンピュータシステムから通信を受信する。同様に、他のコンピュータシステムは、ダウンストリームURIを使用して、ファイアウォールを介してコンピュータシステムに通信を送信する。各コンピュータシステムでのモジュールを使用して、HTTP要求のデータ転送速度を制御して、HTTP要求を連続的に維持することができる。
【0016】
本発明の実施形態は、以下でより詳細に説明するように、コンピュータハードウェアを含む専用コンピュータまたは汎用コンピュータを備えるまたは使用することができる。本発明の範囲内の実施形態はまた、コンピュータ実行可能命令および/またはデータ構造を伝送または記憶するための物理的および他のコンピュータ可読媒体を含む。このようなコンピュータ可読媒体は、汎用または専用コンピュータシステムによってアクセス可能な任意の利用可能な媒体とすることができる。コンピュータ実行可能命令を記憶するコンピュータ可読媒体は、物理的記憶媒体である。コンピュータ実行可能命令を伝送するコンピュータ可読媒体は、伝送媒体である。したがって、例として、本発明の実施形態は、少なくとも2つの異なる種類のコンピュータ可読媒体、つまり、コンピュータ記憶媒体と伝送媒体とを備えることができるが、これらに限定されない。
【0017】
コンピュータ記憶媒体は、RAM、ROM、EEPROM、CD−ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶装置、またはコンピュータ実行可能命令またはデータ構造の形の所望のプログラムコード手段を記憶するのに使用でき、汎用または専用のコンピュータによってアクセス可能な任意の他の媒体を含む。
【0018】
「ネットワーク」を、コンピュータシステムおよび/またはモジュールおよび/または他の電子装置間の電子データのトランスポートを可能にする1つまたは複数のデータリンクとして定義する。情報をネットワークまたは別の通信接続(有線、無線、または有線もしくは無線の組み合わせのいずれか)経由でコンピュータに転送または提供する場合、コンピュータは適切にその接続を伝送媒体と見なす。伝送媒体は、コンピュータ実行可能命令またはデータ構造の形の所望のプログラムコード手段を伝送するのに使用できかつ汎用または専用のコンピュータによってアクセス可能なネットワークおよび/またはデータリンクを含むことができる。また、上述の媒体の組み合わせもコンピュータ可読媒体の範囲内に含まれるべきである。
【0019】
さらに、コンピュータ実行可能命令またはデータ構造の形のプログラムコード手段は、種々のコンピュータシステムコンポーネントに達すると、伝送媒体からコンピュータ記憶媒体に自動的に転送可能である(逆もまた同様である)。例えば、ネットワークまたはデータリンク経由で受信されたコンピュータ実行可能命令またはデータ構造を、ネットワークインタフェースモジュール(例えば、「NIC」)内のRAM内にバッファし、最終的には、コンピュータシステムのRAMおよび/またはコンピュータシステムでのより揮発性が低いコンピュータ記憶媒体に転送する。したがって、コンピュータ記憶媒体は、伝送媒体をさらに(または主として)利用するコンピュータシステムコンポーネント内に含まれる場合もあることを理解されたい。
【0020】
コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理装置に特定の機能または特定のグループの機能を実行させる命令およびデータを含む。コンピュータ実行可能命令は、例えば、バイナリ、アセンブリ言語のような中間フォーマット命令、またはソースコードとすることができる。本主題は、構造的特徴および/または方法動作に固有の言葉で示されているが、添付の請求項で定義される主題は必ずしも上述の特徴または動作に限定されないことは理解されたい。むしろ、示されている特徴および動作は、特許請求の範囲を実施する形態の例として開示されている。
【0021】
本明細書および後述の特許請求の範囲内では、「HTTP通信」は、1つまたは複数のHTTP(ハイパーテキスト転送プロトコル)およびHTTPS(ハイパーテキスト転送プロトコルセキュア)を使用する通信として定義される。
【0022】
本明細書および後述の特許請求の範囲内では、「HTTP要求」は、1つまたは複数のHTTPおよびHTTPSを使用する要求として定義される。
【0023】
本明細書および後述の特許請求の範囲内では、「TCPライク」は、実際にTCP(伝送制御プロトコル)ではなくTCPに非常に似た特性を有するものとして定義される。
【0024】
本明細書および後述の特許請求の範囲内では、「TCP等価」は、実際にTCP(伝送制御プロトコル)ではなくTCPと同等の特性を示すものとして定義される。
【0025】
当業者は、本発明が多くのタイプのコンピュータシステム構成、例えば、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム制御可能な家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、携帯電話、PDA、ページャ、ルータ、切換装置などを有するネットワークコンピューティング環境で実施されてもよいことは理解されよう。本発明をさらに、ネットワークを介して(有線データリンク、無線データリンク、または有線データリンクおよび無線データリンクの組み合わせのいずれかによって)接続されたローカルおよびリモートコンピュータシステムが共にタスクを実行する分散システム環境で実施することができる。分散システム環境では、プログラムモジュールを、ローカルメモリ記憶装置およびリモートメモリ記憶装置の両方に設置することができる。
【0026】
図1は、双方向データストリーム用トランスポートとしてのHTTP通信またはHTTPS通信の使用を容易にするコンピュータアーキテクチャ100の一例を示す図である。一部の実施形態では、双方向データストリームの特性は、TCP(伝送制御プロトコル)を使用して確立された双方向データストリームの特性に近い。
【0027】
図1を参照すると、コンピュータアーキテクチャ100は、コンピュータシステム102、ネットワーク103、ファイアウォール101、ネットワーク104、およびコンピュータシステム106を含む。したがって、図示されているコンピュータシステムの各々は、例えば、LAN(ローカルエリアネットワーク)、WAN(広域ネットワーク)、さらにインターネットなどのネットワーク経由で互いに接続される(またはネットワークの一部である)。したがって、図示されているコンピュータシステムの各々、ならびに任意の他の接続されているコンピュータシステムならびにそれらのコンポーネントは、メッセージ関連データを作成して、メッセージ関連データ(例えば、IP(インターネットプロトコル)のデータグラムおよびIPのデータグラムを使用する他の上位層のプロトコル、例えば、UDP(ユーザ・データグラム・プロトコル)、TCP、HTTP、HTTPS、SMTP(簡易メール転送プロトコル)など)を、ネットワーク経由で交換することができる。
【0028】
一般に、ファイアウォール101は、ネットワーク103(例えば、企業内LAN)とネットワーク104(例えば、インターネット)との間のエッジデバイスとすることができる。ファイアウォール101を、規則に従って特定のタイプの通信がネットワーク103に出入りすることを遮断するように構成することができる。例えば、ファイアウォール101を、TCP通信がネットワーク103からネットワーク104に渡ることを防ぐように構成することができる。ファイアウォール101を、全てのTCP通信を遮断するように、またはTCP用に構成された特定のポート(例えば、IANA(インターネット・アサインド・ナンバー・オーソリティ)によって管理されるポート番号公式リストに示されている)を通過するTCP通信を遮断するに、構成することができる。
【0029】
したがって、ファイアウォール101は、ネットワーク103で発生する少なくとも一部のTCP通信がネットワーク104を通過することを防ぐ。例えば、ファイアウォール101を、コンピュータシステム102からコンピュータシステム106に送信された少なくとも一部のTCP通信を遮断するように構成する。ファイアウォール101は、ネットワーク103が望ましくないネットワーク104上の(特定のポート番号に対応する)特定のサービスと対話することから保護するためにTCP通信を遮断することができる。例えば、ファイアウォール101は、企業内LANのコンピュータシステムがインターネット上のピアツーピアファイル共有ネットワークに参加することを防ぐことができる。
【0030】
一方、ファイアウォール101を、一般に、ネットワーク103で生じるHTTP通信が(例えば、トランスポートとしてTCPを使用して)ネットワーク104を通過することを許可するように構成することができる。HTTP通信がファイアウォール101を通過することを許可することで、ネットワーク103上のコンピュータシステムがネットワーク104上のコンピュータシステムと共にさまざまな(潜在的に、より制御された)コンピューティング活動に参加することが可能になる。例えば、コンピュータシステム102は、HTTP通信を使用して、WWW(ワールドワイドウェブ)を閲覧することができる。HTTP通信を許可するということは、ポート80(HTTP)および/またはポート443(HTTPS)を介する通信を許可することを含むことができる。
【0031】
コンピュータシステム102および106は共に、HTTP要求を連続的に維持し、HTTP要求におけるデータフローを制限し、HTTP要求の組み合わせを双方向データストリームにバインドするためのモジュールを含むことができる。双方向データストリームは、TCPを使用して確立された双方向データストリームの特性に近いTCPライクの双方向データストリームとすることができる。さらに、双方向データストリームを、TCPを用いて確立された双方向データストリームと同等の特性を有するTCP等価双方向データストリームとすることができる。
【0032】
図3は、双方向データストリーム用トランスポートとしてHTTP通信を使用するための例示の方法300のフローチャートである。コンピュータアーキテクチャ100のコンポーネントおよびデータに関して、方法300を説明する。
【0033】
方法300は、TCP通信を使用して別のコンピュータシステムとの通信を試みる動作(動作301)を含む。例えば、コンピュータシステム102は、TCP通信107をコンピュータシステム106に送信することを試みることができる。TCP通信107は、TCPを使用しかつ特定のポートに送信される電子通信を表す。特定のポートは、より上位層のプロトコル、例えば、トランスポートプロトコルとしてTCPを使用する、FTP(ファイル転送プロトコル)、SMTP、テルネット、RTP(リアルタイム転送プロトコル)を表すことができる。HTTPも、潜在的に、トランスポートとしてTCPを使用することができる。したがって、TCP通信107は、TCP経由のHTTPである場合もある。その場合、HTTPもTCP通信と見なされる可能性がある。
【0034】
ファイアウォール101は、TCP通信107を受信することができる。上述したように、ファイアウォール101を、汎用または専用のポートでTCP通信を遮断するように構成することができる。いずれにしても、ファイアウォール101は、TCP通信107を遮断する。例えば、ファイアウォール101は、ピアツーピアファイル共有ネットワークへのファイル転送要求を遮断することができる。ファイアウォール101を、TCP経由のHTTP通信を遮断するがUDP経由のHTTP通信が通過することを許可するように構成することができる。したがって、TCP通信107がTCP経由のHTTP通信である場合、このHTTP通信を遮断することが可能である。しかし、TCP通信を他のポートで遮断しても、TCP経由のHTTP通信が通過することを許可するように、ファイアウォール101を構成することができる。したがって、TCP経由のHTTP通信またはUDP経由のHTTP通信は共にファイアウォール101を通過することができる。
【0035】
TCP通信107の遮断に応答して、ファイアウォール101は、遮断指示108をコンピュータシステム102に送り返すことができる。方法300は、ファイアウォールがTCP通信を遮断したとの指示にアクセスする動作(動作302)を含む。例えば、コンピュータシステム101は、遮断指示108を受信することができる。
【0036】
方法300は、ファイアウォールがTCP通信を遮断したことに応答して、ファイアウォールを介してHTTP通信を他のコンピュータシステムに送信する動作(動作303)を含む。例えば、コンピュータシステム102は、HTTP通信109をコンピュータシステム106に送信することができる。ファイアウォール101は、HTTP通信109を受信することができる。ファイアウォール101は、(UDP経由またはTCP経由の)HTTP通信109がネットワーク104を通過することを許可することができる。
【0037】
方法300は、ファイアウォールを介して、発信元のコンピュータシステムからHTTP通信を受信する動作(動作304)を含む。例えば、コンピュータシステム106は、コンピュータシステム102からHTTP通信109を受信することができる。
【0038】
方法300は、HTTP通信に応答して、アップストリームURIおよびダウンストリームURIを発信元のコンピュータシステムに送信する動作(動作305)を含む。例えば、コンピュータシステム106は、HTTP通信109に応答して、アップストリームURI111およびダウンストリームURI112をコンピュータシステム102に送信することができる。URI111およびURI112は、HTTP要求を連続して維持しかつHTTP要求の組み合わせを双方向データストリームにバインドするように構成されたコンピュータシステム106におけるモジュールを識別することができる。一部の実施形態では、双方向データストリームは、TCPライクまたはTCP等価な双方向データストリームである。
【0039】
ファイアウォール101は、URI111およびURI112を受信することができる。URI111、112は、HTTP通信109への応答を表すので、ファイアウォール101は、URI111、112がネットワーク103を通過することを許可する。
【0040】
方法300は、HTTP通信に応答して、受信側のコンピュータシステムからアップストリームURIおよびダウンストリームURIを受信する動作(動作306)を含む。例えば、コンピュータ102は、コンピュータシステム106から、アップストリームURI111およびダウンストリームURI112を受信することができる。HTTP要求を連続的に維持し、かつHTTP要求の組み合わせを双方向データストリームにバインドするように構成されたコンピュータシステム102におけるモジュールは、URI111、112を使用してコンピュータ106における対応モジュールと通信することができる。
【0041】
方法300は、HTTP通信を介して双方向データソケットをシミュレートする動作(動作307)を含む。例えば、コンピュータシステム102および106は、HTTP要求116およびHTTP要求117の通信を介して、双方向データソケットをシミュレートすることができる。一部の実施形態では、双方向データソケットは、TCPライクの双方向データソケットまたはTCP等価の双方向データソケットである。
【0042】
HTTPを介して双方向データソケットをシミュレートすることは、アップストリームURIへのデータ送信のHTTP要求を送信する動作(動作308)を含む。例えば、コンピュータシステム102は、HTTP要求116、例えば、HTTP POST、PUTまたは他の同等の要求をURI111に送信することができる。HTTPを介して双方向データソケットをシミュレートすることは、アップストリームURIへのデータ送信のHTTP要求を受信する動作(動作309)を含む。例えば、コンピュータシステム106は、アップストリームURI111に送信されたHTTP要求116を受信することができる。コンピュータシステム102は、HTTP要求116を介して少量のデータを断続的に送信することで、HTTP要求116を連続的に維持することができる。
【0043】
HTTPを介して双方向データソケットをシミュレートすることは、ダウンストリームURIからのデータ受信のHTTP要求を送信する動作(動作310)を含む。例えば、コンピュータシステム102は、HTTP要求117、例えば、HTTP GETまたは他の同等の要求をダウンストリームURI112に送信することができる。HTTPを介して双方向データソケットをシミュレートすることは、ダウンストリームURIからのデータ受信のHTTP要求を受信する動作(動作311)を含む。例えば、コンピュータシステム106は、ダウンストリームURI112に送信されたHTTP要求117を受信することができる。コンピュータシステム102は、HTTP要求117を介して少量のデータを断続的に受信することで、HTTP要求117を連続的に維持することができる。
【0044】
HTTP通信を介して双方向データソケットをシミュレートすることは、データ送信のHTTP要求とデータ受信のHTTP要求とをコンピュータシステムと他のコンピュータシステムとの間の双方向データストリームにまとめてバインドする動作(動作312)を含む。例えば、コンピュータシステム102および106は、HTTP要求116とHTTP要求117とを双方向データストリーム118にまとめてバインドすることができる。双方向データストリーム118の特性は、TCPを用いて確立された双方向データストリームの特性に近づけることができる。例えば、双方向データストリーム118は、TCPライクの双方向データストリームまたはTCP等価の双方向データストリームとすることができる。
【0045】
その後、双方向データストリーム118を使用して、TCP通信107をファイアウォール101を介して送信することができる。TCP通信107は、HTTPの上層で進んでいるので、ファイアウォール101はTCP通信107をHTTP通信と見なし、TCP通信を遮断しない。コンピュータシステム102におけるモジュールとコンピュータシステム106におけるモジュールとを同時に使用して、双方向データストリーム118経由の適切なTCPプロトコル特性を提供することができる。一部のプロトコル特性を、HTTP要求を維持してHTTP要求を介するデータフローを制限することで得ることができる。
【0046】
上述したように、コンピュータシステム102および106は共に、HTTP要求を連続的に維持し、データフローを制限し、およびHTTP要求の組み合わせを双方向TCPストリームにバインドするためのモジュールを含むことができる。図2は、HTTP通信をTCP通信用トランスポートとして使用する際に、データフローの制限およびHTTP要求の維持を容易にする例示のコンピュータアーキテクチャ200を示す図である。
【0047】
図示されているように、HTTP POST231およびHTTP GET232を使用して、コンピュータシステム201とコンピュータシステム202との間の二重複合ストリーム221を確立する。HTTP POST231を使用して、コンピュータシステム202での読み出しのためにコンピュータシステム201からのデータを書き込む。一方、HTTP GET232を使用して、コンピュータシステム201での読み出しのためにコンピュータシステム202からのデータを書き込む。
【0048】
HTTP POST231を介して、HTTPデータを、コンピュータシステム201からコンピュータシステム202に書き込む際、コンピュータシステム201は、送信メッセージ211(例えば、フレーム)にバイトのブロックを書き込む。次に、送信メッセージ211を、フレーミング出力ポンプ(framing output pump)203に転送する。HTTPは下層のTCPフロー制御を隠しているので、HTTPの抽象化層経由でフロー制御を行う必要がある。フレーミング出力ポンプ203は、HTTPデータのデータ転送速度を制御して、送信メッセージ211を制限パイプストリーム(throttled pipe stream)212に変換する。
【0049】
一部の実施形態では、フレーミング出力ポンプ203を、アップストリームからフレームへの複数の書き込み動作が所定時間内、例えば、数ミリ秒内で生じる場合にその書き込み動作をマップするように構成する。したがって、フレーミング出力ポンプ203は、複数の送信メッセージを受け入れて、その後、制限パイプストリーム212に渡されるフレームを形成することができる。制限パイプストリーム212により、アップストリーム書き込みから分離される送信HTTPストリームに、予め組み立てられたこれらのフレームを、ある転送速度で配信することができる。しかし、HTTPの下層のTCPフロー制御が、ネットワークにデータを押し出すポンプへのバックプレッシャを開始すると、制限パイプストリーム212は、それ以上のフレームの受け入れを遮断することができる。混雑が緩和されると、データをより速い転送速度で制限パイプストリーム212から押し出し、制限パイプストリーム212はそれ以上のフレーミングポンプを解除する。
【0050】
バッファポンプを、フレーミング出力ポンプ203とフレーミング入力ポンプ204との間に配置することができる。バッファポンプを、バイトのブロックを1つのストリームから次のストリームに移すように構成する。例えば、バッファポンプは、制限パイプストリーム212から(例えば、ネットワーク経由)のデータをウェブ要求ストリーム213にフラッシュすることができる。ウェブ要求ストリーム213を、フレーミング入力ポンプ204に転送する。フレーミング入力ポンプ204は、コンピュータシステム202に配信するために着信ウェブ要求ストリーム213をパイプストリーム214に変換する。
【0051】
同様に、HTTP GET232を介して、HTTPデータをコンピュータシステム202からコンピュータシステム201に書き込む際、コンピュータシステム202は送信メッセージ219(例えば、フレーム)にバイトのブロックを書き込む。次に、送信メッセージ219を、フレーミング出力ポンプ206に転送する。HTTPは下層のTCPフロー制御を隠しているので、HTTPの抽象化層経由でフロー制御を行う必要がある。フレーミング出力ポンプ206は、HTTPデータのデータ転送速度を制御して、送信メッセージ219を制限パイプストリーム218に変換する。
【0052】
バッファポンプを、フレーミング出力ポンプ206とフレーミング入力ポンプ207との間に配置することができる。バッファポンプを、バイトのブロックを1つのストリームから次のストリームに移すように構成する。例えば、バッファポンプは、制限パイプストリーム218から(例えば、ネットワーク経由)のデータをウェブ応答ストリーム217にフラッシュすることができる。ウェブ応答ストリーム217を、フレーミング入力ポンプ207に転送する。フレーミング入力ポンプ207は、コンピュータシステム201に配信するために着信ウェブ応答ストリーム217をパイプストリーム216に変換する。
【0053】
フレーミング出力ポンプ203およびフレーミング入力ポンプ204の1つまたは複数は、所定時間の間に他のデータを検出しない場合、HTTP POST231を介して、少量のデータを送信するように構成することができる。所定時間は、HTTP要求のタイムアウト未満に設定することができる。そのため、少量のデータの送信を使用して、コンピュータシステム201からコンピュータシステム202へのデータ転送をシミュレートすることができる。したがって、コンピュータシステム201が実際にHTTP POST231にデータの書き込みをしていない場合でさえ、HTTP POST231は仲介者に対してアクティブに見える。したがって、仲介者は、リソースの割り当てを継続し、HTTP POST231を維持する可能性がある。
【0054】
同様に、フレーミング出力ポンプ206およびフレーミング入力ポンプ207の1つまたは複数は、所定時間の間に他のデータを検出しない場合、HTTP GET232を介して、少量のデータを送信するように構成することができる。所定時間は、HTTP要求のタイムアウト未満に設定することができる。そのため、少量のデータの送信を使用して、コンピュータシステム201からコンピュータシステム202へのデータ転送をシミュレートすることができる。したがって、コンピュータシステム202が実際にHTTP GET232にデータの書き込みをしていない場合でさえ、HTTP GET232は仲介者に対してはアクティブに見える。したがって、仲介者は、リソースの割り当てを継続し、HTTP GET232を維持する可能性がある。
【0055】
本発明の実施形態は、別の方法で遮断されたTCP通信をファイアウォールに通過させることを容易にする。ファイアウォールを正当なTCP通信を遮断するように構成しても、本発明の実施形態を使用すれば正当なTCP通信がファイアウォールを通過することができる。例えば、サービスコールの技術者は、別の方法で企業内ファイアウォールによって遮断されるサービスを使用して、リモートウェブサイトのドキュメンテーションにアクセスすることができる。
【0056】
本発明を、本発明の意図または本質的特徴から逸脱せずに、他の特定の形態で具現化することができる。説明されている実施形態は、全ての点で、単なる一例であって、これに制限されないと考えるべきである。したがって、本発明の範囲は、前述の説明でなく添付の特許請求の範囲によって示される。特許請求の範囲の等価な意味および範囲に含まれる全ての変更は、特許請求の範囲の範囲に含まれるものとする。

【特許請求の範囲】
【請求項1】
1つまたは複数のプロセッサとシステムメモリとを含むコンピュータシステム(102)において、双方向データストリーム(118)用のトランスポートとしてHTTP通信を使用する方法であって、前記方法は、
TCP通信(107)を使用して他のコンピュータシステム(106)との通信を試みる動作と、
ファイアウォール(101)が前記TCP通信を遮断したとの指示(108)にアクセスする動作と、
前記ファイアウォール(101)が前記TCP通信(107)を遮断したことに応答して、前記ファイアウォール(101)を介して前記他のコンピュータ(106)にHTTP通信(109)を送信する動作と、
前記HTTP通信(109)に応答して、前記他のコンピュータシステム(106)からアップストリームURI(111)とダウンストリームURI(112)とを受信する動作と、
前記アップストリームURI(111)へのデータ送信のためのHTTP要求(116)を送信する動作と、
前記ダウンストリームURI(112)からのデータ受信のためのHTTP要求(117)を送信する動作と、
前記データ送信のためのHTTP要求(116)と前記データ受信のためのHTTP要求(117)とを前記コンピュータシステム(102)と前記他のコンピュータシステム(106)との間の双方向データストリーム(118)にバインドする動作と
を含む、前記HTTP通信を介して双方向データソケットをシミュレートする動作と
を備えたことを特徴とする方法。
【請求項2】
前記HTTP通信を介して双方向データソケットをシミュレートする動作は、TCPソケットに近い特性を有する双方向データソケットをシミュレートする動作を含むことを特徴とする請求項1に記載の方法。
【請求項3】
前記アップストリームURIへのデータ送信のためのHTTP要求を送信する動作は、HTTP PUTおよびHTTP POSTのうちの1つを送信する動作を含むことを特徴とする請求項1に記載の方法。
【請求項4】
前記ダウンストリームURIからのデータ受信のためのHTTP要求を送信する動作は、HTTP GETを送信する動作を含むことを特徴とする請求項1に記載の方法。
【請求項5】
前記データ送信のためのHTTP要求と前記データ受信のためのHTTP要求とを双方向データストリームにバインドする動作は、仲介者に対しては前記コンピュータシステムから送信されるHTTPデータに見える少量のデータを所定時間送信することにより、前記データ送信のためのHTTP要求を連続的に維持する動作を含むことを特徴とする請求項1に記載の方法。
【請求項6】
前記データ送信のためのHTTP要求と前記データ受信のためのHTTP要求とを双方向データストリームにバインドする動作は、仲介者に対しては前記コンピュータシステムにおいて受信されるHTTPデータに見える少量のデータを所定時間受信することにより、前記データ受信のHTTP要求を連続的に維持する動作を含むことを特徴とする請求項1に記載の方法。
【請求項7】
前記データ送信のためのHTTP要求と前記データ受信のためのHTTP要求とを双方向データストリームにバインドする動作は、前記コンピュータシステムから前記他のコンピュータシステムに送信するデータのデータ転送速度を調整する動作と、前記他のコンピュータシステムから前記コンピュータシステムに送信するデータのデータ転送速度を調整する動作とを含むことを特徴とする請求項1に記載の方法。
【請求項8】
前記データ送信のためのHTTP要求と前記データ受信のためのHTTP要求とを双方向データストリームにバインドする動作は、前記データ送信のためのHTTP要求と前記データ受信のためのHTTP要求とを、TCP(伝送制御プロトコル)を用いて確立された双方向データストリームの特性に近い特性を有する双方向データストリームにバインドする動作を含むことを特徴とする請求項1に記載の方法。
【請求項9】
1つまたは複数のプロセッサとシステムメモリとを含むコンピュータシステム(106)において、双方向データストリーム(118)用のトランスポートとしてHTTP通信を使用する方法であって、
ファイアウォール(101)を介して他のコンピュータシステム(102)からTCP通信(109)を受信する動作と、
前記HTTP通信(109)に応答して、前記他のコンピュータシステム(102)にアップストリームURI(111)とダウンストリームURI(112)とを送信する動作と、
前記他のコンピュータシステム(102)に対する前記アップストリームURI(111)へのデータ送信のためのHTTP要求(116)を前記他のコンピュータシステム(102)から受信する動作と、
前記他のコンピュータシステム(102)に対する前記ダウンストリームURI(112)からのデータ受信のためのHTTP要求(117)を前記他のコンピュータシステム(102)から受信する動作と、
前記データ送信のためのHTTP要求(116)と前記データ受信のためのHTTP要求(117)とを、前記コンピュータシステム(106)と前記他のコンピュータシステム(102)との間の双方向データストリーム(118)にバインドする動作と
を含む、前記HTTP通信を介して双方向データソケットをシミュレートする動作と
を備えたことを特徴とする方法。
【請求項10】
前記アップストリームURIへのデータ送信のためのHTTP要求を受信する動作は、HTTP PUTおよびHTTP POSTのうちの1つを受信する動作を含むことを特徴とする請求項9に記載の方法。
【請求項11】
前記ダウンストリームURIからのデータ受信のためのHTTP要求を受信する動作は、HTTP GETを受信する動作を含むことを特徴とする請求項9に記載の方法。
【請求項12】
前記データ送信のためのHTTP要求と前記データ受信のためのHTTP要求とを双方向データストリームにバインドする動作は、仲介者には前記他のコンピュータシステムから送信されるHTTPデータに見える少量のデータを所定時間送信することにより前記データ送信のためのHTTP要求を連続的に維持する動作を含むことを特徴とする請求項9に記載の方法。
【請求項13】
前記データ送信のためのHTTP要求と前記データ受信のためのHTTP要求とを双方向データストリームにバインドする動作は、仲介者には前記他のコンピュータシステムにおいて受信されるHTTPデータに見える少量のデータを所定時間受信することで前記データ受信のためのHTTP要求を連続的に維持する動作を含むことを特徴とする請求項9に記載の方法。
【請求項14】
前記データ送信のためのHTTP要求と前記データ受信のためのHTTP要求とを双方向データストリームにバインドする動作は、前記データ送信のためのHTTP要求と前記データ受信のためのHTTP要求とを、TCP(伝送制御プロトコル)を使用して確立された双方向データストリームの特性に近い特性を有する双方向データストリームにバインドする動作を含むことを特徴とする請求項9に記載の方法。
【請求項15】
発信元のコンピュータシステム(102)と、受信側のコンピュータシステム(106)と、ファイヤウォール(101)とを備えたコンピュータネットワークシステムであって、前記ファイアウォール(101)は、TCP通信に関連付けられた複数の特定のポートにおいてTCP通信を遮断するように構成され、前記特定のポートの各々は、前記特定のポートにおいてTCP通信を受信するように構成されたサービスに対応し、
前記発信元のコンピュータシステム(102)は、
システムメモリと、
1つまたは複数のプロセッサと、
双方向データストリーム(118)用のトランスポートとしてのHTTP通信の使用に参加するためのコンピュータ実行可能命令であって、
前記ファイアウォール(101)がTCP通信を遮断する複数の特定のポートに含まれるポートにおいて、TCP通信を受信するサービスに向けられたTCP通信(107)を使用して前記受信側のコンピュータシステムとの通信を試みる命令と、
前記ファイアウォールが前記TCP通信(107)を遮断したとの指示(108)にアクセスする命令と、
前記ファイアウォール(101)が前記TCP通信(107)を遮断したことに応答して、前記ファイアウォール(101)を介して前記受信側のコンピュータシステム(106)にHTTP通信(109)を送信する命令と、
前記HTTP通信(109)に応答して、前記受信側のコンピュータシステム(106)からアップストリームURI(111)とダウンストリームURI(112)とを受信する命令と、
前記アップストリームURI(111)へのデータ送信のためのHTTP要求を送信する命令と、
前記ダウンストリームURI(112)からのデータ受信のためのHTTP要求を送信する命令と
を含むコンピュータ実行可能命令が記憶された1つまたは複数のコンピュータ可読媒体とを備え、
前記受信側のコンピュータシステム(106)は、
システムメモリと、
1つまたは複数のプロセッサと、
双方向データストリーム(118)用のトランスポートとしてのHTTP通信の使用に参加するためのコンピュータ実行可能命令であって、
ファイアウォール(101)を介して、他のコンピュータシステム(102)からHTTP通信(109)を受信する命令と、
前記HTTP通信(109)に応答して、前記他のコンピュータシステム(102)にアップストリームURI(111)とダウンストリームURI(112)とを送信する命令と、
前記他のコンピュータシステムの前記アップストリームURI(111)に対するデータ送信のためのHTTP要求(116)を前記他のコンピュータシステムから受信する命令と、
前記他のコンピュータシステムの前記ダウンストリームURI(112)からのデータ受信のためのHTTP要求(117)を前記他のコンピュータシステムから受信する命令と
を含むコンピュータ実行可能命令が記憶された1つまたは複数のコンピュータ可読媒体とを備え、
さらに、前記発信元のコンピュータシステム(102)のコンピュータ可読命令と前記受信側のコンピュータシステム(106)のコンピュータ可読命令とが同時に使用されて前記データ送信のためのHTTP要求(116)と前記データ受信のためのHTTP要求(117)とを前記発信元のコンピュータシステム(102)と前記受信側のコンピュータシステム(106)との間の双方向データストリーム(118)にバインドし、前記双方向データストリーム(118)は、TCPを使用して確立された双方向データストリームに近い特性を有し、
その後、前記発信元のコンピュータシステム(102)は、前記ファイアウォール(101)を介して、前記双方向データストリーム(118)経由で前記受信側のコンピュータシステム(106)に前記TCP通信(107)を送信すること
を特徴とするコンピュータネットワークシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate


【公表番号】特表2012−530999(P2012−530999A)
【公表日】平成24年12月6日(2012.12.6)
【国際特許分類】
【出願番号】特願2012−517667(P2012−517667)
【出願日】平成22年6月22日(2010.6.22)
【国際出願番号】PCT/US2010/039555
【国際公開番号】WO2011/005547
【国際公開日】平成23年1月13日(2011.1.13)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】