(57)【特許請求の範囲】
【請求項１】
ローカルのコンピュータ装置とリモートのコンピュータ装置との間のネットワークを介してデータの集合を転送する方法であって、
前記ローカルのコンピュータ装置にネットワーク接続を与える通信インターフェースにおいて所与の期間にわたって転送される１つまたは複数のデータの集合についてのデータのサイズを周期的にサンプリングすることによって前記通信インターフェースの実際のネットワーク帯域幅使用率のレベルをモニタ（測定）するステップと、
モニタされたレベルの最大値を識別するステップであって、前記モニタされたレベルの最大値は、前記通信インターフェースの実際のネットワーク帯域幅使用率についてモニタされたレベルの中の最大値であり、前記通信インターフェースにより転送される前記１つまたは複数のデータの集合がデータのサイズについて現行のしきい値を上回るときに識別されて、前記現行のしきい値は、ゼロに初期設定され、新しい最大値が検出されるたびに毎回、新しいしきい値が計算される、識別するステップと、
使用率についてモニタされたレベルの前記最大値の相関的要素（function）として使用率についてのしきい値レベルを計算するステップと、
前記実際の使用率のレベルが前記使用率についてのしきい値レベルを下回っているという決定に基づき前記ローカルのコンピュータ装置と前記リモートのコンピュータ装置との間の前記ネットワークを介して前記データの集合の少なくとも一部分を受信するステップと
を備えることを特徴とする方法。
【請求項２】
クライアントが、前記ネットワークを介して前記データをサーバから受信することを特徴とする請求項１に記載の方法。
【請求項３】
前記モニタするステップは、前記クライアントと前記ネットワークの間のインターフェースにおいて行われることを特徴とする請求項２に記載の方法。
【請求項４】
前記ネットワークは、インターネットであることを特徴とする請求項１に記載の方法。
【請求項５】
前記使用率についてのしきい値レベルは、前記モニタされたレベルの最大値の所定パーセンテージに等しいことを特徴とする請求項１に記載の方法。
【請求項６】
前記データの集合は、ソフトウェア更新を備えることを特徴とする請求項１に記載の方法。
【請求項７】
前記データの集合の一部分が受信されるたびに毎回、少なくとも前記モニタするステップを繰り返すステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項８】
前記受信するステップは、前記実際の使用率のレベルが前記使用率についてのしきい値レベルを下回っているとき、前記ネットワークを介して前記データの集合の、複数の個別の部分を別々に受信するステップを含むことを特徴とする請求項７に記載の方法。
【請求項９】
前記ネットワークを介して前記データの個別の部分が受信されるたびに毎回、カウンタを増分するステップをさらに備え、前記データの前記個別の部分のサイズは前記カウンタの値の相関的要素であることを特徴とする請求項８に記載の方法。
【請求項１０】
前記ネットワークを介して前記データの前記複数の個別の部分のすべてを受信した後、前記カウンタをクリアするステップをさらに備えることを特徴とする請求項９に記載の方法。
【請求項１１】
前記実際の使用率のレベルが前記使用率についてのしきい値レベルを上回るようになった場合、前記カウンタをクリアするステップをさらに備えることを特徴とする請求項９に記載の方法。
【請求項１２】
前記実際の使用率のレベルが前記使用率についてのしきい値レベルを上回るようになった場合、前記データの個別の部分の前記受信をサスペンドするステップをさらに備えることを特徴とする請求項８に記載の方法。
【請求項１３】
前記実際の使用率のレベルが前記使用率についてのしきい値レベルを下回るようになったとき、前記サスペンドの時点から前記データの個別の部分の前記受信を再開するステップをさらに備えることを特徴とする請求項１２に記載の方法。
【請求項１４】
前記データの集合が受信されるたびに毎回、前記モニタするステップを繰り返すステップと、
前記データの集合の受信中、使用率の最大レベルを識別するステップと、
前記データの集合の受信中に識別された使用率の前記最大レベルの相関的要素として、前記データの集合に関する使用率についてのしきい値レベルを計算するステップと
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項１５】
前記識別するステップは、前記データの集合の受信中、前記モニタするステップを所定の回数繰り返した後、前記データの集合に関する使用率の平均レベルを計算することによって前記データの集合の受信中に使用率の前記最大レベルを推定するステップを含むことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記実際の使用率のレベルが前記データの集合に関する使用率についてのしきい値レベルを下回っている場合、前記ネットワークを介して前記データの集合の少なくとも一部分を受信するステップをさらに備えることを特徴とする請求項１４に記載の方法。
【請求項１７】
前記実際の使用率のレベルが前記データの集合に関する使用率についてのしきい値レベルを下回っている場合、前記ネットワークを介して第２のデータ集合の少なくとも一部分を受信することをさらに備えることを特徴とする請求項１４に記載の方法。
【請求項１８】
請求項１に記載の前記ステップを行うためのコンピュータ実行可能命令を有することを特徴とするコンピュータ可読媒体。
【請求項１９】
メモリと、オペレーティング・システムと、中央プロセッサとを有するコンピュータ・システムであって、前記プロセッサは、請求項１８に記載の前記コンピュータ可読媒体上に記憶された前記命令を実行するように動作可能であることを特徴とするシステム。
【請求項２０】
クライアント・マシンが前記クライアント・マシンのユーザについての他のネットワーク活動に関わる能力を妨げることなしに前記ネットワークを介して前記データを受信することを特徴とする請求項１に記載の方法。
【請求項２１】
前記データは、他のあらゆるネットワーク活動を妨げることなしに前記ネットワークを介して受信されることを特徴とする請求項１に記載の方法。
【請求項２２】
ローカルのコンピュータ装置とリモートのコンピュータ装置との間のネットワークを介するデータの転送を管理するためのコンピュータ実行可能構成要素を有するコンピュータ読み取り可能な記録媒体であって、
データのサイズについて所定のしきい値を上回るデータの集合に対して所与の期間にわたって転送される着信データおよび発信データの量を周期的にサンプリングすることによって前記ローカルのコンピュータ装置のネットワーク接続に関して実際の帯域幅使用率のレベルをモニタし、前記ローカルのコンピュータ装置のネットワーク接続に関する実際の帯域幅使用率についてモニタされたレベルの中の最大値である、モニタされたレベルの最大値を識別する帯域幅モニタ構成要素と、
前記帯域幅モニタ構成要素によって識別された、使用率のモニタされたレベルの最大値の相関的要素として使用率のしきい値レベルを計算するしきい値計算構成要素と、
前記実際の帯域幅使用率のレベルが前記使用率のしきい値レベルを下回っているとき、前記ローカルのコンピュータ装置と前記リモートのコンピュータ装置との間の前記ネットワークを介してデータの転送を管理する転送管理構成要素と
を備えることを特徴とする媒体。
【請求項２３】
前記ネットワーク接続は、クライアント・マシンと前記ネットワークの間のインターフェースであることを特徴とする請求項２２に記載のコンピュータ可読媒体。
【請求項２４】
前記使用率のしきい値レベルは、前記モニタされる最大レベルの所定のパーセンテージとして計算されることを特徴とする請求項２２に記載のコンピュータ可読媒体。
【請求項２５】
ネットワークを介してクライアント・プロセスとサーバ・プロセスの間で通信する方法であって、
（ａ）ファイルを識別し、前記クライアント・プロセスに関する他のネットワーク活動を妨げることなしに前記ネットワークを介してデータを転送できるよりも低いしきい値レベルを前記クライアント・プロセスに関する実際のネットワーク帯域幅使用率が下回るときに前記サーバ・プロセスが前記ネットワークを介して前記クライアント・プロセスへ前記ファイルの第１のセグメントを転送することを要求する第１のダウンロード要求、を前記サーバ・プロセスに対して発行するステップであって、前記しきい値レベルはモニタされたレベルの最大値の相関的要素として計算され、前記モニタされたレベルの最大値はサイズについて所定のしきい値を上回るデータの集合に対して所与の期間にわたって転送される着信データおよび発信データの量を周期的にサンプリングすることによって識別される前記クライアント・プロセスに関する実際のネットワーク帯域幅使用率についてモニタされたレベルの中の最大値である、第１のダウンロード要求を発行するステップと、
（ｂ）前記ファイルの前記第１のセグメントを、前記サーバ・プロセスから受信するステップと、
（ｃ）前記ファイルに関連付けられ、前記実際のネットワーク帯域幅使用率が前記しきい値レベルを下回っているときに前記ネットワークを介して前記ファイルのさらなるセグメントを前記サーバ・プロセスが転送することを要求するさらなるダウンロード要求、を前記サーバ・プロセスに対して発行するステップと、
（ｄ）前記ファイルの前記さらなるセグメントを、前記サーバ・プロセスから受信するステップと、
（ｅ）前記サーバ・プロセスが前記ネットワークを介して前記ファイルの各セグメントの転送を完了するまで、ステップ（ｃ）および（ｄ）を繰り返すステップと
を備えることを特徴とする方法。
【請求項２６】
ネットワークとコンピュータとの間のデータ転送を前記コンピュータが調節する方法であって、
所与の期間にわたって前記ネットワークと前記コンピュータとの間に転送される着信データおよび発信データの量を周期的にサンプリングすることによって前記ネットワークと前記コンピュータとの間に伝達されるデータの量の使用率をモニタするステップと、
前記ネットワークと前記コンピュータとの間に伝達されるデータの量の使用率の中の最大値を繰り返し決定するステップと、
前記ネットワークと前記コンピュータとの間に伝達されるデータの量の使用率の中の最大値に基づきデータ通信の使用率のしきい値を繰り返し計算するステップと、
前記データ通信の使用率のしきい値および前記ネットワークと前記コンピュータとの間に伝達されるデータの量の使用率に基づき前記ネットワークと前記コンピュータとの間に転送されるデータをサスペンドするか再開するかを繰り返し決定することにより、前記データの転送をサスペンドするまたは再開するステップと
を備えることを特徴とする方法。
【発明の詳細な説明】
【０００１】
（発明の分野）
本発明は、コンピュータ・ソフトウェアに関し、より詳細には、インターネットなどのネットワークを介してデータを転送するためのシステムおよび方法に関する。
【０００２】
（発明の背景）
１つまたは複数のクライアント・マシンがネットワークを介して１つまたは複数のサーバと通信するコンピュータ・システムは、一般的な構成である。例えば、様々なサーバとの通信のためにインターネットに接続された数百万のパーソナル・コンピュータ（ＰＣ）が存在する。これらのＰＣユーザの多くは、インターネットを介して遠隔サーバからソフトウェアをダウンロードすることによって彼等自身のＰＣ上に新しいソフトウェアまたは更新されたソフトウェアを獲得する。
【０００３】
インターネットなどのネットワークを介して新しいソフトウェアや更新されたソフトウェアなどのデータをＰＣにアップロードおよびダウンロードする従来の方法は、ダウンロード中にＰＣユーザが、インターネットをブラウズする能力、または他の仕方でネットワークを介して通信する能力を妨げる。ＰＣに関して処理速度が増大するにもかかわらず、ユーザのブラウズ体験にとっての重要なボトルネックとなっているのが、インターネットに対する帯域幅である。従来のダウンロードは、通常、ダウンロードが完了するまで、ユーザの使用可能通信帯域幅の１００％を占有するため、ユーザは、ダウンロード中、その他のタスクのためにネットワークを利用することができない。さらに、ダウンロードが何らかの理由で（例えば、ネットワーク接続が失われて）中断された場合、ファイルの開始からダウンロードを再開することが必要である可能性があり、これにより、相当なネットワーク・リソースが浪費される。他の従来のダウンロード・ソフトウェアは、ユーザが、指定時間にダウンロードをスケジュールできるようにする。いずれにしても、インターネットなどのネットワークを介してソフトウェアをダウンロードするための従来の方法は、ユーザが、他のネットワーク活動に関わる能力をひどく制限する。
【０００４】
ソフトウェア更新を提供することは、ユーザのＰＣの問題を修正し、パフォーマンスを向上させるため、ＰＣユーザにとって有益である。さらに、ソフトウェア・ベンダには、製品サポート・コールの数が減少することで利益があり、その結果、この減少は、そうでなければベンダが、そのようなコールを扱うために割り振る可能性がある相当なリソースを低減する。
【０００５】
本出願人は、「ＷＩＮＤＯＷＳ（登録商標）  ＵＰＤＡＴＥ」の商標の下で、オペレーティング・システム製品のＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳ（登録商標）ファミリに関連するソフトウェア更新サービスを提供している。「ＷＩＮＤＯＷＳ（登録商標）  ＵＰＤＡＴＥ」インターネットＷｅｂサイトにアクセスすることにより、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳ（登録商標）ユーザは、インターネットを介して自らのシステムを評価させ、クリティカルなソフトウェア更新とクリティカルでないソフトウェア更新（例えば、修正またはパッチ）をともにダウンロードすることができる。ユーザのＰＣ上に既にロードされてはいない入手可能な更新が存在すると判定されたとき、そのような更新が入手可能であるとユーザに通知され、ユーザは、インターネットを介してダウンロードするために更新の１つまたは複数を選択するよう促される。これは、ユーザにソフトウェア更新を提供するための便利な方法であるが、そのようなダウンロードは、他のネットワーク活動を妨げる可能性がある。さらに、多くのユーザは、自主的に「ＷＩＮＤＯＷＳ（登録商標）  ＵＰＤＡＴＥ」Ｗｅｂサイトにナビゲートして、自身のＰＣに対するオペレーティング・システム更新をダウンロードすることをしない可能性が高い。したがって、クリティカルな更新をまだダウンロードしていないユーザは、自身のＰＣで問題に遭遇する可能性がより高く、問題が生じたときにベンダの製品サポートを呼び出す可能性が高い。
【０００６】
したがって、ネットワークを介してソフトウェア更新をダウンロードし、他のネットワーク活動に対する妨げが最小限に抑えるようにするための有効な方法が必要とされている。１つの可能な解決策は、単にネットワーク帯域幅を増大させることである。ただし、帯域幅をより大きくすることは、高価であり、従来、帯域幅の増大に連れてユーザ要求も増大している。したがって、技術の進歩とともに可用帯域幅が増大するにしても、ユーザ要求の対応する増大のため、他のネットワーク活動の妨げをなくす必要が存在することに変わりはない。
【０００７】
（発明の概要）
一態様では、本発明は、ネットワークを介してデータ集合を転送する方法を対象とする。この方法は、実際のネットワーク帯域幅使用率のレベルをモニタするステップと、実際の使用率のモニタされたレベルの最大値を識別するステップとを備える。次に、この方法は、使用率についてモニタされたレベルの最大値の相関的要素として使用率についてのしきい値レベルを計算する。実際のレベルが、しきい値レベルより低い場合、そのデータの集合の少なくとも一部分が、ネットワークを介して受信される。
【０００８】
本発明の別の態様は、第１のデータ・フィールドおよび第２のデータ・フィールドを含むデータ構造を記憶しているコンピュータ可読媒体を対象とする。第１のデータ・フィールドは、実際のネットワーク帯域幅使用率のモニタされたレベルの最大を表すデータを含む。第２のデータ・フィールドは、それを下回ると、他のネットワーク活動を妨げることなくネットワークを介してデータを転送することができるネットワーク帯域幅使用率のしきい値レベルを表すデータを含む。第２のデータ・フィールドは、モニタされる最大レベルの相関的要素としてしきい値レベルを計算することにより、第１のデータ・フィールドから導出される。
【０００９】
本発明のさらに別の態様は、ネットワークを介するデータの転送を管理するためのコンピュータ実行可能構成要素を有するコンピュータ可読媒体に関する。第１の構成要素は、ネットワーク接続に関して実際の帯域幅使用率をモニタし、使用率のモニタされたレベルの最大値を識別する帯域幅モニタ構成要素である。第２の構成要素は、第１の構成要素によって識別されたモニタされた使用率のモニタされたレベルの最大値の相関的要素として使用率のしきい値レベルを計算するしきい値計算構成要素である。第３の構成要素は、実際の帯域幅使用率のレベルが使用率のしきい値レベルを下回っているとき、ネットワークを介するデータの転送を管理する転送管理構成要素である。
【００１０】
本発明のさらに別の態様は、ネットワークを介するクライアント・プロセスとサーバ・プロセスの間における通信の方法を対象とする。この方法は、ファイルを識別し、サーバ・プロセスがネットワークを介してそのファイルの第１のセグメントをダウンロードすることを要求する第１のダウンロード要求、をサーバ・プロセスに対して発行することを含む。また、この方法は、サーバ・プロセスにより、ファイルの第１のセグメントをダウンロードすることも含む。次に、この方法は、実際のネットワーク帯域幅使用率がしきい値レベルを下回っているならば、そのファイルに関連付けられたダウンロード要求で、サーバ・プロセスがネットワークを介してそのファイルのさらなるセグメントをダウンロードすることを要求するさらなるダウンロード要求をサーバ・プロセスに発行する。この方法は、サーバ・プロセスにより、ファイルのさらなるセグメントをダウンロードすることをさらに含む。最後に、この方法は、サーバ・プロセスがネットワークを介してファイルの各セグメントのダウンロードを完了するまで、さらなるダウンロード要求を発行するステップと、さらなるセグメントをダウンロードするステップとを繰り返すことを含む。
【００１１】
本発明の代替の実施形態では、ある態様は、ネットワークを介してデータの集合を転送する方法を対象とする。この方法は、実際のネットワーク帯域幅使用率のレベルをモニタするステップと、実際の使用率のモニタされたレベルの平均を識別するステップとを含む。次に、この方法は、現在の活動および帯域幅しきい値との相関的要素として転送されるべきデータ・ブロックのサイズを計算する。次に、計算されたサイズのブロックが、ダウンロードされる。
【００１２】
本発明の代替の実施形態の別の態様は、第１のデータ・フィールドおよび第２のデータ・フィールドを含むデータ構造を記憶しているコンピュータ可読媒体を対象とする。第１のデータ・フィールドは、ネットワーク使用率のサンプル時刻に対応するタイムスタンプを表すデータを含む。第２のデータ・フィールドは、ネットワーク・アダプタを通過したバイトの総数を表すデータを含む。
【００１３】
本発明の代替の実施形態のさらに別の態様は、ネットワークを介するデータの転送を管理するためのコンピュータ実行可能構成要素を有するコンピュータ可読媒体に関する。第１の構成要素は、ネットワーク接続に関して実際の帯域幅使用率のレベルをモニタし、使用率のモニタされたレベルの平均を識別する帯域幅モニタ構成要素である。第２の構成要素は、第１の構成要素によって識別された使用率のレベルの平均の相関的要素として、使用率に基づいて転送されるべきブロック・サイズを計算する転送ブロック・サイズ計算構成要素である。第３の構成要素は、計算されたブロック・サイズでネットワークを介するデータの転送を管理する転送管理構成要素である。
【００１４】
本発明の代替の実施形態のさらに別の態様は、ネットワーク速度計算とデータ・ブロック・サイズ計算を連続的にリファインする（refine  改良する）方法を対象とする。この方法は、間隔をおいてネットワーク使用（network usage）をサンプリングするステップと、いくつかのサンプルにわたって獲得された速度の移動平均（moving average）を計算するステップとを含む。平均計算において、最新のサンプルにより大きい重みを与える。ネットワークのサンプリング間隔は、ネットワークの速度に基づいて調整される。
【００１５】
本発明を添付の図面を参照してより詳細に説明する。
【００１６】
（発明の詳細な説明）
本発明は、インターネットなどのネットワークを介してデータを転送するためのシステムおよび方法を提供する。
【００１７】
図１は、本発明を実施することが可能である適切なコンピュータ・システム環境の例を示している。このコンピュータ・システム環境は、適切なコンピュータ環境の一例に過ぎず、本発明の使用または機能性の範囲に関する限定を全く示唆するものではない。また、コンピュータ環境が、例としての動作環境において示す構成要素のどれか１つ、または組み合わせに関連するどのような依存性または要件も有するものと解釈すべきではない。
【００１８】
本発明は、他の多数の汎用または特殊目的のコンピュータ・システム環境またはコンピュータ・システム構成で動作する。本発明とともに使用するのに適している可能性がある周知のコンピュータ・システム、コンピュータ環境、および／またはコンピュータ構成の例には、パーソナル・コンピュータ、サーバ・コンピュータ、ハンドヘルド装置またはラップトップ装置、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベースのシステム、プログラマブル家庭用電化製品、ネットワークＰＣ、ミニ・コンピュータ、メイン・フレーム・コンピュータ、前述のシステムまたは装置の任意のものを含む分散コンピュータ環境等が含まれるが、それらには限定されない。
【００１９】
本発明は、コンピュータによって実行される、プログラム・モジュールなどのコンピュータ実行可能命令の一般的コンテキストで説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行する、または特定の抽象データ・タイプを実装するルーチン、プログラム、オブジェクト、構成要素、データ構造等を含む。また、本発明は、タスクが、通信網を介してリンクされた遠隔処理装置によって実行される分散コンピュータ環境で実施することも可能である。分散コンピュータ環境では、メモリ記憶装置を含むローカルのコンピュータ記憶媒体と遠隔のコンピュータ記憶媒体の両方の中にプログラム・モジュールを配置することが可能である。
【００２０】
図１を参照すると、本発明を実施するための例としてのシステムが、コンピュータ２０の形態で汎用コンピュータ装置を含む。コンピュータ２０の構成要素には、処理装置２２、システム・メモリ２４、およびシステム・メモリを含む様々なシステム構成要素を処理装置２２に結合するシステム・バス２６が含まれるが、それらには限定されない。システム・バス２６は、メモリ・バスまたはメモリ・コントローラ、周辺バス、および様々なバス・アーキテクチャのどれかを使用するローカル・バスを含むいくつかのタイプのバス構造のどれであることも可能である。例として、限定するものではなく、そのようなアーキテクチャには、インダストリ・スタンダード・アーキテクチャ（Industry Standard Architecture）（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（Micro Channel Architecture（ＭＣＡ）バス、エンハンスト（Enhanced）ＩＳＡ（ＥＩＳＡ）バス、ビデオ・エレクトロニクス・スタンダード・アソシエーション（Video Electronics Standards Association）（ＶＥＳＡ）ローカル・バス、およびメザニン（Mezzanine）バスとしても知られるペリフェラル・コンポーネント・インターコネクト（Peripheral Component Interconnect）（ＰＣＩ）バスが含まれる。
【００２１】
コンピュータ２０は、通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ２０によってアクセスされることが可能な任意の利用可能な媒体であることが可能であり、揮発性媒体と不揮発性媒体、取外し可能な媒体と取外し不可能な媒体がともに含まれる。例として、限定するものではなく、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことが可能である。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラム・モジュール、またはその他のデータなどの情報の記憶のために任意の方法または任意の技術で実装される不揮発性と揮発性の媒体、取外し可能な媒体と取外し不可能な媒体がともに含まれる。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリ、またはその他のメモリ技術、ＣＤ−ＲＯＭ、デジタル・バーサタイル・ディスク（ＤＶＤ）またはその他の光ディスク・ストーレッジ、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、あるいは所望の情報を記憶するのに使用することが可能であり、コンピュータ２０によってアクセスされることが可能な他の任意の媒体が含まれるが、それらには限定されない。通信媒体は、通常、搬送波などの変調されたデータ信号、または他のトランスポート機構としてコンピュータ可読命令、データ構造、プログラム・モジュール、または他のデータを実現し、任意の情報送付媒体を含む。「変調されたデータ信号」という用語は、その特性の１つまたは複数が、情報を信号に符号化するような仕方で設定された、または変更された信号を意味する。例として、限定するものではなく、通信媒体には、有線網または直接有線接続などの有線媒体、および音響媒体、ＲＦ媒体、赤外線媒体、およびその他の無線媒体（wireless media）などの無線媒体が含まれる。以上のどの組み合わせも、コンピュータ可読媒体の範囲に含まれるべきものである。
【００２２】
システム・メモリ２４は、読取り専用（ＲＯＭ）２８およびランダム・アクセス・メモリ（ＲＡＭ）３０などの揮発性メモリおよび／または不揮発性メモリの形態のコンピュータ記憶媒体を含む。始動中などにコンピュータ２０の中の要素間で情報を転送するのを助ける基本ルーチンを含む基本入力／出力システム３２（ＢＩＯＳ）は、通常、ＲＯＭ２８の中に記憶される。ＲＡＭ３０は、通常、処理装置２２にとって即時にアクセス可能であり、かつ／または現在、操作されているデータおよび／またはプログラム・モジュールを含む。例として、限定するものではなく、図１は、オペレーティング・システム４６、アプリケーション・プログラム４８、その他のプログラム・モジュール５０、およびプログラム・データ５２を示す。
【００２３】
また、コンピュータ２０は、他の取外し可能／取外し不可能な、揮発性／不揮発性のコンピュータ記憶媒体を含むことも可能である。単に例として、図１は、取外し不可能な不揮発性磁気媒体に対する読取り、または書込みを行うハード・ディスク・ドライブ３４、取外し不可能な不揮発性磁気媒体３８に対する読取り、または書込みを行う磁気ディスク・ドライブ３６、およびＣＤ  ＲＯＭまたはその他の光媒体などの取外し可能な不揮発性光ディスク４２に対する読取り、または書込みを行う光ディスク・ドライブ４０を示す。例としての動作環境において使用するのが可能であるその他の取外し可能／取外し不可能な、揮発性／不揮発性のコンピュータ記憶媒体には、磁気テープ・カセット、フラッシュ・メモリ・カード、デジタル・ビデオ・ディスク、デジタル・ビデオ・テープ、ベルヌーイ（Ｂｅｒｎｏｕｌｌｉ）カートリッジ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭ等が含まれるが、それらには限定されない。ハード・ディスク・ドライブ３４、磁気ディスク・ドライブ３６、および光ディスク・ドライブ４０は、通常、スモール・コンピュータ・システム・インターフェース（Small Computer System Interface）（ＳＣＳＩ）４４でシステム・バス２６に接続される。別法では、ハード・ディスク・ドライブ３４、磁気ディスク・ドライブ３６、および光ディスク・ドライブ４０は、それぞれ、ハード・ディスク・ドライブ・インターフェース、磁気ディスク・ドライブ・インターフェース、および光ドライブ・インターフェースによってシステム・バス２６に接続されることが可能である。
【００２４】
前述し、図１に示したドライブおよびドライブに関連するコンピュータ記憶媒体は、コンピュータ２０に関するコンピュータ可読命令、データ構造、プログラム・モジュール、およびその他のデータのストーレッジを提供する。図１では、例えば、ハード・ディスク・ドライブ３４が、オペレーティング・システム４６、アプリケーション・プログラム４８、その他のプログラム・モジュール５０、およびプログラム・データ５２を記憶するものとして示されている。以上の構成要素は、オペレーティング・システム４６、アプリケーション・プログラム４８、その他のプログラム・モジュール５０、およびプログラム・データ５２と同一である、またはそれらとは異なるのが可能であることに留意されたい。ユーザは、キーボード５４、およびマウス、トラック・ボール、またはタッチ・パッドと一般に呼ばれるポインティング・デバイス５６などの入力装置を介してコンピュータ２０にコマンドおよび情報を入力することができる。その他の入力装置（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、サテライト・ディッシュ、スキャナ等が含まれることが可能である。以上の入力装置およびその他の入力装置は、しばしば、システム・バスに結合されたユーザ入力インターフェース５８またはシリアル・ポート・インターフェ６０を介して処理装置２２に接続されるが、パラメータ・ポート、ゲームポート、またはユニバーサル・シリアル・バス（ＵＳＢ）などのその他のインターフェースおよびバス構造によって接続されることも可能である。モニタ６１またはその他の表示装置も、ビデオ・アダプタ６２などのインターフェースを介してシステム・バス２６に接続される。モニタ６１に加えて、コンピュータは、出力周辺インターフェースを介して接続することができるスピーカやプリンタなどのその他の周辺出力装置を含むことも可能である。
【００２５】
コンピュータ２０は、遠隔コンピュータ６４などの１つまたは複数の遠隔コンピュータに対する論理接続を使用するネットワーク化された環境で動作することが可能である。遠隔コンピュータ６４は、パーソナル・コンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置、またはその他の一般的ネットワーク・ノードであることが可能であり、メモリ記憶装置だけを図１で示したが、通常、コンピュータ２０に関連して前述した要素の多く、またはすべてを含む。図１に描いた論理接続は、ローカル・エリア・ネットワーク（ＬＡＮ）６６、およびワイド・エリア・ネットワーク（ＷＡＮ）６８を含むが、その他のネットワークを含むことも可能である。そのようなネットワーク環境は、オフィス、企業全体のコンピュータ・ネットワーク、イントラネット、およびインターフェースで一般的である。
【００２６】
ＬＡＮネットワーク環境で使用されるとき、コンピュータ２０は、ネットワーク・インターフェース、つまりアダプタ７０を介してＬＡＮ６６に接続される。ＷＡＮネットワーク環境で使用されるとき、コンピュータ２０は、通常、インターネットなどのＷＡＮ６８を介して通信を確立するためのモデム７２またはその他の手段を含む。内部または外部にあることが可能なモデム７２は、シリアル・ポート・インターフェース６０または他の適切な機構を介してシステム・バス２６に接続されることが可能である。ネットワーク化された環境では、コンピュータ２０に関連して描いたプログラム・モジュール、またはプログラム・モジュールの部分を遠隔メモリ記憶装置の中に記憶することが可能である。例として、限定するものではなく、図１は、メモリ装置６４上に常駐するものとして遠隔アプリケーション・プログラム４８を示している。示すネットワーク接続は、例としてのものであり、コンピュータ間で通信リンクを確立する他の手段も使用できることが理解されよう。
【００２７】
コンピュータ２０の他の多数の内部構成要素は示していないが、そのような構成要素および相互接続は周知であることが、当分野の技術者には理解されよう。したがって、コンピュータ２０の内部構成に関するさらなる詳細は、本発明に関連して開示する必要がない。
【００２８】
オペレーティング・システム４６、アプリケーション・プログラム４８、およびデータ５２などのプログラム・モジュールは、ＲＯＭ２８、ＲＡＭ３０、ハード・ディスク・ドライブ３４、磁気ディスク・ドライブ３６、または光ディスク・ドライブ４０を含むことが可能なメモリ記憶装置を介してコンピュータ２０に提供されることが、当分野の技術者には理解されよう。好ましくは、ハード・ディスク・ドライブ３４を使用して、オペレーティング・システム４６およびアプリケーション・プログラム４８を含むデータ５２およびプログラムを記憶する。
【００２９】
コンピュータ２０をオンにしたとき、またはリセットしたとき、ＲＯＭ２８の中に記憶されているＢＩＯＳ３２が、ハード・ディスク・ドライブ３４からＲＡＭ３０の中にオペレーティング・システムをロードするように処理装置２２に命令する。オペレーティング・システム４６がＲＡＭ３０の中にロードされると、処理装置２２が、オペレーティング・システム・コードを実行して、オペレーティング・システム４６のユーザ・インターフェースに関連するビジュアル要素が、モニタ６１上に表示されるようにする。アプリケーション・プログラム４８がユーザによって開かれたとき、プログラム・コードおよび関係のあるデータが、ハード・ディスク・ドライブ３４から読み取られ、ＲＡＭ３０の中に記憶される。
【００３０】
図２を参照すると、本発明を実施するための例としてのシステムが、参照番号７４によって一般的に示されている。システム７４は、ネットワーク８０（例えば、インターネット）にアクセスするためにＰＣ７６などのクライアント・マシンおよびモデムなどの通信装置７８を含む。また、サーバ８２も従来の仕方でネットワーク８０に接続されている。ＰＣ７６およびモデム７８は、ネットワーク８０を介してサーバ８２との接続を確立して、クライアントとサーバの間におけるデータの転送を円滑にする。
【００３１】
図３に提示するシステム８４は、図２のシステム７４と同様であり、イントラネットなどのリンク８８を介して互いに接続されている第１のクライアント８６Ａおよび第２のクライアント８６Ｂをシステム８４が含むことだけが異なっている。システム７４と同様に、通信装置７８（例えば、モデム）が、第１のクライアント８６Ａとネットワーク８０の間で接続を確立する。したがって、クライアント８６Ａ、８６Ｂは、ネットワーク８０を介してサーバ８２とデータを交換することができる。
【００３２】
本発明は、図２および３に示すシステム７４、８４に対する可能な多数の変形形態を包含することが、当分野の技術者には容易に理解されよう。もちろん、任意の数のクライアント・マシンおよびサーバ・マシンをネットワーク８０に（直接または間接的に）接続することができる。例えば、システム８４が、２つ以上のクライアント・マシンを含み、その１つが、その他のマシンのためのプロキシとして動作することが可能である。その場合、クライアント・マシンは、イントラネットを介して互いに接続されていることが可能であり、またプロキシ・マシンの中のネットワーク・カードは、Ｔ１回線を介してネットワーク８０にリンクされたルータに接続されていることが可能である。さらに、ネットワーク８０は、インターネット、または他の任意の公衆網または私設網であることが可能である。さらに、通信装置７８は、ＰＣ７６の一部であること、または独立のハードウェア装置であることが可能である。
【００３３】
本発明の一適用例では、クライアント・マシンは、ＰＣ７６であり、装置７８は、５６Ｋｂｐｓ（キロビット／秒）モデムであり、ネットワーク８０は、インターネットであり、またサーバ８２は、ＰＣのオペレーティング・システムのためのソフトウェア更新をダウンロードするためのインターネットを介してアクセス可能なＷｅｂサイトである。図４を参照すると、曲線９０は、ある期間中、インターネットにアクセスするクライアントＰＣに関する実際のネットワーク帯域幅使用率のレベルを表している。曲線９０は、Ｔ０ないしＴ２で上昇し、ユーザが最初にインターネットにアクセスした際に通常、生じるネットワーク活動の一時的な上昇を反映する。次に、Ｔ３におけるネットワーク活動の短い低下の後、クライアントの実際の使用率は、再び劇的に上昇してＴ４でピークに達する。このピークは、Ｗｅｂページをダウンロードすること、または電子メール・メッセージを開くことなどの、クライアントによって開始されるあらゆる数の可能な処理を表していることが可能である。クライアント・マシンにおけるユーザがＷｅｂページまたは電子メール・メッセージを読んでいる間、または、場合により、インターネットを介して音楽を聴いている間、実際のネットワーク使用率は、Ｔ５ないしＴ８で相当により低いレベルにまで低下する。
【００３４】
Ｔ５ないしＴ８に示す（図４）比較的低い実際のネットワーク帯域幅使用率のレベルは、ときとして、「ネットワーク・アイドル状態」と呼ばれる。この概念は、ＰＣユーザが現在、キーボードまたはマウスを使用していないときに生じる「マシン・アイドル状態」とは異なる。マシンが、ある期間にわたってアイドル状態に留まる場合、スクリーン・セーバが起動される可能性がある。しかし、ネットワーク使用率は、マシンがアイドル状態にあるのと同時に（例えば、ダウンロード中）、高い可能性があり、またマシンがアイドル状態にないときに、ネットワーク・インターフェースが、「アイドル状態」にある可能性がある。したがって、本発明は、ネットワーク使用率が比較的低いときに、ネットワークを介してソフトウェア更新などのデータの集合を転送することを目的とする。このデータ転送は、ユーザにはトランスペアレントであるものとされ、またユーザのマシンが、この転送中にアイドル状態にある必要はない。このデータ転送は、ビデオ・ゲームをすること、または音楽ＭＰ３ファイル、ｅＢｏｏｋ等をダウンロードすることなどのＰＣ上のユーザの処理によって開始された活動に関連することも、容易に可能である。さらに、転送されるデータは、テキスト、イメージ、および／またはオーディオ・データを含むことが可能である。また、本発明は、クライアントからサーバへのアップロードに、またはコンピュータ間の他のデータ通信にも同様に適用可能である。
【００３５】
図７に関連して以下に説明するとおり、本発明は、曲線９０（図４）で表される実際の使用率のレベルをモニタ（測定）し、それを下回ると、クライアントとサーバの間におけるデータの転送が、その他のネットワーク活動を妨げる可能性が低い、使用率のしきい値レベルを計算する。好ましい実施形態では、しきい値レベルは、実際のネットワーク使用率の検出されるレベルの最大値のおよそ３３％に等しい。図４に示すとおり、しきい値レベルは、参照番号９２で一般的に示され、ゼロに初期設定される。ネットワーク活動は、周期的にサンプリングされ、新しい最大値が識別されるたびに毎回、新しいしきい値レベルが計算される。Ｔ１で実際の帯域幅使用レベルが、新しい最大値である１５Ｋｂｐｓであり、したがって、しきい値９２は、５Ｋｂｐｓに設定される。実際の帯域幅使用レベルがＴ２で再びサンプリングされ、３０Ｋｂｐｓの別の新しい最大値が識別される。したがって、新しいしきい値９２が計算されて１０Ｋｂｐｓになる。
【００３６】
Ｔ３におけるように、実際の使用レベル９０が、しきい値レベル９２を下回って低下したとき、データの短い転送は、その他のネットワーク活動をそれほど妨げないはずである。データの転送は、実際の使用率がしきい値レベルを下回ったのを最初に検出した時点で即時に開始することが可能である。ただし、ユーザをより尊重するという意味でより保守的な手法は、低い使用率が少なくとも２回、連続して生じたのを検出してからダウンロードを開始することである。いずれにしても、Ｔ４で４５Ｋｂｐｓの新しい最大値が検出され、これにより、１５Ｋｂｐｓの更新されたしきい値レベルの計算がトリガされる。したがって、Ｔ３で何らかのデータ転送が開始された場合には、その転送は、Ｔ４で即時にサスペンドされることになる。Ｔ５で、実際の使用率９０が再び、しきい値レベル９２を下回って低下する。今度は、実際の使用レベル９０は、Ｔ５ないしＴ８で、１５Ｋｂｐｓのしきい値レベルを下回る５〜１０Ｋｂｐｓの間に留まる。したがって、ネットワークを介するデータの転送は、この期間中、その他のネットワーク活動を妨げないことになる。
【００３７】
本発明のクライアントの好ましいアーキテクチャを図５に提示している。クライアント９４が、更新クライアント９６、更新エンジン９８、更新ダウンローダ１００、および更新アプレット１０２を含む。クライアント９４は、好ましくは、ＨＴＴＰ（ハイパー・テキスト転送プロトコル）リンクである一対のリンク１０６、１０８を介して更新Ｗｅｂサイト１０４を介するなどしてサーバに接続される。更新クライアント９６は、ユーザのための通知および個人化オプション（personalization options）を担う。更新エンジン９８は、更新サイト１０４との内容対話（content interaction）、ならびにソフトウェア更新の、検出、インストール、およびログ記録、を制御する。更新ダウンローダ１００は、パケット・バックグラウンド・ダウンロード／スロットリング（packet background downloading/throttling）、および着信パケット待ち行列管理を実施することを担う。更新アプレット１０２は、ユーザに対する更新通知の構成（configuration）、およびユーザとの他の対話を決定する。バックエンド内容（backend content）およびカタログが、更新サイト１０４から入手可能である。
【００３８】
本発明は、図６に示すデータ構造１１０を利用する。データ構造１１０は、実際の帯域幅使用率の識別されたレベルの最大値を含む第１のフィールド１１２と、使用率のしきい値レベルを含む第２のフィールド１１４とを含む。図４に示すとおり、識別された最大レベルとしきい値レベルはともに、実際の使用率のレベルに応じて、時間の経過につれて変化する傾向がある。前述したとおり、しきい値レベルは、実際の使用の識別されたレベルの最大値の相関的要素として計算される。したがって、新しい最大レベルが検出されるたびに毎回、新しいしきい値レベルが計算される。
【００３９】
図７は、本発明の好ましい実施形態による、ネットワークを介してデータを選択的に転送するためのコンピュータ・プログラム、を表す流れ図を提示している。このプログラムは、ある所定の条件が存在するときにステップ１２０で開始される。通常、プログラムを開始する前にクライアントＰＣが、「オン」にされ、ネットワークに接続されていなければならない。プログラムがＰＣとネットワークの間で接続を確立することも可能であろうが、いくらかのＰＣユーザは、自身のモデムが自らネットワークをダイアル呼出しする予期しない音で驚かされる可能性がある。また、クライアントが別のネットワーク（例えば、私設網（private network））に接続されており、したがって、クライアントが私設網から接続解除し、インターネットに再接続するまで、Ｗｅｂサーバに対するアクセスが可能でないことも可能である。サーバに「ｐｉｎｇ（ＴＣＰ／ＩＰにおける最も基本的で、かつ重要なコマンド）」を行い、サーバから確認応答を受信することによってクライアントとサーバが同一のネットワークに接続されていることを確認することができる。当分野の技術者は、所与の状況でどの事前条件が適切であるかを容易に判定することができる。
【００４０】
クライアントがサーバと同一のネットワークに接続されると、実際のネットワーク帯域幅使用率のレベルが、ステップ１２２で獲得される。図４に示すとおり、実際の使用率は、周期的に（例えば、５秒毎に）サンプリングされる。好ましくは、サンプリングは、クライアントとネットワークの間の通信インターフェースにおいて所与の期間（例えば、１秒間）にわたって着信パケットの数および発信パケットの数を記録しておくことによって行われる。「ＷＩＮＤＯＷＳ（登録商標）９８」オペレーティング・システムを実行するＰＣの場合、この情報は、「ｉｐｈｌｐａｐｉ．ｄｌｌ」におけるＧｅｔＩｆＥｎｔｒｙ関数を使用して入手可能である。
【００４１】
比較的大きなファイルが、ネットワーク・インターフェースにおいて実際のネットワーク帯域幅使用のレベルを測定するためのより正確な基準を提供する。例えば、測定のオーバーヘッドが相当なものであり、小さいファイルは可用帯域幅を飽和させないため、２００バイトのファイルに関してダウンロード時間を正確に測定するのは困難である。したがって、本発明は、好ましくは、使用率の実際のレベルの測定が、少なくとも４ＫＢのサイズのファイルの転送速度に基づく場合にだけ、使用率の最大レベルを更新する。
【００４２】
好ましくは、特にシステム７４より複雑なシステムにおいて、正確なモニタを確実にするために、「バーチャル装置」のそれぞれが１つ１つ列挙される。本明細書で使用する「バーチャル装置」という用語は、モデム（ケーブル・モデムおよびＩＳＤＮモデムを含む）、ネットワーク・カード、およびＤＳＬ（デジタル加入者回線）などの、デバイス・ドライバを有する任意のネットワーク装置を指す。２チャネルＩＳＤＮモデムの各チャネルは、本発明に関しては、別個のバーチャル装置と見なされる。
【００４３】
重要なことには、実際のネットワーク帯域幅使用率のレベルは、単にネットワーク装置の定格のスループット、つまり記載のスループットを当てにするのではなく、モニタ（測定）される。定格値は、実際のところ、モデムによって達せられる最大スループットが記載のスループットより小さく、各ネットワーク・セッションごとに異なる可能性があるため、信頼できない。電話接続の品質などの不確定要素により、通常、５６Ｋｂｐｓモデムに関して５０Ｋｂｐｓを下回る最大可用帯域幅がもたらされる。
【００４４】
さらに、定格値は、クライアントがプロキシによってネットワークに接続されている場合、正確であると見なすことができない。システム８４では、第１のクライアント８６Ａと第２のクライアント８６Ｂの間でイントラネット８８を介するピア・ツー・ピア接続が存在し、また、第１のクライアント８６Ａは、モデム７８によってネットワーク８０にリンクされている。５６Ｋｂｐｓモデムおよび１０Ｍｂｐｓのイントラネットを想定すると、モデム７８は、ネットワーク８０に対するボトルネックである。したがって、第１のクライアント８６Ａが、４０Ｋｂｐｓのネットワーク帯域幅を利用しており、同時に第２のクライアント８６Ｂが、５Ｋｂｐｓだけの帯域幅を使用する場合、他方のクライアントのネットワーク活動を低下させることなくどちらかのクライアントにサーバ８２から、データの集合（例えば、ソフトウェア更新）をダウンロードするのに利用できる十分なネットワーク帯域幅が存在しないことになる。さらに、第２のクライアント８６Ｂが１０Ｍｂｐｓの最大スループットを有する、または第２のクライアント８６Ｂはネットワーク・インターフェースの５Ｋｂｐｓだけを使用しているため、第２のクライアント８６Ｂが相当な帯域幅が利用可能であると想定するのは正確でないことになる。この場合、遠隔アクセスのケースでは、第２のクライアント８６Ｂに関する実際の帯域幅使用率のレベルは、ＲＡＳ（遠隔アクセス・サービス）装置テーブルから獲得することができる。したがって、各仮想装置において実際のスループットをモニタすることは、セッション間の構成（configuration）の変更に有利に適合し、したがって、より信頼できる手法である。
【００４５】
図７を再び参照すると、実際の使用で検出されるレベルの最大値が、ゼロに初期設定される。次に、ステップ１２４で、実際の使用率が現行の最大値を上回っているかどうかが判定される。上回っていない場合、実際の使用率が、ステップ１２２で再びサンプリングされる。ただし、実際の使用率が、現行の最大値を上回る場合には、ステップ１２６で、新しい最大値が現行の実際のレベルに等しく設定される。次に、ステップ１２８で、しきい値レベルが、最大値との関係で計算される。しきい値は、ゼロに初期設定され、新しい最大値が検出されるたびに毎回、新しいしきい値が計算される。一般的に、しきい値レベルは、検出される最大レベルのおよそ５％〜８０％までのどのようなレベルであることも可能である。ただし、インターネット適用例に関して現行で好ましいしきい値は、検出される最大レベルのおよそ３３％である。新しいしきい値レベルが計算されると、ステップ１２２で実際の使用率が再びサンプリングされる。
【００４６】
本発明は、ネットワーク接続が所与の期間中にビジー状態である時間のパーセンテージなどの他の何らかのパラメータではなく、１秒当りのキロビットの実際のネットワーク帯域幅のパーセンテージとして、しきい値レベルを計算することに留意されたい。例えば、１時間が経過するなかで７５％の時間、ネットワーク接続を利用しているクライアント・マシンは、必ずしも、可用帯域幅の７５％を使用していない。実際、クライアントＰＣにおけるユーザが、単にＷｅｂページを読んでいる、電子メールを読んでいる、音楽等を聞いている場合、実際の帯域幅使用率のレベルは、最大可用帯域幅をはるかに下回る可能性が高い。クライアント・レベルで実施される本発明は、ハードウェア・レベルで帯域幅を制限するための方法（例えば、ソケット）とは、根本的に異なることが、当分野の技術者には理解されよう。
【００４７】
実際のネットワーク帯域幅使用率のレベルは、ステップ１２２で獲得されるごとに、現行のしきい値レベルに対する比較も行われる。ステップ１３０で、実際の使用率がしきい値レベルを下回っているかどうかが決定される。下回っている場合、サーバから入手可能なソフトウェア更新（または、他のデータの集合）を、ネットワークを介してクライアントにダウンロードすることができる。クライアントの他のあらゆる現在または将来のネットワーク活動に対する妨げを最小限に抑えるため、ダウンロードは、好ましくは、いくつかのセグメントで、ソフトウェア更新をダウンロードすることによって行われる。したがって、ステップ１３２で、ファイルの１つのセグメントが、サーバからクライアントにダウンロードされる。第１のセグメントをダウンロードした後、クライアントのネットワーク活動が増大する場合、ファイル全体のダウンロードは、実際の使用率が低下して再びしきい値レベルを下回るまでサスペンドすることができる。ただし、ネットワークが、長期間にわたってアイドル状態にある場合、ネットワークを介してダウンロードするファイルのセグメントを次第により大きくすることにより、ダウンロードを加速させることができる。
【００４８】
カウント装置が、本発明の好ましい実施形態において提供されて、次第に、より大きなファイル・セグメントをダウンロードするのを容易にする。例えば、図７のステップ１３２で、ファイルの８ＫＢのセグメントを最初に転送することにより、インターネットを介してサーバからクライアントに１４４ＫＢのファイルをダウンロードすることができる。８ＫＢなどの小さいセグメントは、短い期間中にパイプラインの１００％を使用し、セグメント間の実際の使用率を頻繁にモニタすることを可能にするため、効果的なデフォルトであることが判明している。ユーザが、８ＫＢのブロックのダウンロード中にＵＲＬ（ユニフォーム・リソース・ロケータ）上でクリックした場合でさえ、ユーザに対する目立った遅延は存在しない。さらに、中断が生じた場合、損失する可能性があるのは、せいぜい８ＫＢである。
【００４９】
ステップ１３４で、ファイル全体がダウンロードされたかどうかが判定される。８ＫＢのブロックは１４４ＫＢのファイルの第１のセグメントであるため、ファイル全体は、ダウンロードされておらず、ゼロに初期設定されているカウンタが、ステップ１３６で「１」に増分（increment）される。カウンタは、中断なしに連続的にダウンロードされたセグメント数の経過を記録し、それゆえ、ネットワーク活動が低いままである限り、セグメントのサイズを増大させることができる。例として、カウンタが「２」に等しい場合、セグメントのサイズを１６ＫＢに増大させることが可能であり、カウンタが「４」に等しい場合、セグメントのサイズを３２ＫＢに増大させることが可能である。これにより、ネットワーク活動がしきい値レベルを下回ったままであるという条件付きで、小さな８ＫＢのセグメント１８個ではなく、７つの次第に大きくなるセグメントで１４４ＫＢのファイルをダウンロードすることが可能になる。より大きいセグメントは、ダウンロードするのにより長い時間がかかり、したがって、実際の使用率がモニタされる頻度がより低くなることになるが、この手法は、低いネットワーク活動が延長されたすべての期間を利用する。通常、ヘッダが各セグメントに付け加えられる、したがって、より少ない個数のより大きいセグメントを転送することは、ネットワークを介して転送されるヘッダの総数を減少させるので、ネットワーク・オーバーヘッドも低減する。現在、５６Ｋｂｐｓモデムを使用する場合に推奨される最大のセグメントは、６４ＫＢのセグメントである。
【００５０】
ステップ１３６でカウンタを増分した後、ステップ１２２および１３０が繰り返される。実際の使用レベルが、もはやしきい値レベルを下回っていない場合、ステップ１３８で、ファイルのダウンロードがサスペンドされ、カウンタがクリアされる（すなわち、ゼロに設定される）。次に、ステップ１２２で、実際の使用率が再びサンプリングされる。ダウンロードがサスペンドされた場合、そのダウンロードが、サスペンドされたポイントから再開される。しかし、実際の使用率がしきい値レベルを下回ったままである場合、ステップ１３２で、次のセグメントがダウンロードされ、ファイル全体がダウンロードされたことがステップ１３４で決定されるまでプロセスが繰り返される。ファイル全体がダウンロードされたことが決定された場合、ステップ１４０でカウンタがクリアされ、ステップ１４２でループが終了する。
【００５１】
本発明の漸進的ダウンロード（progressive download）の特徴は、いくらかの既存のサーバの限界を克服するために、フィルタリングまたは同様の技法を必要とする可能性がある。漸進的ダウンロードは、ＦＴＰ（ファイル転送プロトコル）レベルで一般に利用可能であったが、ＨＴＴＰ１．１サーバが利用可能になるまでは、ＨＴＴＰレベルでは利用可能でなかった。前述したとおり、本発明は、８ＫＢのファイル・セグメントをデフォルトとするバイト範囲手法を利用する。第１のセグメントに関して、「０〜７９９９」のバイト範囲が、クライアントからのダウンロード要求において指定され、「８０００〜１５９９９」の範囲が、第２のセグメントに関するダウンロード要求において指定され、以下同様である。ただし、ＨＴＴＰ１．０サーバに遭遇した場合、要求のバイト範囲部分は失われることになり、ファイル全体が一度にダウンロードされることになる。この問題を回避する一方策は、ＩＳＡＰＩ（インターネット・サーバ・アプリケーション・プログラミング・インターフェース）フィルタを使用して、ＨＴＴＰ１．０プロキシを介してＨＴＴＰ１．１のバイト要求を促すことである。この場合、ＨＴＴＰ１．０サーバに遭遇した場合でも、バイト範囲情報が失われない。
【００５２】
もちろん、セグメントの好ましいサイズ、つまり好ましいバイト範囲は、モデムの速度などの要因に基づいて劇的に異なる可能性がある。前述の例（例えば、８ＫＢのデフォルト・セグメント・サイズ）は、多数のユーザが、５６Ｋｂｐｓモデムを使用してネットワークにアクセスするという想定に基づく。しかし、多数のユーザが、２８Ｋｂｐｓモデムを使用してネットワークにアクセスするものと想定するのが適切である可能性がある。その場合、好ましいデフォルト・セグメント・サイズは、８ＫＢではなく、４ＫＢになる。同様に、漸次のより大きいセグメントは、１６ＫＢおよび３２ＫＢではなく、８ＫＢおよび１６ＫＢになる。様々なその他のセグメント・サイズの使用も本明細書によって企図されることが、当分野の技術者には認められよう。
【００５３】
本発明の別の実施形態では、長いダウンロード中の実際の帯域幅使用率のモニタに、そのようなダウンロードの前または後における実際の帯域幅使用率のモニタに対してよりも大きい重みを与えることが可能である。つまり、所定数のセグメントが連続的にダウンロードされた場合、そのセグメントのそれぞれに関する平均使用レベルを新しい「最大」レベルとして採用することができる。例えば、セグメントの所定数が１０である場合、１０の連続するセグメントのダウンロード中における平均使用レベルが、その平均レベルが前の最大値を下回る場合でさえ、その前の最大レベルを置き換えることになる。さらに、１１のセグメントが連続的にダウンロードされた場合、セグメント２〜１１に関して平均レベルが計算され、したがって、１０のダウンロードの移動平均が、新しい最大レベルと新しいしきい値レベルの両方を決定する。
【００５４】
最大レベルを識別するために移動平均を使用することは、有都合良く、測定の正確さを損なうことなく、変化するネットワーク・トラフィック条件に応答してしきい値レベルに対する動的な増加または減少を提供する。好ましくは、最大レベルは、別の長いダウンロードが行われるまで、最新の移動平均（所定数のセグメントの）にとどめ置かれる。言い換えれば、長いダウンロードに基づく最大レベルの方が、ダウンロードに先立って測定された最初の最大レベルよりも正確な可用帯域幅の反映であると考えられる。同様に、独立したセグメントのダウンロードは、可用帯域幅の正確な反映を提供しない可能性がある。移動平均に関する連続するダウンロードの数を記録に留めておくため、図７で参照するもののようなカウンタを使用することができる。
【００５５】
本発明の別の実施形態を以下に図８〜１０に関連して説明する。図１０を参照すると、本発明のさらなる実施形態が、曲線８０４（図８）によって表される実際のネットワーク使用率のレベルをモニタし、クライアントとサーバの間におけるデータの転送がその他のネットワーク活動を妨げる可能性が低いように、所定の間隔（Ｔｎ−１〜Ｔｎ）（図８）内で転送することができるデータ・ブロックのサイズを計算する。ブロックは、転送されるべきデータの集合全体の一部分、またはデータの他の独立した有用な単位を表す。このさらなる実施形態は、ブロック・サイズを計算し、ネットワーク速度推定についてリファインすることにより、固定されたしきい値を利用していつデータを転送するかを決定する前述した実施形態と対比して、ネットワークの可用帯域幅をより十分に利用する。
【００５６】
実際には、例として、限定するものではなく、図８は、本発明のさらなる実施形態からのいくつかの概念を示す。図８に示すとおり、サンプリング時刻は、Ｔｎで一般的に示され、また間隔Ｔｎ−１〜Ｔｎは、１秒間などの値に初期設定される。図８で、Ｔ１とＴ２の間隔（８０８）の間の外部使用率曲線８０４の下の領域（エリア１）が、本発明以外のプロセスによって転送されたバイトの総数を表す。観察されたネットワーク・スループット８０２、外部使用率曲線８０４、およびＴ１とＴ２の間隔（８０８）で画定された領域（エリア２）が、ブロック・サイズとして割り当てることができる可能性のあるバイト量を表す。示すとおり、ネットワーク・スループット８０２および外部使用率８０４は、時間の経過とともに変動し、これにより、可用帯域幅を十分に利用するため、ブロック・サイズの再計算が必要となる。ネットワーク活動が、各間隔中の様々な時点でサンプリングされる。次に、サンプリング間隔は、図４〜７の実施形態とは対照的に、固定値に維持されるのではなく、判定されたネットワーク速度およびネットワーク使用率に応答して調整される。これにより、ネットワークに合せて最適化されていないブロック・サイズを使用することから生じるＣＰＵのオーバーヘッドおよびネットワークのオーバーヘッドが低減される。
【００５７】
この実施形態は、３つの構成要素を含む。ネットワーク・インターフェース・ハードウェアを介して送受信されるバイト数に関するデータを収集するネットワーク・インターフェース構成要素が存在する。グローバル速度、ダウンロード速度、および空き帯域幅を判定するネットワーク速度計算機構成要素が存在する。最後に、速度構成要素によって計算された値を使用してブロック・サイズおよびダウンロード間隔サイズを計算するデータ・ブロック・ダウンロード構成要素が存在する。
【００５８】
このさらなる実施形態によって使用されるアルゴリズムを以下に詳述する。この場合も、以下のアルゴリズムの中の参照内容は、例としてのものであることに留意されたい。というのは、このアルゴリズムは、データのアップロードにも同様に適用可能だからである。
【００５９】
この実施形態は、各時間間隔を２つの段階、ダウンロード・フェーズおよびアイドル・フェーズに分割する。ダウンロード・フェーズ中、ソフトウェアは、サーバからデータ・ブロックをダウンロードする。アイドル・フェーズ中、ソフトウェアは、ネットワークを他のアプリケーションに明け渡す。
【００６０】
この実施形態のネットワーク・モニタ構成要素は、所与の時点でネットワーク・インターフェースを通過したバイト数を記録するカウンタに対するアクセスを有する。カウンタの２つの読取りの間の差が、その２つの読取りの間の時間中に転送されたバイト数を示す。
【００６１】
各時間間隔（Ｔｎ−１〜Ｔｎ）中、ネットワーク・モニタ構成要素は、次の３つの時点、（１）ダウンロード・フェーズの開始でもある間隔の開始、（２）ダウンロード・フェーズの終了、および（３）間隔の終了、でシステム・クロックおよび転送バイト・カウンタをサンプリングする。ダウンロード構成要素は、間隔の長さ、ダウンロードされるブロックのサイズ、およびダウンロード・フェーズの予期される継続時間を記録する。間隔の終了時に、ネットワーク速度構成要素が、以下のとおり自らの速度推定値を更新する。
【００６２】
１．間隔中にブロックがダウンロードされた場合、ダウンロード速度は、
最新速度＝（ブロック・サイズ＋ネットワーク・ヘッダ・サイズ）／時点２における時刻−時点１における時刻）
として計算され、平均ダウンロード速度が更新される。本実施形態は、次の数式を使用する
サンプル・カウントを３に設定して、
１−１．新ダウンロード速度＝旧ダウンロード速度＊（サンプル・カウント−１）／サンプル・カウント、
１−２．新ダウンロード速度＝新ダウンロード速度＋（最新速度／サンプル・カウント）、
ただし、他の多数の数式を代りに使用することも可能である。このことは、ダウンローダが計算するその他の平均値についても当てはまる。平均ダウンロード速度により、ブロック・ダウンロード構成要素が、次の間隔のダウンロード・フェーズ中に完了可能なブロック・サイズを選択することができるようになる。
【００６３】
２．構成要素が、グローバル速度に達するダウンロード・フェーズ中のネットワーク使用率を以下のとおり測定する。
転送バイト＝（時点２におけるバイト−時点１におけるバイト）
ダウンロード・フェーズの長さ＝（時点２における時刻−時点１における時刻）
最新グローバル速度＝転送バイト／ダウンロード・フェーズの長さ
これが、ダウンローダの開始から最初の間隔である場合、グローバル速度は、最新グローバル速度に設定される。
そうでなれば、
ｉｆ  最新グローバル速度＜グローバル速度／２
ｔｈｅｎ  グローバル速度＝（グローバル速度＊０．９）
最新グローバル速度は、平均ダウンロード速度に関して使用するのと同じアルゴリズムによってグローバル速度に平均される。グローバル速度は、ネットワーク・インターフェースの合計スループットの推定値として使用される。
【００６４】
３．以下のとおり、間隔全体にわたってネットワーク使用率を測定し、ダウンローダの外部のソースからの部分を計算し、空きパーセンテージを計算する。
転送バイト＝（時点３におけるバイト−時点１におけるバイト）−（ブロック・サイズ＋オーバーヘッド）実際の間隔の長さ＝（時点３における時刻−時点１における時刻）
外部使用率＝転送バイト／実際の間隔の長さ
空きパーセンテージ＝１００＊（１−外部使用率／グローバル速度）
ブロック・ダウンローダ構成要素が、空きパーセンテージを使用して後続のダウンロード間隔のダウンロード・フェーズとアイドル・フェーズの相対的長さを選択する。さらなる実施形態は、外部活動の増大に対する備えとして空きパーセンテージを８０％に制限し、他の同様なポリシーも可能である。
【００６５】
さらなる実施形態は、図１〜７のように固定値を使用するのではなく、ネットワーク速度およびネットワーク使用率に応じてサンプリング間隔の継続時間を調整する。これにより、ネットワークに合せて最適化されていないブロック・サイズを使用することから生じるＣＰＵのオーバーヘッドおよびネットワークのオーバーヘッドが低減される。例えば、多くの実施形態において、非常に大きいブロック・サイズを使用することは、法外な量のメモリをバッファとして専用にすることを必要とする。反対に、データを一連の非常に小さいブロックとして送信することは、余分のネットワーク・ヘッダ・フィールドおよびネットワーク・プロトコル確認応答を必要とするので、リソースを浪費する可能性がある。ネットワーク帯域幅を十分に利用し、ネットワーク・トラフィックに対する妨げを最小限に抑えるブロック・サイズを導出することが、このさらなる実施形態の利点である。適切なブロック・サイズを決定することに関与するいくつかのステップおよび構成要素が存在する。
【００６６】
さらなる例示のため、図８に関連して、ダウンローダのメモリによって規定されるブロック・サイズの上限が、３０Ｋｂである、すなわち、ダウンローダが、ディスクに書き込むのを必要とするまでに、３０Ｋｂのデータを保持することができるものと想定する。デフォルトの間隔の継続時間が、１秒間であり、間隔Ｔ５〜Ｔ６に対して計算されたブロック・サイズが、最大値を超える３５Ｋｂであるものとさらに想定する。このため、本発明のアルゴリズムは、最大値を下回るようにブロック・サイズを縮小するため、次の間隔Ｔ６〜Ｔ７の継続時間を短縮する。この例示を続けると、間隔Ｔ６〜Ｔ７が、例えば、０．８秒間に短縮された場合、ブロック・サイズの限度内である２８Ｋｂの計算されたブロック・サイズがもたらされる。したがって、次の間隔Ｔ７〜Ｔ８（８２０）も１秒間ではなく、０．８秒間に設定される。様々な間隔値および他のブロック・サイズの限度の使用も本発明によって企図されることが、当分野の技術者には理解されよう。反対に、計算されたサイズが、所与の間隔中に転送するのに非効率的なデータ・サイズであると判定されているデフォルトの下限を下回る場合、そのブロック・サイズは、小さすぎると考えられる。この場合、ダウンローダは、最小サイズをダウンロードし、次に、１つまたは複数の間隔中、何もダウンロードしないのを選択すること、または間隔の長さを増大させるのを選択することが可能である。
【００６７】
いくつかの保守的手法がこのさらなる実施形態においてとられ、可用ネットワーク帯域幅をより十分に利用しながら、許容可能なシステム応答性レベルをサポートする。任意の数の多かれ少なかれ保守的な手法が、本発明によって使用されることが可能であり、企図されることが、当分野の技術者には理解されよう。より具体的には、最新サンプルにより大きい重みを付けたグローバル速度およびダウンロード速度に関する平均を使用することにより、サンプリングされたネットワーク・データの平滑化が達せられる。移動平均を計算する際に、最新サンプルは、新しい合計の３０％に相当し、前の値が、７０％に相当する。最新値を前の平均値で薄めるこの特定の方法を使用しているが、他の実施形態も、ネットワーク活動におけるスパイクからの回復を可能にする同じ結果を達することになる。例えば、最新の１０のサンプルを保持し、次に、毎回、すべての保存されたサンプルおよび新しく獲得されたサンプルを使用して平均を再計算することで、同じ結果が達せられることになる。行われる別の手法は、平均使用速度の１／２を下回ると判定されたグローバル速度に関わる。この場合、この低下は、帯域幅が突然、失われたのではなく、クライアントが活動していないことの結果であると考えられる。したがって、新たに判定されたグローバル速度値は、平均値には導入されない。というのは、導入すると、帯域幅平均値を不当に低下させることになるからである。ただし、グローバル速度平均値は、帯域幅が実際に変化した場合、１０％のような値だけ、わずかに低下する。そのような帯域幅変化の例は、地域における雷雨のために電話回線の雑音が突然、増加した場合であろう。行われるさらに別の保守的手法は、他のアプリケーションのために少し余裕を残すため、８０％のような値に空きパーセンテージを制限することに関する。
【００６８】
本発明のさらなる実施形態は、図９に示すデータ構造９００を利用する。データ構造９００は、実際の帯域幅使用率の識別されたレベルが調べられた時刻を含む第１のフィールド９１２と、ネットワーク・インターフェースを通るバイトの総数を含む第２のフィールド９１４と、アダプタによって送信または受信されたバイトの単調に増加するカウンタとを含む。図８に示すとおり、タイムスタンプとバイト・カウントはともに、実際の使用率８０２に応じて、各サンプリングで異なる。これらの値の連続する測定を引き算することにより、間隔期間、および間隔期間中に転送されたバイトの数が得られる。
【００６９】
図１０は、本発明のさらなる実施形態によるネットワークを介してデータを選択的に転送するためのコンピュータ・プログラムを表す流れ図を提示している。このプログラムは、ある所定の条件が存在するとき、ステップ１０００で開始される。クライアントがサーバと同じネットワークに接続されると、ステップ１００２で、ブロック・サイズ、空きパーセンテージ、およびサンプリング間隔が、デフォルト値に初期設定される。図８に示すとおり、実際の使用率が周期的に（例えば、毎秒）サンプリングされる。好ましくは、前述したとおり、サンプリングは、クライアントとネットワークの間の通信インターフェースにおいて間隔サンプリング期間の重要な時点（例えば、間隔の開始、ブロック転送の終了、および間隔の終了）で着信バイトの数および発信バイトの数を記録しておくことによって行われる。
【００７０】
図１０を再び参照すると、ブロック・サイズ、空きパーセンテージ、および間隔に関する初期設定された値に基づき、ステップ１００４で、ブロック・ダウンロードおよびネットワーク・データ収集が行われる。次に、ステップ１００６で、ネットワーク速度関連要素、すなわち、ダウンロード速度、グローバル速度、および空きパーセンテージが、適宜にリファインされ、更新される。次に、ステップ１００８で、ネットワーク速度関連要素との関係でブロック・サイズが計算される。一般的に、ブロック・サイズは、通信パケット・ヘッダのサイズからダウンローダに割り振られたメモリのサイズまでのどのサイズであることも可能である。インターネット適用例に関する現行で好ましい最小ブロック・サイズは、ブロック・データとして５００バイト、またＨＴＴＰ要求および応答パケット・ヘッダとして５００バイトのおよそ１０００バイトである。サイズが計算されると、ステップ１００４で、実際の使用率が再び計算される。
【００７１】
ステップ１００６で、ダウンロード速度の平均およびグローバル速度が計算され、ネットワーク空きパーセンテージ値も計算される。図８に関連して前述したとおり、このプロセス中、観察されたグローバル速度が、平均グローバル速度の許容可能な範囲内にあるかどうか、また空きパーセンテージが、帯域幅値の所定の最大分数値を下回るかどうかが判定される。本発明のさらなる実施形態では、観察されたグローバル速度は、新しい平均グローバル速度の計算に含められるには、平均グローバル速度の１／２を上回らなければならない。そうでなければ、新しい平均値は、前の平均グローバル速度の９０％に決定される。空きパーセンテージに関して、本発明のさらなる実施形態では、計算される空きパーセンテージが８０％を超えないことが必要とされるのが可能である。
【００７２】
サーバから入手可能なソフトウェア更新（または他のデータの集合）をネットワークを介してクライアントにダウンロードすることができる。前述したとおり、クライアントの他のあらゆる現在または将来のネットワーク活動に対する妨げを最小限に抑えるため、ダウンロードは、好ましくは、ブロックとも呼ばれるいくつかのセグメントでソフトウェア更新をダウンロードすることによって行われる。したがって、ステップ１００４で、ファイルの１つのセグメントが、サーバからクライアントにダウンロードされる。第１のセグメントをダウンロードした後、クライアントのネットワーク活動が増大した場合、このさらなる実施形態は、ブロック・サイズが前述した最小値を下回らない限り、より小さいブロックをダウンロードする。しかし、ネットワークがアイドル状態になった場合、ステップ１００６の次の反復が、ブロック・サイズを適切に増大させる。
【００７３】
ステップ１００８で、計算されるブロック・サイズが、下限値および上限値によって限定される。下限は、余りにも小さいので、その特定の間隔中に何も行わない方がより効率的であるようなサイズである。計算されるブロック・サイズが、２つの連続する間隔中にこの限界を下回った場合、ステップ１０１０で示すとおり、間隔のサイズが増分され、この第２の間隔中、ブロックが全くダウンロードされない。計算されるブロック・サイズが、新たに増分された間隔中に下限を下回ったままである場合、ブロック・サイズは、「ビジー・ブロック・サイズ」に設定され、間隔は、デフォルトの間隔値に設定される。ビジー・ブロック・サイズは、最小限のダウンロードが行われるのを可能にして、１）ダウンロードプロセス中に何らかの漸進が行われ、２）サーバが余りにも遅く、計算されるブロック・サイズがダウンローダの最小値まで決して上昇しない状況に本発明が対処することができ、３）ダウンロードのプロセスが、推定ネットワーク速度についてリファインする（refinement）のを可能にするようにする値である。最大限度を超えるブロック・サイズは、計算されるブロック・サイズを限度内に保つことができるように間隔の短縮をもたらす。
【００７４】
本発明は、制限するものではなく、例示するものである例としての実施形態に関連して説明してきた。例えば、ＰＣのオペレーティング・システムに関するソフトウェア更新をダウンロードするコンテキストにおいて、本発明を説明してきた。ソフトウェア更新は、同様に、ＰＣ上のビデオ・ゲームに対する更新などの他の多くのタイプのソフトウェアに関わることも容易に可能である。さらに、ダウンロードされるデータは、テキスト、イメージ、および／またはオーディオ・データを含むことが可能である。また、本発明は、クライアントからサーバへのアップロードにも同様に適用可能である。
【００７５】
本発明の代替の実施形態は、図面を含む本明細書を吟味することにより、本発明が関係する分野の技術者には明白になろう。したがって、本発明の範囲は、以上の説明によってではなく、頭記の特許請求の範囲によって定義される。
【図面の簡単な説明】
【図１】  本発明を実施する際に使用するのに適したコンピュータ・システム環境を示すブロック図である。
【図２】  ネットワークを介してサーバと通信するクライアント・マシンを含むシステムを示すブロック図である。
【図３】  図２と同様であるが、第１のクライアント・マシンおよび第２のクライアント・マシンがイントラネットを介して互いに接続されているのを示すブロック図である。
【図４】  曲線が、実際のネットワーク帯域幅使用率を示し、また破線が、本発明に従って計算された使用率のしきい値レベルを表す、時間経過におけるネットワーク帯域幅使用率を示す図である。
【図５】  本発明によるクライアント・マシンのアーキテクチャを示すブロック図である。
【図６】  本発明によるデータ構造を示すブロック図である。
【図７】  本発明に従ってネットワークを介してデータを転送するためのコンピュータ・プログラムを表すフローチャートである。
【図８】  実線の曲線が、実際のネットワーク帯域幅使用率を表し、また破線の曲線が、クライアントとサーバの間の観察された転送速度、および本発明のさらなる実施形態によるネットワークを介するデータ・フロー速度を表す、時間経過におけるネットワーク帯域幅使用率を示す図である。
【図９】  本発明のさらなる実施形態によるデータ構造を示すブロック図である。
【図１０】  本発明のさらなる実施形態によるネットワークを介してデータを転送するためのコンピュータ・プログラムを表す流れ図である。
【図１】
0004711586.tif 000002
【図２】
0004711586.tif 000003
【図３】
0004711586.tif 000004
【図４】
0004711586.tif 000005
【図５】
0004711586.tif 000006
【図６】
0004711586.tif 000007
【図７】
0004711586.tif 000008
【図８】
0004711586.tif 000009
【図９】
0004711586.tif 000010
【図１０】
0004711586.tif 000011