(57)【特許請求の範囲】
【請求項１】
複数のクライアントとの複数のＴＣＰ接続をプロキシサーバで確立する段階であって、各ＴＣＰ接続は、ＴＣＰポートを用いて前記プロキシサーバにクライアントを接続する、段階と、
多重ＴＣＰ接続を介して前記プロキシサーバをウェブサーバと通信結合させる段階と、
前記複数のクライアントから発信される複数の入力ＴＣＰ通信を前記プロキシサーバで受信する段階であって、各入力ＴＣＰ通信は、パケットペイロードデータを含む少なくとも１つのＴＣＰパケットを含む、段階と、
それぞれのクライアントデータストリームにおける所与のＴＣＰ接続上で受信される複数のＴＣＰパケットに含まれる前記パケットペイロードデータをバッファリングする段階と、
前記プロキシサーバにおいて、複数の前記クライアントデータストリームにおける複数のシーケンシャル実行の複数のビットを備える複数のデータセグメントを、複数の多重ＴＣＰパケット（複数のＭＵＸ・ＴＣＰパケット）にカプセル化する段階であって、前記複数のＭＵＸ・ＴＣＰパケットの少なくとも一部分は、少なくとも２つの別々のクライアントデータストリームからの複数のデータセグメントをカプセル化する、段階と、
前記複数のＭＵＸ・ＴＣＰパケットを前記プロキシサーバから前記ウェブサーバへ前記多重ＴＣＰ接続上でトランスポートする段階と、
前記ウェブサーバで、
前記複数のＭＵＸ・ＴＣＰパケットにおける複数のデータセグメントをデカプセル化し、前記複数のクライアントデータストリームを再アセンブルする段階と、
再アセンブルされた前記複数のクライアントデータストリームからパケットペイロードデータを抽出する段階と
を備え、
前記ウェブサーバを介してアクセスされるウェブサイトに対するユニバーサルリソースロケータ（ＵＲＬ）にアクセスするべく新たなクライアントから送信されるハイパーテキストトランスポートプロトコル（ＨＴＴＰ）リクエストを受信する段階と、
前記新たなクライアントと前記プロキシサーバとの間で新たなＴＣＰ接続を確立する段階と、
前記プロキシサーバで受信された複数のＨＴＴＰリクエストを前記新たなクライアントから前記ウェブサーバへ前記多重ＴＣＰ接続を介して転送すること、および前記ウェブサーバで生成された複数のＨＴＴＰ応答を、前記新たなクライアントに、前記プロキシサーバおよび前記新たなＴＣＰ接続への前記多重ＴＣＰ接続を介して転送することをサポートするべく、前記プロキシサーバおよび前記ウェブサーバの各々において複数のキューを割り当てる段階と、を更に備え、
前記プロキシサーバおよび前記ウェブサーバに割り当てられる前記複数のキューは、新たなクライアントのための前記複数のＨＴＴＰリクエスト及び前記複数のＨＴＴＰ応答の利用のために専用のものである、方法。
【請求項２】
多重化され、前記多重ＴＣＰ接続上で送信され得る複数の同時データストリームの最大数を識別する情報を、前記ウェブサーバから前記プロキシサーバへ送信する段階と、
前記複数の同時データストリームの前記最大数に対応する複数のクライアント接続を確立する段階と、
前記プロキシサーバで、前記ウェブサーバと通信することを望む新たなクライアントからデータを受信する段階と、
前記新たなクライアントからの前記データをバッファリングする段階と、
既存クライアントが前記ウェブサーバと通信することを終了していると判断することに応答して、前記ウェブサーバと新たなクライアント接続を、前記新たなクライアントのためにネゴシエートする段階と、を更に備える、請求項１に記載の方法。
【請求項３】
多重化され、プロキシサーバとウェブサーバとの間の多重ＴＣＰ接続上で送信され得る複数の同時データストリームの最大数を識別する情報を、前記ウェブサーバから前記プロキシサーバへ送信する段階と、
前記複数の同時データストリームの前記最大数に対応する複数のクライアントとの複数のＴＣＰ接続をプロキシサーバで確立する段階であって、各ＴＣＰ接続は、ＴＣＰポートを用いて前記プロキシサーバにクライアントを接続する、段階と、
前記多重ＴＣＰ接続を介して前記プロキシサーバをウェブサーバと通信結合させる段階と、
前記複数のクライアントから発信される複数の入力ＴＣＰ通信を前記プロキシサーバで受信する段階であって、各入力ＴＣＰ通信は、パケットペイロードデータを含む少なくとも１つのＴＣＰパケットを含む、段階と、
それぞれのクライアントデータストリームにおける所与のＴＣＰ接続上で受信される複数のＴＣＰパケットに含まれる前記パケットペイロードデータをバッファリングする段階と、
前記プロキシサーバにおいて、複数の前記クライアントデータストリームにおける複数のシーケンシャル実行の複数のビットを備える複数のデータセグメントを、複数の多重ＴＣＰパケット（複数のＭＵＸ・ＴＣＰパケット）にカプセル化する段階であって、前記複数のＭＵＸ・ＴＣＰパケットの少なくとも一部分は、少なくとも２つの別々のクライアントデータストリームからの複数のデータセグメントをカプセル化する、段階と、
前記複数のＭＵＸ・ＴＣＰパケットを前記プロキシサーバから前記ウェブサーバへ前記多重ＴＣＰ接続上でトランスポートする段階と、
前記ウェブサーバで、
前記複数のＭＵＸ・ＴＣＰパケットにおける複数のデータセグメントをデカプセル化し、前記複数のクライアントデータストリームを再アセンブルする段階と、
再アセンブルされた前記複数のクライアントデータストリームからパケットペイロードデータを抽出する段階と、
前記プロキシサーバで、
前記ウェブサーバと通信することを望む新たなクライアントからデータを受信する段階と、
前記新たなクライアントからの前記データをバッファリングする段階と、
既存クライアントが前記ウェブサーバと通信することを終了していると判断することに応答して、前記ウェブサーバと新たなクライアント接続を、前記新たなクライアントのためにネゴシエートする段階と
を備える、方法。
【請求項４】
第１ＴＣＰ接続上で受信される前記１または複数のＴＣＰパケットは、第１クライアントから送信されるハイパーテキストトランスポートプロトコル（ＨＴＴＰ）リクエストを備え、
前記方法は、
前記第１クライアントが行先であるクライアントデータストリームにおいてＨＴＴＰ応答を埋めこむ段階と、
１または複数のＭＵＸ・ＴＣＰパケットの前記クライアントデータストリームに対応する複数のシーケンシャル実行の複数のビットを備える複数のデータセグメントをカプセル化する段階と、
前記ウェブサーバからの前記１または複数のＭＵＸ・ＴＣＰパケットを前記多重ＴＣＰ接続上で前記プロキシサーバへトランスポートする段階と、
前記１または複数のＭＵＸ・ＴＣＰパケットからの前記複数のデータセグメントをデカプセル化する段階と、
前記クライアントデータストリームを再アセンブルする段階と、
前記ＨＴＴＰ応答を抽出し、前記プロキシサーバから行先の前記クライアントへ前記第１ＴＣＰ接続上で転送される１または複数のＴＣＰパケットにおいて前記ＨＴＴＰ応答をカプセル化する段階と、によって、前記第１クライアントへ前記ＨＴＴＰ応答を戻す段階を更に備える、請求項１から３のいずれか一項に記載の方法。
【請求項５】
各ＴＣＰ接続に対し、
前記プロキシサーバの少なくとも１つのキューを前記ＴＣＰ接続に対して割り当てる段階と、
前記ＴＣＰ接続に対して割り当てられた前記少なくとも１つのキューにおいて、前記ＴＣＰ接続上で受信される、複数のＴＣＰパケットに含まれるパケットペイロードデータを備えるクライアントデータストリームをバッファリングする段階と
を更に備える、請求項１から４のいずれか一項に記載の方法。
【請求項６】
各ＴＣＰ接続に対して割り当てられた前記プロキシサーバの前記少なくとも１つのキューは、出力キューを有し、
前記方法は、
前記プロキシサーバの複数の前記出力キューの前記ＴＣＰ接続上でトランスファーされる複数のＴＣＰパケットに含まれる複数のシーケンシャル実行のパケットペイロードデータを備えるクライアントデータストリームをバッファリングする段階であって、各出力キューはそれぞれのＴＣＰ接続に対して割り当てられる、段階と、
複数のＭＵＸ・ＴＣＰパケットのストリームにおけるそれぞれの複数のＭＵＸ・ＴＣＰパケットにおいてカプセル化されるべき複数のデータセグメントをプルするための複数の出力キューを選択するキューセレクタを用いることによって、前記多重ＴＣＰ接続を介して前記ウェブサーバへトランスポートされるべき複数のＭＵＸ・ＴＣＰパケットの前記ストリームを、生成する段階と、
を更に備える、請求項５に記載の方法。
【請求項７】
前記多重ＴＣＰ接続は、全体の帯域幅を有し、
前記方法は、
前記多重ＴＣＰ接続の前記全体の帯域幅のそれぞれの帯域幅スライスを、前記プロキシサーバで確立された各ＴＣＰ接続に対して、および前記多重ＴＣＰ接続上で転送されるべき複数のＴＣＰパケットに対して割り当てる段階と、
個別のＴＣＰ接続に対して割り当てられた前記帯域幅スライスが動的に調整されることを可能にする段階と、を更に備える、請求項１から６のいずれか一項に記載の方法。
【請求項８】
前記ウェブサーバおよび前記プロキシサーバのうち少なくとも１つが、前記多重ＴＣＰ接続上で転送される複数の個別のＴＣＰ接続に対するデータのトランスファーのレートを管理することを可能にする段階を更に備える、請求項１から７のいずれか一項に記載の方法。
【請求項９】
前記ウェブサーバおよび前記プロキシサーバのうち少なくとも１つが、選択されたＴＣＰ接続に対応するトラフィックが前記多重ＴＣＰ接続上で転送されることを、中止することを可能にする段階を更に備える、請求項８に記載の方法。
【請求項１０】
前記ウェブサーバは前記プロキシサーバにリクエストを送信し、所与のＴＣＰ接続に対するトラフィックを中止し、
前記方法は、
前記ＴＣＰ接続上でクライアントから受信される入力ＴＣＰトラフィックをバッファリングすることを継続する段階と、
前記ＴＣＰ接続に対するトラフィックが再開することが許されるという指示を受信する段階と、
バッファに累積されている前記入力ＴＣＰトラフィックに対応する複数のデータセグメントを、前記プロキシサーバから前記ウェブサーバへ送信することを再開する段階と、を更に備える、請求項９に記載の方法。
【請求項１１】
プロキシサーバおよびウェブサーバに、請求項１から１０のいずれか一項に記載の方法を実行させるプログラム。
【請求項１２】
ウェブサーバ装置であって、
プロセッサと、
前記プロセッサに動作可能に結合されたメモリと、
前記プロセッサに動作可能に結合された少なくとも１つのネットワークポートを含むネットワークアダプタと、
複数のソフトウェアモジュールを備える複数の命令を記憶しているストレージデバイスと、を備え、
前記複数のソフトウェアモジュールは、
前記ウェブサーバ装置が、
多重化され、プロキシサーバと前記ウェブサーバ装置との間の多重ＴＣＰ接続上で送信され得る複数の同時データストリームの最大数を識別する情報を前記プロキシサーバへ送信することと、
前記プロキシサーバと前記ウェブサーバ装置との間で多重ＴＣＰ接続を確立することであって、前記多重ＴＣＰ接続は、前記ネットワークアダプタにおけるネットワークポートに結合されたリンクを含む転送パスにおいてデータをトランスポートし、前記複数の同時データストリームの前記最大数に対応する複数のクライアントが前記プロキシサーバにそれぞれの複数のＴＣＰ接続を介して接続されている、ことと、
前記プロキシサーバに前記複数のクライアントを接続するべく用いられる前記複数のＴＣＰ接続の各々に対して前記メモリのメモリ空間における複数のキューのそれぞれのセットを割り当てることができるようにし、所与のＴＣＰ接続に対する複数のキューのそれぞれの前記セットが、少なくとも１つの出力キューおよび少なくとも１つの入力キューを有する、ことと
前記複数のクライアントが行先であるクライアントデータストリームデータを、複数の多重ＴＣＰパケット（複数のＭＵＸ・ＴＣＰパケット）のストリームとして前記プロキシサーバへ前記多重ＴＣＰ接続上で送信することであって、各ＭＵＸ・ＴＣＰパケットは、前記プロキシサーバを介して前記プロキシサーバとクライアントとの間のＴＣＰ接続上で前記クライアントに転送されるべき複数のＴＣＰパケットにおいてカプセル化されるパケットペイロードデータを備える、１または複数のクライアントデータストリームからの複数のシーケンシャル実行の複数のビットを備える１または複数のデータセグメントをカプセル化し、前記複数のＭＵＸ・ＴＣＰパケットの少なくとも一部分は、少なくとも２つの別々のクライアントデータストリームに対する複数のデータセグメントをカプセル化する、こと、とができるようにするべく、前記プロセッサによって実行される、ウェブサーバ装置。
【請求項１３】
前記複数のソフトウェアモジュールは、更に、前記ウェブサーバ装置が、
前記プロキシサーバから前記多重ＴＣＰ接続上で複数のＭＵＸ・ＴＣＰパケットのストリームを受信することであって、各ＭＵＸ・ＴＣＰパケットは、１または複数のデータセグメントをカプセル化し、各データセグメントはＴＣＰクライアントから受信されたクライアントデータストリームの一部分を備える、ことと、
前記複数のＭＵＸ・ＴＣＰパケットにおける複数のデータセグメントをデカプセル化し、前記複数のクライアントデータストリームを再アセンブルすることと、
前記再アセンブルされた複数のクライアントデータストリームからのパケットペイロードデータを抽出することと、をできるようにする、請求項１２に記載のウェブサーバ装置。
【請求項１４】
各ＴＣＰ接続および前記接続に対して割り当てられた複数のキューのセットにおける前記複数のキューは、固有クライアント識別子によって識別される、請求項１２または１３に記載のウェブサーバ装置。
【請求項１５】
前記複数のソフトウェアモジュールは、ソフトウェア処理スタックを有し、前記複数のソフトウェアモジュールは、更に、前記ウェブサーバ装置が、
前記ソフトウェア処理スタックによって生成される複数のクライアントデータストリームを複数の出力キューに加えることであって、各出力キューに加えられた前記複数のクライアントデータストリームに含まれるデータは、単一のクライアントを行先としている、ことと、
複数のＭＵＸ・ＴＣＰパケットのストリームを、
前記複数のＭＵＸ・ＴＣＰパケットのストリームにおけるそれぞれの複数のＭＵＸ・ＴＣＰパケットにおいてカプセル化されるべきである、複数のデータセグメントをプルするための複数の出力キューを選択するキューセレクタを用いることによって生成することと、ができるようにする、請求項１２から１４のいずれか一項に記載のウェブサーバ装置。
【請求項１６】
前記複数のソフトウェアモジュールは、更に、前記ウェブサーバ装置が、
前記複数のＴＣＰ接続の各々に対して前記多重ＴＣＰ接続のそれぞれの帯域幅スライスを割り当てることと、前記複数のＴＣＰ接続に対して割り当てられた複数の前記帯域幅スライスに従って複数のデータセグメントをプルするための複数の出力キューを選択するキュー選択アルゴリズムを実装することとができるようにする、請求項１５に記載のウェブサーバ装置。
【請求項１７】
前記複数のソフトウェアモジュールは、更に、前記多重ＴＣＰ接続を介してトランスポートされる、および選択された複数のＴＣＰ接続に個々のベースで関連している複数のクライアントデータストリームをスロットルまたは中止するうち少なくとも１つを前記ウェブサーバ装置ができるようにする、請求項１６に記載のウェブサーバ装置。
【請求項１８】
前記複数のソフトウェアモジュールは、更に、前記ウェブサーバ装置が、
複数の多重ＴＣＰ接続制御コマンドを前記プロキシサーバに送信し、前記プロキシサーバから複数のコマンド応答を受信することができるようにし、前記複数の多重ＴＣＰ接続制御コマンドは、前記多重ＴＣＰ接続を管理するために用いられる、請求項１２から１７のいずれか一項に記載のウェブサーバ装置。
【請求項１９】
ウェブサーバに対するプロキシサーバとして動作するプロキシサーバ装置であって、
プロセッサと、
前記プロセッサに動作可能に結合されたメモリと、
前記プロセッサに動作可能に結合された複数のネットワークポートと、
複数のソフトウェアモジュールを備える複数の命令を記憶しているストレージデバイスと、を備え、
前記複数のソフトウェアモジュールは、
前記プロキシサーバ装置が、
第１ネットワークポートで、複数のクライアントのそれぞれと複数のＴＣＰ接続を確立することと、
前記プロキシサーバ装置と前記ウェブサーバとの間に多重ＴＣＰ接続を確立することであって、前記多重ＴＣＰ接続は、前記プロキシサーバ装置における第２ネットワークポートに結合されたリンクを含む転送パスにおいてデータをトランスポートする、ことと、
前記複数のＴＣＰ接続上で前記複数のクライアントから複数のＴＣＰパケットを受信することと、
前記プロキシサーバ装置を介して前記ウェブサーバへプロキシ処理される複数のＴＣＰパケットを識別することと、
前記プロキシサーバ装置を介してプロキシ処理される、且つそれぞれのクライアントデータストリームの所与のＴＣＰ接続上で受信される前記複数のＴＣＰパケットに含まれるデータをバッファリングすることと、
複数の多重ＴＣＰパケット（複数のＭＵＸ・ＴＣＰパケット）における複数のシーケンシャル実行の複数の前記クライアントデータストリームを備える複数のデータセグメントをカプセル化することであって、前記複数のＭＵＸ・ＴＣＰパケットの少なくとも一部分は、複数のシーケンシャル実行の少なくとも２つの別々のクライアントデータストリームを備える複数のデータセグメントをカプセル化する、ことと、
転送される前記第２ネットワークポートからのアウトバウンドの前記複数のＭＵＸ・ＴＣＰパケットを、前記多重ＴＣＰ接続上で前記ウェブサーバに送信することと、
ができるようにするべく、前記プロセッサによって実行され、
前記複数のソフトウェアモジュールは、
前記プロキシサーバ装置が、更に、
前記ウェブサーバを介してアクセスされるウェブサイトに対するユニバーサルリソースロケータ（ＵＲＬ）にアクセスするべく新たなクライアントから送信されるハイパーテキストトランスポートプロトコル（ＨＴＴＰ）リクエストを受信することと、
前記新たなクライアントと前記プロキシサーバとの間で新たなＴＣＰ接続を確立することと、
前記プロキシサーバで受信された複数のＨＴＴＰリクエストを前記新たなクライアントから前記ウェブサーバへ前記多重ＴＣＰ接続を介して転送すること、および前記ウェブサーバで生成された複数のＨＴＴＰ応答を、前記新たなクライアントに、前記プロキシサーバおよび前記新たなＴＣＰ接続への前記多重ＴＣＰ接続を介して転送することをサポートするべく、前記プロキシサーバおよび前記ウェブサーバの各々において複数のキューを割り当てることと、
ができるようにするべく、前記プロセッサによって実行され、
前記プロキシサーバおよび前記ウェブサーバに割り当てられる前記複数のキューは、新たなクライアントのための前記複数のＨＴＴＰリクエスト及び前記複数のＨＴＴＰ応答の利用のために専用のものである、プロキシサーバ装置。
【請求項２０】
前記複数のソフトウェアモジュールは、
前記プロキシサーバ装置が、更に、
多重化され、前記プロキシサーバ装置と前記ウェブサーバとの間の多重ＴＣＰ接続上で送信され得る複数の同時データストリームの最大数を識別する情報を、前記ウェブサーバから受信することと、
前記複数の同時データストリームの前記最大数に対応する複数のクライアント接続を確立する段階と、
前記ウェブサーバと通信することを望む新たなクライアントからデータを受信することと、
前記新たなクライアントからの前記データをバッファリングすることと、
既存クライアントが前記プロキシサーバ装置と通信することを終了していると判断することに応答して、前記ウェブサーバと新たなクライアント接続を、前記新たなクライアントのためにネゴシエートすることと、
ができるようにするべく、前記プロセッサによって実行される、請求項１９に記載のプロキシサーバ装置。
【請求項２１】
ウェブサーバに対するプロキシサーバとして動作するプロキシサーバ装置であって、
プロセッサと、
前記プロセッサに動作可能に結合されたメモリと、
前記プロセッサに動作可能に結合された複数のネットワークポートと、
複数のソフトウェアモジュールを備える複数の命令を記憶しているストレージデバイスと、を備え、
前記複数のソフトウェアモジュールは、
前記プロキシサーバ装置が、
多重化され、前記プロキシサーバ装置と前記ウェブサーバとの間の多重ＴＣＰ接続上で送信され得る複数の同時データストリームの最大数を識別する情報を、前記ウェブサーバから受信することと、
第１ネットワークポートで、前記複数の同時データストリームの前記最大数に対応する複数のクライアントのそれぞれと複数のＴＣＰ接続を確立することと、
前記プロキシサーバ装置と前記ウェブサーバとの間に多重ＴＣＰ接続を確立することであって、前記多重ＴＣＰ接続は、前記プロキシサーバ装置における第２ネットワークポートに結合されたリンクを含む転送パスにおいてデータをトランスポートする、ことと、
前記複数のＴＣＰ接続上で前記複数のクライアントから複数のＴＣＰパケットを受信することと、
前記プロキシサーバ装置を介して前記ウェブサーバへプロキシ処理される複数のＴＣＰパケットを識別することと、
前記プロキシサーバ装置を介してプロキシ処理される、且つそれぞれのクライアントデータストリームの所与のＴＣＰ接続上で受信される前記複数のＴＣＰパケットに含まれるデータをバッファリングすることと、
複数の多重ＴＣＰパケット（複数のＭＵＸ・ＴＣＰパケット）における複数のシーケンシャル実行の複数の前記クライアントデータストリームを備える複数のデータセグメントをカプセル化することであって、前記複数のＭＵＸ・ＴＣＰパケットの少なくとも一部分は、複数のシーケンシャル実行の少なくとも２つの別々のクライアントデータストリームを備える複数のデータセグメントをカプセル化する、ことと、
転送される前記第２ネットワークポートからのアウトバウンドの前記複数のＭＵＸ・ＴＣＰパケットを、前記多重ＴＣＰ接続上で前記ウェブサーバに送信することと、
ができるようにするべく、前記プロセッサによって実行され、
前記複数のソフトウェアモジュールは、
前記プロキシサーバ装置が、更に、
前記ウェブサーバと通信することを望む新たなクライアントからデータを受信することと、
前記新たなクライアントからの前記データをバッファリングすることと、
既存クライアントが前記プロキシサーバと通信することを終了していると判断することに応答して、前記ウェブサーバと新たなクライアント接続を、前記新たなクライアントのためにネゴシエートすることと
ができるようにするべく、前記プロセッサによって実行されるプロキシサーバ装置。
【請求項２２】
前記複数のソフトウェアモジュールは、更に、前記プロキシサーバ装置が、
複数のＭＵＸ・ＴＣＰパケットのストリームを前記ウェブサーバから前記多重ＴＣＰ接続上で受信することであって、各ＭＵＸ・ＴＣＰパケットは、１または複数のクライアントデータストリームにおける複数のシーケンシャル実行の複数のビットを備える１または複数のデータセグメントをカプセル化する、ことと、
前記複数のＭＵＸ・ＴＣＰパケットにおいてカプセル化された前記１または複数のデータセグメントをデカプセル化することと、
前記複数のクライアントデータストリームを再アセンブルすることと、
所与のクライアントデータストリームに関連しているＴＣＰ接続を識別することと、
前記所与のクライアントデータストリームから抽出されたパケットペイロードデータを、前記所与のクライアントデータストリームと関連しているクライアントを行先としている複数のＴＣＰパケットにおいてカプセル化することと、
前記クライアントに対する前記ＴＣＰ接続上で、行先の前記クライアントへ前記複数のＴＣＰパケットを転送することと、ができるようにする、請求項１９から２１のいずれか一項に記載のプロキシサーバ装置。
【請求項２３】
前記パケットペイロードデータは、複数のハイパーテキストトランスポートプロトコル（ＨＴＴＰ）応答を備える、請求項２２に記載のプロキシサーバ装置。
【請求項２４】
前記複数のソフトウェアモジュールは、更に、前記プロキシサーバ装置が、
前記複数のクライアントを前記プロキシサーバ装置に接続するべく用いられる前記複数のＴＣＰ接続の各々に対して、前記メモリのメモリ空間における複数のキューのそれぞれのセットを割り当てることができるようにし、所与のＴＣＰ接続に対する複数のキューのそれぞれの前記セットは、前記ウェブサーバに前記多重ＴＣＰ接続を介して転送されるべき複数のＴＣＰパケットがバッファリングされる、少なくとも１つの出力キューを有する、請求項２２に記載のプロキシサーバ装置。
【請求項２５】
前記複数のソフトウェアモジュールは、更に、前記プロキシサーバ装置が、
前記複数のＴＣＰ接続の各々に対して前記多重ＴＣＰ接続のそれぞれの帯域幅スライスを割り当てることと、
前記複数のＴＣＰ接続に対して割り当てられた複数の前記帯域幅スライスに従って複数のデータセグメントをプルするための複数の出力キューを選択するキュー選択アルゴリズムを実装することと、ができるようにする、請求項２４に記載のプロキシサーバ装置。
【請求項２６】
前記複数のソフトウェアモジュールは、更に、前記プロキシサーバ装置が、
ＴＣＰ接続を識別している前記ウェブサーバからスロットルコマンドおよび中止コマンドのうちの１つを受信することと、
応答において、前記多重ＴＣＰ接続上でトランスポートされる前記ＴＣＰ接続に関連しているクライアントデータストリームのスロットルおよび中止のうち１つをすることと、ができるようにする、請求項１９から２５のいずれか一項に記載のプロキシサーバ装置。
【請求項２７】
請求項１１に記載のプログラムを記憶しているコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
背景情報マイクロプロセッサの導入以来、これまでに、コンピュータシステムはますます速くなってきている。ムーアの法則（集積回路上のトランジスタの数は、２年毎に２倍になると予測するＩｎｔｅｌ(r)コーポレーションの共同創業者であるＧｏｒｄｏｎ・Ｍｏｏｒｅの１９６５年出版に基づいて）におおよそ従って、その速度はほぼ３０年間の間ほとんど均等な速度で増えてきている。同時に、メモリおよび不揮発性ストレージの両方のサイズもまた一定して増加してきており、それによって現在の多くのパーソナルコンピュータはつい１０〜１５年前のスーパーコンピュータよりも強力である。更に、ネットワーク通信の速度にも、同様に、複数の天文学的な高速化が見られている。
【０００２】
プロセッサ速度、メモリ、ストレージ、およびネットワーク帯域幅技術における複数の増加は、これまでに増え続ける容量を用いる複数のネットワークの構築および配置をもたらしてきている。より最近になり、アマゾン（Ａｍａｚｏｎ）（例えば、Ａｍａｚｏｎ  Ｅｌａｓｔｉｃ  Ｃｏｍｐｕｔｅ  Ｃｌｏｕｄ（ＥＣ２）およびＳｉｍｐｌｅ  Ｓｔｏｒａｇｅ  Ｓｅｒｖｉｃｅ（Ｓ３））並びにマイクロソフト（アジュールおよびオフィス３６５）によって提供されるものの等、クラウドに基づく複数のサービスの導入は、パブリックネットワークインフラストラクチャに対する追加のネットワーク構築、および大量データセンタの配置の追加をもたらし、プライベートネットワークインフラストラクチャを利用するこれらのサービスをサポートする。更に、複数のモバイルネットワークデータサービスの新たな世代（つまり、４Ｇ）は、近い将来、複数の地上通信線ネットワークの利用にかなり影響を与えることが予期されている。これらの、および他の考慮の結果として、複数のコンピュータネットワークの利用は、あまり遠くない将来、速い速度で成長し続けることが予期されている。
【０００３】
インターネットトラフィックの大部分は、ハイパーテキストトランスポートプロトコル（ＨＴＴＰ）またはＨＴＴＰＳ（ＨＴＴＰの暗号化され、安全なバージョン）を用いる。基本的に、ＨＴＴＰは、クライアント（例えば、ユーザデバイス上のウェブブラウザ）とＨＴＴＰサーバ（例えば、ウェブサイトへのアクセスをホスティングするおよび／または提供するサーバにおいて実行されているウェブサーバアプリケーションであって、本明細書において用いられる「ウェブ」サーバおよび「ＨＴＴＰサーバ」という用語は、交換可能に用いられ得る）との間の通信を含む。ＨＴＴＰは、クライアントサーバコンピューティングモデルにおいてリクエスト‐応答プロトコルとして機能する。典型的なＨＴＴＰリクエスト‐応答シーケンスにおいて、クライアントは、サーバにＨＴＴＰリクエストメッセージを提出する。複数のＨＴＭＬファイルおよび他のコンテンツ等の複数のリソースを提供する、またはクライアントの代わりに他の複数の機能を実行するサーバは、そのクライアントに応答メッセージを戻す。図１は、複数のネットワーク要素、複数のクライアントデバイス、複数のサーバ、および複数のサービスを含む、選択された複数のインターネットコンポーネントを示すインターネットアーキテクチャ１００を示す。インターネットクラウド１０２として一般的に図示されているインターネットは、複数のリンク１０８によって相互接続されているゲートウェイ１０４およびスイッチ１０６を含む複数の相互接続されたネットワーキング要素の大規模な集合である。複数の携帯電話（クライアント１１０および１１２）、タブレット（クライアント１１４）デスクトップコンピュータ（クライアント１１６）、およびラップトップ（クライアント１１８および１２０）によって図示されている複数のクライアントデバイス（クライアントが、デバイス自体またはそのデバイスにおいて実行されているアプリケーションを指しているかもしれないことを認識したうえで「複数のクライアント」）は、一般的にインターネットサービスプロバイダ（ＩＳＰ）またはモバイルサービスプロバイダ（モバイルネットワークを介してインターネットにアクセスしている場合）によって操作されるゲートウェイ１０４を介してインターネット１０２に接続される。簡略化のため、および乱雑さを回避するべく、複数のクライアントデバイスとゲートウェイとの間の複数の接続は、両矢印として示され、実際のところ、複数のクライアントデバイスと複数のゲートウェイとの間において様々なネットワーキング要素があり、ゲートウェイに帰する機能は、１または複数のネットワーク要素において実装され得る。
【０００４】
様々なサーバも、また、ウェブサーバ１２２およびサードパーティ電子メールサーバ１２４によって図示されるように、インターネット１０２に接続されている。ウェブサーバ１２２は、ウェブサイト１２６への「フロントエンド」アクセスを提供する。検索サイト、ニュースサイトおよびｅコマースサイト等のより大きなウェブサイトは、ウェブサイトのトラフィックを処理するべく、数十、数百、さらには数千のウェブサーバを有し得る。サードパーティ電子メールサーバ１２４は、実際のところ、１または複数の「中間」層における複数の電子メールアプリケーションサーバまたは同様のものに結合されているフロントエンド層において、複数のウェブサーバを介して実装され得る概念的エンティティであり、それらは、今度はバックエンド層において複数のデータストアに接続されている。マイクロソフトＨｏｔｍａｉｌ、Ｇｏｏｇｌｅ  Ｇｍａｉｌ、およびヤフーメール等の大きなサードパーティ電子メールサービスは、データセンタ１２８によって図示されるように、複数の大きなデータセンタ（サーバファームともまた称される）を用いて実装される。
【０００５】
クライアントとサーバとの間のＨＴＴＰ／ＨＴＴＰＳ通信を促すべく、ＴＣＰ（伝送制御プロトコル）接続が、最初に確立される。ＴＣＰはインターネットプロトコルスイート（ＩＰ）の複数のコアプロトコルのうちの１つであり、ＴＣＰ接続もまた、ＴＣＰ／ＩＰ接続と称されることもある。ＴＣＰは、ＴＣＰ接続上の通信においてリンクされているクライアントおよびサーバに割り当てられた複数のＩＰアドレスをそれぞれ備える一対のＴＣＰエンドポイント（例えば、クライアントおよびサーバ）の複数のＩＰアドレスを用いる。
【０００６】
ＴＣＰは信頼性のあるトランスポートプロトコルを提供する一方、それは、複数のＴＣＰ／ＩＰパケットがどのようにクライアントとサーバとの間でルーティングされるべきか規定しない。例えば、クライアント１１０によって接続されたゲートウェイとウェブサーバ１２２に接続されたゲートウェイとの間に、図１において示されるように、２つのマルチホップ（ｍｕｌｔｉ−ｈｏｐ）パス（一方は実線、他方は破線）がある。トラフィックのいくつかのクラスに対して複数のパケット「フロー」が所与のパスに沿って転送され得る一方、インターネットトラフィックの大半は、パケットのための転送パスは予め規定されていないベストエフォート原理でのホップ・ツー・ホップで転送される。
【０００７】
所与のＨＴＴＰサーバは、何千もの同時ＴＣＰ接続をサポートしてよく、各接続は、異なるクライアントＴＣＰエンドポイントを持つ。これは、各クライアント接続に対して複数のタイムアウトタイマーおよび複数の別個のバイトシーケンス番号空間等の多くのオーバヘッドを生成する。更に、各ＨＴＴＰサーバは、限りのある帯域幅制限を有し、このことにより複数のパケットがＨＴＴＰサーバでドロップされることになり得る。ＴＣＰが輻輳制御をサポートする一方、その複数の輻輳制御メカニズムは、個別のＴＣＰ接続において実装され、サーバのワークロードの機能としてはまとめて管理されない。
【図面の簡単な説明】
【０００８】
本発明の上述の態様および付随する多くの利点は、同様の参照数字が、異なるように明記されていない限り様々な図に亘って同様の複数の部分を指している、そうでなければ指定される添付の図面と併せて、以下の詳細な説明を参照することによってより良好に理解され、より容易に理解されるであろう。
【図１】インターネットの複数の選択されたコンポーネントのアーキテクチャ図を示す概略図である。
【図２ａ】プロキシサーバとウェブサーバとの間の多重ＴＣＰ接続を用いる例示的なネットワーク構成を示す概略図である。
【図２ｂ】複数の個別のＴＣＰ接続および図２ａの多重ＴＣＰ接続を更なる詳細を示すリンク接続図である。
【図２ｃ】プロキシサーバが複数の多重ＴＣＰ接続を介してウェブサーバに接続された、図２ｂに対する選択的な構成を示すリンク接続図である。
【図２ｄ】プロキシサーバがプロキシと各ウェブサーバとの間の個別の多重ＴＣＰ接続を持つ、複数のウェブサーバに対するプロキシとして用いられる、図２ｂに対する選択的な構成を示すリンク接続図である。
【図３ａ】一実施形態に係る、複数のクライアントから受信された複数のＴＣＰパケットを、多重ＴＣＰ接続伝達データセグメントを介してウェブサーバに転送することに関連しプロキシサーバによって実装される複数のＴＣＰパケットセグメントデータ転送コンポーネントを示す概略図である。
【図３ｂ】一実施形態に係る、多重ＴＣＰ接続を介してプロキシサーバから受信される複数のＴＣＰパケットデータセグメントを処理することに関連しウェブサーバによって実装される複数のサーバ側コンポーネントを示す概略図である。
【図４ａ】一実施形態に係る、ウェブサーバから送信され、プロキシサーバで、多重ＴＣＰ接続上で受信された複数の多重ＴＣＰパケットデータセグメントを処理するための複数のコンポーネントを示す概略図である。
【図４ｂ】再アセンブルされたＴＣＰパケットがパケット出力バッファ内にロードされる、プロキシサーバで、多重ＴＣＰ接続上で受信される複数の多重ＴＣＰパケットデータセグメントを処理するためのオプションである構成を示す概略図である。
【図４ｃ】一実施形態に係る、多重ＴＣＰ接続上で複数の多重データセグメントとして複数のＴＣＰパケットをウェブサーバからプロキシサーバへ送信することに関連してパケット処理を示す概略図である。
【図５】多重ＴＣＰパケットの一実施形態を示すブロック図である。
【図６】クライアントと、プロキシサーバと、ウェブサーバとの間で交換される複数のメッセージの例示的なセットを示すメッセージフロー図である。
【図７】クライアントと、プロキシサーバと、ウェブサーバとの間で交換される複数のコマンドおよび複数の制御メッセージの複数の例示的なセットを示すメッセージフロー図である。
【図８ａ】複数のサーバブレードが設置されている例示的なブレードサーバ筐体の前方等尺図である。
【図８ｂ】図８ａのブレードサーバ筐体の後方等尺図である。
【図８ｃ】図８ａおよび８ｂに対応する複数のラックマウント式ブレードサーバ筐体が設置されている、例示的なブレードサーバラックの前方等尺図である。
【図９】一実施形態に係る、一般的なサーバブレードの複数のコンポーネントの詳細を示す図である。
【発明を実施するための形態】
【０００９】
単一接続上で多くのクライアントストリームを多重化するための方法および装置の複数の実施形態が、本明細書において説明される。以下の記述において、本発明の複数の実施形態の深い理解を提供するべく様々な具体的な詳細が示される。しかし、関連技術の当業者であれば、具体的な詳細の１または複数が無くても、またはその他の方法、コンポーネント、材料等を用いて、本発明が実施できることは認識するであろう。他の複数の場合において、本発明の態様を不明瞭にすることを回避するべく、周知の構造、材料、またはオペレーションは示されず、または詳細に説明されていない。
【００１０】
本明細書を通じて参照する「一実施形態」または「実施形態」は、実施形態に関連して説明されている特有の特徴、構造、または特性が本発明の少なくとも１つの実施形態に含まれていることを意味する。従って、「一実施形態において」または「実施形態において」という文言が本明細書全体を通して様々な個所で現れても、必ずしも全てが同じ実施形態を指す訳ではない。更に、複数の特有の特徴、構造、または特性は、１または複数の実施形態において任意の好適な態様で組み合わされてよい。
【００１１】
明確化のため、本明細書の複数の図における複数の個別のコンポーネントもまた、特定の参照番号によってよりむしろ、図においてそれらの複数のラベルによって称されてもよい。更に、特定のタイプのコンポーネントを指す複数の参照番号は（特定の構成要素とは対照的に）、「一般的な」を意味する「（ｔｙｐ）」が続く参照番号で示されてよい。これらのコンポーネントの構成は、存在し得るが、描画図では簡略化および明確化のために示されず、あるいは、そうでなければ、別個の参照番号でラベル付けされない複数の類似のコンポーネントの典型であることを理解されるであろう。逆に、「（ｔｙｐ）」は、そのコンポーネント、要素等を意味するとして解釈されるべきではなく、開示される機能、実装、目的等のために一般的に用いられる。
【００１２】
本明細書で説明され、示される複数の実施形態の態様に従って、複数の技術が、複数のクライアントからの複数の通信が単一ＴＣＰ接続上でトランスポートされる、複数の多重ＴＣＰ接続を実装するために開示される。これは、クライアント毎に複数の個別のＴＣＰ接続を維持することに必要なオーバヘッドを大幅に低減する。更に、あたかもクライアントとサーバとの間で個別のＴＣＰ接続が用いられたかのような、処理されるべき多重ＴＣＰ接続内のクライアントＴＣＰトラフィックに対応する複数の個別のフローを可能にする新規のフロー制御技術もまた提供される。
【００１３】
多重ＴＣＰ実装の一態様は、複数の個別のＴＣＰ接続を用いてクライアントと直接通信するプロキシサーバを用いることである。クライアントサーバ通信のサポートに加えて、ＨＴＴＰは、複数の中間ネットワーク要素が、複数のクライアントと複数のサーバとの間の通信を向上すること、または可能にすることを許容するように設計される。高トラフィックウェブサイトは、しばしば、応答時間を向上するべく、複数の上流サーバの代わりにコンテンツを提供する複数のウェブキャッシュサーバから恩恵を受ける。加えて、複数のプライベートネットワーク境界にある複数のＨＴＴＰプロキシサーバは、グローバルのルーティング可能なアドレス無しに、複数のメッセージを複数の外部サーバへリレーすることによって、複数のクライアントに対する通信を容易にする。複数のプロキシサーバは、また、Ｇｏｏｇｌｅおよびアマゾン（Ａｍａｚｏｎ）によってホスティングされるもの等の大きなウェブサイトによって広く用いられる。
【００１４】
図２ａおよび２ｂは、例示的な多重ＴＣＰ接続実装の複数の態様を示すのに用いられるネットワークアーキテクチャおよびリンク接続図をそれぞれ示し、複数のクライアントはプロキシサーバ２００と複数の個別のＴＣＰ接続上で通信し、それは、プロキシサーバ２００とウェブサーバ１２２との間の多重接続２０２を介して、対応するＨＴＴＰトラフィックを転送するように構成されている。前のように、クライアント１１０、１１２、１１４、１１６、１１８および１２０は、複数のインターネットゲートウェイまたは同様のもの等のＩＳＰまたは複数のモバイルサービスプロバイダ設備を介してインターネット１０２に接続される。これらのクライアントの各々は、ウェブサーバ１２２とＨＴＴＰ接続を確立することを望む。これは、例えば、ｗｗｗドットＡｍａｚｏｎドットｃｏｍ等、ウェブサーバ１２２が関連するウェブサイトのＵＲＬ（ユニフォームリソースロケータ）に入る複数のクライアントデバイスの複数のユーザによって一般的に達成されるであろう。インターネット上の複数のクライアントおよびサーバは、ＩＰアドレス（例えばＩＰｖ４またはＩＰｖ６）を用いることから、複数のＵＲＬは対応するＩＰアドレスに変換される必要がある。複数のＵＲＬと複数のＩＰアドレスとの間のマッピングは、ドメインネームサーバ（ＤＮＳ）によって容易となる。ＡｍａｚｏｎおよびＧｏｏｇｌｅ等の大きなサイトに関して、単一のＩＰアドレスを持つ単一のサーバを用いてクライアントトラフィックを処理することは不可能であるだろう。場合によっては、複数のプロキシサーバがこの問題に対処するべく用いられる。一般的なプロキシサーバスキームにおいて、ＵＲＬに名目上関連しているウェブサーバに対してＩＰアドレスを戻すよりむしろ、ＤＮＳ検索によって提供されるネットワークアドレスは、プロキシサーバのアドレスを代わりに戻す。
【００１５】
図２ｂに示されるように、クライアント１１０、１１２、１１４、１１６、１１８および１２０の各々は、それぞれのＴＣＰ接続１１０Ｔ、１１２Ｔ、１１４Ｔ、１１６Ｔ、１１８Ｔおよび１２０Ｔを介してプロキシサーバ２００に接続されている。従来のプロキシサーバの使用において、プロキシサーバは、各クライアント接続に対してウェブサーバとのそれぞれのＴＣＰ接続を維持するであろう。１つの一般のアプローチでは、プロキシサーバは単に、複数のＴＣＰ／ＩＰヘッダにおける複数のソースおよび行先ＩＰアドレスを変更し、元の複数のパケットを転送する（複数のソースおよび行先アドレスにおける複数の変更を欠く）。複数のクライアントのおよびウェブサーバの視点から、そのプロキシサーバの存在は透明であり、それらが、プロキシサーバが用いられていることを完全に認識していないことを意味する。
【００１６】
従来のプロキシサーバのアプローチは、いまだにウェブサーバと通信しているクライアント毎に維持される個別のＴＣＰ接続を必要とする。対照的に、図２ａおよび２ｂに示される実施形態では、ＴＣＰ接続１１０Ｔ、１１２Ｔ、１１４Ｔ、１１６Ｔ、１１８Ｔおよび１２０Ｔ上でトランスポートされるＴＣＰトラフィックは、多重ＴＣＰ接続２０２を用いてプロキシサーバ２００とウェブサーバ１２２との間で多重化される複数のクライアントデータセグメントに分割される。多重ＴＣＰ接続を実装することの一態様は、クライアントデバイスとサーバとの間の各ＴＣＰフローに対するトラフィックを処理するべく、様々なバッファキューの割り当ておよびオペレーションである。更に、フロー管理スキームは、帯域幅割り当て１１０ＢＷ、１１２ＢＷ、１１４ＢＷ、１１６ＢＷ、１１８ＢＷおよび１２０ＢＷによって図示されるように、多重ＴＣＰ接続の帯域幅のそれぞれの部分を割り当てるべく、これらのキューに関連して実装される。
【００１７】
図２ｃは、プロキシサーバ２００がｍ個の多重ＴＣＰ接続２０２１、２０２２、２０２ｍを介してウェブサーバ１２２に接続される、図２ｂに対する選択的な構成を示すリンク接続図である。入ってくる複数のＴＣＰ接続（つまり、複数のクライアントからプロキシサーバまで）の数に応じて、ＴＣＰ接続の数が増大するにつれて複数の減少するリターンがあってもよい。更に、プロキシサーバおよびウェブサーバの各々は、一般的に複数のネットワークポートを有し、各々には、別個のＩＰアドレスが割り当てられ、ＴＣＰエンドポイントであり得ることが確認される。従って、平行して動作しているプロキシサーバとウェブサーバとの間で複数の多重ＴＣＰ接続を実装することが有利であろう複数の状況がある。
【００１８】
図２ｄは、プロキシサーバ２００が、プロキシと各ウェブサーバとの間で個別の多重ＴＣＰ接続で、ｋ個のウェブサーバ１２２１、１２２２２、１２２ｋに対してプロキシとして用いられる図２ｂに対する他方の選択的な構成を示すリンク接続図である。プロキシサーバのワークロードは、ウェブサーバのそれよりも一般的に少ない（クライアント接続毎のベースで）であろうことから、複数のウェブサーバに対するプロキシとして動作するプロキシサーバを用いることが有利であろう複数の実装環境があってよい。図２ｂ、２ｃおよび２ｄに示される構成に加えて、多重ＴＣＰ接続を用いてウェブサーバにプロキシサーバを接続する他の構成が、実装されてもよい。
【００１９】
図３ａは、一実施形態に従って、クライアント１１０、１１２、１１４、１１６、１１８および１２０から受信される複数のインバウンドＴＣＰパケットに関連してプロキシサーバ２００によって実行される複数の処理および転送オペレーションを概略的に描写する。複数の処理オペレーションの第１のセットは、複数のＴＣＰ接続をサポートする従来のＴＣＰエンドポイントによって実行されるものに類似している。示されるように、ＴＣＰパケット３００のシーケンスは、クライアントデバイスとプロキシサーバ２００との間で確立された対応するＴＣＰ接続上で、所与のクライアントデバイスからトランスポートされる。複数のパケットの複数のストリームが、図３ａにおいて例示の複数の目的で示される。所与のＨＴＴＰリクエストまたは応答に対し、クライアントは、ウェブサーバに１または複数のＴＣＰパケットを送信してよく、時間が経つにつれ、これは、（受信デバイスの視点から）複数のパケットのストリームとして表われ得るが、一方、マルチメディアコンテンツに関連しないＨＴＴＰトラフィックは、一般的に、ストリーミング接続よりもむしろステートレスなＨＴＴＰ接続を用いる。更に、クライアントからの大部分のＨＴＴＰトラフィックは、比較的小さい複数のＨＴＴＰリクエストから成り、それはしばしば単一のＴＣＰパケットにおいてトランスポートされ得る。各ＴＣＰパケット３００は、ＨＴＴＰリクエスト等のパケットペイロードデータ３０１を含む。
【００２０】
実例として、クライアント１１０、１１２、１１４、１１６、１１８および１２０の各々は、それぞれのＴＣＰ接続１１０Ｔ、１１２Ｔ、１１４Ｔ、１１６Ｔ、１１８Ｔおよび１２０Ｔ上で複数のパケットのシーケンスを送信することとして図示される。ＴＣＰ接続をサポートするべく、ＴＣＰポート（物理的ポートではなく、ソフトウェアポート）は、ＴＣＰ接続の各エンドで開かれ、そうすることによって、各ＴＣＰ接続（プロキシサーバ２００の視点から）は、クライアントのＩＰアドレスおよびＴＣＰポート番号の組み合わせによって識別され得る。（所与のクライアントは、複数のＴＣＰポートが用いられる場合、サーバと複数の同時ＴＣＰ接続を確立してよいことに留意されたい。）一実施形態では、クライアントＩＤ（識別子）マッピングテーブル３０２が、クライアントＩＰアドレス／ＴＣＰポート番号の複数の組み合わせを関連する複数のクライアントＩＤ値にマッピングするべく、プロキシサーバ２００によって用いられる。例示的な目的で、本明細書の図において、複数のクライアントＩＤは、例えば、クライアント１１０ＩＤがクライアント１１０に対するクライアントＩＤである等（ＴＣＰ接続１１０Ｔを用いる場合）、「クライアント」＋そのクライアントの参照番号＋「ＩＤ」によって示される。
【００２１】
従来のＴＣＰエンドポイントアーキテクチャと同様、入力キュー３０４が（図３ａにおける、クライアントＩＤによって識別されるように）各ＴＣＰ接続によって割り当てられる。ＴＣＰ接続入力キュー（バッファとしてもまた称される）が、複数のパケットが受信されると一時的に複数のパケットをバッファリングし、あらゆる順序付けされていない複数のパケットを、パケットの複数のＴＣＰヘッダにおけるＴＣＰバイトシーケンスデータを用いて再度順序付けするために用いられる。更に、ＴＣＰは、ドロップされたパケットを検出するためのメカニズムを用い、任意のドロップされたパケットは、ＴＣＰソース（この例においてはクライアント）から再送信される必要がある。簡略化のためおよび便宜上、複数の入力キュー３０４は、各ＴＣＰ接続に対するそれぞれの単一のキューとして図示されている。実際のところ、それらは、ＴＣＰエンドポイントにおけるメモリにおいて実装される１または複数のバッファまたはキューを用いて実装され得る。一般に、ネットワークアダプタアーキテクチャに応じて、その入力キューは、ソフトウェア層（例えば、ソフトウェアネットワーキングスタックにおけるＴＣＰ層）を介して実装されてよく、あるいはネットワークアダプタにおける埋め込みロジックまたはその２つの組み合わせによって処理されてよい。
【００２２】
シーケンシャル実行の複数のＴＣＰパケットが入力キュー３０４において検出されている場合、そのシーケンシャル実行の全てまたは一部分は、ＴＣＰポートに関連している出力キュー３０６内へ転送（Fwd）される。あるいは、出力キュー３０６は、関連している入力キュー３０４からの複数のパケットの複数のシーケンシャル実行を「プル」するように構成され得る。一実施形態では、複数の出力キュー３０６の各々は、特定のＴＣＰクライアント接続上で送信されたパケットペイロードデータのシーケンシャル実行を維持するであろう。更に、一実施形態では、これらのＴＣＰ／ＩＰヘッダは、複数のクライアントデータストリーム３０７によって図示されるように、パケットペイロードデータから取り去られ、複数のペイロード描写マーカーがそのビットストリームに追加され、ここで、複数の実行のビットの間のパイプ記号「｜」は、パケットペイロードデータの間の描写を表す。代替のスキームにおいて、複数のＴＣＰ／ＩＰヘッダは複数のクライアントデータストリームに留まるが、ウェブサーバ１２２によるその次の処理の間に取り去られ、無視される。
【００２３】
一実施形態では、データの複数のセグメント（複数のデータセグメント）を備える複数のビットストリームの複数のシーケンシャル実行は、プロキシサーバ２００とウェブサーバ１２２との間で送信されるように構成されている複数のＴＣＰパケット３０８において多重化（ＭＵＸ）される。ここで用いられる「ＭＵＸ・ＴＣＰ」という用語は、これらのパケットを複数のクライアントから受信される複数のＴＣＰパケット３００から区別するためのものであり、構造上、複数のＭＵＸ・ＴＣＰパケットは、多重ＴＣＰ接続上でのトランスポートに関連するデータセグメントの処理を促進するための埋め込みヘッダ情報を含む複数の従来のＴＣＰパケットを備え、それらの更なる詳細は図５に示され、以下において論じられる。好ましくは、複数のＭＵＸ・ＴＣＰパケット３０８は可能な限り大きく、従ってカプセル化で失われる相対的な帯域幅オーバヘッドを低減する。例えば、一実施形態では、複数のジャンボＴＣＰパケットおよび複数のジャンボイーサネット（登録商標）フレームが用いられる。更に、複数のＭＵＸ・ＴＣＰパケットのサイズは、それらの複数のカプセル化されたデータセグメントの集合的サイズを収容するように変化し得る。パッデイングもまた、適用可能ならば、複数のＭＵＸ・ＴＣＰパケットにおいて実装されてよい。
【００２４】
一実施形態では、クライアント１１０、１１２、１１４、１１６、１１８および１２０から受信されたＴＣＰパケットペイロードデータに対応する複数のビットストリームデータの複数のシーケンシャル実行を備える複数のデータセグメントは、カプセル化され、以下のやり方で多重ＴＣＰ接続２０２上で送信される。プロキシサーバ２００は、ＴＣＰアウトバウンドストリームＭＵＸ、及びキューセレクタ３１２、アウトバウンドパケットアセンブリブロック３１４、イーサネット（登録商標）フレーミングブロック３１６、および出力イーサネット（登録商標）ポートキュー３１８を含むアセンブリロジック３１０を含む。上述したように、複数のクライアント出力キュー３０６の各々は、（特定のキューが空になっていない限り）ＴＣＰパケットペイロードビットストリームデータのシーケンシャル実行を含むであろう。また、図２ｂを参照して上述したように、クライアント１１０、１１２、１１４、１１６、１１８および１２０の各々は、それぞれの帯域幅割り当て１１０ＢＷ、１１２ＢＷ、１１４ＢＷ、１１６ＢＷ、１１８ＢＷ、および１２０ＢＷを受信する。
【００２５】
帯域幅割り当ては、キューセレクタ３１０によって（以下に説明されるように、プロキシサーバ２００およびウェブサーバ１２２の両方におけるロジックと組み合わせて）管理され、それは、どのクライアント出力キュー３０６から所与のＴＣＰパケット３０８においてカプセル化される複数のデータセグメントをプルするべきであるかを選択する。ラウンドロビン、重み付けされた、または重み付けされていないフェアキュー、キューフィルレベル等に基づいた選択等、様々なタイプの複数の選択アルゴリズムが使用されてよい。複数のクライアントに割り当てられた帯域幅スライスは、複数のトラフィックパターンにおける複数の変化および他を考慮し、動的に変更され得る。複数の新たに接続されたクライアントとプロキシサーバ２００との間で新たなクライアントＴＣＰ接続が確立される場合、クライアント入力キュー３０４およびクライアント出力キュー３０６は、動的に割り当てられることに更に留意されたい。同様に、ＴＣＰ接続が閉じられていることが検出された場合、そのＴＣＰ接続に関連しているクライアント入力キュー３０４およびクライアント出力キュー３０６に対して割り当てられた対応するバッファ空間は、新たなＴＣＰ接続に対して再割り当てされるべく、リリースされる。
【００２６】
キューセレクタ３１２によってクライアント出力バッファ３０６からプルされる複数のデータセグメントを備えるシーケンシャル実行の複数のビットは、アウトバウンドパケットアセンブリブロック３１４によってＭＵＸＴＣＰパケット３０８にカプセル化される。一実施形態では、多重ＴＣＰ接続２０２は、プロキシサーバ２０２とウェブサーバ１２２との間でトランスファーされるＭＵＸ・ＴＣＰパケット３０８に適用されると従来のＴＣＰ接続として動作させられる。しかしながら、プロキシサーバ２００でのパケットストリームの生成およびウェブサーバ１２２で受信されたパケットストリームの処理の両方は、非従来的な複数の技術を用いる。
【００２７】
図５は、ＭＵＸ・ＴＣＰパケット３０８の一実施形態を図示し、それは、ＭＵＸ・ＴＣＰ／ＩＰヘッダ３０８Ｈ、続いてｎ個のカプセル化されたデータセグメント３０９１、...３０９ｎ、続いてＴＣＰフッタ３０８Ｆパケットペイロード３０８Ｐを含む。一実施形態では、ＭＵＸ・ＴＣＰ／ＩＰヘッダ３０８Ｈは、プロキシサーバ２００およびウェブサーバ１２２に対する複数のソースおよび行先ＩＰアドレス、ＴＣＰバイトシーケンス番号等を含む複数のかっこにおいて示される複数の従来のＴＣＰ／ＩＰヘッダフィールド、およびＴＣＰ／ＩＰヘッダにおいて選択的フィールドに追加され得るいくつかの追加パラメータを備える。一実施形態では、複数のパラメータは、データ／制御フラグ、クライアントＩＤ、バイトシーケンス番号、および長さ（Ｌｅｎ）を含む。複数のパラメータは、複数の個別のフィールドに埋め込まれ、および／またはエンコードされてよく、そうすることによって、単一のフィールドを含む、より少ない数のフィールドに埋め込まれ得る。別のオプションとして、複数のパラメータは、パケットペイロード３０８Ｐの初めに位置しているパラメータストリングまたは同様のものにおいてエンコードされてよい。示される実施形態では、データセグメント３０９１...３０９ｎの各々は、クライアントＩＤ、セグメント長さ、およびバイト（シーケンス）番号を備えるヘッダ３１１を含む。選択的なデリミターデータが、複数のイーサネット（登録商標）フレーム（例えば、複数の１または複数の０のストリング等、予め定められたビットシーケンス）を分離するべく用いられるデリミターデータに類似して、各データセグメント３０９の最後に追加され得る。バイトシーケンス番号は、ＭＵＸ・ＴＣＰパケット３０８がドロップされ再送信される必要がある場合に、ビットストリームにおいてバイトシーケンスを再度順序付けするべく用いられる。
【００２８】
１または複数のＭＵＸ・ＴＣＰパケット３０８は、従来のやり方で、イーサネット（登録商標）フレーミングブロック３１６におけるイーサネット（登録商標）フレームにおいてカプセル化される。好ましくは、複数のジャンボイーサネット（登録商標）フレームは、イーサネット（登録商標）フレーミングのオーバヘッドに起因して失われる帯域幅を低減するべく用いられてよい。複数のイーサネット（登録商標）フレームは、次に、出力イーサネット（登録商標）ポートキュー３１８においてキューに入れられ、その次にサーバ１２２にストリームされる。
【００２９】
図３ｂは、多重ＴＣＰ接続２０２上でプロキシサーバ２００から受信される複数のＭＵＸ・ＴＣＰパケット３０８がどのようにウェブサーバ１２２において処理されるかを図示する。パケット処理は、ＴＣＰ入力ストリームＤｅＭＵＸおよび分離ロジック３２０を介して実装され、イーサネット（登録商標）入力ポートバッファ３２２においてバッファリングされている、受信された複数のＭＵＸ・ＴＣＰパケット３０８で開始する。ブロック３２４において、イーサネット（登録商標）デフレーミング及びデパケット化が、複数のＭＵＸ・ＴＣＰパケット３０８をそれらのイーサネット（登録商標）フレームから抽出するべく実行される。薄い灰色の影で図示されるように、イーサネット（登録商標）入力ポートバッファ３２２および複数のイーサネット（登録商標）デフレーミングおよびデパケット化オペレーションによって実行される複数のオペレーションは、イーサネット（登録商標）入力ポートで受信される複数のＴＣＰパケットにおいて実行される複数の従来のオペレーションである。簡略化のため不図示であるが、ＴＣＰプロトコルを実装することに関する追加の複数のオペレーションが、また、周知の複数の技術を用いて実行されるであろう。
【００３０】
後続の複数の処理オペレーションは、非標準的であり且つ新規である。カプセル化されたデータセグメント分離ブロック３２６において、デパケット化された複数のＴＣＰパケット３００は、クライアントＩＤ毎にデータセグメントデータのビットストリームを出力するべく分離される。受信された、所与のクライアントに対して複数のシーケンシャル実行の複数のビットを備える複数のデータセグメントは、次に、キューセレクタ３２８によって、データセグメントヘッダ３１１に含まれるクライアントＩＤに関連する適切なＴＣＰポート入力キュー３３０の中へプッシュされる。次に、複数のデータセグメントは順に処理され、それの元のフォーマットのパケットペイロードデータ３０１Ｒを含む再アセンブルされた複数のクライアントデータストリーム を生成する。再アセンブルされた複数のクライアントデータストリーム１１０Ｒ、１１２Ｒ、１１４Ｒ、１１６Ｒ、１１８Ｒおよび１２０Ｒによって図示されるように、各ＴＣＰ接続のクライアントデータストリームは、ソフトウェア処理スタック３３２で受信される。ソフトウェア処理スタック３３２に関して複数の示されるコンポーネントは、クライアントストリーム処理ブロック３３４およびＨＴＴＰ／ＨＴＴＰＳ層３３８を含む。クライアントストリーム処理ブロック３３４は、ＨＴＴＰデータを備えるパケットペイロードデータ（例えば、ＨＴＴＰリクエスト）を抽出し、ＨＴＴＰ／ＨＴＴＰＳ層３３８へそれを転送するべく用いられる。一実施形態では、クライアントストリーム処理ブロック３３４は、ＨＴＴＰ／ＨＴＴＰＳ層３３８の視点から、ＨＴＴＰデータは従来のＴＣＰパケットを用いて送信されたように、実装される。ＨＴＴＰ／ＨＴＴＰＳ層３３８は、複数の従来のＨＴＴＰまたはＨＴＴＰＳサーバ機能（接続がＨＴＴＰまたはＨＴＴＰＳ接続であるかに応じて適用可能であれば）を実行するように構成されているＨＴＴＰ／ＨＴＴＰＳサーバ機能ブロック３４０を含む。実例として、これは、クライアントＩＤ毎にＨＴＴＰクライアントセッション状態３４２によって更に図示され、ＨＴＴＰ自体は処理状態を把握しないことが認められるが、一方で、ＨＴＴＰストリーミング接続は持続的な接続をサポートする。
【００３１】
ウェブサーバ１２２からクライアント１１０、１１２、１１４、１１６、１１８および１２０への、プロキシサーバ２００を介した反転方向におけるトラフィックフローをサポートするべく、図３ａおよび３ｂに示される複数の類似のコンポーネントおよびロジックが、図４ａ、図４ｂおよび図４ｃにおいて示されるように、スワップされる。これらの図において、同様の番号付けがされた複数のコンポーネントは、類似の複数の機能を実行する。更に、以下の複数の条件が追加される。
【００３２】
更に詳細には、ウェブサーバ１２２またはウェブサーバ１２２に接続された他のサーバ（例えば、アプリケーションサーバ）において実行されている複数のソフトウェアアプリケーションは、複数のクライアントから送信される複数のＨＴＴＰリクエストを受信し、複数のクライアントによって戻されることになっている複数のＨＴＴＰ応答を生成する。ＨＴＴＰトラフィックのいくつかは、ＨＴＴＰおよびＴＣＰ接続を確立することおよび閉じること等、ＨＴＴＰ／ＨＴＴＰＳサーバ機能ブロック３４０によって全体的に処理され得る。他の複数の場合において、入ってくるＨＴＴＰ通信に関連しているデータペイロードは、そのＨＴＴＰ層において分離され、適用可能なアプリケーションに転送される。反転方向において、複数のアプリケーションは、複数のＨＴＴＰクライアントに戻されるＨＴＴＰ応答データを生成する。
【００３３】
ＨＴＴＰ応答データは、ＨＴＴＰ層３３８で受信され、適用可能なＨＴＴＰヘッダが（ＨＴＴＰ応答のタイプに応じて）追加される。次に、パケットペイロードデータ３０３を備えるＨＴＴＰ応答は、クライアントデータストリーム１１０Ｔ、１１２Ｔ、１１４Ｔ、１１６Ｔ、１１８Ｔおよび１２０Ｔによって図示されるように、アウトバウンドクライアントデータストリームに追加される。各ＴＣＰ接続に対するアウトバウンドクライアントデータストリームは、適切なクライアント出力キュー３４６においてバッファリングされる。クライアントＩＤ・ＴＣＰ接続をオープンすることに関連し、クライアント出力キュー３４６は、ウェブサーバ１２２によって割り当てられる。一実施形態では、適用可能なクライアント出力キュー３４６は、クライアントＩＤマッピングテーブル３０２の参照によって識別される。
【００３４】
複数のクライアントデータストリームを備えるビットストリームコンテンツは、複数のクライアント出力キュー３０６におけるクライアントデータストリームコンテンツがプロキシサーバ２００からウェブサーバ１２２へ転送されるのと類似したやり方で、多重ＴＣＰ接続上で複数のデータセグメントとしてプロキシサーバ２００に転送される。以前のように、これは、複数のデータセグメント３０９を複数のＭＵＸ・ＴＣＰパケット３０８にカプセル化すること、および多重ＴＣＰ接続上で複数のＭＵＸ・ＴＣＰパケットをトランスポートすることを含む。
【００３５】
図４ａで継続すると、図３ｂを参照して上述したものと類似の方式で、ＭＵＸ・ＴＣＰパケット３０８ストリームが、ＭＵＸ・ＴＣＰ入力ストリームＤｅＭＵＸおよび分離ロジック３２０によって受信され処理される。一実施形態では、クライアントＩＤ・ＴＣＰ接続をセットアップすることに関連して、クライアント出力キュー３４８およびクライアント入力キュー３５０は、プロキシサーバ２００によって割り当てられる。更に、図４ａに示されるように、カプセル化されたデータセグメント分離ブロック３２６によって分離された各データセグメントに対するビットストリームコンテンツは、キューセレクタ３２８によって適用可能なクライアント入力キュー３５０内へプッシュされ、次に、複数のクライアントデータストリームは、適用可能なクライアント出力キュー３４８内へプッシュされるか、またはクライアント入力キューからクライアント出力キュー内へプルされる。一度複数のクライアント出力キュー３４８にあると、パケットペイロードデータ３０３は抽出され、ＴＣＰパケット３０５内にカプセル化され、それは、次に従来のアウトバウンドＴＣＰパケット処理を用いて複数のクライアントに転送され、ここで、複数のＴＣＰパケットは、ＴＣＰ／ＩＰヘッダにおいて行先アドレスにより識別される（例えば、転送テーブル検索を介して）プロキシサーバ２００においてネットワークポートから送信される。
【００３６】
プロキシサーバ２００ａに対する選択的な構成は、図４ｂに示される。本構成では、複数のクライアントデータストリームの全てまたは一部分は、出力パケットバッファ３５２へ転送され、ここで、パケットペイロードデータ３０３は、抽出され、複数のＴＣＰパケット３０５にカプセル化される。複数のＴＣＰパケット３０５は、次に、従来のやり方でプロキシサーバ２００ａによってクライアント１１０、１１２、１１４、１１６、１１８および１２０に転送される。
【００３７】
上述の複数の多重ＴＣＰパケット処理オペレーションに加え、プロキシサーバ２００およびウェブサーバ１２２は、ＴＣＰ接続セットアップ及び複数のクライアントベースのＴＣＰ接続フロー制御オペレーションを実行するための追加のロジックを含む。プロキシサーバ２００において、これらのオペレーションは、プロキシサーバ制御ロジック３５６（複数のＴＣＰクライアントとインタフェースをとるべく用いられる）およびプロキシサーバ‐ウェブサーバ制御ロジック３５８によって促進される。ウェブサーバ１２２において、これは、プロキシサーバ‐ウェブサーバ制御ロジック３６０として図示されている。複数の接続およびクライアントキューの管理は、プロキシサーバ２００とウェブサーバ１２２との間で送信される複数の制御メッセージによって促進される。例示的なセットアップおよび／または複数の制御機能に対応する複数のメッセージフロー図は、図６および７において図示される。
【００３８】
図６は、クライアント１２０と、プロキシサーバ２００と、ウェブサーバ１２２との間で送信される複数のメッセージを示すメッセージフロー図を表示する。メッセージシーケンスは、クライアント１２０からウェブサーバ１２２へ送信されるＨＴＴＰリクエスト６００で開始する。上述したように、これは、ウェブサーバ１２２によってホスティングされる、あるいはそうでなければそれを介してアクセスされるウェブサイトのＵＲＬを入力するクライアント１２０のユーザによって達成され得る。応答して、ＤＮＳサーバ（不図示）は、ウェブサーバ１２２よりもむしろプロキシサーバ２００のＩＰアドレスを戻す。
【００３９】
ＨＴＴＰセッションは、複数のネットワークリクエスト‐応答トランザクションのシーケンスである。ＨＴＴＰクライアントは、サーバ（一般的にポート８０だが、多くの他のポートもまた用いられ得る）上の特定のポートへのＴＣＰ接続を確立することによってリクエストを開始する。そのポートにおける最初のＨＴＴＰリクエスト「リスニング（ｌｉｓｔｅｎｉｎｇ）」に含まれるＩＰアドレスのＨＴＴＰサーバは、ＴＣＰ接続をセットするように構成されている。従来のアプローチでは、リクエストを受信すると、ＨＴＴＰサーバは、「ＨＴＴＰ／１．１２００ＯＫ」等のステータスラインを含むＨＴＴＰ応答メッセージを返信する。このメッセージの本体は、一般的に、要求されるリソースであるが、エラーメッセージまたは他の情報もまた戻されてよい。
【００４０】
本明細書で提供されるプロキシサーバアプローチでは、異なるシーケンスが起こる。ＨＴＴＰリクエスト６００を受け取ると、プロキシサーバ２００は、これを新たなＴＣＰ接続に対するリクエストであるとして認識し、そのリクエストをメッセージ６０２としてウェブサーバ１２２に転送する。ウェブサーバ１２２は、更なる複数の接続をサポートできるか、およびそうである場合、クライアントＩＤを含む新たなプロキシ接続割り当てリクエスト６０４をプロキシサーバ２００に戻す。応答して、プロキシサーバ２００は、適切な複数のキューのセットをそのクライアントＩＤ（利用可能な場合）に割り当て、新たなプロキシ接続肯定応答（ＡＣＫ）メッセージ６０６を戻す。プロキシサーバ２００がクライアントＩＤキューを割り当てできない場合、それは、新たなプロキシ接続はこの時点でサポートできないことを示す異なるメッセージを戻す。
【００４１】
上述したように、複数の個別のＴＣＰ接続が、複数のクライアントとプロキシサーバとの間で確立される。従って、新たなプロキシ接続割り当てが成功した場合、プロキシサーバ２００は、ＴＣＰ接続が確立されていることを示すＨＴＴＰ応答６０８をクライアント１２０に、ＴＣＰポート番号と共に戻す。所与のクライアントが、複数のＴＣＰ接続を同一のプロキシサーバ（各々は異なる複数のＴＣＰポートを用いる）で確立することは可能であり、各固有のＴＣＰ接続は、上記でまた識別されるように、クライアントのＩＰアドレスおよびＴＣＰポート番号の組み合わせによって識別される。
【００４２】
この時点で、クライアント１２０とプロキシサーバ２００との間でＨＴＴＰ接続が確立される。しかしながら、全ての意図および目的のため、クライアント１２０およびウェブサーバ１２２において動作している複数のＨＴＴＰ／ＨＴＴＰＳサーバ機能３４０の両方の視点から、ＨＴＴＰ接続は、クライアント１２０とウェブサーバ１２２との間にあるように見える。従って、クライアント１２０は物理的なＨＴＴＰエンドポイントであり、ウェブサーバ１２２は仮想のＨＴＴＰエンドポイントである。複数のＨＴＴＰリクエストおよび複数のＨＴＴＰ応答の後続の交換（ＨＴＴＰリクエスト６１０および６１４、並びにＨＴＴＰ応答６１２および６１６によって図示される）は、次に、これらのＨＴＴＰエンドポイントの間で交換され、各ＨＴＴＰリクエストは、クライアントとプロキシサーバとの間のＴＣＰ接続を第１にトラバースし、次に多重ＴＣＰ接続を介してウェブサーバへ転送され、各ＨＴＴＰ応答は逆のパスをトラバースする。
【００４３】
ＨＴＴＰリリースメッセージ６１８によって図示されるように、複数のＨＴＴＰエンドポイントはどちらも、ＨＴＴＰ接続をリリースするよう明示的に要求できる。例えば、Ｇｏｏｇｌｅ、クロム、マイクロソフトインターネットエクスプローラ、アップルサファリ、またはモジラファイアーフォックス等の正常に動作するウェブブラウザに関し、ユーザがタブを閉じる場合、ウェブブラウザ（クライアントを備える）は、閉じられたタブに関してＵＲＬに関連付けされているウェブサーバへＨＴＴＰリリースメッセージを送信する。任意選択的に、ウェブサーバは、ＨＴＴＰ接続がもはや存在していないことをＨＴＴＰタイムアウト６２０（別個のメッセージではないが、むしろウェブサーバによって内部で判断されたものである）を介して検出できる。
【００４４】
この時点で、プロキシ接続が、複数のクライアントＩＤキューリソースと共にリリースされる。  ウェブサーバ１２２は、クライアントＩＤを含むプロキシ接続リリースメッセージ６２２をプロキシサーバ２００に送信する。応答において、プロキシサーバ６２２は、クライアントＩＤを含むプロキシ接続リリースＡＣＫメッセージを戻す。この時点で、プロキシサーバ２００およびウェブサーバ１２２の両方は、リリースされているプロキシ接続に対して割り当てられた複数のクライアントＩＤキューをリリースする。
【００４５】
多重ＴＣＰアーキテクチャの一つの新規の態様は、ウェブサーバが複数の個別のＴＣＰ接続毎のフロー制御をもたらす能力である。例えば、本明細書にて開示された複数の多重ＴＣＰ接続は、従来の複数のトンネル接続といくつかの類似点を共有する一方、そのようなトンネル接続は、単に、複数の個別のＴＣＰ接続に対する複数の別個の帯域幅割り当ての条件無しで、複数のパケットストリームをカプセル化する。本明細書で開示される複数の技術では、ウェブサーバは、一時的に停止している接続を含む所与のＴＣＰ接続に対して割り当てられた帯域幅スライスを動的に再割り当てしてよい。ウェブサーバによって管理されるこれらのフロー制御オペレーションに関連して、プロキシサーバは、バッファのオーバーフローおよび結果として生じる複数のパケットドロップを防止する等を目的として、クライアントとの複数のＴＣＰ接続において対応するＴＣＰフロー制御手段を（適応可能ならば）実装してよい。
【００４６】
一実施形態では、ウェブサーバは、プロキシサーバに、いくつのクライアントをウェブサーバがサポートできるかを通知するまたは命令することが可能になる。図７に示されるように、これは、ウェブサーバ１２２がサポートできるクライアントの数（ｎ）を識別するサポートクライアント数のメッセージ７００で達成され得る。応答において、プロキシサーバ２００は、サポートクライアント数のＡＣＫメッセージ７０２を戻す。
【００４７】
ウェブサーバは、また、プロキシサーバに所与のクライアントをスロットルするように命令してもよく、または所与のクライアントに関して複数のパケットを転送することを一時的にシャットダウンしてよい。例えば、ウェブサーバ１２２は、プロキシサーバ２００に、クライアントＩＤによって識別されるように、特定のクライアント接続に対応する複数のパケットを転送することをスロットルするように命令するスロットルコマンド７０４を送信してよい。応答で、プロキシサーバ２００は、スロットルコマンドＡＣＫメッセージ７０６で返信するであろう。入ってくるデータがいまだに多すぎる場合、ウェブサーバは、１または複数のプロキシ接続に対する複数のＴＣＰパケットの受け取りを一時的に中止することを選択的に選んでもよい。これは、中止するべきクライアントＩＤ、また同様に中止前に送信するべきである最後のバイトを表すバイトシーケンス番号を識別するシャットダウン接続メッセージ７０８として図７に示され、としても示される。プロキシサーバ２００は、中止ＡＣＫメッセージで応答し、クライアントＩＤを識別する。
【００４８】
複数の進行中のオペレーションの間に、ウェブサーバは、それがあまりにも多くのクライアントにサービス提供している（および結果として、複数のパケットをドロップすることが強制されている）ことを検出してよい。このタイプの状況に応答し、ウェブサーバ１２２はクライアント拒否メッセージ７１２を送信し、否定するべきである複数のクライアント接続に対応する１または複数のクライアントＩＤを識別する。応答において、プロキシサーバ２００は、クライアント否定ＡＣＫメッセージ７１４を戻す。また、プロキシサーバ２００は、ＨＴＴＰ接続閉鎖メッセージ７１６を適用可能な（複数の）クライアントへ送信する。
【００４９】
プロキシサーバおよび／またはウェブサーバは、キューフィルレベル７１８によって図示されるように、１または複数のキューおよび関連する複数のクライアントＩＤのキューフィルレベルに関する情報を送信する。このタイプのメッセージもまた、スロットリングコマンドに関連して送信され得る。別のオプションとして、送信サーバは、スロットリングアップコマンドまたはリクエストを受信サーバに送信してよく、受信サーバに所与のクライアントＩＤ接続に対して増加されたパケットフローのために予測または設定するように要求するか、または命令する。
【００５０】
一般に、プロキシサーバとウェブサーバとの間の複数の制御メッセージは、多重ＴＣＰ接続上で（例えば、インジケータを制御するためのデータ／制御フラグを設定することによって）送信されてよく、または、バックチャネル、制御チャネル、またはサイドバンド接続として時々称される、別個の接続（不図示）上で送信されてもよい。様々なパケットフォーマットが制御メッセージングを促すべく用いられ、その用いられる特定のフォーマットは、複数のサーバ間での制御メッセージングを実装するための複数の技術は周知であることから、本開示の範囲外である。更に、図７にウェブサーバ１２２から発信されているとして示される複数のメッセージは、また、適用可能な状況においてはプロキシサーバ２００から発生してもよい。例えば、プロキシサーバは、また、ウェブサーバにスロットリングコマンドまたは一時シャットダウンコマンドを発行してもよい。
【００５１】
制御情報の更なる複数の例は以下を含む。プロキシからの制御情報は、「新たなクライアント、ニックネームＮを用いたい」と言うかもしれない。応答において、サーバは、「あまりにも多くのクライアント」または「ＯＫ。新たなクライアントを受け入れる。」と言ってよい。一実施形態では、クライアントＮに対するデータに対するシーケンス番号は、１または任意の他の予め定められた数（最初の複数のシーケンスナンバーに特異なことをするＴＣＰとは対照的ではあるが、ここで、それはサーバとプロキシとの間のＴＣＰ接続の内部であることから、各クライアントのデータを１で開始してよい）で開始する。
【００５２】
接続の閉鎖を開始するべく、プロキシまたはサーバは、「クライアントＮが終了しており、クライアントＩＤ＃Ｎを再利用することがしたい。」と言う制御メッセージングを送信してよい。応答において、受信者（規定通りに、プロキシまたはサーバのどちらか）は、「クライアントＮのデータをシーケンス番号Ｓ１まで受け入れ、クライアントＪのデータをシーケンス番号Ｓ２まで受け入れる」と言ってよい。
【００５３】
更なる例として、プロキシは（サーバへのＴＣＰ情報内部で）、Ｐ−Ｓ・ＴＣＰ接続に対しておそらくシーケンス番号１９１で送信してよい。
【００５４】
クライアントＸ、シーケンス＃１５、９２バイトのデータ
【００５５】
クライアントＹ、シーケンス＃５１、１２バイトのデータ
【００５６】
応答において、サーバは、「我々のＴＣＰシーケンス番号３０５まであなたが送信した全てのデータを受け入れた」と言ってよく、または別個に、「クライアントＸを１０６までＡＣＫし、クライアントＹを６３までＡＣＫする」と言ってもよい。あるいは、サーバがＹからのデータをもはや受け入れられない場合、「クライアントＹを５３までＡＣＫする」と言ってよい（それがＹからのデータの２バイトだけ受け入れた場合、プロキシは次にＹからの残りを後で再送信する）。
【００５７】
例示的な実装環境および複数のサーバアーキテクチャ
【００５８】
本明細書の実施形態の態様は、データセンタおよび／またはサーバファーム環境において使用される様々なタイプのサーバ等の様々なタイプのコンピューティングおよびネットワーキング機器において実装されてよいことが想定される。一般的に、複数のデータセンタおよび複数のサーバファームにおいて用いられる複数のサーバは、複数のラックベースのサーバまたは複数のブレードサーバ等の複数の配列されたサーバ構成を備える。これらのサーバは、プライベートなイントラネットを形成する複数のＬＡＮの間の適切な複数のスイッチングおよびルーティング設備で複数のＬＡＮに複数のサーバの複数のセットを分割すること等、様々なネットワーク設備を介する通信において相互接続されている。例えば、クラウドホスティング設備は、一般的に、多数のサーバを持つ複数の大きなデータセンタを用いてよい。
【００５９】
概要として、複数の一般的なブレードサーバコンポーネントおよび複数のシステムは、図８ａ―ｃおよび９において示されている。一般的な構成において、ラックマウント式筐体８００は、複数のサーバブレード（複数のブレードとしても知られる）８０２に対する電力及び複数の通信機能を提供するべく使用され、各ブレードは、対応するスロットを占有する。（筐体における全てのスロットは占領される必要はないことに留意されたい。）その代わりに、１または複数の筐体８００が図８ｃに示されるブレードサーバラック８０３において取り付けられてもよい。各ブレードは、インタフェースプレーン８０４（例えば、バックプレーンまたはミッドプレーン）に、１または複数のコネクタを介して設置されると結合される。一般的に、インタフェースプレーンは、複数のブレードに電力および複数の通信信号を提供する複数のそれぞれの嵌合している複数のコネクタを含み、複数のブレードの間の複数のイーサネット（登録商標）信号を結合させるための複数のルーティングされた信号パスを含む。現在の実施において、多くのインタフェースプレーンは、複数のブレードがオンザフライ（ｏｎ  ｔｈｅ  ｆｌｙ）で追加されまたは除去される（「ホットスワップ（ｈｏｔ  ｓｗａｐ）される」）「ホット‐スワップ」機能を、全体の筐体を適切な電力およびデータ信号バッファリングを介して取り出すことなく提供する。
【００６０】
一般的なミッドプレーンインタフェースプレーン構成が、図８ａおよび図８ｂにおいて示されている。インタフェースプレーン８０４の裏面は、１または複数の電源８０６に結合される。しばしば、複数の電源は、冗長でありホットスワップ可能であり、電源故障の場合において継続するオペレーションを可能にするべく、適切な電力および調整回路に結合されている。選択的な構成において、複数の電源のアレイが、複数のブレードのラック全体に電力を供給するべく用いられてよく、ここで、１対１の電源‐筐体対応は無い。複数の冷却ファン８０８が筐体を通じて空気を引き込むべく使用され、複数のサーバブレードを冷却する。
【００６１】
全てのブレードサーバに必要とされる重要な特徴は、他のＩＴインフラストラクチャと外部で通信するための能力である。これは、一般的に、各々がインタフェースプレーン８０４に結合されている１または複数のネットワーク接続カード８１０を介して促進される。一般に、ネットワーク接続カードは、複数のネットワークポート接続（例えば、ＲＪ−４５ポート）を備える物理的インタフェースを含んでよく、またはネットワークスイッチ、ハブ、またはルータ等のネットワークデバイスに直接接続するように設計された高密度コネクタを備えてもよい。トップオブラック（ＴｏＲ）スイッチアーキテクチャおよび複数の分解されたスイッチアーキテクチャ等、複数の他のネットワークアーキテクチャもまた用いられてよく、複数のネットワークリンクが複数の有線および／または光ケーブルを備えてもよいことに留意されたい。
【００６２】
複数のブレードサーバは、通常、複数の個別のブレードの複数のオペレーションを管理するための任意のタイプの管理インタフェースを提供する。これは、一般に、内蔵のネットワークまたは通信チャネルまたは複数のチャネルによって促進され得る。例えば、「プライベート」または「管理」ネットワークを促進するための１または複数のバスおよび適切なスイッチングが、インタフェースプレーンに内蔵され、あるいはプライベートネットワークが密に結合されたネットワークケーブル配線およびネットワークを介して実装され得る。任意選択的に、スイッチングおよび他の管理機能は、インタフェースプレーンの裏面または前面に結合されている管理スイッチカード８１２によって提供され得る。更に別のオプションとして、管理または構成サーバは、複数のブレードアクティビティを管理するべく使用されてよく、ここで、複数の通信は、例えばイーサネット（登録商標）等、標準のコンピュータネットワーキングインフラストラクチャを介して処理される。
【００６３】
図９を参照して、例示的なブレード９００の更なる詳細が示される。上述したように、各ブレードは、複数のサーバタイプ機能を実行するように構成されている別個のコンピューティングプラットフォーム、つまり「カード上のサーバ」を備える。   従って、各ブレードは、メインプリント基板（メインボード９０１）を含む、従来の複数のサーバと共通の複数のコンポーネントを含み、適切な複数の集積回路（ＩＣ）および他のボードにマウントされる複数のコンポーネントを結合するための内部配線（つまり、複数のバス）を提供する。これらのコンポーネントは、システムメモリ９０４（例えば、ランダムアクセスメモリ（ＲＡＭ）の任意の形態）、キャッシュメモリ９０６（例えば、ＳＤＲＡＭ）、およびファームウェアストレージデバイス９０８（例えば、フラッシュメモリ）に結合された１または複数のプロセッサ（ＣＰＵとしても知られる）９０２を含む。ＮＩＣ（ネットワークインタフェースコントローラ）チップ９１０が、ブレードと外部のネットワークインフラストラクチャとの間の通信をサポートする等、複数の従来のネットワーク通信機能をサポートすることを目的として提供される。複数の他に示されるコンポーネントは、ステータスＬＥＤ（発光ダイオード）９１２、１または複数のＲＪ−４５イーサネット（登録商標）ポート９１４（簡略化のため、それらのうちの１つだけが示される）、およびインタフェースプレーンコネクタ９１６を含む。複数の追加のコンポーネントは、様々な受動的コンポーネント（つまり、複数のレジスタ、複数のキャパシタ）、複数の電力調整コンポーネント、および複数の周辺デバイスコネクタを含む。
【００６４】
一般に、各ブレード９００は、また、オンボードのストレージも提供してよい。これは、１または複数のディスクドライブ９１８が結合される１または複数の内蔵ディスクコントローラおよび対応するコネクタを介して一般的に促進される。例えば、一般的な複数のディスクコントローラは、ＳＡＴＡコントローラ、ＳＣＳＩコントローラ、および同様のものを含む。一般に、ディスクドライブ９１８は、磁気ドライブまたはソリッドステートドライブ（ＳＳＤ）を備えてよい。オプションとして、複数のディスクドライブは、大量なデータを記憶するために使用され得る、ネットワークに取り付けられたストレージ（ＮＡＳ）電気機器またはバックエンドストレージサブシステムの場合等、同一または別個のラックにおいて、複数のブレードから離れて収容されてよい。
【００６５】
ＮＩＣ９１０は、物理層（Ｌ１）およびデータリンク層オペレーション（Ｌ２）（例えば、イーサネット（登録商標）ＭＡＣオペレーション）に対するサポート等、複数の対応するネットワーキングオペレーションを促進するための回路およびロジックを備える。一般的に、複数の上部層オペレーションは、プロセッサ９０２において実行されているオペレーティングシステムによってホスティングされるであろうオペレーティングシステムネットワークスタックによって促進される。しかしながら、いくつかの実施形態において、ＮＩＣは、埋め込み論理または同様のものを介してそれ自身のネットワークスタックを用いてよい。
【００６６】
一般に、現在の複数のサーバプロセッサは、複数の機能的コンポーネント、複数のブロック、および複数のインタフェースがチップ上で集積されている複数のシステムオンチップ（ＳｏＣ）アーキテクチャを用いる。いくつかのＳｏＣアーキテクチャにおいて、プロセッサは、複数のコアを備えるＣＰＵを含む。
【００６７】
一般的なデータセンタ配置において、複数のネットワークスイッチング要素は、１Ｕ、２Ｕ、または４Ｕスロット等を占領するであろうラックマウント式機器を備え、あるいは１または複数のサーバブレードを介して実装され得る。  任意選択的に、ネットワークスイッチング要素は、１または複数のサーバブレードを用いて実装され得る。
【００６８】
ワークロードに応じて、本明細書で説明されるプロキシサーバおよびウェブサーバオペレーションは、単一ブレード、筐体における複数のスロットの一部分を占有する一式のブレード、複数のブレードを持つ筐体、またはマルチソケットのサーバ等、現在および将来の複数のデータセンタ環境において配置される他のタイプの複数のサーバを介して実装されてよい。複数のプロキシサーバおよびウェブサーバは、いくつかの実施形態において複数の物理的エンティティとして実装され得るが、一方、他の複数の実施形態は、物理的および仮想のエンティティの組み合わせを用いてよい。
【００６９】
本明細書において記載される主題の更なる複数の態様は、以下の複数の番号付けされた節において説明される。
【００７０】
１．プロキシサーバで複数のクライアントとの複数のＴＣＰ接続を確立する段階であって、各ＴＣＰ接続は、ＴＣＰポートを用いてプロキシサーバにクライアントを接続する段階と、
プロキシサーバを、ウェブサーバに多重ＴＣＰ接続を介して通信結合させる段階と、
複数のクライアントから発信される複数の入力ＴＣＰ通信をプロキシサーバで受信する段階であり、各入力ＴＣＰ通信はパケットペイロードデータを含む少なくとも１つのＴＣＰパケットを含む、段階と、
それぞれのクライアントデータストリームにおける所与のＴＣＰ接続上で受信される、複数のＴＣＰパケットに含まれるパケットペイロードデータをバッファリングする段階と、
複数のクライアントデータストリームにおける複数のシーケンシャル実行の複数のビットを備える複数のデータセグメントを、プロキシサーバで、複数の多重（ＭＵＸ）ＴＣＰパケットにカプセル化する段階であって、複数のＭＵＸ・ＴＣＰパケットの少なくとも一部分は、少なくとも２つの別々のクライアントデータストリームからの複数のデータセグメントをカプセル化する段階と、
複数のＭＵＸ・ＴＣＰパケットをプロキシサーバから多重ＴＣＰ接続上でウェブサーバにトランスポートする段階と、
ウェブサーバにおいて、複数のＭＵＸ・ＴＣＰパケットにおける複数のデータセグメントをデカプセル化し、複数のクライアントデータストリームを再アセンブルする段階と、
複数の再アセンブルされたクライアントデータストリームからパケットペイロードデータを抽出する段階と、を備える、方法。
【００７１】
２．節１の方法であって、第１ＴＣＰ接続上で受信された１または複数のＴＣＰパケットは、第１クライアントから送信されたハイパーテキストトランスポートプロトコル（ＨＴＴＰ）リクエストを備え、当該方法は、
ＨＴＴＰ応答を第１クライアントが行先となっているクライアントデータストリームに埋め込む段階と、
１または複数のＭＵＸ／ＴＣＰパケットにおけるクライアントデータストリームに対応する複数のシーケンシャル実行の複数のビットを備える複数のデータセグメントをカプセル化する段階と、
１または複数のＭＵＸ／ＴＣＰパケットをウェブサーバからプロキシサーバへ多重ＴＣＰ接続上でトランスポートする段階と、
ＭＵＸ・ＴＣＰパケットからのデータセグメントをデカプセル化する段階と、
クライアントデータストリームを再アセンブルする段階と、
ＨＴＴＰ応答を抽出し、プロキシサーバから第１ＴＣＰ接続上で行先クライアントへ転送される１または複数のＴＣＰパケットにおけるＨＴＴＰ応答をカプセル化する段階と、によってＨＴＴＰ応答を第１クライアントへ戻す段階を更に備える、方法。
【００７２】
３．節１または２の方法であって、
各ＴＣＰ接続に対し、プロキシサーバにおける少なくとも１つのキューをＴＣＰ接続に割り当てる段階と、
ＴＣＰ接続に割り当てられた少なくとも１つのキューにおいて、ＴＣＰ接続上で受信される複数のＴＣＰパケットに含まれるパケットペイロードデータを備えるクライアントデータストリームをバッファリングする段階と、を更に備える、方法。
【００７３】
４．節３の方法であって、各ＴＣＰ接続に対して割り当てられた、プロキシサーバにおける少なくとも１つのキューは出力キューを含み、当該方法は、
プロキシサーバの複数の出力キューにおいてＴＣＰ接続上でトランスファーされた複数のＴＣＰパケットに含まれるパケットペイロードデータの複数のシーケンシャル実行を備えるクライアントデータストリームをバッファリングする段階であって、各出力キューはそれぞれのＴＣＰ接続に対して割り当てられる、段階と、
多重ＴＣＰ接続を介してウェブサーバへトランスポートされる複数のＭＵＸ・ＴＣＰパケットのストリームを、複数のＭＵＸ・ＴＣＰパケットのストリームにおけるそれぞれの複数のＭＵＸ・ＴＣＰパケットにおいてカプセル化される複数のデータセグメントをプルするための複数の出力キューを選択するためのキューセレクタを用いて生成する段階と、を更に備える。
【００７４】
５．前述の節のいずれかの方法であって、
新たなクライアントから送信されるハイパーテキストトランスポートプロトコル（ＨＴＴＰ）リクエストを受信し、ウェブサーバを介してアクセスされるウェブサイトに対するユニバーサルリソースロケータ（ＵＲＬ）にアクセスする段階と、
新たなクライアントとプロキシサーバとの間で新たなＴＣＰ接続を確立する段階と、
プロキシサーバおよびウェブサーバの各々における複数のキューを割り当て、新たなクライアントからプロキシサーバで受信された複数のＨＴＴＰリクエストをウェブサーバに多重ＴＣＰ接続上で転送すること、およびウェブサーバで生成された複数のＨＴＴＰ応答を新たなクライアントに、多重ＴＣＰ接続を介して、プロキシサーバおよび新たなＴＣＰ接続に転送することをサポートする段階と、を更に備える。
【００７５】
６．前述の節のいずれかの方法であって、多重ＴＣＰ接続は全体の帯域幅を有し、
多重ＴＣＰ接続の全体の帯域幅のそれぞれの帯域幅スライスを、プロキシサーバで確立された各ＴＣＰ接続に対して、および多重ＴＣＰ接続上で転送されるべきである複数のＴＣＰパケットに対して、割り当てる段階と、
個別のＴＣＰ接続に対して割り当てられた帯域幅スライスが動的に調整されることを可能にする段階と、を更に備える。
【００７６】
７．ウェブサーバおよびプロキシサーバのうち少なくとも１つが、多重ＴＣＰ接続上で転送される複数の個別のＴＣＰ接続に対するデータのトランスファーのレートを管理することを可能にする段階を更に備える、前述の節のいずれかの方法。
【００７７】
８．ウェブサーバおよびプロキシサーバのうち少なくとも１つが、選択されたＴＣＰ接続に対応するトラフィックが、多重ＴＣＰ接続上で転送されることから一時的に中止させることを可能にする段階を更に備える、節７の方法。
【００７８】
９．節８の方法であって、ウェブサーバは、所与のＴＣＰ接続に対するトラフィックを一時的に中止するべくプロキシサーバにリクエストを送信し、
ＴＣＰ接続上でクライアントから受信される入力ＴＣＰトラフィックをバッファリングすることを継続する段階と、
ＴＣＰ接続に対するトラフィックが再開することが許されるという指示を受信する段階と、
バッファにおいて累積しているＴＣＰトラフィックに対応する複数のデータセグメントをプロキシサーバからウェブサーバへ送信することを再開する段階と、を更に備える。
【００７９】
１０．前述の節のいずれかの方法であって、
ウェブサーバからの情報をプロキシサーバへ送信し、多重化されてよく且つ多重ＴＣＰ接続上で送信されてよい複数の同時データストリームの最大数を識別する段階と、
複数の同時データストリームの最大数に対応する多数のクライアント接続を確立する段階と、
プロキシサーバでウェブサーバと通信することを望む新たなクライアントからデータを受信する段階と、
新たなクライアントからのデータをバッファリングする段階と、
既存クライアントがサーバとの通信を終了したと判断することに応答して、新たなクライアントに対してウェブサーバと新たなクライアント接続をネゴシエートする段階と、を更に備える。
【００８０】
１１．ウェブサーバ装置であって、
プロセッサと、
プロセッサに動作可能に結合されているメモリと、
プロセッサに動作可能に結合された少なくとも１つのネットワークポートを含むネットワークアダプタと、
複数の命令が中に記憶されており、
プロキシサーバとウェブサーバとの間で多重ＴＣＰ接続を確立し、多重ＴＣＰ接続はデータを、ネットワークアダプタにおけるネットワークポートに結合されたリンクを含む転送パスをトランスポートするように構成されており、複数のクライアントは複数のそれぞれのＴＣＰ接続を介してプロキシサーバに接続されていることと、
複数のクライアントを行先としているクライアントデータストリームデータを、複数の多重（ＭＵＸ）ＴＣＰパケットのストリームとして多重ＴＣＰ接続上でプロキシサーバへ送信し、各ＭＵＸ・ＴＣＰパケットは、プロキシサーバとクライアントとの間のＴＣＰ接続上のクライアントに、プロキシサーバを介して転送されるべきである複数のＴＣＰパケットにおいてカプセル化されるべきであるパケットペイロードデータを備える１または複数のクライアントデータストリームからの複数のシーケンシャル実行の複数のビットを備える、１または複数のデータセグメントをカプセル化することと、をウェブサーバ装置ができるようにするべく、プロセッサによって実行されるように構成されており、複数のＭＵＸ・ＴＣＰパケットの少なくとも一部分は少なくとも２つの別々のクライアントデータストリームに対する複数のデータセグメントをカプセル化する、複数のソフトウェアモジュールと、を備えるストレージデバイスと、を備える、ウェブサーバ装置。
【００８１】
１２．節１１のウェブサーバ装置であって、複数のソフトウェアモジュールは、更に、
多重ＴＣＰ接続上で複数のＭＵＸ・ＴＣＰパケットのストリームをプロキシサーバから受信することであって、各ＭＵＸ・ＴＣＰパケットは１または複数のデータセグメントをカプセル化し、各データセグメントは、ＴＣＰクライアントから受信されるクライアントデータストリームの一部分を備えることと、
複数のＭＵＸ・ＴＣＰパケットにおける複数のデータセグメントをデカプセル化し、複数のクライアントデータストリームを再アセンブルすることと、
複数の再アセンブルされたクライアントデータストリームからパケットペイロードデータを抽出することと、をウェブサーバ装置ができるようにするように構成されている。
【００８２】
１３．節１２のウェブサーバ装置であって、複数のソフトウェアモジュールは、更に、
メモリのメモリ空間における複数のキューのそれぞれのセットを、複数のクライアントをプロキシサーバに接続するべく用いられる複数のＴＣＰ接続の各々に対して割り当てることをウェブサーバ装置ができるようにするように構成されており、所与のＴＣＰ接続に対する複数のキューのそれぞれのセットは、少なくとも１つの出力キューおよび少なくとも１つの入力キューを含む。
【００８３】
１４．節１２のウェブサーバ装置であって、各ＴＣＰ接続および接続に対して割り当てられた複数のキューのセットにおける複数のキューは、固有クライアント識別子によって識別される。
【００８４】
１５．節１１から１５のいずれかのウェブサーバ装置であって、複数のモジュールは、ソフトウェア処理スタックを含み、当該複数のソフトウェアモジュールは、更に、
複数の出力キューにおけるソフトウェア処理スタックによって生成される複数のクライアントデータストリームをキューに加えることであって、各出力キューに対してキューに加えられた複数のクライアントデータストリームに含まれるデータは、単一のクライアントが行先となっていることと、
複数のＭＵＸ・ＴＣＰパケットのストリームにおけるそれぞれの複数のＭＵＸ・ＴＣＰパケットにおいてカプセル化されるべく、複数のデータセグメントをプルするための複数の出力キューを選択するためのキューセレクタを用いることによって、複数のＭＵＸ・ＴＣＰパケットのストリームを生成することと、をウェブサーバ装置ができるようにするように構成されている。
【００８５】
１６．節１５のウェブサーバ装置であって、複数のソフトウェアモジュールは、更に、
複数のＴＣＰ接続の各々に対して多重ＴＣＰ接続のそれぞれの帯域幅スライスを割り当てることと、
複数のＴＣＰ接続に対して割り当てられた複数の帯域幅スライスに従って複数のデータセグメントをプルするための複数の出力キューを選択するキュー選択アルゴリズムを実装することと、をウェブサーバ装置ができるようにするように構成されている。
【００８６】
１７．節１６のウェブサーバ装置であって、複数のソフトウェアモジュールは、更に、
多重ＴＣＰ接続を介してトランスポートされ、個々のベースで複数の選択されたＴＣＰ接続に関連している複数のクライアントデータストリームをスロットルさせる、または一時的に中止されることの少なくとも１つをウェブサーバ装置ができるようにするように構成されている。
【００８７】
１８．プロキシサーバ装置であって、ウェブサーバに対してプロキシサーバとして動作するように構成され、
プロセッサと、
プロセッサに動作可能に結合されたメモリと、
プロセッサに動作可能に結合された複数のネットワークポートと、
複数のソフトウェアモジュールを備える複数の命令を中に記憶しているストレージデバイスと、を備え、
複数のソフトウェアモジュールは、
第１ネットワークポートでそれぞれの複数のクライアントとの複数のＴＣＰ接続を確立することと、
プロキシサーバとウェブサーバとの間の多重ＴＣＰ接続を確立することであって、多重ＴＣＰ接続は、プロキシサーバ装置における第２ネットワークポートに結合されたリンクを含む転送パスでデータをトランスポートするように構成されている、ことと、
複数のＴＣＰ接続上で複数のクライアントから複数のＴＣＰパケットを受信することと、
プロキシサーバ装置を介してウェブサーバへプロキシ処理されることになっている複数のＴＣＰパケットを識別することと、
プロキシサーバ装置を介してプロキシ処理されることになっており、それぞれのクライアントデータストリームにおける所与のＴＣＰ接続上で受信される複数のＴＣＰパケットに含まれるデータをバッファリングすることと、
複数のシーケンシャル実行の複数のクライアントデータストリームを備える複数のデータセグメントを、複数の多重（ＭＵＸ）ＴＣＰパケットにカプセル化することであって、複数のＭＵＸ・ＴＣＰパケットの少なくとも一部分は、複数のシーケンシャル実行の少なくとも２つの別々のクライアントデータストリームを備える複数のデータセグメントをカプセル化することと、
第２ネットワークポートからのアウトバウンドの複数のＭＵＸ・ＴＣＰパケットが多重ＴＣＰ接続上のウェブサーバへ転送されるように送信することと、をプロキシサーバ装置ができるようにするべく、プロセッサによって実行されるように構成されている、プロキシサーバ装置。
【００８８】
１９．節１８のプロキシサーバ装置であって、複数のソフトウェアモジュールは、更に、
ウェブサーバから多重ＴＣＰ接続上の複数のＭＵＸ・ＴＣＰパケットのストリームを受信することであって、各ＭＵＸ・ＴＣＰパケットは、１または複数のクライアントデータストリームにおける複数のシーケンシャル実行の複数のビットを備える１または複数のデータセグメントをカプセル化することと、
複数のＭＵＸ・ＴＣＰパケットにおいてカプセル化された１または複数のデータセグメントをデカプセル化することと、
複数のクライアントデータストリームを再アセンブルすることと、
所与のクライアントデータストリームに関連しているＴＣＰ接続を識別することと、
所与のクライアントデータストリームに関連しているクライアントへ行くことになっている複数のＴＣＰパケットにおける所与のクライアントデータストリームから抽出されたパケットペイロードデータをカプセル化することと、
クライアントに対するＴＣＰ接続上で行先クライアントへ複数のＴＣＰパケットを転送することと、をプロキシサーバ装置ができるようにするように構成されている。
【００８９】
２０．節１８のプロキシサーバ装置であって、複数のソフトウェアモジュールは、更に、
複数のクライアントをプロキシサーバに接続するべく用いられる複数のＴＣＰ接続の各々に対し、メモリのメモリ空間における複数のキューのそれぞれのセットを割り当てることをプロキシサーバ装置ができるようにするように構成されており、所与のＴＣＰ接続に対する複数のキューのそれぞれのセットは、多重ＴＣＰ接続を介してウェブサーバへ転送されることになっている複数のＴＣＰパケットがバッファリングされる少なくとも１つの出力キューを含む。
【００９０】
２１．節２０のプロキシサーバ装置であって、複数のソフトウェアモジュールは、更に、
複数のＴＣＰ接続の各々に対して、多重ＴＣＰ接続のそれぞれの帯域幅スライスを割り当てることと、
複数のＴＣＰ接続に対して割り当てられた複数の帯域幅スライスに従って、複数のデータセグメントをプルするための複数の出力キューを選択するキュー選択アルゴリズムを実装することと、をプロキシサーバ装置ができるようにするように構成されている。
【００９１】
２２．節１８のプロキシサーバ装置であって、複数のソフトウェアモジュールは、更に、
ＴＣＰ接続を識別するウェブサーバからスロットルコマンドおよび中止コマンドのうち１つを受信することと、
応答において、多重ＴＣＰ接続上でトランスポートされているＴＣＰ接続に関連しているクライアントデータストリームをスロットルすることおよび中止することのうち１つをすることと、をプロキシサーバ装置ができるようにするように構成されている。
【００９２】
２３．複数の命令が記憶されている少なくとも１つの非一時的機械可読媒体であって、
プロキシサーバで複数のクライアントを持つ複数のＴＣＰ接続を確立することであって、各ＴＣＰ接続は、ＴＣＰポートを用いてクライアントをプロキシサーバに接続することと、
通信しているプロキシサーバを、多重ＴＣＰ接続を介してウェブサーバと結合させることと、
複数のクライアントから発信されている複数の入力ＴＣＰ通信をプロキシサーバで受信することであって、各入力ＴＣＰ通信は、ハイパーテキストトランスポートプロトコル（ＨＴＴＰ）リクエストを備えるデータを含む少なくとも１つのＴＣＰパケットを含む、ことと、
所与のＴＣＰ接続に対し複数のＴＣＰパケットから複数のＨＴＴＰリクエストを備えるパケットペイロードデータを抽出し、抽出されたパケットペイロードデータをクライアントデータストリームに加えることと、
プロキシサーバにおいて、複数のクライアントデータストリームの複数のシーケンシャル実行の複数のビットを備える複数のデータセグメントを複数の多重（ＭＵＸ）ＴＣＰパケットにカプセル化することであって、複数のＭＵＸ・ＴＣＰパケットの少なくとも一部分は、多重のクライアントデータストリームからの複数のデータセグメントをカプセル化することと、
プロキシサーバからの複数のＭＵＸ・ＴＣＰパケットを多重ＴＣＰ接続上においてウェブサーバへトランスポートすることと、
ウェブサーバにおいて、複数のデータセグメントを複数のＭＵＸ・ＴＣＰパケットにデカプセル化し、複数のクライアントデータストリームを再アセンブルすることと、
再アセンブルされた複数のクライアントデータストリームから複数のＨＴＴＰリクエストを抽出することと、をプロキシサーバおよびウェブサーバができるようにするべく、プロキシサーバおよびウェブサーバにおいて実行されるように構成されている複数のソフトウェアモジュールを備える、少なくとも１つの非一時的機械可読媒体。
【００９３】
２４．節２３の少なくとも１つの非一時的機械可読媒体であって、一式の複数のソフトウェアモジュールは、更に、
ＨＴＴＰリクエストを送信したクライアントが行先であるクライアントデータストリームにおけるＨＴＴＰリクエストにＨＴＴＰ応答を埋め込むことと、
１または複数のＭＵＸ／ＴＣＰパケットにおいてクライアントデータストリームに対応する１または複数のデータセグメントをカプセル化することと、
１または複数のＭＵＸ／ＴＣＰパケットをウェブサーバからプロキシサーバへ多重ＴＣＰ接続上においてトランスポートすることと、
１または複数のＭＵＸ／ＴＣＰパケットにおいてカプセル化された１または複数のデータセグメントをデカプセル化することと、
複数のクライアントデータストリームを再アセンブルすることと、
クライアントデータストリームに関連しているＴＣＰ接続を識別することと、
再アセンブルされたクライアントデータストリームからＨＴＴＰ応答を抽出し、ＨＴＴＰ応答を、クライアントデータストリームに関連しているクライアントが行先である１または複数のＴＣＰパケットにおいてカプセル化することと、
１または複数のＴＣＰパケットをクライアントに対するＴＣＰ接続上において行先クライアントへ転送することと、をプロキシサーバおよびウェブサーバが、実行においてできるようにするように構成されている。
【００９４】
２５．節２４の少なくとも１つの非一時的機械可読媒体であって、ＨＴＴＰ応答が埋め込まれている１または複数のＴＣＰパケットの各々は、プロキシサーバに対するＩＰアドレスに対応するソースインターネットプロトコル（ＩＰ）アドレスおよび行先クライアントに対するＩＰアドレスに対応する行先ＩＰアドレスを有する。
【００９５】
２６．節２３―２５のいずれかの少なくとも１つの非一時的機械可読媒体であって、一式の複数のソフトウェアモジュールは、更に、
各ＴＣＰ接続に対して、ＴＣＰ接続に対するプロキシサーバにおいて少なくとも１つのキューを割り当てることと、
ＴＣＰ接続に割り当てられた少なくとも１つのキューにおいて、ＴＣＰ接続上で受信された複数のＴＣＰパケットに含まれるパケットペイロードデータを備える複数のクライアントデータストリームをバッファリングすることと、をプロキシサーバおよびウェブサーバが実行においてできるようにするように構成されている。
【００９６】
２７．節２６の少なくとも１つの非一時的機械可読媒体であって、各ＴＣＰ接続に対して割り当てられたプロキシサーバにおける少なくとも１つのキューは、出力キューを含み、一式の複数のソフトウェアモジュールは、更に、
プロキシサーバにおける複数の出力キューにおいて、ＴＣＰ接続上でトランスファーされる複数のＴＣＰパケットに含まれる複数のシーケンシャル実行のパケットペイロードデータを備えるクライアントデータストリームをバッファリングすることであって、各出力キューは、それぞれのＴＣＰ接続に対して割り当てられている、ことと、
多重ＴＣＰ接続を介してウェブサーバへトランスポートされることになっている複数のＭＵＸ・ＴＣＰパケットのストリームを、複数のＭＵＸ・ＴＣＰパケットのストリームにおけるそれぞれの複数のＭＵＸ・ＴＣＰパケットにおいてカプセル化されるべく、複数のデータセグメントをプルするための複数の出力キューを選択するためのキューセレクタを用いることによって、生成することと、をプロキシサーバおよびウェブサーバが実行においてできるようにするように構成されている。
【００９７】
２８．節２３―２７のいずれかの少なくとも１つの非一時的機械可読媒体であって、一式の複数のソフトウェアモジュールは、更に、
新たなクライアントから送信されたＨＴＴＰリクエストを受信し、ウェブサーバを介してアクセスされるウェブサイトに対するユニバーサルリソースロケータ（ＵＲＬ）にアクセスすることと、
新たなクライアントとプロキシサーバとの間において新たなＴＣＰ接続を確立することと、
新たなクライアントからプロキシサーバで受信された複数のＨＴＴＰリクエストを、多重ＴＣＰ接続を介してウェブサーバへ転送すること、およびウェブサーバで生成された複数のＨＴＴＰ応答を、多重ＴＣＰ接続を介して新たなクライアントへ、プロキシサーバおよび新たなＴＣＰ接続へ転送することをサポートするべく、プロキシサーバおよびウェブサーバの各々における複数のキューを割り当てることと、をプロキシサーバおよびウェブサーバが、実行において、できるようにするように構成されている。
【００９８】
２９．節２３から２８のいずれかの少なくとも１つの非一時的機械可読媒体であって、多重ＴＣＰ接続は全体の帯域幅を有し、一式の複数のソフトウェアモジュールは、更に、
プロキシサーバで確立された各ＴＣＰ接続に対して、およびどの複数のＴＣＰパケットが多重ＴＣＰ接続上で転送されることになっているかに対して、多重ＴＣＰ接続の全体の帯域幅のそれぞれの帯域幅スライスを割り当てることと、
個別のＴＣＰ接続に対して割り当てられた帯域幅スライスが、動的に調整されることを可能にすることと、をプロキシサーバおよびウェブサーバが、実行において、できるようにするように構成されている。
【００９９】
３０．節２３から２９のいずれかの少なくとも１つの非一時的機械可読媒体であって、一式の複数のソフトウェアモジュールは、更に、ウェブサーバおよびプロキシサーバのうち少なくとも１つが、実行において、多重ＴＣＰ接続上で転送される複数の個別のＴＣＰ接続に対するデータのトランスファーのレートを管理することができるようにするように構成されている。
【０１００】
３１．節２３から３０のいずれかの少なくとも１つの非一時的機械可読媒体であって、一式の複数のソフトウェアモジュールは、更に、実行において、ウェブサーバおよびプロキシサーバのうち少なくとも１つが、選択されたＴＣＰ接続に対応するトラフィックが、多重ＴＣＰ接続上で転送されることを中止することができるようにするように構成されている。
【０１０１】
３２．節３１の少なくとも１つの非一時的機械可読媒体であって、ウェブサーバは、プロキシサーバに、所与のＴＣＰ接続に対してトラフィックを中止するリクエストを送信し、一式の複数のソフトウェアモジュールは、更に、プロキシサーバおよびウェブサーバが、実行において、
ＴＣＰ接続上でクライアントから受信される入力ＴＣＰトラフィックをバッファリングすることを継続することと、
ＴＣＰ接続に対するトラフィックが再開することが許されるという指示を受信することと、
バッファにおいて累積しているＴＣＰトラフィックに対応する複数のデータセグメントのプロキシサーバからウェブサーバへの送信を再開することと、ができるようにするように構成されている。
【０１０２】
３３．節２３から３２のいずれかの少なくとも１つの非一時的機械可読媒体であって、一式の複数のソフトウェアモジュールは、更に、
情報をウェブサーバからプロキシサーバへ送信し、多重化されており、多重ＴＣＰ接続上で送信される複数の同時データストリームの最大数を識別することと、
同時データストリームの最大数に対応する多数のクライアント接続の数を確立することと、
プロキシサーバで、ウェブサーバと通信することを望む新たなクライアントからデータを受信することと、
新たなクライアントからのデータをバッファリングすることと、
既存クライアントがサーバとの通信が終了していると判断することに応答して、新たなクライアントに対しウェブサーバとの新たなクライアント接続をネゴシエートすることと、をプロキシサーバおよびウェブサーバが実行においてできるようにするように構成されている。
【０１０３】
３４．ウェブサーバ装置であって、
プロセッサと、
プロセッサに動作可能に結合されているメモリと、
プロセッサに動作可能に結合された少なくとも１つのネットワークポートを含むネットワークアダプタと、
プロキシサーバとウェブサーバとの間で多重ＴＣＰ接続を確立するためであり、多重ＴＣＰ接続はデータを、ネットワークアダプタにおけるネットワークポートに結合されたリンクを含む転送パスにおいてトランスポートするように構成されており、複数のクライアントはそれぞれの複数のＴＣＰ接続を介してプロキシサーバに接続されている、且つ
複数のクライアントを行先としているクライアントデータストリームデータを、複数の多重（ＭＵＸ）ＴＣＰパケットのストリームとして多重ＴＣＰ接続上でプロキシサーバに送信するため、の手段と、を備え、
各ＭＵＸ・ＴＣＰパケットは、プロキシサーバとクライアントとの間のＴＣＰ接続上でクライアントに、プロキシサーバを介して転送されるべき複数のＴＣＰパケットにおいてカプセル化されるべきであるパケットペイロードデータを備える１または複数のクライアントデータストリームからの複数のシーケンシャル実行の複数のビットを備える、１または複数のデータセグメントをカプセル化し、複数のＭＵＸ・ＴＣＰパケットの少なくとも一部分は少なくとも２つの別々のクライアントデータストリームに対する複数のデータセグメントをカプセル化する、ウェブサーバ装置。
【０１０４】
３５．節３４のウェブサーバ装置であって、更に、
プロキシサーバから多重ＴＣＰ接続上で複数のＭＵＸ・ＴＣＰパケットのストリームを受信し、各ＭＵＸ・ＴＣＰパケットは、１または複数のデータセグメントをカプセル化し、各データセグメントはＴＣＰクライアントから受信されたクライアントデータストリームの一部分を備え、
複数のＭＵＸ・ＴＣＰパケットにおける複数のデータセグメントをデカプセル化し、複数のクライアントデータストリームを再アセンブルし、且つ
再アセンブルされた複数のクライアントデータストリームからパケットペイロードデータを抽出する、手段を備えるウェブサーバ装置。
【０１０５】
３６．複数のクライアントをプロキシサーバに接続するべく用いられる複数のＴＣＰ接続の各々に対し、メモリのメモリ空間における複数のキューのそれぞれのセットを割り当てるための手段を更に備え、所与のＴＣＰ接続に対する複数のキューのそれぞれのセットは、少なくとも１つの出力キューおよび少なくとも１つの入力キューを含む、節３５のウェブサーバ装置。
【０１０６】
３７．各ＴＣＰ接続および接続に対して割り当てられた複数のキューのセットにおける複数のキューは、固有クライアント識別子によって識別される、節３５のウェブサーバ装置。
【０１０７】
３８．ソフトウェア処理スタックにおって生成される複数のクライアントデータストリームを複数の出力キューに加えるためであって、各出力キューに加えられた複数のクライアントデータストリームに含まれるデータは、単一のクライアントが行先であり、且つ
複数のＭＵＸ・ＴＣＰパケットのストリームにおけるそれぞれの複数のＭＵＸ・ＴＣＰパケットにおいてカプセル化されるべく、複数のデータセグメントをプルするための複数の出力キューを選択するためのキューセレクタを用いることによって、複数のＭＵＸ・ＴＣＰパケットのストリームを生成するための手段を更に備える、節３４―３８のいずれかのウェブサーバ装置。
【０１０８】
３９．複数のＴＣＰ接続の各々に対して、多重ＴＣＰ接続のそれぞれの帯域幅スライスを割り当てるためであり、且つ
複数のＴＣＰ接続に対して割り当てられた複数の帯域幅スライスに従って、複数のデータセグメントをプルするための複数の出力キューを選択するキュー選択アルゴリズムを実装するための手段を、更に備える、節３８のウェブサーバ装置
【０１０９】
４０．多重ＴＣＰ接続を介してトランスポートされ、複数の選択されたＴＣＰ接続に個々のベースで関連している複数のクライアントデータストリームをスロットルまたは一時的に中止することのうち少なくとも１つのための手段を更に備える、節３９のウェブサーバ装置。
【０１１０】
４１．プロキシサーバ装置であって、ウェブサーバに対してプロキシサーバとして動作するように構成され、
プロセッサと、
プロセッサに動作可能に結合されたメモリと、
プロセッサに動作可能に結合された複数のネットワークポートと、
第１ネットワークポートでそれぞれのクライアントとの複数のＴＣＰ接続を確立するため、
プロキシサーバとウェブサーバとの間の多重ＴＣＰ接続を確立するためであって、多重ＴＣＰ接続は、プロキシサーバ装置における第２ネットワークポートに結合されたリンクを含む転送パスでデータをトランスポートするように構成されており、
複数のＴＣＰ接続上で複数のクライアントから複数のＴＣＰパケットを受信するためであり、
プロキシサーバ装置を介してウェブサーバへプロキシ処理されることになっている複数のＴＣＰパケットを識別するためであり、
プロキシサーバ装置を介してプロキシ処理されることになっており、それぞれのクライアントデータストリームにおける所与のＴＣＰ接続上で受信される複数のＴＣＰパケットに含まれるデータをバッファリングするためであり、
複数のシーケンシャル実行の複数のクライアントデータストリームを備える複数のデータセグメントを、複数の多重（ＭＵＸ）ＴＣＰパケットにおいてカプセル化するためであって、複数のＭＵＸ・ＴＣＰパケットの少なくとも一部分は、複数のシーケンシャル実行の少なくとも２つの別々のクライアントデータストリームを備える複数のデータセグメントをカプセル化するためであり、且つ
第２ネットワークポートからのアウトバウンドの複数のＭＵＸ・ＴＣＰパケットが多重ＴＣＰ接続上のウェブサーバへ転送されるように送信するための、手段を備える、プロキシサーバ装置。
【０１１１】
４２．ウェブサーバから多重ＴＣＰ接続上で複数のＭＵＸ・ＴＣＰパケットのストリームを受信するためであって、各ＭＵＸ・ＴＣＰパケットは、１または複数のクライアントデータストリームにおいて複数のシーケンシャル実行の複数のビットを備える１または複数のデータセグメントをカプセル化するためであり、
複数のＭＵＸ・ＴＣＰパケットにおいてカプセル化された１または複数のデータセグメントをデカプセル化するためであり、
複数のクライアントデータストリームを再アセンブルするためであり、
所与のクライアントデータストリームに関連しているＴＣＰ接続を識別するためであり、
所与のクライアントデータストリームに関連しているクライアントが行先である複数のＴＣＰパケットにおいて所与のクライアントデータストリームから抽出されたパケットペイロードデータをカプセル化するためであり、且つ
クライアントに対するＴＣＰ接続上で行先クライアントに複数のＴＣＰパケットを転送するための、手段を更に備える、節４１のプロキシサーバ装置。
【０１１２】
４３．複数のクライアントをプロキシサーバに接続するべく用いられる複数のＴＣＰ接続の各々に対して、メモリのメモリ空間における複数のキューのそれぞれのセットを割り当てられるための手段を更に備え、所与のＴＣＰ接続に対する複数のキューのそれぞれのセットは、多重ＴＣＰを介してウェブサーバに転送されるべき複数のＴＣＰパケットがバッファリングされる、少なくとも１つの出力キューを含む、節４１または４２のプロキシサーバ装置。
【０１１３】
４４．複数のＴＣＰ接続の各々に対して多重ＴＣＰ接続のそれぞれの帯域幅スライスを割り当てるためであり、且つ
複数のＴＣＰ接続に対して割り当てられた複数の帯域幅スライスに従って、複数のデータセグメントをプルするための複数の出力キューを選択するキュー選択アルゴリズムを実装するための手段を更に備える、節４３のプロキシサーバ装置。
【０１１４】
４５．ＴＣＰ接続を識別するウェブサーバからスロットルコマンドおよび中止コマンドのうちの１つを受信するためであり、且つ
応答において、多重ＴＣＰ接続上でトランスポートされているＴＣＰ接続に関連しているクライアントデータストリームをスロットリングまたは中止するうちの１つを行うための手段を更に備える、節４１―４４のいずれかのプロキシサーバ装置。
【０１１５】
上述したように、本明細書の複数の実施形態の様々な態様は、サーバプロセッサまたは同様のものによって実行されるソフトウェアおよび／またはファームウェア等に対応する複数のソフトウェアおよび／またはファームウェアコンポーネントおよびアプリケーションによって促進され得る。従って、本発明の複数の実施形態は、ソフトウェアプログラム、ソフトウェアモジュール、ファームウェア、および／またはプロセッサ、処理コアまたは埋め込み論理の任意の形式において、またはプロセッサまたはコアにおいて実行されている仮想マシーンにおいて実行される、あるいはそうでなければコンピュータ可読または機械可読非一時的記憶媒体において、またはその内部で実装または実現される、分散型ソフトウェアとして用いられ得る、またはそれをサポートする。コンピュータ可読または機械可読非一時的記憶媒体は、情報を記憶または送信するための任意の機構を、機械（例えば、コンピュータ）によって可読な形式で含む。例えば、コンピュータ可読または機械可読非一時的記憶媒体は、記録可能／記録不可能な複数の媒体（例えば、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、）、磁気記憶媒体、光記憶媒体、フラッシュメモリデバイス等）等、コンピュータまたはコンピューティングマシーン（例えば、コンピューティングデバイス、電子システム等）によってアクセス可能な形式で情報を提供する（つまり、記憶するおよび／または送信する）任意の機構を含む。コンテンツは、直接実行可能な（「オブジェクト」または「実行可能」形式の）ソースコードまたは差分コード（「デルタ」もしくは「パッチ」 コード）であり得る。コンピュータ可読または機械可読非一時的記憶媒体は、また、コンテンツがダウンロードされ得るストレージまたはデータベースを含む。コンピュータ可読または機械可読非一時的記憶媒体は、また、販売または配達時にそれに記憶されているコンテンツを有するデバイスまたは製品を含んでもよい。従って、記憶されたコンテンツを持つデバイスを供給すること、または通信媒体上のダウンロード用のコンテンツを提供することは、本明細書で説明するようなコンテンツを持つコンピュータ可読または機械可読非一時的記憶媒体を備える製造の物品を提供することであるとして理解され得る。
【０１１６】
本明細書で説明された複数の処理、複数のサーバまたは複数のツールとして上記で称された様々なコンポーネントは、説明された複数の機能を実行するための手段であってよい。本明細書において説明された様々なコンポーネントによって実行される複数のオペレーションおよび機能は、処理要素において、埋め込まれたハードウェアまたは同様のものを介して実行されるソフトウェア、あるいはハードウェアおよびソフトウェアの任意の組み合わせによって実装されてよい。そのような複数のコンポーネントは、複数のソフトウェアモジュール、複数のハードウェアモジュール特殊用途のハードウェア（例えば、アプリケーション特有のハードウェア、ＡＳＩＣ、ＤＳＰ等）、複数の埋め込まれたコントローラ、ハードウェアに組み込まれた回路、ハードウェアロジック等として実装されてよい。ソフトウェアコンテンツ（例えば、データ、複数の命令、構成情報等）は、実行され得る複数の命令を表すコンテンツを提供するコンピュータ可読または機械可読非一時的記憶媒体を含む製造の物品を提供してよい。上記コンテンツは、本明細書で説明された様々な機能／オペレーションを実行するコンピュータに結果的にもたらされてよい。
【０１１７】
いくつかの実施形態は、特定の実装を参照して説明されているが、いくつかの実施形態に従って、他の実装が可能である。更に、図面に示されたおよび／またはここ本明細書で説明された複数の要素または他の複数の特徴の構成、および／または順序は、示され、および説明された特定の方法で構成される必要はない。いくつかの実施形態に従って、多くの他の構成が可能である。
【０１１８】
図に示される各システムにおいて、場合によって、複数の要素は、表される複数の要素が、異なるおよび／または類似してよいことを示唆すべく、それぞれ同一の参照番号を有するかまたは異なる参照番号を有してよい。しかしながら、要素は、異なる複数の実装を有し、本明細書で示された、または説明されたシステムのいくつかまたは全てと協働できるように十分に柔軟であってよい。図に示される様々な要素は、同一または異なっていてあってよい。どちらが第１の要素と称され、どちらが第２の要素と呼ばれるかは任意である。
【０１１９】
以下の記述及び複数の請求項において、「結合」及び「接続」という用語は、それらの派生物と共に、使用されてよい。これらの複数の用語は、互いの類義語として意図されるものではないことを理解されるべきである。むしろ、複数の特定の実施形態では、「接続」は、２またはそれより多くの要素が、互いに直接物理的にまたは電気的に接触することを示すために用いられてもよい。「結合」は、２またはそれより多くの要素が、直接物理的にまたは電気的に接触することを意味してもよい。しかしながら、「結合」は、２またはそれより多くの要素が、互いに直接接触しないが、互いに連動または連携することもまた更に意味してもよい。
【０１２０】
実施形態は発明の１つの実装例または例である。明細書における「一実施形態」、「１つの実施形態」、「いくつかの実施形態」、「様々な実施形態」または「複数の他の実施形態」に対する参照は、複数の実施形態に関連して説明された特定の特徴、構造または特徴が、本発明の、少なくともいくつかの実施形態に含まれることを意味するが、全ての実施形態に含まれることは必ずしも意味しない。「実施形態」、「一実施形態」、または「いくつかの実施形態」の様々な出現は、必ずしも全てが同じ実施形態を指しているわけではない。
【０１２１】
本明細書で説明及び示される全てのコンポーネント、特徴、構造、特性等は、特定の実施形態または複数の実施形態に含まれる必要があるとは限らない。本明細書においてコンポーネント、特徴、構造または特性が含まれ「てもよい」、含まれる「場合がある」、含まれ「得る」、または含まれ「得た」と述べた場合には、例えば、特定のコンポーネント、特徴、構造または特性が含まれることは要求されない。明細書または請求項で、「ある」要素と参照した場合、要素が１つだけ存在することは意味しない。明細書または請求項で、「ある追加の」要素を指す場合、追加の要素が１つより多い場合は除外しない。
【０１２２】
上述の詳細な説明の「ｎ」等のイタリック文字は、整数を示すべく用いられ、特定の文字の使用は、特定の実施形態に限定されない。更に、同一の文字が、別々の複数の整数を表すべく別々の請求項において用いられてもよく、あるいは、異なる文字が用いられてもよい。更に、詳細な説明において特定の文字を用いることは、詳細な説明における同一の主題に関連する請求項で用いられる文字に一致してもよい、またはしなくてもよい。
【０１２３】
本明細書で用いられるように、「少なくとも１つ」という用語が加わっているアイテムのリストは、リストされた複数の用語の任意の組み合わせを意味してよい。例えば、「Ａ、ＢまたはＣの少なくとも１つ」という文言は、Ａ、Ｂ、Ｃ，ＡおよびＢ、ＡおよびＣ、ＢおよびＣ、またはＡ、ＢおよびＣを意味してよい。
【０１２４】
本発明の例示された複数の実施形態の上記の説明は、要約の記載も含めて、海自される形式が包括的であるまたは開示される形式に厳密に本発明を限定することを意図していない。本発明の特定の実施形態及び実施例は、本明細書で例示するために説明される一方、本発明の範囲内において様々な均等な変更が可能であり、そのような変更は当業者であれば認識できる。
【０１２５】
これらの修正は、上記の詳細な説明に照らして本発明に行うことができる。以下の請求項の記載において使用される用語は、本発明を明細書および図面で開示された特定の実施形態に限定するものと解釈されるべきではない。むしろ、以下の請求項によって完全に決定される本発明の範囲は、請求項の解釈の確立された原則に従って解釈されるべきである。
【図１】
0006318453.tif 000002
【図２ａ】
0006318453.tif 000003
【図２ｂ】
0006318453.tif 000004
【図２ｃ】
0006318453.tif 000005
【図２ｄ】
0006318453.tif 000006
【図３ａ】
0006318453.tif 000007
【図３ｂ】
0006318453.tif 000008
【図４ａ】
0006318453.tif 000009
【図４ｂ】
0006318453.tif 000010
【図４ｃ】
0006318453.tif 000011
【図５】
0006318453.tif 000012
【図６】
0006318453.tif 000013
【図７】
0006318453.tif 000014
【図８ａ】
0006318453.tif 000015
【図８ｂ】
0006318453.tif 000016
【図８ｃ】
0006318453.tif 000017
【図９】
0006318453.tif 000018