"ファイルシステムにおいて複数のコネクションを可能とし、かつトランスポート情報を受信するセッションを開始するための、コンピューターにより実行される方法であって、アプリケーションからクライアントとサーバーとの間のセッションを開始する要求を受信するステップと、前記クライアントと前記サーバーとの間のコネクションを確立するための一つまたは複数の利用可能なトランスポートを決定するステップと、前記クライアントと前記サーバーとの間のコマンドを送信するための初期トランスポートを選択するステップと、前記選択されたトランスポートを介してコネクションを確立するステップと、前記確立されたコネクションを前記開始されたセッションにバインディングするステップと、前記アプリケーションから受信したコマンドを前記セッションにバインディングされた前記確立されたコネクションを通じて送信するステップとを備え、先行の前記ステップは、少なくとも一つのプロセッサによって実行されることを特徴とする方法。前記要求を受信するステップは、サーバーメッセージブロックプロトコルを使用するサーバー上にリモートに格納されたファイルにアクセスするアプリケーションからの要求を受信するステップを備えることを特徴とする請求項1に記載の方法。前記要求を受信するステップは、セッションを設定するステップと、一つまたは複数のパケットを前記サーバーに送信して、前記クライアントと前記サーバーとの間で通信するために使用される前記ネットワークプロトコルの利用可能なダイアレクトとネゴシエートするステップとを備えることを特徴とする請求項1に記載の方法。前記要求を受信するステップは、前記サーバーが複数コネクションのセッションをサポートするかを決定するために前記サーバーへ問合せをするステップを備えることを特徴とする請求項1に記載の方法。利用可能なトランスポートを決定するステップは、前記サーバーの一つまたは複数のアドレスを特定するためにドメインネームシステムサーバーへ問合せをするステップを備えることを特徴とする請求項1に記載の方法。利用可能なトランスポートを決定するステップは、利用可能なネットワークインターフェースを特定するためにクライアントのオペレーティングシステムへ問合せをするステップを備えることを特徴とする請求項1に記載の方法。利用可能なトランスポートを決定するステップは、前記サーバー上の利用可能なネットワークインターフェースを特定するために前記サーバーに対して機能要求を送信することを問合せするステップを備えることを特徴とする請求項1に記載の方法。前記初期トランスポートを選択するステップは、前記アプリケーションのコネクション環境設定を確立するアプリケーション指定の基準に基づいて選択するステップを備えることを特徴とする請求項1に記載の方法。前記コネクションを確立するステップは、サーバーメッセージブロックコネクションを設定する前記選択されたトランスポートを経由してネゴシエートメッセージを送信するステップを備えることを特徴とする請求項1に記載の方法。前記確立されたコネクションをバインディングするステップは、前記クライアントからのコマンドを前記サーバーに送信するための前記セッションによる使用のための前記コネクションを準備するステップを備えることを特徴とする請求項1に記載の方法。前記確立されたコネクションをバインディングするステップは、前記セッションおよび/またはコネクションをクリーンアップするための情報を蓄積するステップを備えることを特徴とする請求項1に記載の方法。前記コマンドを送信するステップは、現在のコマンドを処理するのに適した一つまたは複数のコネクションを選ぶために複数のバインディングされたコネクションの間から選択するステップを備えることを特徴とする請求項1に記載の方法。ファイルシステムセッションにおいてマルチチャネルコネクションを提供するためのコンピューターシステムであって、以下のコンポーネント内で具現化されるソフトウェア命令を実行するように構成されたプロセッサおよびメモリと、一つまたは複数のリソースを共有するためにクライアントとサーバーとの間のセッションを開始する要求を受信するセッション開始コンポーネントと、前記クライアントとサーバーとの間の通信のために利用可能な一つまたは複数のコネクショントランスポートを決定するチャネル発見コンポーネントと、前記クライアントとサーバーとの間の前記セッションに対して結合するために、前記決定された利用可能なコネクショントランスポートから、一つまたは複数のコネクショントランスポートを選択するチャネル選択コンポーネントと、前記選択されたコネクショントランスポートを前記セッションと関連付けるバインディングコンポーネントと、前記クライアントと前記サーバーとの間のセッションに関連した一つまたは複数のコマンドを受信するコマンド受信コンポーネントと、特定のコマンドを送信するセッションにバインディングされたコネクショントランスポートを選択するコマンドルーティングコンポーネントとを備えることを特徴とするシステム。前記セッション開始コンポーネントはさらに、アプリケーションがファイルまたは他のリソースにアクセスするために接続したいサーバーを特定するクライアントで稼動する前記アプリケーションからの要求を受信するように構成されたことを特徴とする請求項13に記載のシステム。前記チャネル発見コンポーネントはさらに、各々のコネクショントランスポートがリモートダイレクトメモリアクセスRDMAおよび/またはレシーブスケーリングサポートRSSをサポートするか否かを決定するように構成されたことを特徴とする請求項13に記載のシステム。本明細書で説明されるマルチコネクションの情報システムは、SMBアプリケーションレイヤープロトコルなどのOSIモデルにおけるトランスポートレイヤーより上位のプロトコルから制御可能な方法で、単一のファイルシステムセッションにおいてリソースへ接続するために複数コネクションを用いる。また、このシステムにより、単一コネクションは、複数のセッションによって共有することが可能となる。チャネルの概念は、特定のコネクションに対する特定のセッションをバインディングすることを表すために導入される。セッションは、複数のトランスポートを経由した通信を可能とするために複数のコネクションにバインディングすることができる。セッションの初期ネゴシエーションの間、クライアントおよびサーバーは、セッション内でクライアントとサーバーとの間の複数のコネクションがサポートされるか否かを決定することができる。初期コネクションが確立した後で、追加コネクションが確立されそして既存のセッションにバインディングされる。複数のコネクションは、フェイルオーバーおよび/または負荷分散のために使用することができる。マルチコネクションの情報システムは、セッション内における複数チャネルを確立する機能を検知するためのプロトコルを提供する。プロトコルは、二つの特定のリソース間の利用可能なコネクションに関する情報およびコネクションのサーバー側とクライアント側がセッション内における複数チャネルをサポートするかの情報を提供する。クライアントとサーバー例えば、SMBクライアントとサーバーとの間の初期セッションが確立する間、クライアントおよびサーバーの双方がセッション内で複数のコネクションをサポートすることを示すためにネゴシエーションが発生する。これは、複数のコネクションのためのサポートを提供するプロトコルバージョンをネゴシエーションすることを含む。クライアントは、FSCTL、または他のAPIを呼び出して、サーバートランスポートインターフェースのリストを得ることができる。代替的な実施形態において、クライアントは、サーバーネットワークインターフェイスおよび性能についてのより多くの情報を得るためにDNSサービスの問合せを行うことができる。また、クライアントは、各々のサーバーIPアドレスに関連したローカルインターフェースを見つけ、形式と速度を含む、ローカルインターフェースについての追加の情報を集めることができる。次いで、クライアントは、初期コネクションを確立するためのインターフェースを選択することができる。ある実施形態において、クライアントは最初に初期コネクションを確立し、他の利用可能なトランスポートについて、サーバーと情報のネゴシエーションするために上記コネクションを使用する。追加のチャネルの確立のため、クライアントは、複数のインターフェースを形式および速度によりソートして最上位のインターフェースを決定し、最上位のインターフェースを使用する追加チャネルを確立する。クライアントが複数のチャネルを確立した後に、最上位のインターフェースではない一部のチャネルを任意に廃棄することができまたは単純に使用しない、形式と速度に基づいて上位にランクされたチャネルを使用することを選択する。このように、マルチコネクションの情報システムは、トランスポートレイヤーより上位のレイヤーにおいて、単一セッションへの複数のコネクションをインテリジェントに選択して使用する方法を提供する。図1は一実施形態における、マルチコネクションの情報システムのコンポーネントを説明するブロック図である。システム100は、セッション開始コンポーネント110、チャネル発見コンポーネント120、チャネル選択コンポーネント130、バインディングコンポーネント140、コマンド受信コンポーネント150、コマンドルーティングコンポーネント160、およびフェイルオーバー処理コンポーネント170を含む。これらのコンポーネントの各々については、本明細書においてさらに詳細に説明する。セッション開始コンポーネント110は、一つまたは複数のリソースを共有するために、クライアントとサーバーとの間のセッションを開始するための要求を受信する。例えば、コンポーネント110は、アプリケーションがファイルまたは他のリソースにアクセスするために接続したいサーバーを特定するクライアントで稼動する当該アプリケーションからの要求を受信することができる。クライアントで稼動するアプリケーションから要求を受信することができるが、クライアントは、アプリケーションがファイルまたは他のリソースにアクセスするために接続したいサーバーを特定する。セッション開始コンポーネント110は、クライアントとサーバーとの間で通信を開始するネゴシエートメッセージなどのSMB初期要求を受信することができる。セッション開始コンポーネント110は、アプリケーション要求に応答してセッションを作成する。そして、セッション開始コンポーネント110は、ユーザの認証情報のようなセキュリティ情報を提供し、その結果サーバーは制限されたリソースに対するネットワークアクセス何れにも遵守することができる。チャネル発見コンポーネント120は、クライアントとサーバーとの間の通信に利用可能な一つまたは複数のコネクショントランスポートを決定する。クライアントおよびサーバーは、イーサネットおよびWiFi、並びに二つのイーサネットNICsのような同じトランスポートの冗長構成のコネクションなどの様々なトランスポートによって接続することができる。さらに、一部のコネクショントランスポートは、別のコネクショントランスポートを経由した一コネクショントランスポートの速度に影響を及ぼす、RDMAなどの機能をサポートすることができる。チャネル発見コンポーネント120は、この形式の情報を集め、クライアントが適切なトランスポートを選択する際に使用するための情報を収集する。コンポーネント120は、サーバートランスポートインターフェースを特定するためにサーバーへの初期コネクションを使用してコネクションのための複数のチャネルのネゴシエートをすることができる。また、コンポーネント120は、サーバーに対する利用可能なコネクション形式についての情報を求めるDNSサーバーへの問合せなどの、クライアントとサーバーの外部の情報を集めることができる。チャネル選択コンポーネント130は、決定された利用可能なコネクショントランスポートの中から一つまたは複数のコネクショントランスポートを選択し、クライアントとサーバーとの間のセッションをバインディングする。ある場合において、クライアントは、サーバーへの最初のコネクションを確立し、次いで、ある条件が存在するのを発見すると、クライアントは、最初のコネクションを経由して発見された情報を使用して、その後、サーバーへの追加のコネクションを確立するであろう。例えば、条件は、クライアントが大容量のデータをサーバーに対して送信していること、および、初期コネクションにより長時間かかるであろうことを探知することを含むことができる。また、条件は、冗長構成のコネクションがフェイルオーバーに有益となり得るよう、クライアントがクライアントとサーバーとの間のセッションへの信頼性についての高い期待を有することを決定することを含み得る。チャネル選択コンポーネント130は、アプリケーション、または、システム100の特定の実行によって修正されもしくは構成され得、特定の実行に対して重要な目的および優先順位に基づいてコネクションを選択する。例えば、ある実行は、最も速いトランスポートコネクションを最初に経由するコネクションを確立することを優先し、一方で、他の実行は、ネットワークトラフィックのある形式のために高速のコネクションを確保して、他の形式のトラフィックのために低速のまたは低い優先順位のコネクションを使用することができる。バインディングコンポーネント140は、選択されたコネクショントランスポートをセッションと関連付ける。セッションは、クライアントとサーバーとの間の特定の一連の通信と関連付けられた、セキュリティプリンシパルについての情報を取得する。また、セッションは、特定の一連の通信に利用可能な機能またはコマンドを定義する、その他メタデータを包含することができる。選択されたコネクショントランスポートをセッションにバインディングすることは、上記セッションのために、コネクショントランスポートを利用可能にし、そして何れのセキュリティ証明書またはその他サーバーとのやりとりをネゴシエートすることができ、セッションの使用のためコネクションを準備する。単一のセッションが複数のコネクションにバインディングすることができるように、複数のセッションもまた特定のコネクションにバインディングすることができることに注意されたい。コネクションは、通信がクライアントとサーバーとの間で伝達するコンジットを提供し、その一方で、セッションは、アプリケーションレイヤーが達成しようとすること、または、実行を許可されていることのコンテキストにおけるセマンティックな意味を各通信に与える。コマンド受信コンポーネント150は、クライアントとサーバーとの間のセッションに関連した一つまたは複数のコマンドを受信する。クライアントとサーバーとの間で通信が可能であることの目的は、クライアントがリソースにアクセスするコマンドを送信することである。例えば、クライアントは、ファイルを開くためにファイルに対して開く要求またはクライアントがファイルを修正する間に他者からのアクセスを防ぐためにロックする要求を送信することができる。コマンド受信コンポーネント150は、これらコマンドを受信する。そしてコマンドルーティングコンポーネント160を呼び出し、どの経路でコマンドを送信するかの一つまたは複数のトランスポートを決定する。ある実施形態において、システム100は、対応する要求が送信された経由と同じトランスポートコネクションを経由して、応答が送信されるであろうことを保証する。このように、特定のトランスポートコネクションに対する特定のコマンドをルーティングすることによって、クライアントはまた、どのように要求に関連したデータがクライアントに対して返されるであろうかを選択することができる。大容量データおよびコネクション速度が変化するため、適切に選択することは、動作全体の存続期間に劇的に影響し得る。コマンドルーティングコンポーネント160は、特定のコマンドを送信するセッションにバインディングされたコネクショントランスポートを選択する。コマンドルーティングコンポーネント160は、大容量のファイルを取り出すため、または大容量のファイルを送信するためなど、コマンドを分割しそしてコマンドを実行するために複数のトランスポートを使用する。また、コンポーネント160は、幾つかのコマンドには高速コネクショントランスポートを選択することができる一方で、低い優先順位のコマンドには、低速または頻繁に利用されないコネクショントランスポートを選択することができる。また、コマンドルーティングコンポーネント160は、既存のバインディングされたコネクション経由では低速すぎるであろう、大容量のファイルを送信するための要求の受信の際のように、追加の利用可能なトランスポートコネクションはセッションにバインディングされるべきであることを決定することができる。さらに、コマンドルーティングコンポーネント160は、差し迫ったコネクションの維持管理または停電を検知することができ、そしておよび信頼性を保証するために追加コネクションを作成する。フェイルオーバー処理コンポーネント170は、セッション中の特定のトランスポートコネクションの切断を処理する。例えば、ネットワークケーブルが切断され、NICが動作しなくなり、または他の条件により以前は切断されていたコネクションが動作する可能性がある。フェイルオーバー処理コンポーネント170は、他のコネクションは利用可能か否か決定する。そして、追加のチャネルを選択するチャネル発見コンポーネント120および切断されていないコネクションに対してコマンドをルートするコマンドルーティングコンポーネント160のような、他のコンポーネントを呼び出すことができる。また、フェイルオーバー処理コンポーネント170は、切断されたコネクショントランスポートにキューされたコマンド、および別のトランスポートコネクションを経由するサーバーの応答待ちコマンドの何れへの応答を処理することができる。その結果、故障にかかわらず確実にコマンドは実行される。このように、システム100はより高い信頼性を供給する。マルチコネクションの情報システムが実行されるコンピューティング装置は、CPU、メモリ、入力装置例として、キーボードおよびポインティング装置、出力装置例として、ディスプレイ装置、およびストレージ装置例、ディスクドライブまたはその他不揮発性ストレージ媒体を含むことができる。メモリおよびストレージ装置は、システムを実行または作動させるコンピューターが実行可能な命令例として、ソフトウェアとしてエンコード可能な、コンピューターが読み取り可能なストレージ媒体である。さらに、データ構造およびメッセージ構造は、通信リンクの信号のようにデータ送信媒体を経由して格納されまたは送信され得る。通信リンクは、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、ポイントトゥーポイントダイアルアップコネクション、携帯電話ネットワーク等のように様々な通信リンクを使用することができる。システムの実施形態は、様々な動作環境において実施することができ、その動作環境は、パーソナルコンピューター、サーバーコンピューター、ハンドヘルドもしくはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサーベースのシステム、プログラム可能な家電、デジタルカメラ、ネットワークPC、マイクロコンピューター、メインフレームコンピューター、上記のシステムまたは装置のいずれかを含む分散コンピューティング環境、セットトップボックス、SOC等を含む。コンピューターシステムは、携帯電話、PDA,スマートフォン、パーソナルコンピューター、プログラム可能な家電、デジタルカメラなどを含むことができる。システムは、一つもしくは複数のコンピューター、または、他の装置によって実行されるプログラムモジュールなどのコンピューターが実行可能な命令の一般的なコンテキストで説明することができる。一般的に、プログラムモジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、特定のタスクを実行するもの、または、特定の抽象的なデータ形式を実行するものなどを含む。典型的に、プログラムモジュールの機能は、様々な実施形態において所望の態様で集約または分散することができる。図2は、一実施形態における、マルチコネクションの情報システムがセッションを開始しそしてトランスポート情報を受信する処理を図示したフローチャートである。まずブロック210において、システムはアプリケーションからクライアントとサーバーとの間のセッションを開始するための要求を受信する。アプリケーションは、オペレーティングシステムコンポーネントまたは他のサービスレベルアプリケーション、並びに典型的なクライアントアプリケーションを含む。アプリケーションの多くの形式およびサービスは、ファイル、プリンタ、または他のリソースを共有するためにサーバーに接続する。要求を受信すると、システムはセッションの設定を始め、一つまたは複数のパケットをサーバーに送信して利用可能なネットワークプロトコルのダイアレクトをネゴシエートすることができる。利用可能なネットワークプロトコルのダイアレクトは、クライアントとサーバーとの間の通信、および、互換性を保証するためにクライアントとサーバーの他の機能を検出するために使用される。この処理の間、サーバーは、複数のコネクションのセッションをサポートすることを示すことができ、そのため、クライアントは、スループットを増加し、フェイルオーバーを改善する等のために、本明細書で説明にされた技法を利用することができる。続いてブロック220において、システムは、クライアントとサーバーとの間のコマンド送信のための初期トランスポートを選択する。システムは、最初のNIC上のイーサネットコネクションのように、最初のコネクションのためのトランスポートの所定形式を実行しないとするか、またはアプリケーションが指定する基準に基づいて選択することができる。基準は、最も高速なコネクション、最も高い帯域を伴うコネクション、最も堅牢なコネクションを選択すること、またはアプリケーションに対してその他何れの有用な基準を示すことができる。続いてブロック225において、クライアントはサーバーに対して初期コネクションを確立する。クライアントとサーバーは、利用可能なトランスポートに関する情報を共有するので、クライアントは、何れの特定のセッションのための適切なコネクションを選ぶことができる。続いてブロック230において、システムは、クライアントとサーバーとの間の二番目のコネクションを確立するための、一つまたは複数の利用可能なトランスポートを決定する。システムは、利用可能なトランスポートを決定する内部および外部の両方の方法を有する。外部の方法は、独立したDNSサーバーへの問合せ、データーセンターメタデータ、または他の情報のように、クライアント/サーバーコネクションの外側での方法である。内部の方法は、機能要求の送信または利用可能な装置およびトランスポートを特定するための問合せのように、クライアントとサーバーとの間のコネクションの内部での方法である。クライアントは、クライアントオペレーティングシステムへの問合せによってまたは初期コネクションを経由したサーバーへの問合せによって、ローカルトランスポートを特定することができる。マルチチャネルの情報システムは、利用可能なトランスポートのリストおよび如何なる条件下で各々のトランスポートを使用するべきかを決定する際に助けとなる、トランスポートについて発見された何れのメタデータの編纂をする。次にブロック240において、システムは、選択されたトランスポートを介して二番目のコネクションを確立する。例えば、プロトコルがSMBの場合、次いで、クライアントはSMBコネクションを設定する、選択されたトランスポートを経由してネゴシエートメッセージを送信することができる。個々のコネクションは、今日それらがシステムで動作するように、バインディングするステップを伴い単一のコネクションを単一のセッションへ集約するように表される。コネクションを確立することは、クライアントとサーバーとの間で行き来する幾つかのパケットを含み、何れのコネクション設定を実行することおよびコネクションに使用するのに必要な何れのメタデータを集めることを含むことができる。次にブロック250において、システムは、確立された二番目のコネクションを初期コネクションのセッションにバインディングする。バインディングすることは、システムに対して、セッションはコネクションに組み込まれていることおよびシステムはコマンドを送信するためにコネクションを使用できることを通知する。システムは、どのコネクションがどのセッションにバインディングされたか追跡することができ、セッションが閉じたまたはコネクションが切断すると、システムは適切にクリーンアップすることができる。コネクションを使用する全てのセッションが終了した後で、システムはコネクションを閉じることができる。同様に、セッションに統合された全てのコネクションが切断した後で、システムはセッションをクリーンアップすることができる。次にブロック260において、システムはアプリケーションから受信されたコマンドを、セッションにバインディングされたいずれかの確立されたコネクションを介して送信する。システムは、現在のコマンドに適したコネクションを選ぶために、複数のこのようなコネクションの間から選択をすることができる。システムは、帯域、レイテンシ、現在のキューの深さ、バッテリー電源例として、モバイル装置のための、優先順位、またはコマンド処理のためコネクションを選択するための他任意の要因を考慮することができる。また、システムは、コマンドを分割し、複数のコネクションを同時に使用して処理速度を向上することができる。次にブロック270において、システムは、コマンドを送信するのに使用した同じトランスポートを介して、送信したコマンドへの応答を受信する。受信した応答は、コマンドが適切に送信されたか否かを示すことができ、要求されたデータ、または特定の要求のために定義されたその他何れの応答を含むことができる。次に、判断ブロック280において、まだほかにコマンドがあるかまたはセッションが閉じられていない場合、次いでシステムはブロック260にループしてまだほかにあるコマンドを送信するか、そうでなければシステムを完了する。システムはこのように、利用可能なコネクションを経由して、セッションに関連付けられたコマンドを送信しながら継続する。何れかの段階で、システムが、コマンドを実行するために追加のコネクションが有益であろうと決定した場合、次いでシステムは、コマンドが使用するセッションに対する追加のコネクションを確立およびバインディングすることができる。ブロック280の後、これらステップは完結する。図3は、一実施形態における、マルチコネクションの情報システムが、以前に確立されたセッションに追加のコネクションを加える処理を図示したフローチャートである。図3のステップは、図2のステップの後に、特定の条件が検知されたか、または単一のコネクションから複数のコネクションへセッションを拡張するための閾値が届いた後に発生することができる。例えば、システムは複数のコネクションを経由してより高速に完了するであろう大容量のファイル転送を検知することができる。まず、ブロック310において、システムは以前に確立されたセッションのための追加のコネクションを確立するための条件を検知する。そして、確立されたセッションは、クライアントとサーバーとの間での少なくとも一つのバインディングされたコネクションをすでに有する。条件は、既存のコネクションの帯域を上回ること、既存のコネクション上でレイテンシが高すぎること、大容量データを要求または送信する次に控えたコマンドのために追加の帯域を必要とすること等を含むことができる。条件を検知すると、システムはセッションに追加のコネクションを付加するために、以下のステップを実行する。次にブロック320において、システムは以前に発見されたトランスポートのリストから追加のトランスポートを選択する。システムは、サーバーに要求する機能を通じ、DNS情報を問合わせることにより、または、クライアントとサーバーとを接続するための方法を発見する他の任意の機構により、トランスポートを発見することができる。システムは、利用可能なトランスポートをソートし、および/または発見する間に受信した特性に基づいてトランスポートを選択することができる。例えば、システムは高帯域でのコネクション、高可用でのコネクション、現在はアイドル状態のコネクション等を選ぶことができる。次に、ブロック330において、システムは選択されたトランスポートを介してコネクションを確立する。コネクションを確立することは、セッションプロトコルネゴシエーション並びにTCP/IPを介して等、SMBネゴシエートシーケンス等、トランスポートレイヤーコネクションを確立することを含むことができる。システムはまた、確立されたコネクションを経由してメタデータを交換することができ、コネクション形式を確認し、およびコネクションを使用するための何れかの設定情報を受信する例えば、コネクションが選択的再送SACK:selectiveacknowledgementのようなある特定の機能をサポートするか否か、等。次にブロック340において、システムは新しく確立されたコネクションを既存のセッションにバインディングし、その結果セッションはコマンドを送信するときに選択可能な複数の利用可能なコネクションを有する。バインディングすることは、すでに別のセッションに関連付けられたコネクションを、現在のセッションに関連付けることができ、そのため双方のセッションはコネクションを利用することができる。バインディングすることはまた、セッションが閉じた場合に、セッション管理ロジックが適切なクリーンアップステップを実行してコネクションを結合解除および/または閉じることができるよう、セッションに対してコネクションについて通知する。次にブロック350において、システムは現状複数のコネクションがあるサーバーに方向付けられたアプリケーションレベルのコマンドを受信する。アプリケーションはファイルを開くことを要求することができ、共有プリンタに対してプリントすることを要求することができ、または共通共用の、リモートのリソースの使用を実行することができる。オペレーティングシステムまたは他のサービスコードは、アプリケーションがサーバーに対してコマンドを送信するためのシステムを呼び出し得ることを通じて、一つまたは複数のAPIsを提供することができる。次にブロック360において、システムは、新しく確立されたコネクションの中から一つまたは複数のトランスポートおよび一つまたは複数の受信されたコマンドが送信された以前のコネクションを選択する。システムは、大容量のデータのための要求のような、一つまたは複数の閾値基準を満たさなければコマンドをデフォルト設定のコネクションにルートすることができる。より大きな要求を受信すると、システムはより高い帯域コネクションまたはコマンドを分割し、複数のコネクションを使用し、コマンドによって指定される動作をより速く完了する。別例として、システムはコネクションが切断された時に検知することができ、およびアプリケーションに対して透過的な円滑なフェイルオーバーの方法として、代替のコネクションを使用することができる。ブロック360の後で、これらのステップは完結する。ある実施形態において、マルチコネクションの情報システムは、クライアントアプリケーションまたはサービスがリモートサーバーの利用可能なネットワークインターフェースについての情報を要求することができるオペレーティングシステム内のファイルシステムAPIを提供する。例えば、MICROSOFT登録商標WINDOWS登録商標は、一つまたは複数のファイルシステムと対話するためにファイルシステムコントロールメッセージを使用する。リモートサーバーの動作中のネットワークインターフェースを要求するためのコマンドであるFSCTLLMRQUERYTRANSPORTINFOを付加することができる。サーバーがこのコマンドに応答して提供することができる一つの構成は、下記においてさらに詳細に説明される次の要素を含む。すなわち、Next、Iflndex、Capability、RssQueueCount、LinkSpeed、SockAddrStorage。Next要素は、現在の構造の始めから後続の8バイト整列ネットワークインターフェースの始めまでのオフセットを提供する。Next要素は、それ以上ネットワークインターフェースが続かない時、ヌルターミネータとしてゼロにセットされる。Iflndex要素は、現在のネットワークインターフェースのために数に関するインデックスを提供する。Capability要素は、インターフェースがRDMAまたはRSS要件を満たすか否かのような、現在のネットワークインターフェースの機能を示すフラグを包含する。RssQueueCount要素は、RSS要件を満たすインターフェースのためにRSSキューカウントを示す。ある場合において、システムは特定のNICを使用してどれくらい多くのコネクションを作成するかのヒントとしてRSSキューの深さを使用する。LinkSpeed要素は、ビット/秒のインターフェースの速度を示す。SockAddrStorage要素は、インターフェースを使用してコネクションを確立するためにネットワークインターフェースアドレスを示す。このフィールドは、よく知られたソケット構造であるSOCKADDRSTORAGEを使用することができる。図4は一実施形態にかかる、マルチコネクションの情報システムを使用して複数コネクションの設定を図示する、ネットワークパケットの状態遷移図である。この例で、クライアント405は、次に続くパケットまたは複数パケットメッセージを送信することによって、サーバー495との複数のコネクションを確立する。クライアント405は、最初のネゴシエート要求410をサーバー495へ送信する。サーバー495は、ネゴシエート応答420をクライアント405へ応答する。クライアント405は次いで、最初のセッション設定要求430をサーバー495へ送信する。サーバー495は、セッション設定応答440をクライアント405へ応答する。セッション設定は、クライアントとサーバーとの間の複数の往復を作成することができる。この時点で、セッションのための最初のチャネルが確立され、そしてクライアントはセッションを使用してサーバーに対してコマンド送信を開始することができる。その後ただちにまたはしばらくした後、クライアント405は、サーバー495に対する二番目のコネクションを同じセッションで確立することを決定する。クライアント405は、二番目のネゴシエート要求450を新しいトランスポートを経由してサーバー495に送信する。サーバー495は、ネゴシエート応答460をクライアント405へ応答する。クライアント405は次いで、二番目のセッション設定要求470をサーバー495へ送信する。最初のセッション設定要求430とは異なり、この要求470は以前のセッションに新しいコネクションを付加することを示すバインディングフラグを含むことができる。サーバー495は、セッション設定応答480をクライアント405へ応答する。このセッション設定はまた、クライアントとサーバーとの間の複数の往復を作成することができる。この時点で、双方のコネクションはコマンドをサーバーに送信するクライアントに対して利用可能となる。図5は一実施形態にかかる、マルチチャネル情報システムを使用してセッションおよびコネクションの間の潜在的な多対多の関係を示すブロック図である。ブロック図は、最初のセッション510および二番目のセッション520を含む。ブロック図はまた、最初のコネクション530および二番目のコネクション540を含む。伝統的には、各セッションは、最初のセッション510が最初のコネクション530を使用する唯一のセッションであり、二番目のセッション520が二番目のコネクション540を使用する唯一のセッションであったように、コネクションと一対一の関係を有した。本明細書で説明される技術を使用して、チャネルの概念が導入され、これにより各々のセッションは複数のコネクションを使用することができ、かつ他のセッションとコネクションを共有することさえできる。このように、示された通り、最初のセッション510は最初のチャネル550を通じて最初のコネクション530にバインディングされる。最初のセッション510はまた、二番目のチャネル560を通じて二番目のコネクション540にバインディングされる。同様に、二番目のセッション520は、三番目のチャネル570を通じて最初のコネクション530にバインディングされ、および二番目のセッション520は、四番目のチャネル580を通じて二番目のコネクション540にバインディングされる。このように、いずれかのセッションは、アプリケーションまたは実行指定の環境設定によって規定される通りにいずれかのコネクションを使用することができる。ある実施形態において、マルチコネクションの情報システムはアプリケーションに利用可能なコネクションを通知しない。本明細書で記載したように、システムはアプリケーションとトランスポートレイヤーとの間のレイヤー例、TCPにおいて実行されることができる。例えば、MICROSOFT登録商標WINDOWS登録商標はアプリケーションが使用できるSMB実行を提供する。システムは本明細書で説明された技術を実行することができ、利用可能な時に複数のトランスポートを自動的に使用し、およびアプリケーションにより高い信頼性とスループットをアプリケーションによる入力なしに自動的に提供する。システムは、アプリケーションが機能を有効にするか否か構成することを可能とし得る。機能がオンの場合、システムはコネクションを確立して経由するトランスポートおよびアプリケーションからの様々なコマンドに使用するトランスポートを自動的に選ぶことができる。他の実施形態において、システムはアプリケーションに対してより多くのコントロールを提供することができ、その結果、アプリケーションが各々のコネクションを選択するための基準を確立することができ、または選択自体をすることができる。前述より、マルチコネクションの情報システムの特定の実施形態は、図示の目的のために本明細書に記載されたものであるが、本発明の技術思想および技術的範囲から逸脱することなく様々な修正がなされることは理解されるであろう。従って、本発明は添付された特許請求の範囲によって以外は限定されない。"