(57)【特許請求の範囲】
【請求項１】
ワイヤレス環境内でサービスを発見するためのマシン実施方法において、
リモート装置からワイヤレスネットワークを経て第１ビットマスクを受け取る段階であって、第１ビットマスクは、リモート装置により提供される特定のサービスを各々表わす所定論理値を有する１つ以上のビットを有するものである段階と、
前記第１ビットマスクとローカル装置内にローカルに発生される第２ビットマスクとの間で論理演算を遂行する段階であって、第２ビットマスクは、ローカル装置によりサーチされるサービスを表すものである段階と、
前記論理演算の結果に基づき、前記リモート装置が、前記ローカル装置によりサーチされるサービスを潜在的に提供できるかどうか決定する段階と、
前記ワイヤレスネットワークに結合された１つ以上のリモート装置により潜在的に提供されるサービスを発見するために前記ワイヤレスネットワークに問合せメッセージを放送する段階と、
を備え、
前記第１ビットマスクは、その問合せメッセージに応答して前記リモート装置から受け取られ、そして前記ワイヤレス環境は、ＩＥＥＥ８０２．１１規格に適合する装置間の通信を与える、方法。
【請求項２】
前記第２ビットマスクは、所定論理値を有する単一ビットを有し、前記論理演算は、論理ＡＮＤ演算であり、そして所定論理値を有する論理演算の結果に留まるビットは、前記リモート装置が、サーチされるサービスを潜在的に提供できることを指示する、請求項１に記載の方法。
【請求項３】
前記リモート装置が、サーチされるサービスを潜在的に提供できると決定された場合には、前記ワイヤレスネットワークを経て前記リモート装置とのセッション接続を確立する段階と、
前記リモート装置から前記セッション接続を経て１つ以上のキー／値ペアを受け取る段階であって、各キー／値ペアは、所定論理値を有する第１ビットマスクのビットに対応するものである段階と、
を更に備えた請求項１に記載の方法。
【請求項４】
特定のキー／値ペアの値は、その特定のキー／値ペアのキーにより識別されるサービスに関連した更に詳細な情報を含む、請求項３に記載の方法。
【請求項５】
受け取られた各キー／値ペアを検査して、前記リモート装置が、サーチされるサービスを実際に提供できるかどうか決定する段階を更に備えた、請求項４に記載の方法。
【請求項６】
前記第２のビットマスクに関連した第１キーを有する第１のキー／値ペアを識別する段階と、
前記第１のキー／値ペアの第１の値を検査して、前記リモート装置が、サーチされるサービスを実際に提供できるかどうか決定する段階と、
を更に備えた請求項４に記載の方法。
【請求項７】
サーチされるサービスの識別子に基づいて第２のキーを発生する段階と、
前記第２のキーに対してハッシュオペレーションを遂行して第２のビットマスクを発生する段階であって、前記第１及び第２のキーが一致するときに前記第１のキー／値ペアが識別される段階と、
を更に備えた請求項６に記載の方法。
【請求項８】
ワイヤレス環境内でサービスをサーチするための装置において、
リモート装置からワイヤレスネットワークを経て第１ビットマスクを受け取るワイヤレス通信インターフェイスであって、第１ビットマスクは、リモート装置により提供される特定のサービスを各々表わす所定論理値を有する１つ以上のビットを有するものであるワイヤレス通信インターフェイスと、
前記第１ビットマスクとローカル装置内にローカルに発生される第２ビットマスクとの間で論理演算を遂行するために前記ワイヤレス通信インターフェイスに結合されたワイヤレス処理ユニットと、
アプリケーションからサービスをサーチする要求であってサーチされるサービスを識別する識別子を含む要求を受け取るためのアプリケーションプログラミングインターフェイス（ＡＰＩ）と、
前記ＡＰＩに結合され、サーチされるサービスを識別する識別子に基づいて第２のビットマスクを発生しそしてその第２のビットマスクを前記ワイヤレス処理ユニットへ通すためのサービス発見ユニットと、
を備え、
前記第２ビットマスクは、ローカル装置によりサーチされるサービスを表わし、前記ワイヤレス処理ユニットは、前記論理演算の結果に基づき、前記リモート装置が、前記ローカル装置によりサーチされるサービスを潜在的に提供できるかどうか決定するように構成され、
前記ワイヤレス環境は、ＩＥＥＥ８０２．１１規格に適合する装置間の通信を与える、
装置。
【請求項９】
前記ワイヤレス処理ユニットは、更に、
前記リモート装置が、サーチされるサービスを潜在的に提供できると決定された場合には、前記ワイヤレスネットワークを経て前記リモート装置とのセッション接続を確立し、  前記リモート装置から前記セッション接続を経て１つ以上のキー／値ペアを受け取り、各キー／値ペアは、所定論理値を有する第１ビットマスクのビットに対応する、
ように構成された請求項８に記載の装置。
【請求項１０】
ワイヤレス環境内でサービスを広告するマシン実施方法において、
ローカル装置により広告されるべきサービスの識別子に基づいてキー／値ペアを発生する段階と、
前記キー／値ペアのキーに対してハッシュオペレーションを遂行して、所定論理値を有するビットを含むビットマスクを発生する段階と、
サービスをサーチするためにリモート装置からワイヤレスネットワークを経て送られる問合せメッセージに応答して、ワイヤレスネットワークを経てリモート装置へビットマスクを送信し、そのビットマスクに基づき、ローカル装置が、サーチされるサービスを潜在的に提供できるかどうかリモート装置が決定できるようにする段階と、
を備えた方法。
【請求項１１】
前記リモート装置からの要求に応答して前記ワイヤレスネットワークを経て前記リモート装置とのセッション接続を確立する段階であって、ビットマスクに基づいて、前記ローカル装置が、サーチされるサービスを潜在的に提供できると前記リモート装置が決定する場合に、セッション接続を確立する段階と、
前記ワイヤレスネットワークを経て前記リモート装置へ前記キー／値ペアを送信し、そのキー／値ペアに基づいて、前記ローカル装置が、サーチされるサービスを実際に提供できるかどうか前記リモート装置が決定できるようにする段階と、
を更に備え、前記ワイヤレス環境は、ＩＥＥＥ８０２．１１規格に適合する装置間の通信を与える、請求項１０に記載の方法。
【請求項１２】
前記キー／値ペアは、広告されるサービスに関連したドメイン名システム（ＤＮＳ）情報に基づいて発生される、請求項１０に記載の方法。
【請求項１３】
ワイヤレス環境内でサービスを広告する装置において、
ローカル装置により広告されるべきサービスの識別子に基づいてキー／値ペアを発生するためのサービス発見ユニットと、
前記サービス発見ユニットに結合されて、前記キー／値ペアのキーに対してハッシュオペレーションを遂行して、所定論理値を有するビットを含むビットマスクを発生するワイヤレス処理ユニットと、
を備え、サービスをサーチするためにリモート装置からワイヤレスネットワークを経て送られる問合せメッセージに応答して、前記ワイヤレス処理ユニットは、ワイヤレスネットワークを経てリモート装置へビットマスクを送信し、そのビットマスクに基づき、ローカル装置が、サーチされるサービスを潜在的に提供できるかどうかリモート装置が決定できるようにするよう構成された、装置。
【請求項１４】
前記ワイヤレス処理ユニットは、更に、
前記リモート装置からの要求に応答して前記ワイヤレスネットワークを経て前記リモート装置とのセッション接続を確立し、このセッション接続は、ビットマスクに基づいて、前記ローカル装置が、サーチされるサービスを潜在的に提供できると前記リモート装置が決定する場合に、確立されるものであり、
前記ワイヤレスネットワークを経て前記リモート装置へ前記キー／値ペアを送信し、そのキー／値ペアに基づいて、前記ローカル装置が、サーチされるサービスを実際に提供できるかどうか前記リモート装置が決定できるようにし、前記ワイヤレス環境は、ＩＥＥＥ８０２．１１規格に適合する装置間の通信を与える、請求項１３に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に、ピアツーピアネットワークに係る。より特定すれば、本発明は、ピアツーピアネットワーク装置のための効率的なサービス発見に係る。
【０００２】
関連出願：本出願は、２００９年９月８日に出願された米国プロビジョナル特許出願第６１／２４０，５０９号及び２００９年１０月７日に出願された米国プロビジョナル特許出願第６１／２４９，５８２号の利益を主張する。
【０００３】
又、本出願は、２００９年６月５日に出願された同時係争中の米国特許出願第１２／４７９，７４５号及び２００９年６月５日に出願された米国特許出願第１２／４７９，５８６号にも係る。前記特許出願の開示は、参考としてここにそのまま援用する。
【背景技術】
【０００４】
ブルーツース（ＢＴ）ワイヤレス技術は、多数のワイヤレス装置が、コネクタ、ワイヤ又はケーブルをもたずに互いに通信する仕方を提供する。ブルーツース技術の現在の通常の用途は、ヘッドセット、セルラーカーキット及びアダプタを含む。更に、ブルーツース技術は、現在、プリンタ、キーボード又はマウスをパーソナルコンピュータにケーブルなしで接続するのに使用される。又、ブルーツース技術は、大量のデータの配信を容易にするので、コンピュータは、ブルーツースを使用して、インターネットに接続することができる。セルラー電話のような移動通信装置は、それらの間で写真、ビデオ又はリングトーンを転送する。付加的な機能が拡張し続けることが予想される。
【０００５】
２つのブルーツースイネーブル装置が通信を行う前に、それら装置をペアにしなければならない。ブルーツースのペアリングは、２つのブルーツースイネーブル装置が信頼性のあるペアになるときに行われる。信頼性のあるペアになるためには、２つのブルーツース装置が先ず特定の発見及び認証プロセスを完了しなければならない。第１のブルーツース装置が第２のブルーツース装置を認識しそしてそれらが特定の発見及び認証プロセスを完了すると、各装置は、それらの間の通信を自動的に受け容れることができる。
【０００６】
装置発見は、ブルーツースワイヤレス装置が、通信を希望する近傍のブルーツースワイヤレス装置を探索するために使用する手順である。発見可能な装置のブルーツースアドレス、それらの馴染み易い名前及び他の関連情報を、その付近の各装置との短期接続を確立することで交換するのは、時間のかかる手順である。この手順は、一方のブルーツースワイヤレス装置が、問合せ要求をスキャンする他方のブルーツースワイヤレス装置へ問合せ応答を送信するようにさせることを伴う。問合せ要求を送信する装置（潜在的なマスター）は、発見装置と言われ、一方、問合せ要求をスキャンする装置は、発見可能であるといわれる。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
サービス発見は、一方のブルーツース装置が、１つ以上のリモートブルーツース装置により提供されるサービス又はアプリケーションをサーチする別の手順である。装置発見手順と同様に、発信側ブルーツース装置（この状態ではクライアント装置）は、他のブルーツース装置（この状態ではサーバー装置）へ問合せを送信して、それらブルーツース装置がサーチされるサービス又はアプリケーションを利用可能とするかどうか決定しなければならない。この手順は、通常、比較的長時間を要し、より多くの電力を消費する。ＷｉＦｉ規格（例えば、ＩＥＥＥ８０２．１１ｎ又は他のＩＥＥＥ８０２．１１規格）又は他のワイヤレス通信システムのもとで動作する無線器のような、他の通信システムを伴う装置も、互いを発見しそしてそれらの各サービスを発見するのに比較的長い時間を要する。従って、サービス発見手順を遂行する効率的な仕方に欠ける。
【課題を解決するための手段】
【０００８】
サービスを発見し及び／又は広告するための技術をここに説明する。本発明の１つの態様によれば、リモート装置からワイヤレスネットワークを経て第１のビットマスクが受信され、この第１のビットマスクは、所定の論理値を有する１つ以上のビットを有する。各ビットは、リモート装置によって提供される特定のサービスを表す。第１のビットマスクと、ローカル装置内にローカルに発生される第２のビットマスクとの間で論理演算が遂行され、第２のビットマスクは、ローカル装置によってサーチされるサービスを表す。その論理演算の結果に基づいて、リモート装置が、ローカル装置によりサーチされるサービスを潜在的に提供できるかどうか決定される。
【０００９】
本発明の別の態様によれば、ローカル装置により広告されるサービスの識別子に基づいてキー／値ペアが発生される。キー／値ペアのキーに対してハッシュオペレーションが遂行されて、所定論理値を有するビットを含むビットマスクを発生する。サービスをサーチするためにワイヤレスネットワークを経てリモート装置から送られる問合せメッセージに応答して、ビットマスクがワイヤレスネットワークを経てリモート装置へ送信され、ビットマスクに基づいてローカル装置がサーチされるサービスを潜在的に提供できるかどうかリモート装置が決定できるようにする。
【００１０】
本発明の別の態様によれば、ネットワークにおいてアクセスするように利用できるサービスを識別する１つ以上のドメイン名システム（ＤＮＳ）リソースレコードが受け取られる。それに応答して、ＤＮＳリソースレコードに基づいてＤＮＳパケットが生成される。このＤＮＳパケットは、全参照ドメイン名を列挙せずにＤＮＳパケットに以前に現れた他のドメイン名をポインタが参照するドメイン名を含む。各リソースレコードからキー／値ペアが発生され、各キー／値ペアは、ネットワークにおいてアクセスするように利用できるサービスを表すのに使用される。
【００１１】
ここに述べる１つ以上の実施形態は、種々のワイヤレス通信システムの１つ、例えば、ブルーツース適合の通信システム、ＷｉＦｉ適合の通信システム（例えば、ＩＥＥＥ８０２．１１規格の１つ、例えば、８０２．１１ｇ規格又はＩＥＥＥ８０２．１１ｎ規格のもとで動作する無線器）、ＷｉＭａｘ適合の通信システム、セルラー電話規格のもとで動作する無線器、パーソナルエリアネットワーク（ＰＡＮ）規格のもとで動作する無線器、等を使用することができる。
【００１２】
ここに述べるサービスは、種々のアプリケーション又は他のファシリティの１つ、例えば、マルチプレーヤゲーム（例えば、多数の装置の各々におけるカードゲーム、等）又は協力的アプリケーション（例えば、複数の装置の各々に１つの、音楽生成アプリケーション、或いは複数の装置の各々に１つの、ドキュメント生成又はオーサリングアプリケーション、等）又はソーシャルネットワーキングアプリケーション（例えば、複数の装置の各々におけるフェースブックアプリケーション又は複数の装置の各々におけるリンクドイン(LinkedIn)アプリケーション又は複数の装置の各々におけるマイスペース(MySpace)アプリケーション、等）又はボイスチャットアプリケーション又はテキストチャットアプリケーション又はインスタントメッセージングアプリケーション、等である。ネットワーキングに使用されるサービス及び装置の例が、２００９年６月５日に出願された米国特許出願第１２／４７９，７４５号及び２００９年６月５日に出願された米国特許出願第１２／４７９，５８６号にも説明されており、これらの出願は、両方とも、参考としてここに援用する。
【００１３】
本発明の１つ以上の実施形態を含み又は使用するデータ処理システム、マシン読み取り可能な記憶媒体、及び方法も説明する。本発明の他の特徴は、添付図面及び以下の詳細な説明から明らかとなろう。
【００１４】
本発明は、同様の要素が同じ参照番号で示された添付図面に一例として示されるが、これに限定されない。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施形態によるワイヤレス環境のネットワーク構成を示すブロック図である。
【図２】本発明の一実施形態による２つのピアツーピアネットワーク装置間のトランザクションを示すトランザクション図である。
【図３】一実施形態によりコンピューティング装置のサービスを広告する方法を示すフローチャートである。
【図４】一実施形態によりピア装置によって提供されるサービスを発見するための方法を示すフローチャートである。
【図５Ａ】典型的な非圧縮ＤＮＳパケットを示すブロック図である。
【図５Ｂ】一実施形態による圧縮ＤＮＳパケットを示すブロック図である。
【図５Ｃ】一実施形態によりＤＮＳパケットから発生されたキー／値ペアを示すブロック図である。
【図６】一実施形態によりキー／値ペアを発生する方法を示すフローチャートである。
【図７】本発明の一実施形態により使用できるデータ処理システムのブロック図である。
【発明を実施するための形態】
【００１６】
本発明の種々の実施形態及び態様を以下に詳細に説明し、添付図面は、種々の実施形態を例示する。以下の説明及び添付図面は、本発明を例示するもので、本発明を限定するものではない。本発明の種々の実施形態を充分に理解するために多数の特定の細部について述べる。しかしながら、ある場合には、本発明の実施形態の説明を簡潔なものにするために、良く知られた又は慣習的な細部は述べない。
【００１７】
この説明において、「１つの実施形態」又は「一実施形態」を言及するときは、その実施形態に関連して述べる特定の特徴、構造又は特性が本発明の少なくとも１つの実施形態含まれることを意味する。この説明の種々の場所において「１つの実施形態」という句が現れるときは、必ずしも全てが同じ実施形態を指すものではない。図面に示すプロセスは、ハードウェア（例えば、回路、専用ロジック、等）、ソフトウェア、又はその両方を含む処理ロジックにより遂行される。プロセスは、順次の動作に関して以下に説明するが、ここに述べる動作の幾つかは、異なる順序で遂行されてもよいことが明らかであろう。更に、ある動作は、順次ではなく並列に遂行されてもよい。
【００１８】
ある実施形態によれば、キー／値ペアは、ブルーツース装置又は他の形式のワイヤレス装置のようなワイヤレスコンピューティング装置により広告される特定のサービスを表すのに使用される。ワイヤレス装置がワイヤレスネットワークにおいて広告されるべき１つ以上のサービスを有するときには、広告されるべき各サービスについて、１つ以上のキー／値ペアが発生される。キー／値ペアは、各サービスに関連したＤＮＳ情報に基づいて発生される。キーは、ワイヤレス装置が特定のサービス（例えば、ゲーム）を潜在的に提供できるかどうか指示するのに使用され、そして値は、提供されるべきサービスに関して更に詳細な情報を含む。全てのキー／値ペアがハッシュ関数（例えば、ＳＨＡ−１又はＭＤ５）を使用してハッシュ処理され、ビットマスクを発生する。所定論理値（例えば、真の論理値）を有するビットマスクの各ビットは、それに対応するサービスがワイヤレス装置によりサポートされることを指示する。この状況において、１つ以上のサービスを広告するワイヤレス装置は、広告されるサービスを、クライアント装置と称される１つ以上の他のワイヤレス装置へ提供するサーバーとして働く。ワイヤレス装置は、状況に応じてサーバー装置及びクライアント装置の両方になり得ることに注意されたい。
【００１９】
別のワイヤレス装置がクライアント装置としてネットワーク内の特定のサービスをサーチするときに、サーチされるサービスの識別子、例えば、そのサービスに関連したドメイン名システム（ＤＮＳ）情報に基づいてキーが発生される。更に、キーから、例えば、キーをハッシュすることにより、ビットマスクが発生される。次いで、問合せメッセージ（例えば、拡張問合せ又はＥＩメッセージ）がクライアント装置によりネットワークにおいて放送される。問合せメッセージは、通信範囲において他の全てのワイヤレス装置によって受信される。
【００２０】
問合せに応答して、他の装置へサービスを提供する能力を有する各サーバー装置は、上述したように各装置によりサポートされるサービスを表すビットマスクを返送することで問合せに応答する。クライアント装置は、サーバー装置からビットマスクを受け取ると、受け取ったビットマスクごとに、サーチされるサービスを表すローカル発生ビットマスク及びリモートサーバー装置から受け取られるビットマスクに対して所定のオペレーション（例えば、ローカルＡＮＤ演算）を遂行する。そのオペレーションの結果は、特定のサーバー装置が、サーチされるサービスを潜在的にサポートするかどうか指示するのに使用される。
【００２１】
サーバー装置が、サーチされるサービスを潜在的に提供することを結果が指示する場合には、クライアント装置は、関連するサーバー装置との接続（例えば、ＳＤＰ接続）を確立し、そしてサービスに関するより詳細な情報の要求を送信することができる。次いで、そのサービスに対応するキー／値ペアがサーバー装置から受け取られる。その結果、前記プロトコルは、サーバー装置からサービスの詳細な情報（例えば、キー／値ペア）を得るための接続を確立する（これは比較的長時間を要する）前に、問合せに応答するどのサーバー装置が、サーチされるサービスをサポートするか素早く識別することができる。
【００２２】
１つの実施形態によれば、サーチ及び／又は広告されるサービスに関連したＤＮＳ情報に基づいてキー／値ペアが発生される。例えば、ＤＮＳパケット（例えば、ＤＮＳ問合せパケット）におけるリソースレコード（ＲＲ）の名前フィールド及びタイプフィールドを使用して、キー／値ペアのキーを発生する一方、ＤＮＳパケットのデータフィールド（例えば、ＲＤａｔａフィールド）を使用して、キー／値ペアの値を発生することができる。ＤＮＳパケットは、複数のＲＲを含む。１つの実施形態において、ＲＲの名前フィールドは、名前フィールドにおける全キャラクタストリングを複写せずにＤＮＳパケットの別のＲＲ又は質問に以前に現れたキャラクタストリングを指す圧縮ポインタ（ＣＰ）を含む。同様に、データフィールド（例えば、ＲＤａｔａフィールド）も、全ストリングを複写せずに、別のＲＲ又は質問或いは現在ＲＲの名前フィールドに現れるストリングを指す圧縮ポインタを含む。従って、キー／値ペアの値は、キー／値ペアのキーを指すポインタを含み、一方、キー／値ペアのキーは、ＤＮＳパケットの別のＲＲ又は質問を指すポインタを含む。その結果、サービス発見の目的で、キー／値ペアのサイズを更に減少することができる。
【００２３】
図１は、１つの実施形態によるワイヤレス環境のネットワーク構成を示すブロック図である。例えば、ネットワーク構成１００は、ブルーツース(Bluetooth)ワイヤレス環境、又はＷｉＦｉワイヤレス環境、又は他のワイヤレス環境である。図１を参照すれば、ネットワーク構成１００は、ブルーツース適合ネットワーク又はＷｉＦｉ適合ネットワークのような種々のワイヤレスネットワークであるネットワーク１０３を経て互いに通信結合された第１のコンピューティング装置１０１及び第２のコンピューティング装置１０２を備えている。説明上、本明細書全体を通して、ワイヤレスネットワーク及び装置の一例としてブルーツース適合ネットワーク及び装置が使用される。しかしながら、これに限定されるものではなく、他の形式のワイヤレスネットワーク及び装置を適用することもできる。
【００２４】
装置１０１−１０２は、任意の種類のワイヤレス通信又はコンピューティング装置である。装置１０１−１０２は、移動電話装置、メッセージング装置、パーソナルデジタルアシスタント（ＰＤＡ）、ノートブック又はラップトップコンピュータ、移動電話ターミナル、ワイヤレス通信インターフェイスを有するゲーム装置、メディアプレーヤ（例えば、オーディオ及び／又はビデオプレーヤ）、等である。例えば、装置１０１−１０２は、カリフォルニア州クパチーノのアップル社から入手できるｉＰｈｏｎｅTM又はｉＰｏｄTM装置、或いは他の消費者向け電子装置である。
【００２５】
１つの実施形態において、装置１０２は、これに限定されないが、サービス発見レイヤ又はユニット１０４、ワイヤレスレイヤ又はユニット１０５を含む複数の処理レイヤを有する処理プロトコルスタックを備えている。例えば、サービス発見レイヤ１０４は、ボンジュール(Bonjour)適合処理又はプロトコルレイヤであり、そしてワイヤレスレイヤ１０５は、ブルーツース適合処理又はプロトコルレイヤである。ここでの説明は、ブルーツース準拠又は適合通信システムのもとで動作する無線器を参照して一例として述べるが、例えば、ＷｉＦｉ準拠又は適合通信システム（例えば、ＩＥＥＥ８０２．１１ｎ規格のようなＩＥＥＥ８０２．１１規格の１つに適合して動作する無線器）、ＷｉＭａｘ準拠又は適合通信システム、セルラー電話規格に基づいて動作する無線器、等の他のワイヤレス通信システムも使用できることを理解されたい。更に、装置１０２は、データを記憶するための記憶装置１０６と、装置１０１のような別の装置と通信するためのワイヤレス通信インターフェイス１０７とを備えている。記憶装置１０６は、ディスクのような不揮発性メモリ、ランダムアクセスメモリ（ＲＡＭ）のような揮発性メモリ、又はその組み合わせである。
【００２６】
１つの実施形態では、サービス発見レイヤ１０４は、これに限定されないが、サービス広告ユニット１０８、サービスマスクジェネレータ１０９、及びキー／値ペアジェネレータ１１０を含む。サービス広告ユニット１０８は、装置１０２がサーバー装置（例えば、サービスプロバイダー）として働く場合に装置１０２が提供できるアプリケーション又はサービス１１１のような１つ以上のサービスを広告するのに使用される。１つ以上のサービスが広告されるときは、キー及び値を発生するためにキー／値ペアジェネレータ１１０が呼び出され、キー／値ペアは、特定のサービスを表すのに使用される。キーは、ワイヤレス装置が特定のサービス（例えば、ゲーム）を潜在的にサポートするかどうか指示するのに使用され、そして値は、提供されるべきサービスに関する更に詳細な情報を含み、これは、装置が実際に特定のサービスをサポートするかどうか決定するのに使用される。キー／値ペアは、キー／値ペア１１２として記憶装置１０６に記憶される。
【００２７】
更に、装置１０２により広告される全てのサービスを表す全てのキー／値ペアを使用して、サービスマスクジェネレータ１０９によりビットマスクを発生する。１つの実施形態では、キー／値ペアは、ハッシュ関数（例えば、ＳＨＡ−１又はＭＤ５、等）を使用してハッシュ処理されて、ビットマスクを発生し、これは、サービスマスク１１３として記憶装置１０６に記憶される。所定論理値（例えば、真又は１の論理値）を有するビットマスクの各ビットは、対応するサービスが装置１０２によりサポートされることを指示する。この状況において、１つ以上のサービスを広告する装置１０２は、クライアント装置と称される１つ以上の他のワイヤレス装置（例えば、装置１０１）へ広告されたサービスを供給するサーバー装置として働く。ワイヤレス装置は、状況に応じてサーバー装置及びクライアント装置の両方となり得ることに注意されたい。
【００２８】
同様に、１つの実施形態によれば、装置１０１は、これに限定されないが、サービス発見レイヤ又はユニット１１４及びワイヤレスレイヤ又はユニット１１５を含む処理プロトコルスタックを備えている。サービス発見レイヤ１１４は、ボンジュール適合処理又はプロトコルレイヤであり、そしてワイヤレスレイヤ１１５は、ブルーツース適合処理又はプロトコルレイヤである。ここでの説明は、ブルーツース準拠又は適合通信システムのもとで動作する無線器を参照して一例として述べるが、例えば、ＷｉＦｉ準拠又は適合通信システム（例えば、ＩＥＥＥ８０２．１１ｎ規格のようなＩＥＥＥ８０２．１１規格の１つに適合して動作する無線器）、ＷｉＭａｘ準拠又は適合通信システム、セルラー電話規格に基づいて動作する無線器、等の他のワイヤレス通信システムも使用できることを理解されたい。１つの実施形態において、サービス発見レイヤ１１４は、ＤＮＳ処理ユニット１１８及びキージェネレータ１１９を含む。
【００２９】
ブラウザアプリケーションのようなアプリケーション１１７がネットワーク内の特定サービスをサーチするときは、ＤＮＳパケット（例えば、ＤＮＳ問合せパケット）がＤＮＳ処理ユニット１１８により発生される。更に、キージェネレータ１１９は、ＤＮＳパケットに基づいてキーを発生する。ワイヤレスレイヤ１１５は、例えば、種々のハッシュ関数（例えば、ＳＨＡ−１又はＭＤ５、等）を使用してキーに対してハッシュオペレーションを遂行することによりキーに基づいてビットマスクを発生し、そしてキー及びビットマスクを装置１０１のローカルメモリ（図示せず）に記憶する。ワイヤレスレイヤ１１５は、次いで、ワイヤレスインターフェイスロジック又は回路１１６を経てネットワークに問合せメッセージ（例えば、拡張問合せ又はＥＩメッセージ）を放送する。問合せメッセージは、装置１０２を含めて、通信範囲内の他の全てのワイヤレス装置によって受信される。
【００３０】
問合せに応答して、他の装置へサービスを潜在的に提供できる各サーバー装置は、各装置によりサポートされるサービスを表すビットマスクを返送することで問合せに応答することができる。この例では、問合せメッセージが装置１０２によって受け取られる。問合せメッセージに応答して、ワイヤレスレイヤ１０５は、記憶装置１０６からサービスビットマスク１１３を検索し、そしてワイヤレスインターフェイスロジック又は回路１０７を経て装置１０１へサービスビットマスク１１３を表すデータを返送するよう構成される。
【００３１】
装置１０１が装置１０２からビットマスクを受け取ると、ワイヤレスレイヤ１１５は、装置１０２から受け取ったビットマスクを、ローカルメモリに記憶されたものと比較し、装置１０２により関連サービスがサポートされることを指示する同じ論理値を有する対応ビットが両ビットマスクにあるかどうか決定する。例えば、ワイヤレスレイヤ１１５は、２つのビットマスク間で論理ＡＮＤ演算を遂行する。
【００３２】
アプリケーション１１７によりサーチされるサービスが装置１０２により潜在的にサポートされることを結果が指示する場合には、ワイヤレスレイヤ１１５は、装置１０２とのセッション接続（例えば、セッション記述プロトコル又はＳＤＰ接続）を確立し、そしてサービスに関するより詳細な情報の要求を送信する。１つの実施形態において、装置１０１は、サーチされるサービスに対応するキー／値ペアを含めて、装置１０２からのビットマスクによりサポートされる全てのキー／値ペアを要求する。ワイヤレス処理ユニット１１５は、装置１０２から受け取った全てのキー／値ペアを「通して歩く」。例えば、キー／値ペアごとに、ワイヤレス処理ユニット１１５は、各キー／値ペアのキーを、サーチされるサービスに対応してローカルに記憶されたものと比較し又はマッチングさせ、サーチされるサービスに対応するキー／値ペアを識別する。
【００３３】
サーチされるサービスに対応するキー／値ペアが受け取られて識別されると、ワイヤレスレイヤ１１５は、そのようなキー／値ペアをサービス発見レイヤ１１８へ通す。サービス発見レイヤ１１８は、そのキー／値ペアを評価し、そしてサーチされるサービスが実際に装置１０２によりサポートされるかどうかアプリケーション１１７に通知する。その結果、前記プロトコルは、サーチされるサービスをサーバー装置が実際にサポートするかどうか決定するためにサーバー装置からサービスの詳細な情報を得るための接続を確立する（これは比較的長時間を要する）前に、問合せに応答するどのサーバー装置が、サーチされるサービスを潜在的にサポートするか素早く識別することができる。
【００３４】
上述したように、装置１０１−１０２のアーキテクチャーは、同様又は同一であることに注意されたい。特定の状況に基づいて、装置１０１−１０２は、クライアント装置及び／又はサーバー装置として動作する。従って、ある機能的ユニットは、装置がクライアント装置として、サーバー装置として、又はクライアント及びサーバーの両装置として動作するときに、同様又は同一の幾つかのオペレーションを遂行する。例えば、サービス発見レイヤ１１４は、サービス発見レイヤ１０４と同様に実施され、一方、ワイヤレスレイヤ１１５は、ワイヤレスレイヤ１０５と同様に実施される。図示されていないが、サービス発見レイヤ１１４は、サービス広告ユニット１０８、サービスマスクジェネレータ１０９、及び／又はキー／値ペアジェネレータ１１０、等と同様の他の機能的ユニットを含んでもよい。同様に、サービス発見レイヤ１０４も、ＤＮＳ処理ユニット１１８及び／又はキージェネレータ１１９、等と同様の他の機能的ユニットを含んでもよい。例えば、サービス発見ユニット１１４により発生されるキーは、同じサービスに対してサービス発見ユニット１０４により発生されるキーと同様又は同一でよい。図１の装置１０１−１０２のコンポーネントの幾つか又は全部がソフトウェア、ハードウェア又はその両方の組み合わせで実施されてもよいことに注意されたい。
【００３５】
図２は、本発明の一実施形態による２つのピアツーピアネットワーク装置間のトランザクションを示すトランザクション図である。図２を参照すれば、例えば、装置２１０は、図１の装置１０１の一部分として実施され、そして装置２２０は、図１の装置１０２の一部分として実施される。装置２１０のアプリケーション（例えば、ブラウザ）がサービス（例えば、ゲーム）をサーチするとき、そのサービスに関連したＤＮＳ情報に基づいてキー及びビットマスクが発生される。トランザクション２０１において、問合せ（例えば、ＥＩメッセージ）がネットワークに放送され、この例では、装置２２０により受け取られる。次いで、トランザクション２０２中に、装置２２０は、装置２２０が提供できる１つ以上のサービスを指示する所定論理値をもつ１つ以上のビットを有するサービスビットマスクを送信する。装置２１０は、装置２２０から受け取ったサービスビットマスクを、サーチされるサービスのビットマスクに関して検査して、サーチされるサービスが装置２２０により潜在的にサポートされるかどうか素早く識別する。
【００３６】
サーチされるサービスが装置２２０によりサポートされると決定された場合には、トランザクション２０３において、装置２１０は、セッション接続（例えば、ＳＤＰ接続）を確立する要求を送信し、そしてトランザクション２０４において、装置２２０は、セッション接続の確立を完了するためにその要求を確認する。
【００３７】
接続が確立されると、トランザクション２０５の間に、装置２１０は、装置２２０から１つ以上のキー／値ペアを要求し、そしてトランザクション２０６の間に装置２２０からそのようなキー／値ペアを受け取る。装置２２０は、ビットマスクの同じビットに対応する複数のサービスを有することに注意されたい。ビットマスクに基づき、装置２１０は、装置２２０が、サーチされるサービスを「おそらく」又は「潜在的に」提供できることだけ決定する。本明細書全体を通して説明する技術は、比較的長時間を要するピア装置との接続の確立を必要とせずにピア装置が特定のサービスを「おそらく」又は「潜在的に」提供できるかどうか装置が素早く決定できるようにする。ピア装置が特定のサービスを潜在的に提供できると決定されたときだけ、セッション接続が確立されて、ピア装置がそのようなサービスを「実際に」提供できるかどうか決定するためにピア装置により提供されるサービスの更に詳細な情報を得る。その結果、ビットマスク及びキー／値ペアを使用することにより、特定のサービスを提供できないピア装置を素早く排除することができる。
【００３８】
図３は、一実施形態によりコンピューティング装置のサービスを広告する方法を示すフローチャートである。この方法３００は、ソフトウェア、ハードウェア、又はその両方の組み合わせを含む処理ロジックにより遂行されることに注意されたい。例えば、方法３００は、図２の装置２２０により遂行されてもよいし、或いは図１の装置１０２のサービス発見レイヤ１０４及び／又はワイヤレスレイヤ１０５により遂行されてもよい。図３を参照すれば、ブロック３０１において、ゲームアプリケーションのようなサービスを広告する要求が受け取られる。その要求に応答して、ブロック３０２において、広告されるべきサービスに対してキー／値ペアが発生される。広告されるサービスに関連したＤＮＳ情報に基づいてキー／値ペアが発生される。
【００３９】
ブロック３０３において、キー／値がローカル記憶装置に記憶され、そしてキーに基づいて、例えば、ハッシュオペレーションを経てビットマスクが発生される。ビットマスクは、サービスがローカルコンピューティング装置によりサポートされることを指示するためにキーに対応するあるビット位置に単一のビットを含む。そのようなビットマスクは、サービスビットマスクとも称される。複数のサービスが装置によりサポートされる場合には、装置によってサポートされる特定のサービスを各々指示する所定論理値（例えば、真の論理値）を有する複数のビットがビットマスクにある。その後、ブロック３０４において、１つ以上のサービスを問合せするリモート装置から問合せ（例えば、ＥＩ問合せ）が受け取られる。それに応答して、ブロック３０５において、サービスビットマスクがリモート装置へ返送され、これは、特定のサービスがローカル装置によってサポートされるかどうか決定するためにリモート装置により使用される。
【００４０】
図４は、一実施形態によりピア装置によって提供されるサービスを発見するための方法を示すフローチャートである。この方法４００は、ソフトウェア、ハードウェア、又はその両方の組み合わせを含む処理ロジックにより遂行されることに注意されたい。例えば、方法４００は、図２の装置２１０により遂行されてもよいし、或いは図１の装置１０１のサービス発見レイヤ１１４及び／又はワイヤレスレイヤ１１５により遂行されてもよい。図４を参照すれば、ブロック４０１において、ブラウザのようなアプリケーションからサービス（例えば、ゲーム）をサーチする要求が受け取られる。その要求に応答して、ＤＮＳパケット（例えば、ＤＮＳ問合せパケット）が生成され、このＤＮＳパケットは、サーチされるサービスを識別するある情報（例えば、名前）を含む。ブロック４０２では、ＤＮＳパケットに基づいてキーが発生される。更に、ブロック４０３では、キーに基づいてビットマスクが発生される。例えば、ビットマスクは、キーに対してハッシュオペレーションを遂行することにより発生され、これは、所定論理値（例えば、真の論理値）を有する単一ビットのビットマスクを発生する。
【００４１】
ブロック４０４において、ネットワーク内の１つ以上のピア装置から利用できるサービスをサーチする問合せ（例えば、ＥＩメッセージ）がネットワークに放送される。ブロック４０５において、その問合せを受け取るネットワーク内の各ピア装置は、各ピア装置がどんなサービス（１つ又は複数）を提供できるか表すサービスビットマスクで応答する。ブロック４０６において、受け取られるビットマスクごとに、リモートピア装置から受け取られるビットマスクと、ローカルで発生されるビットマスクとの間で論理演算（例えば、論理ＡＮＤ演算）が遂行される。論理演算の結果を使用して、サーチされるサービスが特定のピア装置から利用できるかどうか決定する。
【００４２】
例えば、ローカルで発生されたビットマスクが０ｘ０４であり（例えば、ビット２が真の論理値を有し）、一方、リモートピア装置から受け取られたビットマスクが０ｘ０７である（例えば、ビット０−２が真の論理値を有する）場合には、２つのビットマスク間の論理ＡＮＤ演算が、０ｘ０４の結果を生じる。ここで、その結果のビット２における非ゼロ値は、サーチされるサービスがリモートピア装置によりサポートされることを指示する。ピア装置は、ビットマスクの同じビットに対応する複数のサービスを有することに注意されたい。このとき、クライアント装置は、ビットマスクに基づいて、リモート装置が、サーチされるサービスを「おそらく」提供できることしか決定できない。リモート装置が、サーチされるサービスを確実に提供できることを決定するためには、ローカル装置は、リモート装置との接続を確立して、適切なキー／値ペアを得ると共に、それらを検査して、ピア装置が、サーチされるサービスを「実際に」サポートするかどうか決定しなければならず、これは、長い時間を必要とする。しかしながら、ビットマスクを使用することにより、ローカル装置は、サーチされるサービスを提供できないピア装置を素早く排除すると共に、それを提供できる装置に注目できるようにする。その結果、サービスをサーチする効率を著しく改善することができる。
【００４３】
１つの実施形態によれば、サーチされ及び／又は広告されるサービスに関連したＤＮＳ情報に基づいてキー／値ペアが発生される。例えば、ＤＮＳパケットにおけるリソースレコード（ＲＲ）の名前フィールド及びタイプフィールドは、キー／値ペアのキーを発生するのに使用され、一方、ＲＲのデータフィールド（例えば、ＲＤａｔａフィールド）は、キー／値ペアの値を発生するのに使用される。１つの実施形態において、ＲＲの名前フィールドは、名前フィールドにおける全キャラクタストリングを複写せずに、ＤＮＳパケットの別のＲＲ又は質問に以前に現れたキャラクタストリングを指す圧縮ポインタ（ＣＰ）のようなポインタを含む。同様に、データフィールド（例えば、ＲＤａｔａフィールド）も、全キャラクタストリングを複写せずに、別のＲＲ又は質問、或いは現在ＲＲの名前フィールドに現れるストリングを指す圧縮ポインタを含む。従って、キー／値ペアの値は、キー／値ペアのキーを指すポインタを含み、一方、キー／値ペアのキーは、別のＲＲを指すポインタを含む。その結果、サービス発見の目的でキー／値ペアのサイズを更に減少することができる。
【００４４】
図５Ａは、典型的な非圧縮ＤＮＳパケットを示すブロック図である。図５Ａに示すように、ＤＮＳパケット５００は、質問５０１及びＲＲ５０２のような複数の質問及びＲＲを有する非圧縮ＤＮＳパケットである。質問５０１は、名前５０３を含むＤＮＳ質問の幾つかの標準的フィールド、並びにタイプ及びクラスフィールドのような他のフィールド（図示せず）を含む。同様に、ＲＲ５０２は、名前５０４及びデータフィールド５０５、並びに他のフィールド（例えば、タイプ、クラス）を含む。典型的に、複数のフィールドに現れる１つ以上のドメイン名がある。この例では、“＿ｔｃｐ”及び“ｌｏｃａｌ”のストリングが両名前フィールド５０３及び５０４に現れ、そして他の幾つかのフィールド（図示せず）に現れることもある。ストリングのこのような複写は、ＤＮＳパケットを不必要に大きなものにする。
【００４５】
ＤＮＳパケットのサイズを減少するために、図５Ｂに示すように、フィールドに全ストリングを列挙せずにストリングの以前の出現を参照することにより、その後に現れるストリングに置き換わるように圧縮ポインタ（ＣＰ）が使用される。図５Ｂを参照すれば、ＲＲ５０２の名前フィールド５０４に“＿ｔｃｐ”及び“ｌｏｃａｌ”の全ストリングを列挙せずに、質問５０１の名前フィールド５０３に以前に現れた同じストリングを参照するように圧縮ポインタ＜ｐｔｒ０＞が使用される。例えば、ポインタ＜ｐｔｒ０＞は、ＤＮＳパケットの開始から、ドメイン名“［４］＿ｔｃｐ［５］ｌｏｃａｌ［０］”をエンコードするバイトまでのオフセットを表す。その結果、“［８］＿ｅｘａｍｐｌｅ［４］＿ｔｃｐ［５］ｌｏｃａｌ［０］”をエンコードするのに２１バイトを使用するのではなく、ここでは１１バイトしか使用されない。
【００４６】
同様に、ＲＤａｔａフィールド５０５も、全ストリングを繰り返す必要なくＤＮＳパケットに以前に現れたストリングを参照するためにポインタ＜ｐｔｒ１＞を使用する。例えば、ＲＤａｔａフィールド５０５は、ストリング“［８］＿ｅｘａｍｐｌｅ［４］＿ｔｃｐ［５］ｌｏｃａｌ［０］”で終了すると仮定する。このようなストリングは、名前フィールド５０３を参照するポインタ＜ｐｔｒ０＞を含む名前フィールド５０４を指すポインタ＜ｐｔｒ１＞に置き換えることができる。
【００４７】
１つの実施形態によれば、キー５０６は、ＤＮＳパケットの質問又はリソースレコード、この例では、リソースレコード５０２から発生された名前フィールド５０８及びタイプフィールド５０９より成る。名前フィールド５０８は、図５Ｃに示すように、全ストリングを列挙せずに、ＤＮＳパケットに以前に現れたストリングを参照するポインタを含む。ＤＮＳパケットに使用されるＤＮＳクラスは、インターネットクラスを参照する“ＩＮ”である（広範囲な使用における唯一のＤＮＳクラス）。ＤＮＳパケットにおける２バイトＤＮＳクラスは、キー５０６において、名前フィールド５０８のドメイン名に対してどのように圧縮を行うか識別するバージョン識別子５１０に置き換えられる。例えば、バージョン識別子５１０は、このキーを生成するのにどのインメモリＤＮＳパケット（圧縮ディクショナリーとも称される）が使用されたか指示し、キーの受取者がキーを全ＤＮＳ名へ解凍できるようにする。キー５０６は、例示の目的で説明されるもので、他のフォーマットを適用することもできる。更に、キー／値ペアの値５０７は、リソースレコードの名前フィールドを指すポインタを有するレコードのレコードデータフィールド（この例では、ＲＤａｔａフィールド５０５）から発生される。即ち、キー／値ペアの値は、キー／値ペアのキーを参照するポインタを含み、そしてキーそれ自体は、ＤＮＳパケットのキーに使用される情報の前にある別のドメイン名（例えば、名前フィールド５０３）を指すポインタを含む。これは、キー／値ペアのサイズを更に小さくする。
【００４８】
図６は、一実施形態によりサービス発見手順に使用されるキー／値ペアを発生する方法を示すフローチャートである。この方法６００は、ソフトウェア、ハードウェア又はその両方の組み合わせを含む処理ロジックにより遂行されることに注意されたい。例えば、この方法は、図１の装置１０１−１０２のサービス発見レイヤ及び／又はワイヤレスレイヤにより遂行される。図６を参照すれば、ブロック６０１において、サービスを問合せるか又はサービスを広告するためのＤＮＳ情報が受け取られ、このＤＮＳ情報は、１つ以上の質問又はリソースレコードを含む。ブロック６０２において、ＤＮＳ情報に基づいてインメモリＤＮＳパケットが生成される。インメモリＤＮＳパケットでは、キャラクタストリングのその後の出現が、全キャラクタストリングを繰り返さずに、ストリングの以前の出現を参照するポインタに置き換えられる。例えば、ポインタは、ＤＮＳパケットの開始から、キャラクタストリングをエンコードするバイトまでのオフセットを表す。ブロック６０３において、インメモリＤＮＳパケットから、レコードの名前、タイプ及びデータフィールドが抽出される。ブロック６０４において、その抽出された名前及びタイプに基づき、全ストリングを列挙せずにＤＮＳパケットに以前に現れたストリングを参照するポインタを含めて、キーが発生される。ブロック６０５において、ＤＮＳパケットの抽出されたデータフィールドに基づき、全データを列挙せずにキーのデータ又は以前のドメイン名を参照するポインタを含めて、値が発生される。ブロック６０６において、キー及び値を使用して、サービスをサーチ又は広告する。
【００４９】
図７は、本発明の一実施形態により使用できるデータ処理システムのブロック図である。例えば、このシステム９００は、図１の装置１０１−１０２のようなコンピューティング装置を表す。図７は、コンピューティングシステムの種々のコンポーネントを示すが、コンポーネントを相互接続する特定のアーキテクチャー又は仕方を表すものではなく、そのような細部は、本発明にとって関係ないことに注意されたい。又、より少数のコンポーネント又はおそらくより多くのコンポーネントを有するネットワークコンピュータ、ハンドヘルドコンピュータ、セルラーホン及び他のデータ処理システムも、本発明に使用できることが明らかであろう。図７のコンピュータシステムは、例えば、アップルマッキントッシュコンピュータ又はマックブック、或いはＩＢＭ適合ＰＣである。
【００５０】
図７に示すように、データ処理システムの一形式であるコンピュータシステム９００は、バス又は相互接続部９０２を備え、これは、１つ以上のマイクロプロセッサ９０３及びＲＯＭ９０７、揮発性ＲＡＭ９０５、及び不揮発性メモリ９０６に結合される。マイクロプロセッサ９０３は、キャッシュメモリ９０４に結合される。バス９０２は、これら種々のコンポーネントを一緒に相互接続すると共に、これらコンポーネント９０３、９０７、９０５、及び９０６を、ディスプレイコントローラ及びディスプレイ装置９０８、並びに入力／出力（Ｉ／Ｏ）装置９１０にも相互接続し、このＩ／Ｏ装置は、マウス、キーボード、モデム、ネットワークインターフェイス、プリンタ、及びこの分野で良く知られた他の装置である。
【００５１】
典型的に、入力／出力装置９１０は、入力／出力コントローラ９０９を経てシステムに結合される。揮発性ＲＡＭ９０５は、典型的に、メモリのデータをリフレッシュし又は維持するために常時電力を必要とするダイナミックＲＡＭ（ＤＲＡＭ）として実施される。不揮発性メモリ９０６は、典型的に、磁気ハードドライブ、磁気光学的ドライブ、光学的ドライブ、又はＤＶＤ  ＲＡＭ、或いはシステムから電力が除去された後もデータを維持する他の形式のメモリシステムである。典型的に、不揮発性メモリは、ランダムアクセスメモリであるが、これは、必要とされない。
【００５２】
図７に示すように、不揮発性メモリは、データ処理システムの残りのコンポーネントに直結されたローカル装置であるが、本発明は、システムから離れた不揮発性メモリを使用することができ、例えば、モデム又はイーサネットインターフェイスのようなネットワークインターフェイスを通してデータ処理システムに結合されるネットワーク記憶装置を使用することができる。バス９０２は、この分野で良く知られたように、種々のブリッジ、コントローラ、及び／又はアダプタを通して互いに接続される１つ以上のバスを含む。１つの実施形態では、Ｉ／Ｏコントローラ９０９は、ＵＳＢ周辺装置を制御するためのＵＳＢ（ユニバーサルシリアルバス）アダプタを含む。或いは又、Ｉ／Ｏコントローラ９０９は、ブルーツースアダプタのようなワイヤレスアダプタ、又はＷｉＦｉインターフェイス、又はＦｉｒｅＷｉｒｅ装置を制御するためのＦｉｒｅＷｉｒｅアダプタとしても知られているＩＥＥＥ−１３９４アダプタを含む。
【００５３】
以上の詳細な説明のある部分は、コンピュータメモリ内のデータビットに対するオペレーションのアルゴリズム及び記号表示に関して表現されている。これらのアルゴリズム記述及び表示は、データ処理分野の当業者により、彼等の仕事の実質を他の当業者に最も効率的に伝えるために使用される。アルゴリズムとは、ここでは、一般的に、望ましい結果を導く自己矛盾のないオペレーションシーケンスであると考えられる。オペレーションは、物理量の物理的操作を要求するものである。通常、必ずしもそうでないが、これらの量は、記憶、転送、合成、比較、その他、操作することのできる電気的又は磁気的信号の形態をとる。主として、慣用上、これらの信号は、ビット、値、エレメント、記号、キャラクタ、期間、数、等として参照するのが便利であると分かっている。
【００５４】
しかしながら、これら及び同様の用語は、全て、適当な物理量に関連付けられ、そしてそれらの量に適用される便宜的表示に過ぎないことを銘記されたい。特に指示のない限り、以上の説明から明らかなように、この説明全体を通して、「処理」又は「コンピューティング」又は「計算」又は「決定」又は「表示」、等の用語を使用する説明は、コンピュータシステムのレジスタ及びメモリ内で物理的（電子的）量として表されたデータを操作し、そしてコンピュータシステムのメモリ又はレジスタ或いは他のそのような情報記憶、伝達又は表示装置内で物理的量として同様に表される他のデータへと変換するコンピューティングシステム又は同様の電子的コンピューティング装置のアクション及び処理を参照するものである。
【００５５】
又、本発明の実施形態は、ここに示すオペレーションを遂行するための装置にも係る。この装置は、要求される目的のために特に構成されてもよいし、又は記憶されたコンピュータプログラムにより選択的にアクチベートされ又は再構成される汎用コンピュータを備えてもよい。そのようなコンピュータプログラムは、コンピュータ読み取り可能な媒体に記憶される。マシン読み取り可能な媒体は、マシン（例えば、コンピュータ）により読み取りできる形態で情報を記憶するためのメカニズムを備えている。例えば、マシン読み取り可能な（例えば、コンピュータ読み取り可能な）媒体は、マシン（例えば、コンピュータ）読み取り可能な記憶媒体（例えば、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光学的記憶媒体、フラッシュメモリ装置、等）、等々を含む。
【００５６】
ここに述べるアルゴリズム及びディスプレイは、特定のコンピュータ又は他の装置に固有に関係していない。種々の汎用システムを、ここに述べる技術に基づくプログラムと共に使用してもよいし、又は必要な方法オペレーションを遂行するように更に特殊な装置を構成するのが便利であると分かっている。種々のこれらシステムに要求される構造は、以上の説明から明らかとなろう。更に、本発明の実施形態は、特定のプログラミング言語を参照して説明していない。上述した本発明の実施形態の教示を具現化するのに種々のプログラミング言語を使用できることが明らかであろう。
【００５７】
以上、特定の実施形態を参照して本発明を説明した。特許請求の範囲に述べる本発明の広い精神及び範囲から逸脱せずに種々の変更がなされ得ることが明らかであろう。従って、明細書及び添付図面は、例示とみなすべきで、それに限定されるものではない。
【符号の説明】
【００５８】
１００：ネットワーク構成
１０１：コンピューティング装置
１０２：コンピューティング装置
１０３：ネットワーク
１０４：サービス発見レイヤ
１０５：ワイヤレスレイヤ
１０６：記憶装置
１０７：ワイヤレス通信Ｉ／Ｆ
１０８：サービス広告ユニット
１０９：サービスビットマスクジェネレータ
１１０：キー／値ジェネレータ
１１１：アプリケーション
１１２：キー／値ペア
１１３：サービスビットマスク
１１４：サービス発見レイヤ
１１５：ワイヤレスレイヤ
１１６：ワイヤレス通信Ｉ／Ｆ
１１７：アプリケーション
１１８：ＤＮＳ処理ユニット
１１９：キージェネレータ
９０２：バス
９０３：マイクロプロセッサ
９０４：キャッシュ
９０５：揮発性ＲＡＭ
９０６：不揮発性メモリ
９０７：ＲＯＭ
９０８：表示コントローラ及びディスプレイ装置
９０９：Ｉ／Ｏコントローラ
９１０：Ｉ／Ｏ装置
【図１】
0005480972.tif 000002
【図２】
0005480972.tif 000003
【図３】
0005480972.tif 000004
【図４】
0005480972.tif 000005
【図５Ａ】
0005480972.tif 000006
【図５Ｂ】
0005480972.tif 000007
【図５Ｃ】
0005480972.tif 000008
【図６】
0005480972.tif 000009
【図７】
0005480972.tif 000010