IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

<>
  • 特表-プロキシレスプロトコル 図1
  • 特表-プロキシレスプロトコル 図2A
  • 特表-プロキシレスプロトコル 図2B
  • 特表-プロキシレスプロトコル 図3
  • 特表-プロキシレスプロトコル 図4
  • 特表-プロキシレスプロトコル 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-18
(54)【発明の名称】プロキシレスプロトコル
(51)【国際特許分類】
   H04L 69/163 20220101AFI20240311BHJP
   H04L 67/561 20220101ALI20240311BHJP
【FI】
H04L69/163
H04L67/561
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023560353
(86)(22)【出願日】2022-03-22
(85)【翻訳文提出日】2023-11-01
(86)【国際出願番号】 US2022021444
(87)【国際公開番号】W WO2022212133
(87)【国際公開日】2022-10-06
(31)【優先権主張番号】17/219,705
(32)【優先日】2021-03-31
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ベン-シモン,ソニー
(72)【発明者】
【氏名】ゴレン,ウリ
(72)【発明者】
【氏名】ベルコビッチ,ダニエル
(72)【発明者】
【氏名】バラバン,イッタイ
(72)【発明者】
【氏名】クマール,アロック
(72)【発明者】
【氏名】パテル,パルビーン
(72)【発明者】
【氏名】エットリ,ピエール-エマニュエル
(72)【発明者】
【氏名】グプタ,アンシュマン
(72)【発明者】
【氏名】ブラウン,イダン
(72)【発明者】
【氏名】ランパート,ノーム
(57)【要約】
方法(400)は、クライアント(102)から、宛先サーバ(110)にデータをルーティングするためにクライアントとプロキシとの間にTCP接続を確立することを要求する第1のTCP接続要求(210)を傍受することを含む。要求は、クライアント情報(104)および第1のシーケンス番号(212)を含む。本方法はまた、宛先サーバに、クライアントと宛先サーバとの間にTCP接続を確立するための第2のTCP接続要求を送信することを含む。第2の要求は、第1のシーケンス番号未満の第2のシーケンス番号を含む。本方法はまた、宛先サーバから、第2のTCP接続要求の肯定応答を示す肯定応答メッセージ(220)を傍受することと、宛先サーバに、プロキシプロトコルヘッダメッセージ(230)をクライアント情報とともに送信することとを含む。本方法はまた、新たな肯定応答メッセージを生成し、クライアントに送信することを含む。
【特許請求の範囲】
【請求項1】
コンピュータにより実現される方法(400)であって、データ処理ハードウェアによって実行されると前記データ処理ハードウェア(144)に動作を実行させ、前記動作は、
クライアント(102)から、データをプロキシサーバ(142)を介して宛先サーバ(110)にルーティングするために前記クライアント(102)と前記プロキシサーバ(142)との間に第1の伝送制御プロトコル(TCP)接続を確立することを要求する第1のTCP接続要求(210)を傍受することを含み、前記第1のTCP接続要求(210)は、クライアント情報(104)および第1のシーケンス番号(212)を含み、前記方法はさらに、
前記宛先サーバ(110)に、前記クライアント(102)と前記宛先サーバ(110)との間に第2のTCP接続を確立することを要求する第2のTCP接続要求(210)を送信することを含み、前記第2のTCP接続要求(210)は、前記第1のシーケンス番号(212)未満の第2のシーケンス番号(212)を含み、前記方法はさらに、
前記宛先サーバ(110)から、前記第2のTCP接続要求(210)の肯定応答を示す肯定応答メッセージ(220)を傍受することと、
前記宛先サーバ(110)に、前記クライアント情報(104)を含むプロキシプロトコルヘッダメッセージ(230)を含むデータパケット(250)を送信することと、
前記第1のTCP接続要求(210)を使用して新たな肯定応答メッセージ(220)を生成することと、
前記クライアント(102)に前記新たな肯定応答メッセージ(220)を送信することとを含む、方法。
【請求項2】
前記動作は、前記クライアント(102)からの前記TCP接続要求(210)を傍受する前に、前記プロキシサーバ(142)と通信する前記クライアント(102)の意図を示すクライアント設定データを取得することをさらに含む、請求項1に記載の方法(400)。
【請求項3】
前記クライアント設定データは、前記宛先サーバ(110)を識別する宛先識別子を含み、
前記動作は、前記クライアント(102)からの前記TCP接続要求(210)を傍受した後、前記クライアント(102)が前記宛先識別子を使用して前記プロキシサーバ(142)と通信することを意図していると判断することをさらに含む、請求項2に記載の方法(400)。
【請求項4】
前記宛先識別子はインターネットプロトコル(IP)アドレスを含む、請求項3に記載の方法(400)。
【請求項5】
前記クライアント(102)からの前記第1のTCP接続要求(210)を傍受することは、SYNフラグが前記第1のTCP接続要求(210)内にセットされている、と判断することを含む、請求項1~4のいずれか1項に記載の方法(400)。
【請求項6】
前記第1のシーケンス番号(212)と前記第2のシーケンス番号(212)との間の差は、前記プロキシプロトコルヘッダメッセージ(230)のサイズに等しい、請求項1~5のいずれか1項に記載の方法(400)。
【請求項7】
前記肯定応答メッセージ(220)は、接続設定情報を含み、
前記新たな肯定応答メッセージ(220)は、前記肯定応答メッセージ(220)と同じ接続設定情報を含む、請求項1~6のいずれか1項に記載の方法(400)。
【請求項8】
前記新たな肯定応答メッセージ(220)を前記クライアント(102)に送信した後、前記クライアント(102)および前記宛先サーバ(110)は、前記データ処理ハードウェア(144)による修正なしに直接通信する、請求項1~7のいずれか1項に記載の方法(400)。
【請求項9】
前記クライアント(102)は、前記宛先サーバ(110)から遠隔にあり、
前記第1のTCP接続要求(210)は、前記クライアント(102)において傍受される、請求項1~8のいずれか1項に記載の方法(400)。
【請求項10】
前記クライアント(102)は、前記宛先サーバ(110)から遠隔にあり、
前記第1のTCP接続要求(210)は、前記宛先サーバ(110)において傍受される、請求項1~8のいずれか1項に記載の方法(400)。
【請求項11】
システム(100)であって、
データ処理ハードウェア(144)と、
前記データ処理ハードウェア(146)と通信するメモリハードウェア(146)とを備え、前記メモリハードウェア(146)は、前記データ処理ハードウェア(144)上で実行されると前記データ処理ハードウェア(144)に動作を実行させる命令を記憶し、前記動作は、
クライアント(102)から、データをプロキシサーバ(142)を介して宛先サーバ(110)にルーティングするために前記クライアント(102)と前記プロキシサーバ(142)との間に第1の伝送制御プロトコル(TCP)接続を確立することを要求する第1のTCP接続要求(210)を傍受することを含み、前記第1のTCP接続要求(210)は、クライアント情報(104)および第1のシーケンス番号(212)を含み、前記動作はさらに、
前記宛先サーバ(110)に、前記クライアント(102)と前記宛先サーバ(110)との間に第2のTCP接続を確立することを要求する第2のTCP接続要求(210)を送信することを含み、前記第2のTCP接続要求(210)は、前記第1のシーケンス番号(212)未満の第2のシーケンス番号(212)を含み、前記動作はさらに、
前記宛先サーバ(110)から、前記第2のTCP接続要求(210)の肯定応答を示す肯定応答メッセージ(220)を傍受することと、
前記宛先サーバ(110)に、前記クライアント(102)を含むプロキシプロトコルヘッダメッセージ(230)を含むデータパケット(250)を送信することと、
前記第1のTCP接続要求(210)を使用して新たな肯定応答メッセージ(220)を生成することと、
前記クライアント(102)に前記新たな肯定応答メッセージ(220)を送信することとを含む、システム(100)。
【請求項12】
前記動作は、前記クライアント(102)からの前記TCP接続要求(210)を傍受する前に、前記プロキシサーバ(142)と通信する前記クライアント(102)の意図を示すクライアント設定データを取得することをさらに含む、請求項11に記載のシステム(100)。
【請求項13】
前記クライアント設定データは、前記宛先サーバ(110)を識別する宛先識別子を含み、
前記動作は、前記クライアント(102)からの前記TCP接続要求(210)を傍受した後、前記クライアント(102)が前記宛先識別子を使用して前記プロキシサーバ(142)と通信することを意図していると判断することをさらに含む、請求項12に記載のシステム(100)。
【請求項14】
前記宛先識別子はインターネットプロトコル(IP)アドレスを含む、請求項13に記載のシステム(100)。
【請求項15】
前記クライアント(102)からの前記第1のTCP接続要求(210)を傍受することは、SYNフラグが前記第1のTCP接続要求(210)内にセットされている、と判断することを含む、請求項11~14のいずれか1項に記載のシステム(100)。
【請求項16】
前記第1のシーケンス番号(212)と前記第2のシーケンス番号(212)との間の差は、前記プロキシプロトコルヘッダメッセージ(230)のサイズに等しい、請求項11~15のいずれか1項に記載のシステム(100)。
【請求項17】
前記肯定応答メッセージ(220)は、接続設定情報を含み、
前記新たな肯定応答メッセージ(220)は、前記肯定応答メッセージ(220)と同じ接続設定情報を含む、請求項11~16のいずれか1項に記載のシステム(100)。
【請求項18】
前記新たな肯定応答メッセージ(220)を前記クライアント(102)に送信した後、前記クライアント(102)と前記宛先サーバ(110)とは直接通信する、請求項11~17のいずれか1項に記載のシステム(100)。
【請求項19】
前記クライアント(102)は、前記宛先サーバ(110)から遠隔にあり、
前記第1のTCP接続要求(210)は、前記クライアント(102)において傍受される、請求項11~18のいずれか1項に記載のシステム(100)。
【請求項20】
前記クライアント(102)は、前記宛先サーバ(110)から遠隔にあり、
前記第1のTCP接続要求(210)は、前記宛先サーバ(110)において傍受される、請求項11~18のいずれか1項に記載のシステム(100)。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、プロキシレスプロキシプロトコルなどのためのプロキシレスプロトコルに関する。
【背景技術】
【0002】
背景
多層ネットワークサービングアーキテクチャでは、クライアント-サーバ通信は、しばしば、1つ以上のプロキシを通過する。プロキシは、クライアントと1つ以上の宛先との間の仲介またはゲートウェイとして働くサーバアプリケーションまたはアプライアンスである。すなわち、クライアントは、リソースにアクセスするために宛先デバイスに直接接続する代わりに、プロキシの挙動を管理するルールに基づいて要求を評価するプロキシに、要求を向ける。プロキシは仲介として働くので、宛先デバイスは、クライアントに関する情報へのアクセスを失う場合がある。
【発明の概要】
【0003】
概要
本開示の一態様は、データ処理ハードウェアによって実行されるとデータ処理ハードウェアに動作を実行させるプロキシレスプロトコルのための、コンピュータにより実現される方法を提供する。動作は、クライアントから、データをプロキシサーバを介して宛先サーバにルーティングするためにクライアントとプロキシサーバとの間に第1の伝送制御プロトコル(TCP)接続を確立することを要求する第1のTCP接続要求を傍受することを含む。第1のTCP接続要求は、クライアント情報および第1のシーケンス番号を含む。本方法はまた、宛先サーバに、クライアントと宛先サーバとの間に第2のTCP接続を確立することを要求する第2のTCP接続要求を送信することを含む。第2のTCP接続要求は、第1のシーケンス番号未満である第2のシーケンス番号を含む。本方法は、宛先サーバから、第2のTCP接続要求の肯定応答を示す肯定応答メッセージを傍受することと、宛先サーバに、クライアント情報を含むプロキシプロトコルヘッダメッセージを含むデータパケットを送信することとを含む。本方法はまた、第1のTCP接続要求を使用して新たな肯定応答メッセージを生成することと、新たな肯定応答メッセージをクライアントに送信することとを含む。
【0004】
本開示の実現例は、以下の任意選択の特徴のうちの1つ以上を含んでもよい。いくつかの実現例では、動作は、クライアントからのTCP接続要求を傍受する前に、プロキシサーバと通信するクライアントの意図を示すクライアント設定データを取得することをさらに含む。いくつかの例では、クライアント設定データは、宛先サーバを識別する宛先識別子を含む。これらの例では、動作は、クライアントからのTCP接続要求を傍受した後、クライアントが宛先識別子を使用してプロキシサーバと通信することを意図していると判断することをさらに含む。
【0005】
任意選択で、宛先識別子はインターネットプロトコル(IP)アドレスである。クライアントからの第1のTCP接続要求を傍受することは、SYNフラグが第1のTCP接続要求内にセットされていると判断することを含んでもよい。いくつかの実現例では、第1のシーケンス番号と第2のシーケンス番号との間の差は、プロキシプロトコルヘッダメッセージのサイズに等しい。
【0006】
肯定応答メッセージは、接続設定情報を含んでもよい。新たな肯定応答メッセージは、肯定応答メッセージと同じ接続設定情報を含んでもよい。いくつかの例では、新たな肯定応答メッセージをクライアントに送信した後、クライアントと宛先サーバとは直接通信する。クライアントは宛先サーバから遠隔にあってもよく、第1のTCP接続要求はクライアントにおいて傍受されてもよい。クライアントは宛先サーバから遠隔にあってもよく、第1のTCP接続要求は宛先サーバで傍受されてもよい。
【0007】
本開示の別の態様は、プロキシレスプロトコルのためのシステムを提供する。システムは、データ処理ハードウェアと、データ処理ハードウェアと通信するメモリハードウェアとを含む。メモリハードウェアは、データ処理ハードウェア上で実行されるとデータ処理ハードウェアに動作を実行させる命令を記憶する。動作は、クライアントから、データをプロキシサーバを介して宛先サーバにルーティングするためにクライアントとプロキシサーバとの間に第1の伝送制御プロトコル(TCP)接続を確立することを要求する第1のTCP接続要求を傍受することを含む。第1のTCP接続要求は、クライアント情報および第1のシーケンス番号を含む。本方法はまた、宛先サーバに、クライアントと宛先サーバとの間に第2のTCP接続を確立することを要求する第2のTCP接続要求を送信することを含む。第2のTCP接続要求は、第1のシーケンス番号未満である第2のシーケンス番号を含む。本方法は、宛先サーバから、第2のTCP接続要求の肯定応答を示す肯定応答メッセージを傍受することと、宛先サーバに、クライアント情報を含むプロキシプロトコルヘッダメッセージを含むデータパケットを送信することとを含む。本方法はまた、第1のTCP接続要求を使用して新たな肯定応答メッセージを生成することと、新たな肯定応答メッセージをクライアントに送信することとを含む。
【0008】
この態様は、以下の任意選択の特徴のうちの1つ以上を含んでもよい。いくつかの実現例では、動作は、クライアントからのTCP接続要求を傍受する前に、プロキシサーバと通信するクライアントの意図を示すクライアント設定データを取得することをさらに含む。いくつかの例では、クライアント設定データは、宛先サーバを識別する宛先識別子を含む。これらの例では、動作は、クライアントからのTCP接続要求を傍受した後、クライアントが宛先識別子を使用してプロキシサーバと通信することを意図していると判断することをさらに含む。
【0009】
任意選択で、宛先識別子はインターネットプロトコル(IP)アドレスである。クライアントからの第1のTCP接続要求を傍受することは、SYNフラグが第1のTCP接続要求内にセットされていると判断することを含んでもよい。いくつかの実現例では、第1のシーケンス番号と第2のシーケンス番号との間の差は、プロキシプロトコルヘッダメッセージのサイズに等しい。
【0010】
肯定応答メッセージは、接続設定情報を含んでもよい。新たな肯定応答メッセージは、肯定応答メッセージと同じ接続設定情報を含んでもよい。いくつかの例では、新たな肯定応答メッセージをクライアントに送信した後、クライアントと宛先サーバとは直接通信する。クライアントは宛先サーバから遠隔にあってもよく、第1のTCP接続要求はクライアントにおいて傍受されてもよい。クライアントは宛先サーバから遠隔にあってもよく、第1のTCP接続要求は宛先サーバで傍受されてもよい。
【0011】
本開示の1つ以上の実現例の詳細を、添付の図面および以下の説明に記載する。他の局面、特徴、および利点は、説明および図面、ならびに特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0012】
図1】プロキシレスプロトコルを提供するための例示的なシステムの概略図である。
図2A図1のシステムの例示的なシーケンス図である。
図2B図1のシステムの別の例示的なシーケンス図である。
図3図1のシステムの例示的な構成要素の概略図である。
図4】プロキシレスプロトコルを提供する方法のための動作の例示的な構成のフローチャートである。
図5】本明細書で説明されるシステムおよび方法を実現するために使用され得る例示的なコンピューティングデバイスの概略図である。
【発明を実施するための形態】
【0013】
様々な図面における同様の参照符号は、同様の要素を示す。
詳細な説明
多層ネットワークサービングアーキテクチャでは、クライアント-サーバ通信は、1つ以上のプロキシを頻繁に通過する。いくつかのプロキシ(例えば、ロードバランサ)は、伝送制御プロトコル(TCP)接続を終了し、新たなセッションを使用してクライアントから宛先デバイス(例えば、サーバ)にデータを代理することになる。したがって、宛先サーバによって処理されるTCPセッションは、接続を開始する元のクライアントの識別子ではなく、プロキシのインターネットプロトコル(IP)アドレスおよびその他の識別子を含む。このような情報の損失は、多くの場合、サーバおよび他の宛先が、課金、監査、アクセス制御リスト等のクライアント固有のポリシーを適用することを困難にする。いくつかのプロトコル(例えば、プロキシプロトコル)は、クライアント側識別情報のサーバへの転送を可能にすることによって、これに対処しようと試みる。たとえば、いくつかのプロトコルは、プロキシに、クライアント側情報を、プロキシがサーバ(またはネクストホッププロキシ)と確立する新たなTCP接続のペイロードにおいて、先頭に付加させる。TCP接続のためのこのクライアント側情報は、通常、当初5タプルであるが、使用例ごとに拡張されてもよい。このプリアンブル(ヘッダとも呼ばれる)は、人間が読み取り可能なフォーマットまたはバイナリフォーマットで符号化することができる。
【0014】
現代のソフトウェア定義ネットワーク(SDN)では、ネットワークプロキシは制御プレーン構成になり、トラフィックがルーティングされる物理ホップはない。これは、単一障害点を除去するという大きな利点を有し、弾力性、性能、および拡張性を提供する。他方で、物理的なプロキシの欠如は、(例えば、プロキシプロトコルを介して)クライアント側情報を必要とする第三者ソリューションをサポートすることについて大きな課題をもたらす。これらの第三者ソリューションは、トラフィックが、存在しないデータプレーン上のプロキシによって明示的に修正されることを期待する。多くのクラウド顧客は、既存の作業負荷を異なる展開にわたって「リフトおよびシフト」する(すなわち、再設定を必要とすることなく、作業負荷を異なる展開に遷移させる)能力を必要とする。元の展開がプロキシに依存する場合、これは、ネットワークアーキテクチャに対する大きな修正なしにシフトを実行するのに技術的ブロッカーとなり得るか、またはSDNの全能力を利用しない不具合のあるソリューションを提供し得る。
【0015】
本明細書の実現例は、SDNの利点を犠牲にすることなく、事前設定された作業負荷のためにプロキシの存在をエミュレートするプロキシレスコントローラを対象とする。プロキシレスコントローラは、プロキシと通信するよう構成されたクライアントからTCP接続要求を傍受する。TCP接続要求は、第1のシーケンス番号を含む。プロキシレスコントローラは、クライアント情報をクライアントの宛先サーバとのTCP接続に注入し、したがって、クライアント識別データをプロキシの代わりに宛先サーバに提供する。プロキシレスコントローラは、クライアントによって提供された第1のシーケンス番号に基づく第2のシーケンス番号を使用して宛先サーバとの接続を確立する。プロキシレスコントローラは、更新されたシーケンス番号に基づいてクライアントに肯定応答を送信し、これにより、クライアントおよび宛先サーバは、パケットごとの修正を必要とせずに通信することができる。これは、そのような修正が招く非常に高いスループットコストを回避し、プロキシレスコントローラがラインレートに近いパケット処理を提供することを可能にする。本明細書における例は、TCP接続に関する実現例について論じるが、他の接続指向プロトコルも同じ原理を使用して実現され得る。
【0016】
図1を参照すると、いくつかの実現例では、例示的なシステム100は、コンピューティングシステム140の一部または(たとえば、ネットワークを介して)通信しているクライアントデバイス102(本明細書ではクライアント102とも呼ばれる)を含む。クライアントデバイス10は、デスクトップワークステーション、ラップトップワークステーション、サーバ、またはモバイルデバイス(すなわち、スマートフォン)など、任意のコンピューティングデバイスに対応し得る。クライアントデバイス102は、コンピューティングリソース108(例えば、データ処理ハードウェア)および/またはストレージリソース106(例えば、メモリハードウェア)を含む。クライアント102は、クライアント情報104に関連付けられる。クライアント情報104は、IPアドレス、送信元ポート、宛先ポート、識別番号などの、クライアント102を識別する任意の情報を含むことができる。
【0017】
コンピューティングシステム140は、スケーラブル/弾性コンピューティングリソース144(例えば、データ処理ハードウェア)および/またはストレージリソース142(例えば、メモリハードウェア)を有する、単一のコンピュータ、複数のコンピュータ、または分散システム(例えば、クラウド環境)であってもよい。データストア146(すなわち、遠隔ストレージデバイス146)は、クライアントまたはコンピューティングリソース144のうちの1つ以上によるストレージリソース142のスケーラブルな使用を可能にするよう、ストレージリソース142上にオーバーレイされてもよい。
【0018】
クライアント102は、プロキシを介して宛先サーバ110または他のネットワーク化されたコンピューティングデバイスと通信するよう構成される。宛先サーバ110は、コンピューティングリソース118(例えば、データ処理ハードウェア)および/またはストレージリソース116(例えば、メモリハードウェア)を含む。クライアント102は、宛先サーバ110と通信するために、第1のTCP接続要求210、210Aをプロキシに送信することを試みる。
【0019】
コンピューティングシステム140は、TCP接続要求210Aを傍受するプロキシレスコントローラ150を実行する。いくつかの例では、クライアント102はコンピューティングシステム140上で実行され、したがって、プロキシレスコントローラ150は、プロキシレスコントローラ150がTCP接続要求210Aを傍受することを可能にする、クライアントのネットワークトラフィックへのアクセスを有する。他の例では、宛先サーバ110は、コンピューティングシステム140上で実行され、クライアント102は、TCP接続要求210Aをコンピューティングシステム140に向け、プロキシレスコントローラ150がTCP接続要求210Aを傍受することを可能にする。さらに他の例では、クライアント102および宛先サーバ110の両方がコンピューティングシステム140上で(例えば、分散システムの一部として)実行され、これも、プロキシレスコントローラ150がTCP接続要求210Aを傍受することを可能にする。任意選択で、コンピューティングシステム140は、クライアント102および宛先サーバ110のいずれかまたは両方のためのネットワークアドレス変換(NAT)デバイス(すなわち、入口NATおよび/または出口NAT)として動作する。
【0020】
プロキシレスコントローラ150は、TCP接続要求210Aを傍受すると、TCP接続要求210Aがプロキシ(例えば、仮想TCPエンドポイントまたは他の仲介)への接続を試みている新たな接続であると判断してもよい。任意選択で、クライアント102からのTCP接続要求210Aは、仮想TCPエンドポイントとの接続を確立する(すなわち、物理ホストが存在しない)。いくつかの例では、クライアント102の所有者は、クライアント102がTCP接続要求210Aを開始する前に、コンピューティングシステム140が、TCP接続要求210Aがクライアント102からのものであり、プロキシに接続することを意図することを認識するように、コンピューティングシステム140に設定データを提供する。例えば、クライアント102の所有者は、TCP接続要求210Aの送信元IPアドレスまたは宛先IPアドレスを識別する設定情報を提供し得、プロキシレスコントローラ150は、TCP接続要求210Aを受信または傍受すると、送信元または宛先IPアドレス(または任意の他のパラメータ)を設定情報と比較して、TCP接続要求210Aがプロキシを対象とする、と判断してもよい。
【0021】
TCP接続要求210Aは、第1のシーケンス番号212、212Aを含む。TCP接続内のすべてのバイトは、ランダムに選択された初期シーケンス番号212(すなわち、ISN)から始まって番号付けされる。最初のSYNパケットの後、シーケンス番号212は、送信元と宛先との間で転送される各データバイトについて増分される。したがって、シーケンス番号212は、TCPパケット内のデータの第1のバイトの第1のバイト番号を表す。受信機は、受信機が受信することを期待する次のバイトのシーケンス番号212に一致する肯定応答番号222で応答することによって、メッセージに肯定応答する。
【0022】
プロキシレスコントローラ150は、第1のTCP接続要求210Aを傍受し、プロキシとの接続を確立するクライアントの意図を判断した後、宛先サーバ110に、クライアント102と宛先サーバ110との間にTCP接続を確立することを要求する第2のTCP接続要求210、210Bを送信する。第2のTCP接続要求210Bは、第2のシーケンス番号212、212Bを含む。以下でより詳細に説明するように、第2のシーケンス番号212Bは、第1のシーケンス番号212A未満である(すなわち、より小さい)。いくつかの例では、第2のTCP接続要求210Bは、修正されたシーケンス番号212(すなわち、より小さいシーケンス番号212)を有する第1のTCP接続要求210Aである。すなわち、いくつかの例では、プロキシレスコントローラは、第1のTCP接続要求210Aを「ハイジャック」し、第1のTCP接続要求210Aを第2のTCP接続要求210B(これは、第1のTCP接続要求210Aの修正された形態であり得る)で置き換える。
【0023】
プロキシレスコントローラ150は、宛先サーバ110から、第2のTCP接続要求210Bの肯定応答を示す第1の肯定応答メッセージ220、220Aを傍受または受信する。第1の肯定応答メッセージ220Aは、第2のシーケンス番号212Bに関連付けられた第1の肯定応答番号222、222Aを含んでもよい。たとえば、第1の肯定応答番号222Aは、第2のシーケンス番号212Bよりも大きいものであり、宛先サーバ110が第2のTCP接続要求210Bに肯定応答したことを示す。
【0024】
プロキシレスコントローラ150は、宛先サーバ110から第1の肯定応答メッセージ220Aを受信した後、クライアント情報104を宛先サーバ110に送信する。たとえば、プロキシレスコントローラ150は、プロキシプロトコルヘッダ230(図2)データパケット(または他の同様のデータパケット)を宛先サーバ110に送信する。プロキシプロトコルヘッダ230は、データペイロード内に、クライアント情報104の一部またはすべてを含んでもよい。プロキシプロトコルヘッダ230は単なる例示であり、プロキシレスコントローラ150は、ネットワーク接続を容易にするために任意のデータを任意のフォーマットで宛先サーバ110に「注入」することができる。宛先サーバ110は、第2の肯定応答メッセージ220B(図2A)でプロキシプロトコルヘッダ230に応答する。いくつかの例では、プロキシレスコントローラ150は、第1のシーケンス番号212Aに基づいて宛先サーバ110から以前に受信された第1の肯定応答メッセージ220Aを更新し、更新されたシーケンス番号212Cを有する更新された肯定応答メッセージ220Cをクライアント102に送信する。更新されたシーケンス番号212Cは、第1のTCP接続要求210Aに応答してクライアント102が受信すると期待するシーケンス番号に対応する。他の例では、プロキシレスコントローラ150は、以前に受信された肯定応答メッセージ220を修正または更新することとは対照的に、異なる肯定応答メッセージ220(たとえば、第2の肯定応答メッセージ220B)を更新するか、またはまったく新たな肯定応答メッセージ220を生成する。重要なことに、プロキシレスコントローラ150によってクライアント102に送信される肯定応答メッセージ220が、宛先サーバ110から受信された以前の肯定応答メッセージ220(例えば、TCPオプション)からの任意の必要な情報、クライアント102が期待するシーケンス番号212、および宛先サーバ110によって最後に送信された肯定応答番号222を含む限り、これらの解決策のすべては等価である。したがって、肯定応答メッセージ220Cを生成するとき、プロキシレスコントローラは、TCP接続要求210Aの一部(たとえば、シーケンス番号212)および/または以前の肯定応答メッセージ220A、220Bの一部(例えば、任意のTCPオプション、肯定応答番号222など)を使用し得る。
【0025】
プロキシレスコントローラ150は、いくつかの例では、クライアント102と宛先110との間で、ドロップされたかまたは他の態様で失われた任意のメッセージを再送信および/または再生成する。パケットがドロップされるかまたは失われると、プロキシレスコントローラ150は、失われたパケットからペイロードを再生してもよい。
【0026】
ここで図2Aを参照すると、シーケンス図200aは、クライアント102と、プロキシレスコントローラ150と、宛先サーバ110との間の例示的な一連のメッセージを提供する。第1に、クライアント102は、第1のTCP接続要求210Aをプロキシに送信することを試みるが、プロキシレスコントローラ150が、TCP接続要求210Aを受信または傍受する。プロキシレスコントローラ150は、以前に受信された設定情報に基づいて、クライアント102が宛先サーバ110と通信するためにプロキシとの接続を確立することを意図する、と判断してもよい。これに応答して、プロキシレスコントローラ150は、第2のTCP接続要求210Bを宛先サーバ110に送信する。宛先サーバ110は、肯定応答メッセージ220A(すなわち、SYN|ACK)で第2のTCP接続要求210Bに応答する。肯定応答メッセージ220Aに応答して、プロキシレスコントローラ150は、プロキシプロトコルヘッダ230を宛先サーバ110に送信して、宛先サーバ130にクライアント情報104を提供し、それによって、宛先サーバ110に、クライアント固有ポリシー(例えば、アクセス制御リストなど)を提供する能力を可能にする。
【0027】
宛先サーバ110は、プロキシプロトコルヘッダ230に対して別の肯定応答メッセージ220Bで肯定応答する。プロキシレスコントローラ150は、第2の肯定応答メッセージ220Bに応答して、新たな肯定応答メッセージを生成するか、または第1(もしくは第2の)肯定応答メッセージ220Aを更新する(か、もしくは新たな肯定応答メッセージ220Aを生成し)、新たなまたは更新された肯定応答メッセージ220Cをクライアント102に送信する。新たな肯定応答メッセージ220Cは、更新された肯定応答番号222Cを含む。クライアント102は、そのTCP接続要求210Aに対する適切な肯定応答を受信すると、データパケット250を介して宛先サーバ110と通信し続ける。この筋書きでは、クライアントは、プロキシを介して宛先サーバ110と通信するように構成および/または期待されてもよく、宛先サーバ110も、プロキシを介してクライアント102と通信するように構成および/または期待されてもよいが、実際には、クライアント102および宛先サーバ110は、プロキシなしで通信する。
【0028】
シーケンス図200aは例示にすぎず、メッセージの順序および数は、具体的なシステムの実現例ニーズに応じて変化し得る。例えば、クライアント102は、TCPファストオープンを使用して、元のTCP接続要求210Aにデータペイロードを含めることができる。この筋書きでは、プロキシレスコントローラ150は、最初にデータペイロードをドロップし、TCP接続が確立された後、シーケンス番号212Bを適切に調整することによって、宛先サーバ110にデータを再生してもよい。
【0029】
ここで図2Bを参照すると、シーケンス図200bは、シーケンス図200aと同じ例示的な一連のメッセージを提供するが、シーケンス番号212および肯定応答番号222に関する追加の詳細を伴う。ここでは、クライアント102は、第1のTCP接続要求210A(つまりSYNパケット)を、「100」に等しいシーケンス番号212Aとともに送信する。クライアント102は、TCP接続要求210Aに応答して、「101」に等しい肯定応答番号222を有する肯定応答メッセージ220を期待することに留意することが重要である。プロキシレスコントローラ150は、TCP接続要求210Aを受信し、クライアント102がプロキシを介して宛先サーバ110との接続を確立することを意図していると判断する。プロキシレスコントローラ150は、第2のTCP接続要求210B(すなわち、別のSYNパケット)を、宛先サーバ110に、「80」に等しいシーケンス番号212Bとともに送信する。この例では、プロキシレスコントローラ150は、(クライアント102によって第1のTCP接続要求210Aにおいて送信される)第1のシーケンス番号212Aを、プロキシプロトコルヘッダ230内のあるデータの量に等しい量だけロールバックまたは減分することによって、第2のシーケンス番号212Bを決定する。ここで、プロキシレスコントローラ150は、(クライアント情報104を含む)プロキシプロトコルヘッダ230内の20バイトのデータを送信することを意図する。したがって、100(すなわち、シーケンス番号212A)-20(すなわち、プロキシプロトコルヘッダ230内のバイト数)は、「80」に等しい。プロキシレスコントローラ150は、クライアント102への接続について肯定応答する前にプロキシレスコントローラ150が宛先サーバ110に送信することを意図するデータの量に応じて、第1のシーケンス番号212A未満の任意の値に第2のシーケンス番号212Bを設定し得る。
【0030】
次に、プロキシレスコントローラ150は、肯定応答メッセージ220A(すなわち、SYN|ACKパケット)を、「200」に等しいシーケンス番号212および「81」に等しい肯定応答番号222とともに受信する。「81」の肯定応答番号222は、プロキシレスコントローラ150によって以前に送信された「80」のシーケンス番号212について肯定応答する。肯定応答メッセージ220Aを受信した後、プロキシレスコントローラ150は、プロキシプロトコルヘッダ230(および/または、宛先サーバ110が望むかもしくは要求し得る任意の他のデータ)の送信に進む。ここで、シーケンス番号212は「81」であり(前回の肯定応答番号222Aと一致)、長さは「20」(20バイト)であり、肯定応答番号222は「201」に等しい(以前に宛先サーバ110から提供された「200」のシーケンス番号212に一致)。宛先サーバ110は、「201」に等しいシーケンス番号212および「101」に等しい肯定応答番号222を含む肯定応答メッセージ220Bでプロキシプロトコルヘッダ230に肯定応答する。
【0031】
プロキシレスコントローラ150は、クライアント102からの元のTCP接続要求210Aからのシーケンス番号212Aに基づいて肯定応答メッセージ220A(これは、クライアント102によって必要とされる重要な接続情報を含んでもよい)を更新する。すなわち、プロキシレスコントローラ150は、元の肯定応答番号222Aを、TCP接続要求210Aに応答してクライアント102が期待する更新された肯定応答番号222に置き換える。この例では、プロキシレスコントローラ150は、肯定応答メッセージ220C(すなわち、SYNパケット)を、(肯定応答メッセージ220Bによって提供されるシーケンス番号212に一致するよう)「201」に等しいシーケンス番号212、および(TCP接続要求210Aに応答してクライアント102によって期待される肯定応答番号222に一致するよう)「101」に等しい肯定応答番号222とともに、送信する。この時点から、クライアント102および宛先サーバ110は、単に双方の間でパケット250を転送するプロキシレスコントローラ150と自由に通信する(すなわち、パケットの深い検査または修正は必要とされない)。例えば、クライアント102は、「101」に等しいシーケンス番号212と、「202」に等しい肯定応答番号222とを含むデータパケット250でフォローアップし、これは宛先サーバ110の期待値と整合する。
【0032】
ここで図3を参照すると、従来の技法は、典型的には、クライアント102と宛先サーバ110との間で送信されるデータのパケットを継続的に修正するためにプロキシ(または他の仲介)を必要とする。いくつかの例では、プロキシレスコントローラ150は、接続情報320をキャッシュするキャッシュ310を含む。接続情報320は、クライアント102と宛先サーバ110との間のTCP接続を識別する。TCPパケット250(すなわち、データパケット250)がクライアント102から宛先サーバ110に(およびその逆に)送信されると、プロキシレスコントローラ150は、TCPパケット250を受信し、接続情報320に基づいて、TCPパケット250が既存のTCP接続の一部であり、クライアント102または宛先サーバ110宛である、と判断し得る。プロキシレスコントローラ150は、TCPパケット250が既存の接続の一部であると判断すると、プロキシレスコントローラ150は、TCPパケット250を転送してもよい。スループットの低下を回避するために、プロキシレスコントローラ150は、接続情報320をキャッシュ310に記憶し得、プロキシレスコントローラ150が、TCPパケット250がキャッシュ310に記憶された接続のいずれかに関連付けられているかどうかを迅速かつ効率的に判断することを可能にする。接続情報320が、着信データパケット250が既存のTCP接続の一部であることを確認すると、プロキシレスコントローラ150は、データパケット250のさらなる検査または修正なしに、データパケット250を適切な宛先に転送する。
【0033】
したがって、システムは、既存のプロキシベースの展開が、再設定を必要とせずにプロキシレス展開(たとえば、SDN)に切り替えることを可能にする、プロキシレスプロトコルを提供する。システムは、最小限のパケット介入を必要とすることによって、ラインレートでまたはラインレートに近いパケット処理を配信する。すべてのパケットを修正する代わりに、システムは、接続の開始における少数のパケットのみが修正を必要とするように、シーケンス番号(またはデータを追跡するための他のプロトコル固有の手段)を修正する。その後、システムは、持続的なデータのフローのためにキャッシング機構を使用して、高いデータレートを維持することができる。
【0034】
図4は、プロキシレスプロトコルのための方法400のための動作の例示的な構成のフローチャートである。方法400は、動作402において、クライアント102から、プロキシサーバ142を介して宛先サーバ110にデータをルーティングするためにクライアント102とプロキシサーバ142との間で第1のTCP接続を確立することを要求する第1のTCP接続要求210Aを傍受することを含む。第1のTCP接続要求110Aは、クライアント情報104および第1のシーケンス番号212Aを含む。動作404において、方法400は、宛先サーバ110に、クライアント102と宛先サーバ110との間に第2のTCP接続を確立することを要求する第2のTCP接続要求210Bを送信することを含む。いくつかの例では、第2のTCP接続要求210Bは、傍受された第1のTCP接続要求210Aの修正された形態である。第2のTCP接続要求210Bは、第1のシーケンス番号212A未満の第2のシーケンス番号212Bを含む。方法400は、動作406において、宛先サーバ110から、第2のTCP接続要求210Bの肯定応答を示す肯定応答メッセージ220Aを傍受することを含む。動作408において、方法400は、クライアント情報104を含むプロキシプロトコルヘッダ230を含むデータパケットを宛先サーバ110に送信することを含む。方法400は、動作410において、第1のTCP接続要求210Aを使用して新たな肯定応答メッセージ220Cを生成することと、新たな肯定応答メッセージ220Cをクライアント102に送信することとを含む。
【0035】
図5は、本明細書で説明するシステムおよび方法を実施するために使用され得る例示的なコンピューティングデバイス500の概略図である。コンピューティングデバイス500は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータなど、様々な形態のデジタルコンピュータを表すことが意図されている。本明細書に示された構成要素、それらの接続および関係、ならびにそれらの機能は、例示的なものにすぎず、本文書に記載および/または特許請求される本発明の実現例を限定するものではない。
【0036】
コンピューティングデバイス500は、プロセッサ510と、メモリ520と、ストレージデバイス530と、メモリ520および高速拡張ポート550に接続する高速インターフェイス/コントローラ540と、低速バス570およびストレージデバイス530に接続する低速インターフェイス/コントローラ560とを含む。構成要素510,520,530,540,550,および560の各々は、様々なバスを用いて相互接続され、共通のマザーボード上に、または必要に応じて他の方法で実装されてもよい。プロセッサ510は、高速インターフェイス540に結合されたディスプレイ580などの外部入力/出力装置上にグラフィカルユーザインターフェイス(GUI)のためのグラフィカル情報を表示するために、メモリ520またはストレージデバイス530に記憶された命令を含む、コンピューティングデバイス500内で実行するための命令を処理することができる。他の実現例では、複数のプロセッサおよび/または複数のバスが、必要に応じて、複数のメモリおよびメモリのタイプとともに用いられてもよい。また、複数のコンピューティングデバイス500が接続されてもよく、各デバイスは、(たとえば、サーババンクとして、ブレードサーバのグループとして、またはマルチプロセッサシステムとして)必要な動作の部分を提供する。
【0037】
メモリ520は、コンピューティングデバイス500内で情報を非一時的に記憶する。メモリ520は、コンピュータ可読媒体、揮発性メモリユニット、または不揮発性メモリユニットであってもよい。非一時的メモリ520は、コンピューティングデバイス500による使用のためにプログラム(例えば、命令のシーケンス)またはデータ(例えば、プログラム状態情報)を一時的または永続的に記憶するために用いられる物理デバイスであってもよい。不揮発性メモリの例は、フラッシュメモリおよび読み出し専用メモリ(ROM)/プログラマブル読み出し専用メモリ(PROM)/消去可能プログラマブル読み出し専用メモリ(EPROM)/電子的消去可能プログラマブル読み出し専用メモリ(EEPROM)(たとえば、ブートプログラムなどのファームウェアに典型的に用いられる)を含むが、これらに限定されない。揮発性メモリの例には、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、相変化メモリ(PCM)、およびディスクまたはテープが含まれるが、これらに限定されない。
【0038】
ストレージデバイス530は、コンピューティングデバイス500のための大容量ストレージを提供することができる。いくつかの実現例では、ストレージデバイス530はコンピュータ可読媒体である。様々な異なる実現例では、ストレージデバイス530は、フロッピー(登録商標)ディスクデバイス、ハードディスクデバイス、光ディスクデバイス、もしくはテープデバイス、フラッシュメモリもしくは他の同様のソリッドステートメモリデバイス、またはストレージエリアネットワークもしくは他の構成におけるデバイスを含むデバイスのアレイであってもよい。さらなる実現例では、コンピュータプログラム製品は、情報担体において有形に具現化される。コンピュータプログラム製品は、実行されると上述の方法などの1つ以上の方法を実行する命令を含む。情報担体は、メモリ520、ストレージデバイス530、またはプロセッサ510上のメモリなどのコンピュータ可読媒体または機械可読媒体である。
【0039】
高速コントローラ540は、コンピューティングデバイス500のための帯域幅集約型動作を管理し、低速コントローラ560は、より低い帯域幅集約型動作を管理する。そのような役割の割り当ては、例示的なものにすぎない。いくつかの実現例では、高速コントローラ540は、メモリ520、ディスプレイ580(たとえば、グラフィックスプロセッサまたはアクセラレータを通して)、および様々な拡張カード(図示せず)を受け入れ得る高速拡張ポート550に結合される。いくつかの実現例では、低速コントローラ560は、ストレージデバイス530および低速拡張ポート590に結合される。低速拡張ポート590は、様々な通信ポート(たとえば、USB、Bluetooth(登録商標)、イーサネット(登録商標)、無線イーサネット(登録商標))を含んでもよく、キーボード、ポインティングデバイス、スキャナ、またはスイッチもしくはルータなどのネットワーキングデバイスなどの1つ以上の入力/出力装置に、たとえばネットワークアダプタを介して結合されてもよい。
【0040】
コンピューティングデバイス500は、図に示されるように、いくつかの異なる形態で実現されてもよい。例えば、標準サーバ500aとして、もしくはそのようなサーバ500aのグループ内で複数回、ラップトップコンピュータ500bとして、またはラックサーバシステム500cの一部として実装されてもよい。
【0041】
本明細書に記載のシステムおよび技術のさまざまな実現例は、デジタル電子および/もしくは光学回路系、集積回路系、特別に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、ならびに/またはそれらの組合せで実現されてもよい。これらのさまざまな実現例は、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステム上で実行可能および/または解釈可能な1つ以上のコンピュータプログラムにおける実現例を含んでいてもよく、当該プロセッサは専用であっても汎用であってもよく、ストレージシステム、少なくとも1つの入力装置、および少なくとも1つの出力装置からデータおよび命令を受信するように、かつこれらにデータおよび命令を送信するように結合されている。
【0042】
ソフトウェアアプリケーション(すなわち、ソフトウェアリソース)は、コンピューティングデバイスにタスクを実行させるコンピュータソフトウェアを指してもよい。いくつかの例では、ソフトウェアアプリケーションは、「アプリケーション」、「アプリ」、または「プログラム」と呼ばれることがある。アプリケーションの例には、システム診断アプリケーション、システム管理アプリケーション、システム保守アプリケーション、ワード処理アプリケーション、スプレッドシートアプリケーション、メッセージングアプリケーション、メディアストリーミングアプリケーション、ソーシャルネットワーキングアプリケーション、およびゲームアプリケーションが含まれるが、これらに限定はされない。
【0043】
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとしても知られる)は、プログラム可能なプロセッサのための機械命令を含み、高水準手続き型および/もしくはオブジェクト指向型プログラミング言語で、ならびに/またはアセンブリ/機械言語で実現することができる。本明細書で使用されるとき、用語「機械可読媒体」および「コンピュータ可読媒体」は、機械命令を機械可読信号として受信する機械可読媒体を含む、機械命令および/またはデータをプログラマブルプロセッサに提供するよう使用される任意のコンピュータプログラム製品、非一時的コンピュータ可読媒体、装置および/またはデバイス(例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLD))を指す。「機械可読信号」という用語は、機械命令および/またはデータをプログラマブルプロセッサに提供するために使用される任意の信号を指す。
【0044】
本明細書で説明するプロセスおよび論理フローは、データ処理ハードウェアとも呼ばれ、入力データに対して演算を行い出力を生成することによって1つ以上のコンピュータプログラムを実行して機能を実行する1つ以上のプログラマブルプロセッサによって実行されることができる。プロセスおよび論理フローはまた、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実行され得る。コンピュータプログラムの実行に好適であるプロセッサは、例として、汎用マイクロプロセッサおよび特殊目的マイクロプロセッサの両方、ならびに任意の種類のデジタルコンピュータの任意の1つ以上のプロセッサを含む。概して、プロセッサは、読み取り専用メモリもしくはランダムアクセスメモリまたは両方から命令およびデータを受信することになる。コンピュータの必須要素は、命令を実行するためのプロセッサ、ならびに命令およびデータを記憶するための1つ以上のメモリデバイスである。一般に、コンピュータはさらに、たとえば磁気ディスク、光磁気ディスクまたは光ディスクといった、データを格納するための1つ以上の大容量記憶装置を含むか、当該1つ以上の大容量記憶装置からデータを受取るかもしくは当該1つ以上の大容量記憶装置にデータを転送するよう作動的に結合されるか、またはその両方を行うことにもなる。しかしながら、コンピュータは、そのようなデバイスを有する必要はない。コンピュータプログラム命令およびデータを記憶するのに好適なコンピュータ可読媒体は、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイス;磁気ディスク、たとえば内蔵ハードディスクまたはリムーバブルディスク;光磁気ディスク;およびCD ROMおよびDVD-ROMディスクを含む、あらゆる形態の不揮発性メモリ、媒体、ならびにメモリデバイスを含む。プロセッサおよびメモリは、特殊目的論理回路によって補足され得るか、または特殊目的論理回路に組み込まれ得る。
【0045】
ユーザとの対話を提供するために、本開示の1つ以上の局面は、たとえばCRT(陰極線管)、LCD(液晶ディスプレイ)モニタまたはタッチスクリーンといったユーザに対して情報を表示するための表示装置と、選択肢的にキーボードおよびたとえばマウス、トラックボールといったユーザがコンピュータに入力を提供可能であるポインティングデバイスとを有するコンピュータ上で実現され得る。他の種類のデバイスを用いて、ユーザとの対話を提供することもでき、たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであり得、ユーザからの入力は、音響入力、音声入力、または触覚入力を含む、任意の形態で受信することができる。加えて、コンピュータは、ユーザが用いるデバイスにドキュメントを送信し、ユーザが用いるデバイスからドキュメントを受信することによって、たとえば、ユーザのクライアントデバイス上のウェブブラウザから受信された要求に応答してそのウェブブラウザにウェブページを送信することによって、ユーザと対話し得る。
【0046】
いくつかの実現例について説明した。それにもかかわらず、本開示の精神および範囲から逸脱することなく、様々な修正がなされ得ることが理解されるであろう。したがって、他の実現例は特許請求の範囲内にある。
図1
図2A
図2B
図3
図4
図5
【手続補正書】
【提出日】2023-12-07
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピュータにより実現される方法(400)であって、データ処理ハードウェアによって実行されると前記データ処理ハードウェア(144)に動作を実行させ、前記動作は、
クライアント(102)から、データをプロキシサーバ(142)を介して宛先サーバ(110)にルーティングするために前記クライアント(102)と前記プロキシサーバ(142)との間に第1の伝送制御プロトコル(TCP)接続を確立することを要求する第1のTCP接続要求(210)を傍受することを含み、前記第1のTCP接続要求(210)は、クライアント情報(104)および第1のシーケンス番号(212)を含み、
前記方法はさらに、
前記宛先サーバ(110)に、前記クライアント(102)と前記宛先サーバ(110)との間に第2のTCP接続を確立することを要求する第2のTCP接続要求(210)を送信することを含み、前記第2のTCP接続要求(210)は、前記第1のシーケンス番号(212)未満の第2のシーケンス番号(212)を含み、前記方法はさらに、
前記宛先サーバ(110)から、前記第2のTCP接続要求(210)の肯定応答を示す肯定応答メッセージ(220)を傍受することと、
前記宛先サーバ(110)に、前記クライアント情報(104)を含むプロキシプロトコルヘッダメッセージ(230)を含むデータパケット(250)を送信することと、
前記第1のTCP接続要求(210)を使用して新たな肯定応答メッセージ(220)を生成することと、
前記クライアント(102)に前記新たな肯定応答メッセージ(220)を送信することとを含む、方法。
【請求項2】
前記動作は、前記クライアント(102)からの前記第1のTCP接続要求(210)を傍受する前に、前記プロキシサーバ(142)と通信する前記クライアント(102)の意図を示すクライアント設定データを取得することをさらに含む、請求項1に記載の方法(400)。
【請求項3】
前記クライアント設定データは、前記宛先サーバ(110)を識別する宛先識別子を含み、
前記動作は、前記クライアント(102)からの前記第1のTCP接続要求(210)を傍受した後、前記クライアント(102)が前記宛先識別子を使用して前記プロキシサーバ(142)と通信することを意図していると判断することをさらに含む、請求項2に記載の方法(400)。
【請求項4】
前記宛先識別子はインターネットプロトコル(IP)アドレスを含む、請求項3に記載の方法(400)。
【請求項5】
前記クライアント(102)からの前記第1のTCP接続要求(210)を傍受することは、SYNフラグが前記第1のTCP接続要求(210)内にセットされている、と判断することを含む、請求項1~4のいずれか1項に記載の方法(400)。
【請求項6】
前記第1のシーケンス番号(212)と前記第2のシーケンス番号(212)との間の差は、前記プロキシプロトコルヘッダメッセージ(230)のサイズに等しい、請求項1~5のいずれか1項に記載の方法(400)。
【請求項7】
前記肯定応答メッセージ(220)は、接続設定情報を含み、
前記新たな肯定応答メッセージ(220)は、前記肯定応答メッセージ(220)と同じ接続設定情報を含む、請求項1~6のいずれか1項に記載の方法(400)。
【請求項8】
前記新たな肯定応答メッセージ(220)を前記クライアント(102)に送信した後、前記クライアント(102)および前記宛先サーバ(110)は、前記データ処理ハードウェア(144)による修正なしに直接通信する、請求項1~7のいずれか1項に記載の方法(400)。
【請求項9】
前記クライアント(102)は、前記宛先サーバ(110)から遠隔にあり、
前記第1のTCP接続要求(210)は、前記クライアント(102)において傍受される、請求項1~8のいずれか1項に記載の方法(400)。
【請求項10】
前記クライアント(102)は、前記宛先サーバ(110)から遠隔にあり、
前記第1のTCP接続要求(210)は、前記宛先サーバ(110)において傍受される、請求項1~8のいずれか1項に記載の方法(400)。
【請求項11】
システム(100)であって、
データ処理ハードウェア(144)と、
前記データ処理ハードウェア(146)と通信するメモリハードウェア(146)とを備え、前記メモリハードウェア(146)は、前記データ処理ハードウェア(144)上で実行されると前記データ処理ハードウェア(144)に動作を実行させる命令を記憶し、前記動作は、
クライアント(102)から、データをプロキシサーバ(142)を介して宛先サーバ(110)にルーティングするために前記クライアント(102)と前記プロキシサーバ(142)との間に第1の伝送制御プロトコル(TCP)接続を確立することを要求する第1のTCP接続要求(210)を傍受することを含み、前記第1のTCP接続要求(210)は、クライアント情報(104)および第1のシーケンス番号(212)を含み、
前記動作はさらに、
前記宛先サーバ(110)に、前記クライアント(102)と前記宛先サーバ(110)との間に第2のTCP接続を確立することを要求する第2のTCP接続要求(210)を送信することを含み、前記第2のTCP接続要求(210)は、前記第1のシーケンス番号(212)未満の第2のシーケンス番号(212)を含み、前記動作はさらに、
前記宛先サーバ(110)から、前記第2のTCP接続要求(210)の肯定応答を示す肯定応答メッセージ(220)を傍受することと、
前記宛先サーバ(110)に、前記クライアント(102)を含むプロキシプロトコルヘッダメッセージ(230)を含むデータパケット(250)を送信することと、
前記第1のTCP接続要求(210)を使用して新たな肯定応答メッセージ(220)を生成することと、
前記クライアント(102)に前記新たな肯定応答メッセージ(220)を送信することとを含む、システム(100)。
【請求項12】
前記動作は、前記クライアント(102)からの前記第1のTCP接続要求(210)を傍受する前に、前記プロキシサーバ(142)と通信する前記クライアント(102)の意図を示すクライアント設定データを取得することをさらに含む、請求項11に記載のシステム(100)。
【請求項13】
前記クライアント設定データは、前記宛先サーバ(110)を識別する宛先識別子を含み、
前記動作は、前記クライアント(102)からの前記第1のTCP接続要求(210)を傍受した後、前記クライアント(102)が前記宛先識別子を使用して前記プロキシサーバ(142)と通信することを意図していると判断することをさらに含む、請求項12に記載のシステム(100)。
【請求項14】
前記宛先識別子はインターネットプロトコル(IP)アドレスを含む、請求項13に記載のシステム(100)。
【請求項15】
前記クライアント(102)からの前記第1のTCP接続要求(210)を傍受することは、SYNフラグが前記第1のTCP接続要求(210)内にセットされている、と判断することを含む、請求項11~14のいずれか1項に記載のシステム(100)。
【請求項16】
前記第1のシーケンス番号(212)と前記第2のシーケンス番号(212)との間の差は、前記プロキシプロトコルヘッダメッセージ(230)のサイズに等しい、請求項11~15のいずれか1項に記載のシステム(100)。
【請求項17】
前記肯定応答メッセージ(220)は、接続設定情報を含み、
前記新たな肯定応答メッセージ(220)は、前記肯定応答メッセージ(220)と同じ接続設定情報を含む、請求項11~16のいずれか1項に記載のシステム(100)。
【請求項18】
前記新たな肯定応答メッセージ(220)を前記クライアント(102)に送信した後、前記クライアント(102)と前記宛先サーバ(110)とは直接通信する、請求項11~17のいずれか1項に記載のシステム(100)。
【請求項19】
前記クライアント(102)は、前記宛先サーバ(110)から遠隔にあり、
前記第1のTCP接続要求(210)は、前記クライアント(102)において傍受される、請求項11~18のいずれか1項に記載のシステム(100)。
【請求項20】
前記クライアント(102)は、前記宛先サーバ(110)から遠隔にあり、
前記第1のTCP接続要求(210)は、前記宛先サーバ(110)において傍受される、請求項11~18のいずれか1項に記載のシステム(100)。
【国際調査報告】