(57)【要約】      （修正有）【課題】ファイルＩ／Ｏおよびネットワーク通信用の単一のインタフェースを容易にするシステムを提供する。【解決手段】システムは、ローカルアプリケーションからコンテンツを作成するための第１コマンドを受信する。第１コマンドは、コンテンツ名と、コンテンツにアクセスする方法を示すアクセス制御情報を含む。コンテンツ名は、最も一般的なレベルから最も特定のレベルの順に連続した名前のコンポーネントを含む階層的に構造化された可変長識別子である。システムは、名前と要約によってコンテンツオブジェクトのセットを示すコンテンツオブジェクトである第１マニフェストを作成する。第１マニフェスト名は第１コマンドに対応するコンテンツ名であり、マニフェストへのアクセスは第１コマンドに含まれるアクセス制御情報に基づく。システムは、ローカルアプリケーションに第１マニフェストと第１マニフェストを作成するための成功インジケータを送信する。【選択図】図５Ａ
2017062783.tif 000002
【特許請求の範囲】
【請求項１】
ファイルＩ／Ｏおよびネットワーク通信用の単一のインタフェースを容易にするためのコンピュータシステムであって、前記システムが：
プロセッサ；および、
前記プロセッサによって実行されると、前記プロセッサに方法を実行させる命令を格納している記憶装置
を含み、前記方法が：
ローカルアプリケーションからコンテンツを作成するための第１のコマンドを受信するステップであって、前記第１のコマンドは、前記コンテンツ用の名前および前記コンテンツにアクセスできる方法を示すアクセス制御情報を含み、前記コンテンツ名は、最も一般的なレベルから最も特定のレベルの順に連続した名前のコンポーネントを含む階層的に構造化された可変長識別子である、ステップと；
名前と要約によってメンバコンテンツオブジェクトのセットを示すコンテンツオブジェクトである第１のマニフェストを作成するステップであって、前記第１のマニフェスト用の名前は、前記第１のコマンドに対応する前記コンテンツ名であり、前記マニフェストへのアクセスは、前記第１のコマンドに含まれる前記アクセス制御情報に基づいている、ステップと；
前記第１のマニフェスト、および前記第１のマニフェストを作成するための成功のインジケータを前記ローカルアプリケーションに送信するステップであって、これにより、コンテンツセントリックネットワーク内のネットワークデータを処理する前記ローカルアプリケーションのためのインタフェースを容易にする、ステップと
を含む、コンピュータシステム。
【請求項２】
前記方法が：
新しいデータで前記コンテンツを更新するための第２のコマンドを前記ローカルアプリケーションから受信するステップであって、前記第２のコマンドは、前記第１のマニフェスト名または前記第１のマニフェストに示されるようなメンバコンテンツオブジェクトの名前と、前記更新のための前記新しいデータを含むバッファと、続いて成功した更新を示すのに使用するためのカウントと、そこから前記新しいデータが書き込まれる前記第１のマニフェスト内または前記メンバコンテンツオブジェクト内のオフセットと、を含むステップと；
前記バッファに前記新しいデータを書き込むことにより、前記第１のマニフェストまたは前記メンバコンテンツオブジェクトを、前記オフセットから始まる前記第１のマニフェストまたは前記メンバコンテンツオブジェクトに更新するステップと；
前記ローカルアプリケーションに前記カウントを返すステップと
をさらに含む、請求項１に記載のコンピュータシステム。
【請求項３】
前記方法が、
前記第１のマニフェストおよび前記メンバコンテンツオブジェクトを、ローカルキャッシュまたは前記コンピュータシステムにアクセス可能な記憶装置に格納するステップ
をさらに含む、請求項１に記載のコンピュータシステム。
【請求項４】
前記方法が：
前記ローカルアプリケーションから前記コンテンツを削除するための第３のコマンドを受信するステップであって、前記第３のコマンドは、削除される前記第１のマニフェスト名または前記メンバコンテンツオブジェクトの前記名前を含む、ステップと；
前記第１のマニフェストまたは前記メンバコンテンツオブジェクトを、ローカルキャッシュまたは前記コンピュータシステムによってアクセス可能な記憶装置から削除するステップと；
前記ローカルアプリケーションに前記コンテンツを削除するための成功のインジケータを送信するステップと
をさらに含む、請求項１に記載のコンピュータシステム。
【請求項５】
前記方法が：
コンテンツを読み出すための第４のコマンドを受信するステップであって、前記第４のコマンドは、最も一般的なレベルから最も特定のレベルの順に連続した名前のコンポーネントを含む階層的に構造化された可変長識別子である第２のコンテンツ名と、読み出すデータのバイト数と、そこから前記データが読み出されるオフセットと、を含む、ステップと；
前記コンテンツがローカルキャッシュまたは前記コンピュータシステムにアクセス可能な記憶装置で利用可能であるという決定に応答して、前記コンテンツを前記ローカルアプリケーションに送信するステップと；
前記コンテンツが前記ローカルキャッシュまたは前記コンピュータシステムにアクセス可能な前記記憶装置で利用可能でないという決定に応答して：
前記第２のコンテンツ名である名前でインタレストを生成するステップであって、前記インタレストは、リモート装置に送信される、ステップと；
名前および要約によってメンバコンテンツオブジェクトのセットを示すコンテンツオブジェクトである第２のマニフェストを受信するステップであって、前記第２のマニフェスト用の名前は、前記第４のコマンドに対応する前記第２のコンテンツ名である、ステップと；
前記ローカルアプリケーションに前記第２のマニフェストを送信するステップと
をさらに含む、請求項１に記載のコンピュータシステム。
【請求項６】
ファイルＩ／Ｏおよびネットワーク通信用の単一のインタフェースを容易にするためのコンピュータ実行方法であって、前記方法が：
コンテンツ作成装置によって、ローカルアプリケーションからコンテンツを作成するための第１のコマンドを受信するステップであって、前記第１のコマンドは、前記コンテンツの名前および前記コンテンツにアクセスできる方法を示すアクセス制御情報を含み、前記コンテンツ名は、最も一般的なレベルから最も特定のレベルの順に連続した名前のコンポーネントを含む階層的に構造化された可変長識別子である、ステップと；
名前と要約によってメンバコンテンツオブジェクトのセットを示すコンテンツオブジェクトである第１のマニフェストを作成するステップであって、前記第１のマニフェスト用の名前は、前記第１のコマンドに対応する前記コンテンツ名であり、前記マニフェストへのアクセスは、前記第１のコマンドに含まれる前記アクセス制御情報に基づいている、ステップと；
前記第１のマニフェスト、および前記第１のマニフェストを作成するための成功のインジケータを前記ローカルアプリケーションに送信するステップであって、これにより、コンテンツセントリックネットワーク内のネットワークデータを処理する前記ローカルアプリケーションのためのインタフェースを容易にする、ステップと
を含む、方法。
【請求項７】
新しいデータで前記コンテンツを更新するための第２のコマンドを前記ローカルアプリケーションから受信するステップであって、前記第２のコマンドは、前記第１のマニフェスト名または前記第１のマニフェストに示されるようなメンバコンテンツオブジェクトの名前と、前記更新のための前記新しいデータを含むバッファと、続いて成功した更新を示すのに使用するためのカウントと、そこから前記新しいデータが書き込まれる前記第１のマニフェスト内または前記メンバコンテンツオブジェクト内のオフセットと、を含むステップと；
前記バッファに前記新しいデータを書き込むことにより、前記第１のマニフェストまたは前記メンバコンテンツオブジェクトを、前記オフセットから始まる前記第１のマニフェストまたは前記メンバコンテンツオブジェクトに更新するステップと；
前記ローカルアプリケーションに前記カウントを返すステップと
をさらに含む、請求項６に記載の方法。
【請求項８】
前記第１のマニフェストおよび前記メンバコンテンツオブジェクトを、ローカルキャッシュまたはコンテンツ作成装置にアクセス可能な記憶装置に格納するステップ
をさらに含む、請求項６に記載の方法。
【請求項９】
前記ローカルアプリケーションから前記コンテンツを削除するための第３のコマンドを受信するステップであって、前記第３のコマンドは、削除される前記第１のマニフェスト名または前記メンバコンテンツオブジェクトの前記名前を含む、ステップと；
前記第１のマニフェストまたは前記メンバコンテンツオブジェクトを、ローカルキャッシュまたは前記コンテンツ作成装置によってアクセス可能な記憶装置から削除するステップと；
前記ローカルアプリケーションに前記コンテンツを削除するための成功のインジケータを送信するステップと
をさらに含む、請求項６に記載の方法。
【請求項１０】
コンテンツを読み出すための第４のコマンドを受信するステップであって、前記第４のコマンドは、最も一般的なレベルから最も特定のレベルの順に連続した名前のコンポーネントを含む階層的に構造化された可変長識別子である第２のコンテンツ名と、読み出すデータのバイト数と、そこから前記データが読み出されるオフセットと、を含む、ステップと；
前記コンテンツがローカルキャッシュまたは前記コンテンツ作成装置にアクセス可能な記憶装置で利用可能であるという決定に応答して、前記コンテンツを前記ローカルアプリケーションに送信するステップと；
前記コンテンツが前記ローカルキャッシュまたは前記コンテンツ作成装置にアクセス可能な前記記憶装置で利用可能でないという決定に応答して：
前記第２のコンテンツ名である名前でインタレストを生成するステップであって、前記インタレストは、リモート装置に送信される、ステップと；
名前および要約によってメンバコンテンツオブジェクトのセットを示すコンテンツオブジェクトである第２のマニフェストを受信するステップであって、前記第２のマニフェスト用の名前は、前記第４のコマンドに対応する前記第２のコンテンツ名である、ステップと；
前記ローカルアプリケーションに前記第２のマニフェストを送信するステップと
をさらに含む、請求項６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、デジタルコンテンツの配信に関する。より詳細には、本開示は、コンテンツセントリックネットワークにおける情報およびデータフレームワークに基づく、ファイル入力／出力およびネットワーク通信用の単一の標準インタフェースを容易にするシステムに関する。
【背景技術】
【０００２】
インターネットとｅコマースの急増は、膨大な量のデジタルコンテンツを作成し続けている。コンテンツセントリックネットワーク（ＣＣＮ）アーキテクチャは、このようなデジタルコンテンツにアクセスして処理することを容易にするために設計されている。ＣＣＮは、さまざまなコンテンツアイテムのためのインタレストパケットを送信し、引き換えにコンテンツオブジェクトパケットを受信することによって相互に通信する、ネットワーククライアント、フォワーダ（例えば、ルータ）、およびコンテンツプロデューサなどの、エンティティまたはノードを含む。ＣＣＮのインタレストやコンテンツオブジェクトは、典型的には、階層的に構造化された可変長識別子（ＨＳＶＬＩ）である、その固有の名前で識別される。ＨＳＶＬＩは、最も一般的なレベルから最も特定のレベルの順に連続した名前のコンポーネントを含むことができる。ＣＣＮ名のプレフィックス、または名前空間は、最も一般的なレベルから始まる１つまたは複数の連続した名前のコンポーネントを含むことができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ＣＣＮは、アプリケーションと、コンテンツが格納されている場所との間の要求やコンテンツ応答の形式での抽象化レイヤに依存している。この抽象化レイヤは、ＣＣＮポータルに基づいて実装されている。ＣＣＮポータルＡＰＩにより、個別のインタレストやコンテンツオブジェクトに基づいて、場所にとらわれない方法でメッセージを構築することが可能になる。同時に、多くの現代的なシステムおよびアプリケーションは、他のデータアクセス機構が実装される（例えば、ビデオストリーム、データベース、メッセージ、およびキー値を格納）高レベルの抽象化としてファイルに依存している。ＣＣＮのインタレストやコンテンツオブジェクトは、生データを転送するための手段として役立つかもしれないが、いくつかの問題は、間接の別のレイヤなしに上記の抽象化のようなＣＣＮのインタレストやコンテンツオブジェクトを用いることでは未解決のままである。
【課題を解決するための手段】
【０００４】
一実施形態では、ファイルＩ／Ｏおよびネットワーク通信用の単一のインタフェースを容易にするシステムが提供されている。動作中、システムは、ローカルアプリケーションからコンテンツを作成するための第１のコマンドを受信し、第１のコマンドは、コンテンツの名前およびコンテンツにアクセスできる方法を示すアクセス制御情報を含み、コンテンツ名は、最も一般的なレベルから最も特定のレベルの順に連続した名前のコンポーネントを含む階層的に構造化された可変長識別子である。システムは、名前と要約によってメンバコンテンツオブジェクトのセットを示すコンテンツオブジェクトである第１のマニフェストを作成し、第１のマニフェストの名前は、第１のコマンドに対応するコンテンツ名であり、そのマニフェストへのアクセスは、第１のコマンドに含まれるアクセス制御情報に基づいている。システムは、ローカルアプリケーションに第１のマニフェストと第１のマニフェストを作成するための成功のインジケータを送信し、これにより、コンテンツセントリックネットワーク内のネットワークデータを処理するローカルアプリケーションのためのインタフェースを容易にする。
【０００５】
いくつかの実施形態では、システムは、新しいデータでコンテンツを更新するための第２のコマンドをローカルアプリケーションから受信し、第２のコマンドは、第１のマニフェスト名または第１のマニフェストに示されるようなメンバコンテンツオブジェクトの名前と、更新のための新しいデータを含むバッファと、続いて成功した更新を示すのに使用するためのカウントと、そこから新しいデータが書き込まれる第１のマニフェスト内またはメンバコンテンツオブジェクト内のオフセットと、を含む。システムは、バッファに新しいデータを書き込むことにより、第１のマニフェストまたはメンバコンテンツオブジェクトを、オフセットから始まる第１のマニフェストまたはメンバコンテンツオブジェクトに更新する。システムは、カウントをローカルアプリケーションに返す。
【０００６】
いくつかの実施形態では、システムは、第１のマニフェストおよびメンバコンテンツオブジェクトを、ローカルキャッシュまたはコンピュータシステムにアクセス可能な記憶装置に格納する。
【０００７】
いくつかの実施形態では、システムは、コンテンツを削除するための第３のコマンドをローカルアプリケーションから受信し、第３のコマンドは、削除される第１のマニフェスト名またはメンバコンテンツオブジェクトの名前を含んでいる。システムは、ローカルキャッシュまたはコンピュータシステムによってアクセス可能な記憶装置から第１のマニフェストまたはメンバコンテンツオブジェクトを削除する。システムは、コンテンツを削除するための成功のインジケータをローカルアプリケーションに送信する。
【０００８】
いくつかの実施形態では、システムは、コンテンツを読み出すための第４のコマンドを受信し、第４のコマンドは、最も一般的なレベルから最も特定のレベルの順に連続した名前のコンポーネントを含む階層的に構造化された可変長識別子である第２のコンテンツ名と、読み出すデータのバイト数と、そこからデータが読み出されるオフセットと、を含む。コンテンツがローカルキャッシュまたはコンピュータシステムにアクセス可能な記憶装置で利用可能であるという決定に応答して、システムは、コンテンツをローカルアプリケーションに送信する。コンテンツがローカルキャッシュまたはコンピュータシステムにアクセス可能な記憶装置で利用可能でないという決定に応答して、システムは次の操作を実行する：第２のコンテンツ名である名前でインタレストを生成し、インタレストは、リモート装置に送信される；名前および要約によってメンバコンテンツオブジェクトのセットを示すコンテンツオブジェクトである第２のマニフェストを受信し、第２のマニフェスト用の名前は、第４のコマンドに対応する第２のコンテンツ名である；ローカルアプリケーションに第２のマニフェストを送信する。
【０００９】
いくつかの実施形態では、コンテンツがローカルキャッシュまたはコンピュータシステムにアクセス可能な記憶装置で利用可能でないという決定に応答して、システムは、第２のマニフェストのメンバコンテンツオブジェクトのためのインタレストのセットを生成し、インタレストは、第２のマニフェストのメンバコンテンツオブジェクト用の名前を含み、インタレストは、リモート装置に送信される。システムは、対応するメンバコンテンツオブジェクトを受信する。システムは、メンバコンテンツオブジェクトをローカルアプリケーションに送信する。
【００１０】
いくつかの実施形態では、リモート装置に関連したコンポーネントは、リモートアプリケーションとリモート装置のトランスポートスタックに関連したポータルインスタンスとの間のインタフェースとして機能する。
【００１１】
いくつかの実施形態では、コンピュータシステムは、ローカルアプリケーションとトランスポートスタックに関連したポータルインスタンスとの間のインタフェースとして機能するコンポーネントである。コンポーネント、ローカルアプリケーション、およびトランスポートスタックは、同じコンピューティング装置上に存在する。
【００１２】
いくつかの実施形態では、コンテンツ用の名前に基づいてコンテンツを作成、更新、または削除するためにローカルアプリケーションから第５のコマンドを受信することに応答して、システムは、コンテンツ名と、コンテンツを作成、更新、または削除するコマンドを含むペイロードでインタレストを生成し、このペイロードは、認証情報をさらに含む。インタレストは、リモート装置に送信され、リモートアプリケーションとリモート装置のトランスポートスタックに関連したポータルインスタンスとの間のインタフェースとして機能するリモートコンポーネントによって受信される。認証情報は：コンピュータシステムを認証するために；および、第５のコマンドに示されるようなコンテンツ名に基づいてコンテンツを作成、更新、または削除するために；リモートコンポーネントによって使用される。
【００１３】
いくつかの実施形態では、システムは、要求側エンティティが第１のコマンドに含まれるアクセス制御情報に基づいて、さらに：コンピュータシステムにアクセス可能な記憶装置または媒体装置；コンピュータシステムにアクセス可能なデータ構造に示されたシステム許可のセット；コンピュータシステムにアクセス可能なローカル・キーチェーン；およびＩＤ関連データと検証を提供するための第三者のサービス；のうちの１つまたは複数に基づいて、第１のマニフェストに関連したコンテンツにアクセスすることができるかどうかを決定する。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態による、ファイルＩ／Ｏおよびネットワーク通信用の単一のインタフェースを容易にする例示的な環境を示す図である。
【図２】本発明の実施形態による、ファイルＩ／Ｏおよびネットワーク通信用の単一のインタフェースを容易にする例示的な情報およびデータフレームワークを示す図である。
【図３】本発明の実施形態による、情報およびデータフレームワーク内の単一のインタフェースＡＰＩへのＣＲＵＤコマンドのマッピングを示す表である。
【図４Ａ】本発明の実施形態による、プロデューサアプリケーション、プロデューサＩＤＦ、クライアントＩＤＦ、およびクライアントアプリケーション間の例示的な通信を示す図であり、クライアントアプリケーションは、コンテンツを読み出すためのコマンドを生成する。
【図４Ｂ】本発明の実施形態による、プロデューサアプリケーション、プロデューサＩＤＦ、クライアントＩＤＦ、およびクライアントアプリケーション間の例示的な通信を示す図であり、プロデューサアプリケーションは、コンテンツを読み出すためのコマンドを生成する。
【図４Ｃ】本発明の実施形態による、プロデューサアプリケーション、プロデューサＩＤＦ、ストレージＩＤＦ、およびストレージアプリケーション間の例示的な通信を示す図であり、通信は、認証プロセスを含む。
【図５Ａ】本発明の実施形態による、コンテンツを作成および更新するためのコマンドを生成することを含む、ファイルＩ／Ｏおよびネットワーク通信用の単一のインタフェースを容易にするためのコンテンツ作成装置による方法を示すフロー図である。
【図５Ｂ】本発明の実施形態による、コンテンツを削除するためのコマンドを生成することを含む、ファイルＩ／Ｏおよびネットワーク通信用の単一のインタフェースを容易にするためのコンテンツ作成装置による方法を示すフロー図である。
【図５Ｃ】本発明の実施形態による、コンテンツを読み出すためのコマンドを生成することを含む、ファイルＩ／Ｏおよびネットワーク通信用の単一のインタフェースを容易にするためのコンテンツ作成装置による方法を示すフロー図である。
【図６】本発明の実施形態による、ファイルＩ／Ｏおよびネットワーク通信用の単一のインタフェースを容易にする例示的なコンピュータシステムを示す図である。
【００１５】
図面において、同じ参照符号は同じ図要素を参照している。
【発明を実施するための形態】
【００１６】
以下の説明は、当業者が実施形態を作成し使用することを可能にするために提示され、特定の用途およびその要件の文脈において提供されている。開示された実施形態に対するさまざまな修正は、当業者には容易に明らかであり、本明細書で定義された一般的な原理を、本開示の趣旨および範囲から逸脱することなく他の実施形態および用途に適用することができる。したがって、本発明は、示された実施形態に限定されるものではなく、本明細書に開示された原理および特徴と一致する最も広い範囲で解釈されるべきである。
【００１７】
概要
本発明の実施形態は、ファイルＩ／Ｏおよびネットワーク通信用の単一の標準インタフェースを提供するシステムを提供する。インタフェースは、アプリケーションとトランスポートスタック用のポータルとの間に存在するコンポーネントとして実装することができる、情報およびデータフレームワーク（“ＩＤＦ”）の一部である。このＩＤＦインタフェースを“ＩＤＩ”と呼ぶことができる。ＣＣＮにおける通信は、アプリケーションと、コンテンツが格納されている場所との間の要求やコンテンツ応答の形式での抽象化レイヤに基づいている。例えば、アプリケーションは、トランスポートスタックおよびネットワークと通信するためのアプリケーション・プロトコル・インタフェース（“ＡＰＩ”）を提供するＣＣＮポータルと通信することができる。ＣＣＮポータルＡＰＩにより、個別のＣＣＮのインタレストやコンテンツオブジェクトを使用して、場所にとらわれない方法でメッセージを構築することが可能になる。つまり、ＣＣＮポータルＡＰＩは、トランスポートスタックを構成し、使用し、維持するための、および、スタックを介して個別のメッセージの操作（例えば、インタレストやコンテンツオブジェクトを送信）を実行するためのアプリケーションを可能にする。
【００１８】
同時に、多くの現代的なシステムおよびアプリケーションは、他のデータアクセス機構が実装される（例えば、ビデオストリーム、データベース、メッセージ、およびキー値を格納）高レベルの抽象化としてファイルに依存している。ＣＣＮのインタレストやコンテンツオブジェクトは、生データを転送するための手段として役立つかもしれないが、現行では、間接の別のレイヤなしに上記の抽象化のようにＣＣＮのインタレストやコンテンツオブジェクトに依存することができるシステムはない。
【００１９】
本発明の実施形態は、アプリケーションとＣＣＮポータルとの間に位置するコンポーネントに伴うこの問題を解決する。ＩＤＦであるこのコンポーネントは、作成、読み出し、更新、および削除（“ＣＲＵＤ”）のＡＰＩを提供するためにＣＣＮポータルＡＰＩ上に構築されている。ＣＲＵＤのＡＰＩ（例えば、ＩＤＩ）は、ＣＣＮと通信しているアプリケーションがデータを読み出し、操作することを可能にする。ＩＤＦは、例えば、Ｕｎｉｘ系のＣＲＵＤのＡＰＩに一般に関与するファイルレベルの抽象化にコンテンツオブジェクトを構成するために必要なオペレーティングシステムプロセスやリモートサービスと内部でインタフェースする。例えば、本システムは、ＵｎｉｘファイルＡＰＩからＩＤＩへのマッピングを提供することができ、これにより、ファイルＩ／Ｏおよびネットワーク通信（コンテンツ検索のための）のための単一の標準インタフェースを容易にする。したがって、ＩＤＦを、ＣＣＮポータルとトランスポートスタックの拡張とみなすことができ、ＩＤＦは、外部サービスとローカルオペレーティングシステムのリソースを使用してファンクションを実行し、スタック内の上位レイヤにＣＲＵＤのＡＰＩを提供する。
【００２０】
ＣＣＮでは、コンテンツの各ピースは個別に命名され、データの各ピースは、同じデータまたは他のソースからのデータの他のバージョンなどのいずれかの他のピースのデータからそのデータを区別する固有の名前にバインドされる。この固有の名前は、ネットワーク装置が固有の名前を示す要求またはインタレストを広めることで、データを要求することを可能にし、データの格納場所、ネットワークの場所、アプリケーション、および輸送手段から独立したデータを取得することができる。以下の用語は、ＣＣＮアーキテクチャを記述するために使用される：
【００２１】
コンテンツオブジェクト（すなわち“ｃｏｎｔｅｎｔ  ｏｂｊｅｃｔ”）：  固有の名前にバインドされている名前付きデータの単一ピース。コンテンツオブジェクトは「永続的」であり、これは、コンテンツオブジェクトが、コンピューティング装置内、または異なるコンピューティング装置間を移動することができるが、変更されないことを意味している。コンテンツオブジェクトのいずれかのコンポーネントが変更される場合は、変更を行ったエンティティは、更新されたコンテンツを含む新しいコンテンツオブジェクトを作成し、この新しいコンテンツオブジェクトを新しい固有の名前にバインドする。
【００２２】
固有の名前：ＣＣＮ内の名前は、通常、場所について独立しており、コンテンツオブジェクトを一意的に識別する。コンテンツオブジェクトのためのネットワークアドレスまたは物理的な場所に関係なく、データ転送装置は、コンテンツオブジェクトを生成するか、または格納するネットワークノードに向けてパケットを転送するために名前または名前のプレフィックスを使用することができる。いくつかの実施形態では、名前は、階層的に構造化された可変長識別子（ＨＳＶＬＩ）であってもよい。ＨＳＶＬＩを、さまざまな方法で構成することができるいくつかの階層的なコンポーネントに分割することができる。例えば、個々の名前コンポーネントであるｐａｒｃ、ｈｏｍｅ、ｃｃｎ、およびｔｅｓｔ．ｔｘｔを、主要なプレフィックスが左にくるように構造化して、名前“／ｐａｒｃ／ｈｏｍｅ／ｃｃｎ／ｔｅｓｔ．ｔｘｔ”を形成することができる。したがって、名前“／ｐａｒｃ／ｈｏｍｅ／ｃｃｎ”を、“／ｐａｒｃ／ｈｏｍｅ／ｃｃｎ／ｔｅｓｔ．ｔｘｔ”の“ｐａｒｅｎｔ”または“ｐｒｅｆｉｘ”とすることができる。追加のコンポーネントは、共同文書などのコンテンツアイテムの異なるバージョンを区別するために使用され得る。また、ＨＳＶＬＩは、最も一般的なレベルから最も特定のレベルの順に連続した名前のコンポーネントを含むことができる。
【００２３】
いくつかの実施形態では、名前は、コンテンツオブジェクトのデータ（例えば、チェックサム値）から、および／またはコンテンツオブジェクトの名前の要素から導かれたハッシュ値のような識別子を含むことができる。ハッシュベースの名前の説明は、米国特許出願第１３／８４７，８１４号明細書に記載されている。また、名前をフラットラベルすることができる。以下では、「名前」は、階層的な名前や名前のプレフィックスのような名前データのネットワーク内のデータピース用の任意の名前、フラットな名前、固定長の名前、任意長の名前、またはラベル（例えば、マルチプロトコル・ラベル・スイッチング（ＭＰＬＳ）ラベル）を参照するために使用される。
【００２４】
インタレスト（すなわち“ｉｎｔｅｒｅｓｔ”）：  データピースに対する要求を示し、データピース用の名前（または名前のプレフィックス）を含むパケット。データコンシューマは、情報セントリックネットワーク経由で要求またはインタレストを広めることができ、そのＣＣＮ／ＮＤＮルータが、記憶装置（例えば、キャッシュサーバ）、または要求やインタレストを満たすために要求されたデータを提供することができるデータプロデューサに向けて伝えることができる。
【００２５】
また、“ＬＣＩ”または“ｌｃｉ”は、ラベル付けされたコンテンツ情報を参照し、名前のセグメントがラベルを有するユニバーサルリソースインジケータ（ＵＲＩ）準拠の識別子である。ＣＣＮなどのネットワークプロトコルは、ＵＲＩの各名前セグメントに特定のラベルを適用することにより、ラベル付けされたコンテンツ情報を使用することができる。階層的に構造化された名前では、ラベル付けされたコンテンツ名は、各セグメントにセマンティックタイプやラベルを割り当てる。例えば、名前のセグメントのタイプは、ＣＣＮがメッセージのためのオン・ザ・ワイヤのバイナリ表現を使用することを可能にする任意のオクテットを含む一般名セグメントである名前のセグメントを含むことができる。
【００２６】
本明細書に開示される方法は、ＣＣＮのネットワークに限定されるものではなく、同様に他のアーキテクチャに適用可能である。ＣＣＮアーキテクチャの説明は、米国特許出願第１２／３３８，１７５号明細書に記載されている。
【００２７】
例示的なネットワークおよび通信
図１は、本発明の実施形態による、ファイルＩ／Ｏおよびネットワーク通信用の単一のインタフェースを容易にする例示的な環境１００を示している。コンピューティング環境１００は、ＣＣＮなどのコンピュータネットワーク１０２を含むことができる。また、環境１００は、ローカルコンピューティング装置１０４とリモートコンピューティング装置１０８に関連するユーザ１０６を含むことができる。装置１０４および１０８は、ネットワーク１０２を介して互いにネットワークパケットを交換する（例えば、それぞれトランスポートフレームワーク１３０および１７０と関連している）内部トランスポートスタックを有することができる。
【００２８】
装置１０４は、スマートフォン１０４．１、タブレットコンピュータ１０４．２、および／またはサーバもしくはパーソナルコンピュータ１０４．ｍのようなネットワーク１０２に接続された任意のコンピューティング装置を含むことができる。具体的には、装置１０４は、アプリケーション１１０、情報およびデータフレームワーク（“ＩＤＦ”）１１４用の情報およびデータフレームワークのインタフェース（“ＩＤＩ”）１１２、ポータルＡＰＩ１２０、トランスポートフレームワーク１３０、およびフォワーダ１４０を含むことができる。アプリケーション１１０を介して、装置１０４は、ＣＲＵＤメッセージ１２２（例えば、ファイルＩ／Ｏコマンドを作成し、読み出し、更新し、および削除する）をＩＤＦ１１４へ送信することで、ファイルＩ／Ｏやネットワーク通信を行うことができ、このメッセージはＩＤＩ１１２を介して受信される。ＣＲＵＤメッセージ１２２に基づいて、ＩＤＦ１１４がインタレスト１２４を生成し、このインタレスト１２４をポータルＡＰＩ１２０およびトランスポートフレームワーク１３０を介してネットワーク１０２に送信することができる。インタレスト１２４を、関連するトランスポートスタック１３１の内部スタックコンポーネント１３４．１〜１３４．ｎを経由して、フォワーダ１４０に送信することができる。なお、トランスポートフレームワーク１３０は、それぞれが複数のスタックコンポーネントまたは通信モジュールを含む、１つまたは複数のトランスポートスタックを含むことができる。図１では、トランスポートフレームワーク１３０は、単一のトランスポートスタック（例えば、トランスポートスタック１３１）を示している。さらに、単一のトランスポートスタック（例えば、トランスポートスタック１３１）は、単一のポータルＡＰＩインスタンス（例えば、ポータルＡＰＩ１２０）に関連している。
【００２９】
装置１０４のフォワーダ１４０（例えば、ネットワークインタフェースカード、またはローカルエリアネットワーク内のルータ）は、トランスポートフレームワーク１３０のスタック（および個々のスタックコンポーネント）とネットワーク１０２との間でパケットを転送することができる。例えば、フォワーダ１４０は、その転送情報ベース（ＦＩＢ）の情報に基づいて、適切な次ホップノードにネットワーク１０２経由でインタレスト１２４を送信または転送することができる。また、フォワーダ１４０は、インタレスト１２４に応答してコンテンツオブジェクト１２６を受信し、ポータルＡＰＩ１２０とＩＤＦ１１４を介してコンテンツオブジェクト１２６をアプリケーション１１０に再び渡すことができる。その後、ＩＤＦ１１４は、ＩＤＩ１１２を介して適切なリターンＣＲＵＤメッセージ１２２をアプリケーション１１０に再び渡すことができる。
【００３０】
装置１０８は、サーバ、エンドホスト装置、コンテンツ作成装置、またはストレージサーバなどのネットワーク１０２に接続された任意のコンピューティング装置を含むことができる。具体的には、装置１０８は、アプリケーション１５０、ＩＤＦ１５４用のＩＤＩ１１２、ポータルＡＰＩ１６０、（単一のトランスポートスタック１７１を含む）トランスポートフレームワーク１７０、およびフォワーダ１８０を含むことができる。アプリケーション１５０を介して、装置１０８は、ＩＤＩ１５２を経由してＩＤＦ１５４にＣＲＵＤメッセージ１６２を送信することにより、ファイルＩ／Ｏおよびネットワーク通信を行うことができる。ＣＲＵＤメッセージ１６２に基づいて、ＩＤＦ１５４はインタレスト１６４を生成し、このインタレスト１６４をポータルＡＰＩ１６０およびトランスポートフレームワーク１７０を介してネットワーク１０２に送信することができる。インタレスト１６４を、関連するトランスポートスタック１７１の内部スタックコンポーネント１７４．１〜１７４．ｐを経由して、フォワーダ１８０に送信することができる。その後、フォワーダ１８０は、そのＦＩＢの情報に基づいて、適切な次ホップノードにネットワーク１０２経由でインタレスト１６４を送信または転送することができる。また、フォワーダ１８０は、インタレスト１６４に応答してコンテンツオブジェクト１６６を受信し、ポータルＡＰＩ１６０とＩＤＦ１５４を介してコンテンツオブジェクト１６６をアプリケーション１５０に再び渡すことができる。その後、ＩＤＦ１５４は、ＩＤＩ１５２を介して適切なリターンＣＲＵＤメッセージ１６２をアプリケーション１５０に再び渡すことができる。
【００３１】
また、ＩＤＦ１１４および１５４は、ポータルＡＰＩ１２０およびポータルＡＰＩ１６０を介して、それぞれ、インタレストを受信し、上位のアプリケーションレイヤ（例えば、それぞれ、アプリケーション１１０および１５０）を介さずに、同じそれぞれのポータルを介して応答コンテンツオブジェクトを返すことができる。この方法では、装置は、コンシューマまたはプロデューサ（図４Ａおよび図４Ｂに関連して示されているような）またはリモートストレージノード（図４Ｃに関連して示されているような）として機能することができる。
【００３２】
例示的な情報およびデータフレームワーク
図２は、本発明の実施形態による、ファイルＩ／Ｏおよびネットワーク通信用の単一のインタフェースを容易にする例示的な情報およびデータフレームワークを示している。アプリケーション２１０は、任意のコンピューティング装置（例えば、図１に関連して説明したような装置１０４または１０８）に存在することができる。アプリケーション２１０は、単一の標準インタフェースを介してファイルＩ／Ｏおよびネットワーク通信を行うことができる：情報およびデータフレームワーク（“ＩＤＦ”）２１４の情報およびデータインタフェース（“ＩＤＩ”）２１２。ＩＤＦ２１４は、記憶装置２５０、コンピューティング装置２５２、許可およびポリシーサーバ２５４、およびローカル・キーチェーン・データストア２５６などの物理的に接続された装置またはリソースにアクセスするためのローカルオペレーティングシステムとインタフェースすることができる。ＩＤＦ２１４は、上位レベルのクライアントが、例えば、読み出しおよび書き込みコマンドを実行できるかどうかを決定するために、これらのリソースと連携することができる。また、ＩＤＦ２１４は、認証情報および他の関連データを取得するために、アイデンティティサービス（複数可）２５８などの外部サービスと通信することができる。また、これらの外部サービスは、アクセス制御の形式（例えば、暗号化されたデータ）の下で保護されたコンテンツにアクセスするために必要な暗号化の秘密を提供してもよい。
【００３３】
アプリケーション２１０は、ＩＤＦ２１４のＩＤＩ２１２を介してＣＲＵＤコマンド２２２を送信することにより、ネットワーク２０２経由で通信することができる。ＩＤＦ２１４は、（例えば、許可またはポリシーを確認するための）そのローカルに接続された装置、または（例えば、認証情報を取得するための）外部サービスと連携することができる。ＣＲＵＤコマンド２２２および任意の他の取得した情報に基づいて、ＩＤＦ２１４がインタレスト２２４を生成し、このインタレスト２２４をポータルＡＰＩ２２０およびトランスポートフレームワーク２３０を介してネットワーク２０２に送信することができる。インタレスト２２４は、トランスポートフレームワーク２３０のトランスポートスタック２３１の内部スタックコンポーネントを通過することができる。トランスポートフレームワーク２３０は、それぞれが複数のスタックコンポーネントまたは通信モジュールを含む、１つまたは複数のトランスポートスタックを含むことができる。図２では、トランスポートフレームワーク２３０は、スタックコンポーネント２３２、２３４、２３６、および２３８を含む１つのトランスポートスタック（例えば、トランスポートスタック２３１）を示している。ＡＰＩアダプタ２３２は、ＡＰＩとトランスポートフレームワーク２３０の特定のトランスポートスタックとの間で通信することができる。フローコントローラ２３４が、トラフィック、パイプラインおよび送信インタレスト、ならびにオーダコンテンツオブジェクトを、形成して管理することができる。検証者／署名者２３６が、ネットワーク要素宛てのコンテンツオブジェクトをエンコードして署名し、アプリケーション宛てのコンテンツオブジェクトをデコードして検証し、ネットワーク要素宛てのインタレストをエンコードし、アプリケーション宛てのインタレストをデコードすることができる。フォワーダ／アダプタ２３８は、フォワーダ２４０と通信することができる。フォワーダ２４０は、インタレスト２２４を転送することによることを含め、ネットワーク２０２経由で他のフォワーダと通信することができる。他のスタックコンポーネント（図示せず）は、セキュリティ（例えば、暗号化、復号、認証、データ署名、署名検証、信頼性評価、およびフィルタリング）、データ処理（例えば、エンコード、デコード、カプセル化、デカプセル化、トランスコーディング、圧縮、抽出、および復元）、およびストレージ（例えば、データストレージ、ストレージからのデータ検索、重複排除、セグメンテーション、およびバージョニング）に関連する機能を含むことができる。
【００３４】
また、フォワーダ２４０は、ネットワーク２０２を介してコンテンツを受信することができる。例えば、フォワーダ２４０は、コンテンツオブジェクト２２６を受信し、スタック２３１を経由してポータルＡＰＩ２２０を介してＩＤＦ２１４に渡すことができる。ＩＤＦ２１４は、必要に応じて、（例えば、コンテンツオブジェクト２２６をローカルに接続された記憶装置２５０またはローカルキャッシュに格納することによって、またはコンテンツオブジェクト２２６を認証または復号することによって）コンテンツオブジェクト２２６を処理することができる。ＩＤＦ２１４はその後、応答ＣＲＵＤコマンド２２２として、ＩＤＩ２１２を経由してコンテンツオブジェクト２２６に対応するコンテンツをアプリケーション２１０に再び渡すことができる。
【００３５】
いくつかの実施形態では、アプリケーション２１０は、名前に基づいて示されたデータに関連するＣＲＵＤコマンド２２２を送信することができ、示されたデータは、ローカルキャッシュまたはＩＤＦ２１４にローカルに接続された記憶装置内に既に存在し得る。この場合、（上記のように）インタレスト２２４を生成し、コンテンツオブジェクト２２６を受信する代わりに、ＩＤＦ２１４は、ローカルデータに要求されたＣＲＵＤコマンド２２２を実行し、適切な応答ＣＲＵＤコマンド２２２をアプリケーション２１０に返す。
【００３６】
このように、ＩＤＦ２１４は、ＩＤＩ２１２を介して、ファイルＩ／Ｏおよびネットワーク通信用の単一の標準インタフェースを容易にするシステムが提供している。任意の装置（例えば、クライアントコンピューティング装置、コンテンツ作成装置、ストレージサーバなど）上に存在する任意のアプリケーションは、ＣＣＮでＣＲＵＤコマンドを生成することができ、これにより、システムは、ファイル操作（例えば、ＣＲＵＤコマンド２２２を介して）、およびネットワーク通信（例えば、ＩＤＦ２１４のＩＤＩ２１２を介して受信されるようなＣＲＵＤコマンド２２２に基づいてネットワーク２０２にインタレスト２２４を送信することにより）の両方を実行することができる。
【００３７】
例示的なＣＲＵＤのＡＰＩ
図３は、本発明の実施形態による、情報およびデータフレームワーク内の単一のインタフェースＡＰＩへのＣＲＵＤコマンドのマッピングを示す表３００を示している。表３００には、次の３つのフィールドを有するエントリが含まれている：ＣＲＵＤコマンドを指定するＣＲＵＤコマンド３０２のフィールド；指定されたＣＲＵＤコマンドの典型的なフォーマットを指定するファンクションシグネチャ３０４のフィールド；および、それぞれの入力および出力を含む指定されたＣＲＵＤコマンドの目的と使用を示す説明３０６のフィールド。
【００３８】
表３００は、作成３１２コマンドを含むことができ、このコマンドは、所与のＬＣＩエンコード名や、ＣＣＮのＡｃｃｅｓｓＣｏｎｔｒｏｌＳｐｅｃｉｆｉｃａｔｉｏｎ（“ＡＣＳ”）オブジェクトとしてエンコードされるようなアクセス情報でファイルを利用可能にするためのコマンドである。作成３１２コマンドの典型的なフォーマットは：“（ｓｕｃｃｅｓｓ，ｍａｎｉｆｅｓｔ）＝ＩＤＦＣｒｅａｔｅ（ｌｃｉＮａｍｅ，ＡＣＳ）”であり、用語は次のように定義される：“ｓｕｃｃｅｓｓ”は、作成コマンドが成功したかどうか、例えば、“ＡＣＳ”アクセス制御による“ｌｃｉＮａｍｅ”の名前でのファイルが正常に作成されたかどうかのインジケータであり；“ｍａｎｉｆｅｓｔ”は、作成されるように要求される“ｌｃｉＮａｍｅ”の名前でファイルを表すデータのコレクションであり；“ＩＤＦＣｒｅａｔｅ”は、データを作成するファイルコマンドであり；“ｌｃｉＮａｍｅ”は作成されるコンテンツに対応するＣＣＮ名であり、これをＨＳＶＬＩとすることができ；“ＡＣＳ”は、コンテンツにアクセスすることができる方法に関するアクセス情報が含まれているＣＣＮのＡｃｃｅｓｓＣｏｎｔｒｏｌＳｐｅｃｉｆｉｃａｔｉｏｎオブジェクトである。
【００３９】
表３００は、読み出し３１４コマンドを含むことができ、このコマンドは、所与のオフセットで始まる所与のＬＣＩエンコード名から特定のサイズのデータを読み出すコマンドである。読み出しコマンドの典型的なフォーマットは：“ｂｕｆｆｅｒ＝ＩＤＦＲｅａｄ（ｌｃｉＮａｍｅ，ｎｕｍｂｙｔｅｓ＝０，ｏｆｆｓｅｔ＝０）”であり、用語は次のように定義される：“ｂｕｆｆｅｒ”は、読み出されるように要求されたデータの結果を含み；“ＩＤＦＲｅａｄ”は、データを読み出すためのファイルコマンドであり；“ｌｃｉＮａｍｅ”は、読み出されるコンテンツに対応するＣＣＮ名であり；“ｎｕｍｂｙｔｅｓ”は、読み出されるデータのバイト数であり；“ｏｆｆｓｅｔ”は、そこからデータが読み出されるべきオフセットを示している。
【００４０】
表３００は、更新３１６コマンドを含むことができ、このコマンドは、所与のオフセットで始まる特定のデータで所与のＬＣＩエンコード名のファイルを更新するコマンドである。更新コマンドの典型的なフォーマットは：“ｃｏｕｎｔ＝ＩＤＦＵｐｄａｔｅ（ｌｃｉＮａｍｅ，ｂｕｆｆｅｒ，ｃｏｕｎｔ，ｏｆｆｓｅｔ＝０）”であり、用語は次のように定義される：“ｃｏｕｎｔ”は、コマンドで提供されるインジケータであり、続いて正常な更新を示すのに使用するためにリクエスタに返され；“ＩＤＦＵｐｄａｔｅ”は、データを更新するファイルコマンドであり；“ｌｃｉＮａｍｅ”は、更新されるコンテンツに対応するＣＣＮ名であり；“ｂｕｆｆｅｒ”は、更新のための新しいデータを含み；“ｃｏｕｎｔ”は、コマンドで提供されるインジケータであり、続いて正常な更新を示すのに使用するためにリクエスタに返され；“ｏｆｆｓｅｔ”は、そこからデータが更新されるべきオフセットを示している。
【００４１】
表３００は、削除３１８コマンドを含むことができ、このコマンドは、所与のＬＣＩエンコード名のファイルを削除するため、または事前に利用可能であったファイルを利用できなくするためのコマンドである。削除コマンドの典型的なフォーマットは：“ｓｕｃｃｅｓｓ＝ＩＤＦＤｅｌｅｔｅ（ｌｃｉＮａｍｅ）”であり、用語は次のように定義される：“ｓｕｃｃｅｓｓ”は、削除コマンドが成功したかどうかのインジケータであり；“ｌｃｉＮａｍｅ”は、削除されるコンテンツに対応するＣＣＮ名である。
【００４２】
プロデューサとコンシューマ／ストレージとの間の例示的な通信
図４Ａは、本発明の実施形態による、プロデューサアプリケーション１５０、プロデューサＩＤＦ１５４、クライアントＩＤＦ１１４、およびクライアントアプリケーション１１０間の例示的な通信４００を示しており、クライアントアプリケーション１１０は、コンテンツを読み出すためのコマンドを生成する。プロデューサアプリケーション１５０、プロデューサＩＤＦ１５４、クライアントＩＤＦ１１４、およびクライアントアプリケーション１１０は、図１に示す同様のエンティティに対応することができる。プロデューサアプリケーション１５０は、（図４Ａに示されていないプロデューサＩＤＩ１５２を介して）プロデューサＩＤＦ１５４によって受信される、“ＣＲＥＡＴＥ（ｎａｍｅ，ＡＣＳ）”４０２コマンドを生成することができる。ＩＤＦ１５４は、コンテンツ／マニフェストを作成するファンクション４０４を実行することができる。ＩＤＦ１５４は、“ｎａｍｅ”の名前でマニフェストを作成することによって、ｌｃｉＮａｍｅまたはＣＣＮ名の“ｎａｍｅ”に対応するコンテンツを作成することができ、ここで、マニフェストは、それぞれの名前と要約で示されるコンテンツオブジェクトのコレクションである。処理効率のための集約署名とその後の検証を含むＣＣＮマニフェストは、米国特許出願第１４／２３１５１５号明細書に記載されている。“ＲＥＴＵＲＮ（ｍａｎｉｆｅｓｔ）”４０６の通信中のデータのリターンを表す点線で示すように、ＩＤＦ１５４はその後、プロデューサアプリケーション１５０に作成したコンテンツ／マニフェストを返すことができる。また、通信４０６は、要求されたデータを作成するための成功のインジケータを含むことができる。
【００４３】
また、プロデューサアプリケーション１５０は、プロデューサＩＤＦ１５４によって受信される“ＵＰＤＡＴＥ（ｎａｍｅ，ｄａｔａ）”４０８コマンドを生成することができる。ＩＤＦ１５４は、“ｄａｔａ”に含まれる新しいデータを書き込むことによりＣＣＮ名の“ｎａｍｅ”に対応するデータのコンテンツ／マニフェストを更新するファンクション４１０を実行することができる。また、コマンド４０８は、そこから“ｄａｔａ”の書き込みを開始する“ｎａｍｅ”ファイル内のオフセットだけでなく、要求されたデータを更新した際に成功を示すために後で返すことができる“ｃｏｕｎｔ”を含むことができる。“ＲＥＴＵＲＮ（ｃｏｕｎｔ）”４１２の通信中のインジケータのリターンを表す点線で示すように、ＩＤＦ１５４はその後、プロデューサアプリケーション１５０に“ｃｏｕｎｔ”を返すことができる。
【００４４】
クライアントアプリケーション１１０は、（図４Ａに示されていないクライアントＩＤＩ１１２を介して）クライアントＩＤＦ１１４によって受信される“ＲＥＡＤ（ｎａｍｅ）”４２０コマンドを生成することができる。ＩＤＦ１１４は、“ｎａｍｅ”のＣＣＮ名でデータ用の“ＩＮＴＥＲＥＳＴ（ｎａｍｅ）”４２２を生成することができる。インタレスト４２２は、（図１に関連して説明したような）プロデューサＩＤＦ１５４に到達する前に、フォワーダを介して、ネットワーク経由で移動してもよい。プロデューサＩＤＦ１５４は、名前“ｎａｍｅ”によるデータへのアクセスを有する（例えば、ローカルキャッシュまたはローカルに接続されたもしくはアクセス可能な記憶装置のいずれか）を有すると判断して、“ＭＡＮＩＦＥＳＴ（ｎａｍｅ）”４２４通信でのデータをクライアントＩＤＦ１１４に返すことができる。クライアントＩＤＦ１１４は、返されたコンテンツがマニフェストであると判断して、“Ｇｅｔ  Ａｌｌ  Ｃｏｎｔｅｎｔ  ｉｎ  Ｍａｎｉｆｅｓｔ（ｎａｍｅ）”のファンクション４２６を実行することができる。例えば、ＩＤＦ１１４は、ルートマニフェストによって（例えば、インタレスト４２８のセットを送信することによって）、参照されたすべてのコンテンツオブジェクトのデータを再帰的に取得することができる。ＩＤＦ１１４は、クライアントが繰り返すことができる単一のデータピース内にデータパーティションを連結または結合するための事前に画定されたポリシーを使用してもよい。ＩＤＦ１１４は、その後、応答コンテンツオブジェクト４３０を受信することができる。また、ＩＤＦ１１４は、マニフェストのＡＣＳフィールドから必要な情報を決定することによって、任意の暗号化されたデータを復号することができる。ＡＣＳフィールド（またはオブジェクト）は、コンテンツに適用可能なアクセスポリシー制御を識別し、例えば図２の外部アイデンティティサービス（複数可）２５８から適切な暗号鍵を取得するすなわち取り込むための情報を含んでもよい。最後に、“ＲＥＴＵＲＮ（ｂｕｆｆｅｒ”）４３２の通信中のデータのリターンを表す点線で示すように、ＩＤＦ１１４は、クライアントアプリケーション１１０にバッファ内のマニフェストまたはデータを返すことができる。なお、最初の読み出しコマンド４２０はまた、ファイル“ｎａｍｅ”から読み出すデータのバイト数と、そこから読み出し始めるファイル“ｎａｍｅ”内のオフセットを含むことができる。
【００４５】
また、プロデューサアプリケーション１５０は、プロデューサＩＤＦ１５４によって受信される“ＤＥＬＥＴＥ（ｎａｍｅ）”４１４コマンドを生成することができる。ＩＤＦ１５４は、ＣＣＮ名の“ｎａｍｅ”に対応するファイルを削除することによって、名前“ｎａｍｅ”に対応するデータのコンテンツ／ファイルを削除するファンクション４１６を実行することができる。“ＲＥＴＵＲＮ（ｓｕｃｃｅｓｓ）”４１８の通信中のインジケータのリターンを表す点線で示すように、ＩＤＦ１５４はその後、プロデューサアプリケーション１５０に“ｓｕｃｃｅｓｓ”インジケータを返すことができる。
【００４６】
作成、公開、更新、または削除するコンテンツへのアクセスを有する任意のネットワークノードまたはエンティティは、コンテンツを作成、更新、または削除するＣＲＵＤコマンドを生成することができる。任意のネットワークノードまたはエンティティは、ファイルからのコンテンツを読み出す、またはネットワークからコンテンツを取得する、ＣＲＵＤコマンドを生成することができる。例えば、プロデューサノード（例えば、プロデューサアプリケーション１５０を介して）は、名前“ｎａｍｅ”のデータを作成、更新、および削除することができ、一方で、コンシューマノード（例えば、クライアントアプリケーション１１０を介して）は、名前“ｎａｍｅ”のデータを読み出すことができる。
【００４７】
同時に、クライアントノードまたは中間ノードはまた、読み出し要求を満たすことができるプロデューサノードとして機能することができる（例えば、要求されたコンテンツが、ローカルキャッシュ、コンテンツストア、またはクライアントノードもしくは中間ノードにアクセス可能な他の装置に存在する場合）。例えば、図４Ｂは、本発明の実施形態による、プロデューサアプリケーション１５０、プロデューサＩＤＦ１５４、クライアントＩＤＦ１１４、およびクライアントアプリケーション１１０間の例示的な通信４４０を示しており、プロデューサアプリケーション１５０は、コンテンツを読み出すためのコマンドを生成する。通信フローの作成、更新、および削除（例えば、それぞれ、４０２〜４０６、４０８〜４１２、および４１４〜４１８）は、図４Ａの通信４００に関連して示され説明されたものと同じである。図４Ａと図４Ｂの主な違いは、図４Ａでは、クライアントアプリケーション１１０は、（プロデューサアプリケーション１５０により事前に作成された、名前“ｎａｍｅ”のデータのための）読み出しコマンドを生成するネットワークエンティティである一方で、図４Ｂでは、プロデューサアプリケーション１５０は、（名前“ｎａｍｅ１”のデータのための）読み出しコマンドを生成するネットワークエンティティである。このように、図４Ｂは、クライアントアプリケーションまたはノードがプロデューサアプリケーション１５０のためのプロデューサノードとして機能する場合を示している。
【００４８】
動作中に、プロデューサアプリケーション１５０は、（図４Ｂに示されていないプロデューサＩＤＩ１５２を介して）プロデューサＩＤＦ１５４によって受信される、“ＲＥＡＤ（ｎａｍｅ１）”４４２コマンドを生成することができる。ＩＤＦ１５４は、“ｎａｍｅ１”のＣＣＮ名でデータ用の“ＩＮＴＥＲＥＳＴ（ｎａｍｅ１）”４４４を生成することができる。インタレスト４４４は、クライアントＩＤＦ１１４に到達する前に、フォワーダを介して、ネットワーク経由で移動してもよい。クライアントＩＤＦ１１４は、名前“ｎａｍｅ１”によるデータへのアクセスを有する（例えば、ローカルキャッシュまたはローカルに接続されたもしくはアクセス可能な記憶装置のいずれか）と判断して、“ＭＡＮＩＦＥＳＴ（ｎａｍｅ１）”４４６通信でのデータをプロデューサＩＤＦ１５４に返すことができる。プロデューサＩＤＦ１５４は、返されたコンテンツがマニフェストであると判断して、“Ｇｅｔ  Ａｌｌ  Ｃｏｎｔｅｎｔ  ｉｎ  Ｍａｎｉｆｅｓｔ（ｎａｍｅ１）”のファンクション４４８を実行することができる。例えば、ＩＤＦ１５４は、ルートマニフェストによって（例えば、インタレスト４５０のセットを送信することによって）、参照されたすべてのコンテンツオブジェクトのデータを再帰的に取得することができる。ＩＤＦ１５４は、クライアントが繰り返すことができる単一のデータピース内にデータパーティションを連結または結合するための事前に画定されたポリシーを使用してもよい。ＩＤＦ１５４は、その後、応答コンテンツオブジェクト４５２を受信することができる。また、ＩＤＦ１５４は、マニフェストのＡＣＳフィールドから必要な情報を決定することによって、任意の暗号化されたデータを復号することができる。最後に、“ＲＥＴＵＲＮ（ｂｕｆｆｅｒ）”４５４の通信中のデータのリターンを表す点線で示すように、ＩＤＦ１５４は、プロデューサアプリケーション１５０にバッファ内のマニフェストまたはデータを返すことができる。なお、最初の読み出しコマンド４４２はまた、ファイル“ｎａｍｅ１”から読み出すデータのバイト数と、そこから読み出し始めるファイル“ｎａｍｅ１”内のオフセットを含むことができる。
【００４９】
図４Ａでは、示されたデータ（例えば、作成され、更新され、削除され、および読み出されたコンテンツ）は、それぞれのＣＲＵＤコマンドで特定される名前に基づいて、ローカルキャッシュまたはローカルにアクセス可能なプロデューサノードの記憶装置のいずれかに格納される。いくつかの実施形態では、示されたデータは、ローカルに格納されない場合がある。例えば、プロデューサノードは、同じＣＲＵＤファンクションを用いて、リモートマシン（例えば、図１に示されるようなストレージサーバ１１４）上のファイルを作成し、格納し、更新し、削除することができる。プロデューサノードは、ストレージサーバに適切な認証を提供するために必要とされ得る。図４Ｃは、本発明の実施形態による、プロデューサアプリケーション１５０、プロデューサＩＤＦ１５４、ストレージＩＤＦ１１４、およびストレージアプリケーション１１０間の例示的な通信４６０を示しており、通信４６０は、認証プロセスを含む。
【００５０】
動作中に、プロデューサアプリケーション１５０は、（図４Ａに示されていないプロデューサＩＤＩ１５２を介して）プロデューサＩＤＦ１５４によって受信される、“ＣＲＥＡＴＥ（ｎａｍｅ，ＡＣＳ）”４６２コマンドを生成することができる。ＩＤＦ１５４は、コマンドが他のネットワークエンティティ（例えば、図１の装置１０８のようなリモートストレージサーバ）に送信されることを決定して、“ＣＲＥＡＴＥ，ａｕｔｈ＿ｔｏｋｅｎ”のペイロード４６４．１で“ＩＮＴＥＲＥＳＴ（ｎａｍｅ）”４６４のインタレストを生成することができる。インタレスト４６４は、名前“ｎａｍｅ”によるデータを作成するための要求と、さらに、プロデューサノードを認証するためにストレージサーバで使用するための認証トークン（”ａｕｔｈ＿ｔｏｋｅｎ”）を示す要求を示している。ストレージＩＤＦ１１４は、インタレスト４６４を受信し、含まれている認証トークンに基づいて認証ファンクション４６６を実行することができる。ストレージＩＤＦ１１４は、インタレスト４６４で要求されたコンテンツを作成することができる（コンテンツを作成するファンクション４６８）。ストレージＩＤＦ１１４は、ファンクション４６６および４６８を実行するためにストレージアプリケーション１１０と通信してもしなくてもよい。“ＭＡＮＩＦＥＳＴ（ｎａｍｅ）”４７０の通信中のデータのリターンを表す点線で示すように、ストレージＩＤＦ１１４は、マニフェストの形でコンテンツを作成してもよく、その後、プロデューサアプリケーションＩＤＦ１５４にそのマニフェストを返すことができる。続いて、プロデューサＩＤＦ１５４は、“ＲＥＴＵＲＮ（ｍａｎｉｆｅｓｔ）”４７２の通信中にプロデューサアプリケーション１５０にデータを返すことができる。また、通信４７２は、要求されたデータを作成する際に成功のインジケータを含むことができる。
【００５１】
図４Ｃの通信４６０は、インタレスト４６４に認証トークンが含まれることを示しているが、プロデューサＩＤＦ１５４およびストレージＩＤＦ１１４は、例えば、事前に共有した対称鍵や、信頼できる第三者認証や署名サービスにより付与されたデジタル証明書の使用などの他の方法、または他の同様の方法を介して、認証プロセスに関与し得る。
【００５２】
同様に、プロデューサアプリケーション１５０は、プロデューサＩＤＦ１５４によって受信される“ＵＰＤＡＴＥ（ｎａｍｅ，ｄａｔａ）”４７４コマンドを生成することができる。ＩＤＦ１５４は、“ＵＰＤＡＴＥ，ａｕｔｈ＿ｔｏｋｅｎ”のペイロード４７６．１である“ＩＮＴＥＲＥＳＴ（ｎａｍｅ）”４７６のインタレストを生成することができる。インタレスト４７６は、名前“ｎａｍｅ”によるデータを更新するための要求を示し、認証トークンをさらに示している。ストレージＩＤＦ１１４は、インタレスト４７６を受信し、含まれている認証トークンに基づいて認証ファンクション４７８を実行することができる。ストレージＩＤＦ１１４は、インタレスト４７６で要求されたコンテンツを更新することができる（コンテンツを更新するファンクション４８０）。ストレージＩＤＦ１１４は、ファンクション４７８および４８０を実行するためにストレージアプリケーション１１０と通信してもしなくてもよい。“ＭＡＮＩＦＥＳＴ（ｎａｍｅ）”４８２の通信中のデータのリターンを表す点線で示すように、ストレージＩＤＦ１１４はその後、プロデューサアプリケーションＩＤＦ１５４に更新したマニフェストを返すことができる。続いて、プロデューサＩＤＦ１５４は、“ＲＥＴＵＲＮ（ｃｏｕｎｔ）”４８４の通信中にプロデューサアプリケーション１５０にデータを返すことができる。
【００５３】
また、プロデューサアプリケーション１５０は、プロデューサＩＤＦ１５４によって受信される“ＤＥＬＥＴＥ（ｎａｍｅ）”４８６コマンドを生成することができる。ＩＤＦ１５４は、“ＤＥＬＥＴＥ，ａｕｔｈ＿ｔｏｋｅｎ”のペイロード４８８．１で“ＩＮＴＥＲＥＳＴ（ｎａｍｅ）”４８８のインタレストを生成することができる。インタレスト４８８は、名前“ｎａｍｅ”によるデータを削除するための要求を示し、認証トークンをさらに示している。ストレージＩＤＦ１１４は、インタレスト４８８を受信し、含まれている認証トークンに基づいて認証ファンクション４９０を実行することができる。ストレージＩＤＦ１１４は、インタレスト４８８で要求されたコンテンツを削除することができる（コンテンツを削除するファンクション４９２）。ストレージＩＤＦ１１４は、ファンクション４９０および４９２を実行するためにストレージアプリケーション１１０と通信してもしなくてもよい。“ＡＣＫ（ｎａｍｅ）”４９４の通信での肯定応答を表す点線で示すように、ストレージＩＤＦ１１４はその後、プロデューサアプリケーションＩＤＦ１５４に削除コマンドの肯定応答を返すことができる。続いて、プロデューサＩＤＦ１５４は、“ＲＥＴＵＲＮ（ｃｏｕｎｔ）”４９６の通信中にプロデューサアプリケーション１５０に成功のインジケータを返すことができる。
【００５４】
コンテンツ作成装置におけるＩＤＦコンポーネントの役割
図５Ａは、本発明の実施形態による、コンテンツを作成および更新するためのコマンドを生成することを含む、ファイルＩ／Ｏおよびネットワーク通信用の単一のインタフェースを容易にするためのコンテンツ作成装置による方法を示すフロー図５００を示している。動作中、システムは、ローカルアプリケーション（例えば、アプリケーション１５０）からコンテンツ作成装置（例えば、ＩＤＦ１５４）のＩＤＦコンポーネントによって、コンテンツを作成するための第１のコマンドを受信し、第１のコマンドは、コンテンツ用の名前およびアクセス制御情報を含んでいる（動作５０２）。システムは、名前と要約によってメンバコンテンツオブジェクトのセットを示すコンテンツオブジェクトである第１のマニフェストを作成し、第１のマニフェスト用の名前は、第１のコマンドに対応するコンテンツ名であり、第１のマニフェストへのアクセスは、第１のコマンドに含まれるアクセス制御情報に基づいている（動作５０４）。マニフェストの作成に応答して、システムは、ローカルアプリケーションに第１のマニフェストと第１のマニフェストを作成するための成功のインジケータを送信する（動作５０６）。システムは、第１のマニフェストおよびメンバコンテンツオブジェクトを、ローカルキャッシュまたはシステムにアクセス可能な記憶装置に格納する（動作５０８）。
【００５５】
システムは新しいデータでコンテンツを更新するための第２のコマンドを受信し、第２のコマンドは：第１のマニフェスト名または第１のマニフェストに示されるようなメンバコンテンツオブジェクトの名前と；更新のための新しいデータを有するバッファと；続いて成功した更新を示すのに使用するためのカウントと；そこから新しいデータが書き込まれる第１のマニフェスト内またはメンバコンテンツオブジェクト内のオフセットと、を含んでいる（動作５１０）。システムは、バッファに新しいデータを書き込むことにより、第１のマニフェストまたはメンバコンテンツオブジェクトを、示されたオフセットから始まる第１のマニフェストまたはメンバコンテンツオブジェクトに更新する（動作５１２）。第１のマニフェストまたはメンバコンテンツオブジェクトの成功した更新に応答して、システムは、ローカルアプリケーションにカウントを返す（動作５１４）。図５ＢのラベルＡで示したように動作を継続する。
【００５６】
図５Ｂは、本発明の実施形態による、コンテンツを削除するためのコマンドを生成することを含む、ファイルＩ／Ｏおよびネットワーク通信用の単一のインタフェースを容易にするためのコンテンツ作成装置による方法を示すフロー図５２０を示している。動作中、システムは、ローカルアプリケーションからコンテンツ作成装置のＩＤＦコンポーネントによって、コンテンツを削除するための第３のコマンドを受信し、第３のコマンドは、削除される第１のマニフェスト名またはメンバコンテンツオブジェクトの名前を含んでいる（動作５２２）。システムは、ローカルキャッシュまたはシステムによってアクセス可能な記憶装置から第１のマニフェストまたはメンバコンテンツオブジェクトを削除する（動作５２４）。第１マニフェストまたはメンバコンテンツオブジェクトの削除に応答して、システムは、ローカルアプリケーションにコンテンツを削除するための成功のインジケータを送信する（動作５２６）。
【００５７】
図５Ｃは、本発明の実施形態による、コンテンツを読み出すためのコマンドを生成することを含む、ファイルＩ／Ｏおよびネットワーク通信用の単一のインタフェースを容易にするためのコンテンツ作成装置による方法を示すフロー図５４０を示している。動作中、システムは、ローカルアプリケーションからコンテンツ作成装置のＩＤＦコンポーネントによって、コンテンツを読み出すための第４のコマンドを受信し、第４のコマンドは：ＨＳＶＬＩである第２のコンテンツ名と；読み出すデータのバイト数と；そこからデータが読み出されるオフセットと、を含んでいる（動作５４２）。システムは、要求されたコンテンツがローカルキャッシュまたはシステムにアクセス可能な記憶装置で利用可能であるか否かを判断する（判定５４４）。利用可能である場合、システムは、コンテンツをローカルアプリケーションに送信する（動作５５４）。利用可能でない場合、システムは、第２のコンテンツ名である名前でインタレストを生成し、インタレストは、リモート装置に送信される（動作５４６）。インタレストに応答して、システムは、名前および要約によってメンバコンテンツオブジェクトのセットを示すコンテンツオブジェクトである第２のマニフェストを受信し、第２のマニフェスト用の名前は、第４のコマンドに対応する第２のコンテンツ名である（動作５４８）。システムは、第２のマニフェストのメンバコンテンツオブジェクトのためのインタレストのセットを生成することができ、インタレストは、リモート装置に送信される（動作５５０）。インタレストに応答して、システムは、対応するメンバコンテンツオブジェクトを受信することができる（動作５５２）。最後に、システムは、第２のマニフェストまたはメンバコンテンツオブジェクトをローカルアプリケーションに送信する（動作５５４）。
【００５８】
例示的なコンピュータシステム
図６は、本発明の実施形態による、ファイルＩ／Ｏおよびネットワーク通信用の単一のインタフェースを容易にする例示的なコンピュータシステム６０２を示している。コンピュータシステム６０２は、プロセッサ６０４、メモリ６０６、および記憶装置６０８を含んでいる。メモリ６０６は、管理されたメモリとして機能する揮発性メモリ（例えば、ＲＡＭ）を含むことができ、１つまたは複数のメモリプールを格納するために使用され得る。また、コンピュータシステム６０２を、ディスプレイ装置６１０、キーボード６１２、およびポインティング装置６１４に接続することができる。記憶装置６０８は、オペレーティングシステム６１６、コンテンツ処理システム６１８、およびデータ６３２を格納することができる。
【００５９】
コンテンツ処理システム６１８は、コンピュータシステム６０２によって実行されると、コンピュータシステム６０２に本開示に記載される方法および／またはプロセスを実行させることができる命令を含むことができる。具体的には、コンテンツ処理システム６１８は、コンテンツセントリックネットワークのようなコンピュータネットワークを介して他のネットワークノードにデータパケットを送信する／他のネットワークノードからのデータパケットを受信するための、および、同じコンピューティング装置上に存在するアプリケーション、ＩＤＦコンポーネント、ＣＣＮポータル、トランスポートスタック、フォワーダ間でパケットを送信するための命令を含むことができる（通信モジュール６２０）。データパケットは、インタレストパケットまたはＨＳＶＬＩである名前を有するコンテンツオブジェクトのパケットを含むことができる。さらに、コンテンツ処理システム６１８は、ローカルアプリケーションからコンテンツを作成するための第１のコマンドを受信するための命令を含むことができ、第１のコマンドは、コンテンツ用の名前およびコンテンツにアクセスできる方法を示すアクセス制御情報を含んでいる（通信モジュール６２０）。
【００６０】
また、コンテンツ処理システム６１８は、名前と要約によってメンバコンテンツオブジェクトのセットを示すコンテンツオブジェクトである第１のマニフェストを作成するための命令を含むことができ、第１のマニフェスト用の名前は、第１のコマンドに対応するコンテンツ名であり、このマニフェストへのアクセスは、第１のコマンドに含まれるアクセス制御情報に基づいている（コンテンツ処理モジュール６２２）。コンテンツ処理システム６１８は、第１のマニフェスト、および第１のマニフェストを作成するための成功のインジケータをローカルアプリケーションに送信するための命令を含むことができる（通信モジュール６２０）。コンテンツ処理システム６１８はまた、第１のマニフェストおよびメンバコンテンツオブジェクトをローカルキャッシュまたはコンピュータシステムにアクセス可能な記憶装置に格納するための命令を含むことができる（コンテンツ格納モジュール６２４）。
【００６１】
コンテンツ処理システム６１８は、新しいデータでコンテンツを更新するための第２のコマンドをローカルアプリケーションから受信するための命令をさらに含むことができ、第２のコマンドは、第１のマニフェスト名または第１のマニフェストに示されるようなメンバコンテンツオブジェクトの名前と、更新のための新しいデータを含むバッファと、続いて成功した更新を示すのに使用するためのカウントと、そこから新しいデータが書き込まれる第１のマニフェスト内またはメンバコンテンツオブジェクト内のオフセットと、を含んでいる（通信モジュール６２０）。コンテンツ処理システム６１８は、バッファに新しいデータを書き込むことにより、第１のマニフェストまたはメンバコンテンツオブジェクトを、オフセットから始まる第１のマニフェストまたはメンバコンテンツオブジェクトに更新するための命令を含むことができる（コンテンツ処理モジュール６２２）。コンテンツ処理システム６１８は、ローカルアプリケーションにカウントを返すための命令を含むことができる（通信モジュール６２０）。
【００６２】
コンテンツ処理システム６１８は、ローカルアプリケーションからコンテンツを削除するための第３のコマンドを受信するための命令をさらに含むことができ、第３のコマンドは、削除される第１のマニフェスト名またはメンバコンテンツオブジェクトの名前を含んでいる（通信モジュール６２０）。コンテンツ処理システム６１８はまた、第１のマニフェストまたはメンバコンテンツオブジェクトをローカルキャッシュまたはコンピュータシステムによってアクセス可能な記憶装置から削除するための命令を含むことができる（コンテンツ処理モジュール６２２）。コンテンツ処理システム６１８は、ローカルアプリケーションにコンテンツを削除するための成功のインジケータを送信するための命令を含むことができる（通信モジュール６２０）。
【００６３】
コンテンツ処理システム６１８は、コンテンツを読み出すための第４のコマンドを受信するための命令を含むことができ、第４のコマンドは、ＨＳＶＬＩである第２のコンテンツ名と、読み出すデータのバイト数と、そこからデータが読み出されるオフセットと、を含んでいる（通信モジュール６２０）。コンテンツ処理システム６１８は、コンテンツがローカルキャッシュまたはコンピュータシステム（コンテンツ読み出しモジュール６２６）にアクセス可能な記憶装置で利用可能であるという決定に応答して、コンテンツをローカルアプリケーションに送信するための命令を含むことができる（通信モジュール６２０）。コンテンツ処理システム６１８は、コンテンツがローカルキャッシュまたはコンピュータシステム（コンテンツ読み出しモジュール６２６）にアクセス可能な記憶装置で利用可能でないという決定に応答して、次の操作を実行するための命令を含むことができる：第２のコンテンツ名である名前でインタレストを生成し、インタレストは、リモート装置に送信される（インタレスト生成モジュール６２８）；名前および要約によってメンバコンテンツオブジェクトのセットを示すコンテンツオブジェクトである第２のマニフェストを受信し、第２のマニフェスト用の名前は、第４のコマンドに対応する第２のコンテンツ名である（通信モジュール６２０）；ローカルアプリケーションに第２のマニフェストを送信する（通信モジュール６２０）。
【００６４】
また、コンテンツ処理システム６１８は、第２のマニフェストのメンバコンテンツオブジェクトのためのインタレストのセットを生成するための命令を含むことができる（インタレスト生成モジュール６２８）。コンテンツ処理システム６１８は、対応するメンバコンテンツオブジェクトを受信し、そのメンバコンテンツオブジェクトをローカルアプリケーションに送信するための命令を含むことができる（通信モジュール６２０）。
【００６５】
また、コンテンツ処理システム６１８は、コンテンツ用の名前に基づいてコンテンツを作成、更新、または削除するためにローカルアプリケーションから第５のコマンドを受信することに応答して（通信モジュール６２０）、コンテンツ名と、コンテンツを作成、更新、または削除するコマンドを含むペイロードでインタレストを生成するための命令を含むことができ、このペイロードは、認証情報をさらに含んでいる（インタレスト生成モジュール６２８）。コンテンツ処理システム６１８はまた、要求側エンティティが第１のコマンドに含まれるアクセス制御情報に基づいて、第１のマニフェストに関連したコンテンツにアクセスすることができるかどうかを決定するための命令を含むことができる（認証モジュール６３０）。
【００６６】
データ６３２は、本開示に記載される方法および／またはプロセスにより、入力として必要とされるか、または出力として生成される任意のデータを含むことができる。具体的には、データ６３２は、少なくとも：名前；コンテンツ名；インタレスト名；ＨＳＶＬＩである名前；コマンド；名前に基づいてコンテンツを作成、読み出し、削除、または更新するためのコマンド；マニフェスト；名前および要約によって示されるマニフェストの１つまたは複数のメンバコンテンツオブジェクト；マニフェスト名；バッファ；カウント；オフセット；成功のインジケータ；読み出すデータのバイト数；ローカルアプリケーション；ポータルインスタンス；トランスポートまたはプロトコルスタック；ローカルアプリケーションとトランスポートスタックに関連したポータルインスタンスとの間のインタフェースとして機能するコンポーネント；トランスポートフレームワーク；情報およびデータフレームワーク；情報およびデータフレームワークへのインタフェース；１つまたは複数のスタックコンポーネント；フォワーダ；および、ローカルキャッシュまたはコンテンツストア；を格納することができる。
【００６７】
この詳細な説明に記載されたデータ構造およびコードは、一般に、コンピュータシステムによって使用するためのコードおよび／またはデータを格納することができる任意の装置または媒体であり得るコンピュータ可読記憶媒体上に格納されている。コンピュータ可読記憶媒体は、揮発性メモリ、不揮発性メモリ、ディスクドライブなどの磁気および光記憶装置、磁気テープ、ＣＤ（コンパクトディスク）、ＤＶＤ（デジタル多用途ディスクまたはデジタルビデオディスク）、または公知のもしくは後に開発されるコンピュータ可読媒体を格納することができる他の媒体を含むが、これらに限定されるものではない。
【００６８】
詳細な説明の項に記載された方法およびプロセスを、上述のようなコンピュータ可読記憶媒体に格納することができるコードおよび／またはデータとして実現することができる。コンピュータシステムが、コンピュータ可読記憶媒体に格納されたコードおよび／またはデータを読み出し、実行すると、コンピュータシステムは、データ構造およびコードとして実現され、コンピュータ可読記憶媒体内に格納された方法およびプロセスを実行する。
【００６９】
さらに、上述の方法およびプロセスを、ハードウェアモジュールに含めることができる。例えば、ハードウェアモジュールは、特定用途向け集積回路（ＡＳＩＣ）チップ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、および公知のもしくは後に開発されるその他のプログラマブル論理装置を含むことができるが、これらに限定されるものではない。ハードウェアモジュールが起動されると、ハードウェアモジュールは、ハードウェアモジュール内に含まれる方法およびプロセスを実行する。
【図１】
2017062783.tif 000003
【図２】
2017062783.tif 000004
【図３】
2017062783.tif 000005
【図４Ａ】
2017062783.tif 000006
【図４Ｂ】
2017062783.tif 000007
【図４Ｃ】
2017062783.tif 000008
【図５Ａ】
2017062783.tif 000009
【図５Ｂ】
2017062783.tif 000010
【図５Ｃ】
2017062783.tif 000011
【図６】
2017062783.tif 000012