(57)【要約】【課題】ＤＮＳサーバが存在しない環境において、通信相手のアドレスを知らない機器が、効率良く通信相手を発見し、通信できるようにする。【解決手段】機器１−ａは、複数の要素を組み合わせて第１の文字列を生成し、第１の文字列より第１のグループアドレスを生成する。機器１−ａは、その第１のグループアドレスを送信先アドレスとして、ＮＩ　Ｑｕｅｒｙパケットを送信する。機器１−ｂは、複数の要素を組み合わせて第２の文字列を生成し、第２の文字列より第２のグループアドレスを生成する。機器１−ｂは、受信したＮＩ　Ｑｕｅｒｙパケットの送信先アドレスが第２のグループアドレスと一致したら、機器１−ｂの情報を含んだＮＩ　Ｒｅｐｌｙパケットを機器１−ｂに返信する。機器１−ａは、ＮＩ　Ｒｅｐｌｙパケットを受信し、ＮＩ　Ｒｅｐｌｙパケット内の情報を元に機器１−ｂと通信する。【選択図】　　　図１
2004088428.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して接続された非機器発見通信装置を発見する機器発見通信装置であって、
複数の要素文字列を組み合わせて１つ以上の文字列を生成する文字列手段生成と、
前記１つ以上の文字列よりネットワークアドレスを生成するネットワークアドレス生成手段と、
前記ネットワークアドレスを送信先アドレスとし、機器発見通信装置の情報を記述したパケットを送信する送信手段と、
前記パケットに対する返信パケットを受信する受信手段とを備え、
前記返信パケットにより非機器発見通信装置を発見することを特徴とする機器発見通信装置。
【請求項２】
請求項１記載の機器発見通信装置であって、
前記受信手段が、ネットワークに接続された他の機器発見通信装置から送信されたパケットを受信した場合には、前記送信手段は、前記他の機器発見通信装置から送信されたパケットの送信先アドレスを読み出し、前記１つ以上の文字列より生成されたネットワークアドレスとの比較結果に応じて、機器発見通信装置の情報を記述した返信パケットを送信することを特徴とする機器発見通信装置。
【請求項３】
機器発見通信装置とネットワークを介して接続された非機器発見通信装置であって、
複数の要素文字列を組み合わせて１つ以上の文字列を生成する文字列生成手段と、
前記１つ以上の文字列よりネットワークアドレスを生成するネットワークアドレス生成手段と、
機器発見通信装置から送信されたパケットを受信する受信手段と、
前記パケットの送信先アドレスを読み出し、前記１つ以上の文字列より生成されたネットワークアドレスとの比較結果に応じて、非機器発見通信装置の情報を記述した返信パケットを送信する送信手段とを備えることを特徴とする非機器発見通信装置。
【請求項４】
請求項１又は２記載の機器発見通信装置、又は、請求項３記載の非機器発見通信装置であって、
前記文字列生成手段は、ホスト名より抽出した複数の要素文字列を組み合わせて１つ以上の文字列を生成することを特徴とする機器発見通信装置、又は、非機器発見通信装置。
【請求項５】
請求項１又は２記載の機器発見通信装置であって、
返信パケットから読み出した情報を元に任意のプロトコルを実行する手段を備え、非機器発見通信装置を発見し、任意のプロトコルを介して通信することを特徴とする機器発見通信装置。
【請求項６】
ネットワークを介して接続された非機器発見通信装置を発見する機器発見プログラムであって、
複数の要素文字列を組み合わせて１つ以上の文字列を生成する文字列生成手順と、
前記１つ以上の文字列よりネットワークアドレスを生成するネットワークアドレス生成手順と、
前記ネットワークアドレスを送信先アドレスとし、機器発見通信装置の情報を記述したパケットを送信する送信手順と、
前記パケットに対する返信パケットを受信する受信手順とを備え、
前記返信パケットにより非機器発見通信装置を発見することを特徴とする機器発見プログラム。
【請求項７】
請求項６記載の機器発見プログラムであって、
ネットワークに接続された他の機器発見通信装置から送信されたパケットを受信した場合には、前記他の機器発見通信装置から送信されたパケットの送信先アドレスを読み出し、前記１つ以上の文字列より生成されたネットワークアドレスとの比較結果に応じて、機器発見通信装置の情報を記述した返信パケットを送信することを特徴とする機器発見プログラム。
【請求項８】
ネットワークを介して接続された機器発見通信装置から受信したパケットに返信パケットを送信する送信プログラムであって、
複数の要素文字列を組み合わせて１つ以上の文字列を生成する文字列生成手順と、
前記１つ以上の文字列よりネットワークアドレスを生成するネットワークアドレス生成手順と、
機器発見通信装置から送信されたパケットを受信する受信手順と、
前記パケットの送信先アドレスを読み出し、前記１つ以上の文字列より生成されたネットワークアドレスとの比較結果に応じて、非機器発見通信装置の情報を記述した返信パケットを送信する送信手順とを備えることを特徴とする送信プログラム。
【請求項９】
請求項６又は７記載の機器発見プログラム、又は、請求項８記載の送信プログラムであって、
前記文字列生成手順は、ホスト名より抽出した複数の要素文字列を組み合わせて１つ以上の文字列を生成することを特徴とする機器発見プログラム、又は、送信プログラム。
【請求項１０】
請求項６又は７記載の機器発見プログラムであって、
返信パケットから読み出した情報を元に任意のプロトコルを実行する手段を備え、非機器発見通信装置を発見し、任意のプロトコルを介して通信することを特徴とする機器発見プログラム。
【請求項１１】
請求項６乃至請求項１０の何れか一項に記載のプログラムが記録されたコンピュータ読み取り可能な記録媒体。
【請求項１２】
ネットワークを介して接続された第１の装置が第２の装置を発見する機器発見方法であって、
第１の装置が、
複数の要素文字列を組み合わせて１つ以上の第１の文字列を生成する第１の文字列生成手順と、
前記第１の文字列より第１のネットワークアドレスを生成する第１のネットワークアドレス生成手順と、
前記第１のネットワークアドレスを送信先アドレスとし、第１の装置の情報を記述したパケットを送信する送信手順と、
前記パケットに対する返信パケットを受信する受信手順とを行い、
第２の装置が、
複数の要素文字列を組み合わせて１つ以上の第２の文字列を生成する第２の文字列生成手順と、
前記第２の文字列より第２のネットワークアドレスを生成する第２のネットワークアドレス生成手順と、
第１の装置から送信されたパケットを受信する受信手順と、
前記パケットの送信先アドレスを読み出し、前記第２のネットワークアドレスとの比較結果に応じて、第２の装置の情報を記述した返信パケットを送信する送信手順とを行うことを特徴とする機器発見方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、機器発見通信装置、非機器発見通信装置、プログラム、記録媒体、及び、発見方法に関する。
【０００２】
【従来の技術】
インターネットにおいて、名前とＩＰアドレスの対応をとることは普通に行われている。この対応をとることを名前解決という。名前とは、例えば「ｈｏｓｔ．ｘｘｘｘｘ．ｃｏ．ｊｐ」や「ｈｏｓｔ」といった、人間が読みやすくした文字列であり、多くの場合、あるパソコン１台や機器１台といった機器毎に人間がつけるものである。ＩＰアドレスは例えばＩｎｔｅｒｎｅｔ　Ｐｒｏｔｏｃｏｌ　Ｖｅｒｓｉｏｎ４（以下ＩＰｖ４と記す）であるならば１９２．１０．０．１といった表記がなされ、Ｉｎｔｅｒｎｅｔ　Ｐｒｏｔｏｃｏｌ　Ｖｅｒｓｉｏｎ　６（以下ＩＰｖ６と記す）であるならば２００１：０３４０：１０００：：１といった表記がなされる。
【０００３】
名前解決の最も原始的な方法は、各ホストがローカルファイルとして名前解決用のファイルを管理する方法である。ＬｉｎｕｘなどのＵｎｉｘ（Ｒ）系ＯＳでは「／ｅｔｃ／ｈｏｓｔｓ」にあり、左側にＩＰアドレス、右側にホスト名を列挙して管理している。ここで、例えば「ｈｏｓｔ」と「１９２．１０．０．１」の対応がなされている場合、「ｈｏｓｔ」で問い合わせを行うと「１９２．１０．０．１」が、「１９２．１０．０．１」で問い合わせを行うと「ｈｏｓｔ」を返すことが名前解決の例である。名前解決を行うことにより、通信相手の指定にＩＰアドレスではなく名前を用いることが可能となり、人間にとって通信を使用しやすくしている。
【０００４】
ローカルファイルにより名前解決を行う方法はホスト数が十分少ない場合は有効であるが、ホスト数が多くなると非効率である。ローカルファイルはホスト毎に存在するので、名前解決用ファイルのメンテナンスを行う場合、全てのホストの名前解決用ファイルを直接編集しなければならない。
【０００５】
そのため考案されたのがＤｏｍａｉｎ　Ｎａｍｅ　Ｓｙｓｔｅｍ（以下ＤＮＳと記す）である。ＤＮＳは名前解決用のファイルをＤＮＳサーバ（別にネームサーバとも言う）で管理し、各ホストはＤＮＳサーバに問い合わせ、名前やＩＰアドレスを取得する。ＤＮＳを用いることで、全ホストにローカルに存在する名前解決用ファイルを管理する必要がなくなり、ＤＮＳサーバの名前解決用ファイルのみを管理すれば名前解決が行える。ＤＮＳサーバでは、多数のホストからの要求を処理するので、多数のＤＮＳサーバが階層構造をもって運用されている。
【０００６】
ＤＮＳでは、Ａ．　Ｍａｒｉｎｅ、Ｇ．　Ｍａｌｋｉｎ、「ＦＹＩ　ｏｎ　Ｑｕｅｓｔｉｏｎｓ　ａｎｄ　Ａｎｓｗｅｒｓ　ｔｏ　Ｃｏｍｍｏｎｌｙ　ａｓｋｅｄ　”Ｎｅｗ　Ｉｎｔｅｒｎｅｔ　Ｕｓｅｒ”　Ｑｕｅｓｔｉｏｎｓ」、ＲＦＣ１５９４、Ｍａｒｃｈ　１９９４の５．２節で説明されているＦｕｌｌｙ　Ｑｕａｌｉｆｉｅｄ　Ｄｏｍａｉｎ　Ｎａｍｅ（以下ＦＱＤＮと記す）も用いられる。ＦＱＤＮは世界で一意となるように設定するべき名前である。図１１に例示するように、ＦＱＤＮは「ｈｏｓｔ」というホスト名と、「ｘｘｘｘｘ．ｃｏ．ｊｐ」で示されるドメイン名というＤＮＳ上の場所を示す名前を、ピリオドで繋げた名前となっている。ＦＱＤＮをホスト名ということもあるが、ここでは図１１に示すルールを取る。
【０００７】
ＤＮＳの詳細な仕組みについては、Ｐ．　Ｍｏｃｋａｐｅｔｒｉｓ、「ＤＯＭＡＩＮ　ＮＡＭＥＳ　−　ＩＭＰＬＥＭＥＮＴＡＴＩＯＮ　ＡＮＤ　ＳＰＥＣＩＦＩＣＡＴＩＯＮ」、ＲＦＣ１０３５、Ｎｏｖｅｍｂｅｒ　１９８７などのＲＦＣや、「ＤＮＳ　＆ＢＩＮＤ」（Ｐａｕｌ　Ａｌｂｉｔｚ／Ｃｒｉｃｋｅｔ　Ｌｉｕ共著、浅羽登志也／上水流由香　監訳、アスキー出版局、ＩＳＢＮ４−７５６１−０３１４−６）などの書籍他、詳しい文献が多数あるので、詳細な説明は省略する。
【０００８】
ＤＮＳは世界規模で名前解決を行う仕組みとして大変有用である。しかし、ローカルエリア内の数台のホストについて名前解決を行う場合といった、少数の機器に対して、しかも世界規模で名前解決を行う必要がない場合でもＤＮＳサーバを運用するとなると、管理負荷が高いと言わざるを得ない。また、ＤＮＳサーバが停止した場合、名前解決が行えなくなり、ローカルエリア内であっても通信相手を名前で指定する通信が不可能となる。その場合、先に示したローカルファイルによって名前解決を行う方法もあるが、高々数台であっても、名前とＩＰアドレスの対応を、矛盾なく維持、管理するのは難しい。
【０００９】
そこで、ＩＰｖ６において、ホスト同士で直接メッセージをやりとりすることにより名前解決を行う仕組みがインターネットドラフト（Ｍａｔｔ　Ｃｒａｗｆｏｒｄ、「ＩＰｖ６　Ｎｏｄｅ　Ｉｎｆｏｒｍａｔｉｏｎ　Ｑｕｅｒｉｅｓ」、ｄｒａｆｔ−ｉｅｔｆ−ｉｐｎｇｗｇ−ｉｃｍｐ−ｎａｍｅ−ｌｏｏｋｕｐｓ−０９．ｔｘｔ、Ｍａｙ　１７，　２００２。以下ドラフトと記す）で提案されている。
【００１０】
ドラフトでは以下のようにして名前解決を行うことが説明されている。
【００１１】
ＩＣＭＰｖ６パケットを用いてホスト間で直接メッセージのやり取りを行う。問い合わせ元から問い合わせ先への、問い合わせ用のＩＣＭＰｖ６パケットを「Ｎｏｄｅ　Ｉｎｆｏｒｍａｔｉｏｎ　Ｑｕｅｒｙ」（以下ＮＩ　Ｑｕｅｒｙと記す）、問い合わせ先から問い合わせ元への返答用のＩＣＭＰｖ６パケットを「Ｎｏｄｅ　Ｉｎｆｏｒｍａｔｉｏｎ　Ｒｅｐｌｙ」（以下ＮＩ　Ｒｅｐｌｙと記す）と定義している。
【００１２】
問い合わせ元は、ＮＩ　Ｑｕｅｒｙを問い合わせ先に送信する。ＮＩ　Ｑｕｅｒｙには、問い合わせ先のどの情報が欲しいかといった要求が含まれている。問い合わせ先はＮＩＱｕｅｒｙを受信し、チェックを行って返信を行うと決定した場合、ＮＩ　Ｑｕｅｒｙに含まれる要求に沿うデータをＮＩ　Ｒｅｐｌｙに含め、ＮＩ　Ｒｅｐｌｙを問い合わせ元に送信する。問い合わせ元は、ＮＩ　Ｒｅｐｌｙを受信し、ＮＩ　Ｒｅｐｌｙをチェックし、要求に沿うデータが含まれていればそれを取り出す。
【００１３】
問い合わせ方法にはＳｕｂｊｅｃｔアドレスを用いる方法と、Ｓｕｂｊｅｃｔ名を用いる方法の２種類が挙げられている。
【００１４】
最初にＳｕｂｊｅｃｔアドレスを用いる方法について説明する。問い合わせ元がＮＩ　ＱｕｅｒｙにＳｕｂｊｅｃｔアドレスと称されるＩＰｖ６アドレスを含め、問い合わせ先にＮＩ　Ｑｕｅｒｙを送信する。問い合わせ先はＮＩ　Ｑｕｅｒｙを受信後、ＮＩ　Ｑｕｅｒｙ内のＳｕｂｊｅｃｔアドレスをチェックし、問い合わせ先が返答する必要があるＳｕｂｊｅｃｔアドレスであるならば、ＮＩ　Ｑｕｅｒｙに記された要求に従い、ＦＱＤＮ（ホスト名の場合もある）もしくは問い合わせ先のユニキャストアドレスを返信する。Ｓｕｂｊｅｃｔアドレスは大抵問い合わせ先のユニキャストアドレスであり、ＮＩ　Ｑｕｅｒｙの送信先アドレスも問い合わせ先のユニキャストアドレスである。
【００１５】
次に、Ｓｕｂｊｅｃｔ名を用いる方法について説明する。Ｓｕｂｊｅｃｔ名を用いる方法では、問い合わせ元がＮＩ　ＱｕｅｒｙにＳｕｂｊｅｃｔ名となる文字列を含め、問い合わせ先にＮＩＱｕｅｒｙを送信する。その際、問い合わせ元が問い合わせ先のユニキャストアドレスを所持せず、Ｓｕｂｊｅｃｔ名がＦＱＤＮかまたはホスト名の場合、以下のようにして作成したＮｏｄｅ　Ｉｎｆｏｒｍａｔｉｏｎグループアドレス（以下ＮＩグループアドレスと記す）という名前のリンクローカルスコープマルチキャストアドレスを送信先アドレスとする。なお、この例については、図１２を参照して説明する。その説明の前に、ＮＩグループアドレスの作成方法について、先に説明する。
【００１６】
すなわち、ホスト名を一方向ハッシュ関数（ドラフトではＭＤ５（Ｒ．　Ｒｉｖｅｓｔ、「Ｔｈｅ　ＭＤ５　Ｍｅｓｓａｇｅ−Ｄｉｇｅｓｔ　Ａｌｇｏｒｉｔｈｍ」、ＲＦＣ１３２１、Ａｐｒｉｌ　１９９２））に通し、１２８ビットのデータを得る。一方向ハッシュ関数とは、関数ｈとその定義域のある値ｘが与えられて、ｈ（ｘ）＝ｈ（ｙ）となるようなｙを求めることが難しいような関数のことである。さらに、衝突困難ハッシュ関数というのがあり、この関数は、関数ｈが与えられていて、ｈ（ｘ）＝ｈ（ｙ）となるような一対の値（ｘ、ｙ）を求めることが難しいような関数である。両者をまとめて一方向ハッシュ関数と呼ぶことが多々あり、ここでもその慣習に習う。つまり、一方向ハッシュ関数とは、本関数を用いて生成したデータ列から元データを算出することが難しく、また異なる元データＡとＢから本関数を用いて生成したデータ列が一致することが稀な関数のことである。
【００１７】
一方向ハッシュ関数については、例えば「現代暗号」（岡本龍明、山本博資　著、産業図書株式会社、シリーズ／情報科学の数学、ＩＳＢＮ４−７８２８−５３５３−Ｘ　Ｃ３３５５）の１２章などの他、暗号関係の書籍に詳しい説明があるので、詳細な説明は省略する。
【００１８】
この１２８ビットの最初の３２ビットに、「ＦＦ０２：０：０：０：０：２：：／９６」のプレフィックスを追加して、マルチキャストアドレスを作成する。この作成したマルチキャストアドレスをＮＩグループアドレスとする。ＮＩ　Ｑｕｅｒｙを受信した問い合わせ先は、ＮＩ　Ｑｕｅｒｙの送信先アドレスをチェックし、問い合わせ先のユニキャストアドレス、エニキャストアドレス、問い合わせ先が参加しているリンクローカルスコープマルチキャストアドレス（ＮＩグループアドレスも含まれる）のいずれでもない場合、パケットを廃棄する。それ以外の場合、問い合わせ先は、ポリシーに従い返信するかどうか決定し、ＮＩ　Ｑｕｅｒｙに記された要求に従い、名前もしくはユニキャストアドレスを返信する。
【００１９】
ここで、ドラフトの仕組みのうちＳｕｂｊｅｃｔ名を用いる方法を利用して、リンクローカル内で機器を発見し、機器間のみで名前解決を行い、機器間で直接通信を行うことを想定してみる。
【００２０】
もっとも簡単に推測できるのは、各機器が、ホスト名（もしくはＦＱＤＮ）とは別に、共通のＳｕｂｊｅｃｔ名をもち、それによって共通のＮＩグループアドレスを各機器がもち、グループを構成することである。例えば、図１２に示すように、同一リンクローカル２内にある複数の機器１−ａ￣ｅがあり、機器１−ａ￣ｃが「ｘｘｘｘｘ」というＳｕｂｊｅｃｔ名をもつとすると、上述のようにＮＩグループアドレスを作成すると、その機器は「ｘｘｘｘｘ」というＳｕｂｊｅｃｔ名から作成された同一のＮＩグループアドレスを持つことになる。ここで、３は「ｘｘｘｘｘ」というＳｕｂｊｅｃｔ名をもつ機器群の範囲を示す。このＮＩグループアドレスを送信先アドレスとして名前解決を行うことにより、「ｘｘｘｘｘ」というＳｕｂｊｅｃｔ名を持つ全ての機器のホスト名（もしくはＦＱＤＮ）とユニキャストアドレスを得ることが可能となる。
【００２１】
ここで、例えば機器１−ａがデジタルカメラであり、機器１−ｂがプリンタであり、デジタルカメラ（１−ａ）内の画像データをプリンタ（１−ｂ）に直接送信して印刷できる独自プロトコルを、機器１−ａ、機器１−ｂとも実装していたとすると、ユーザが機器１−ａの独自プロトコル開始ボタンなどを押して独自プロトコル開始を指示するだけで、パソコンなどを介さなくとも印刷が可能となる。
【００２２】
すなわち、同一のＳｕｂｊｅｃｔ名を持つ機器を発見し、その機器についてのユニキャストアドレスを得ることにより、機器間で直接通信を行い、独自プロトコル等の任意のプロトコルを開始、実行して制御することが可能となる。
【００２３】
【発明が解決しようとする課題】
しかしながら、任意のプロトコルにより直接通信を行える機器が存在するがリンクローカル内に同一のＳｕｂｊｅｃｔ名をもつ機器が多数存在する場合、その相手を特定するのに時間がかかる。理屈ではＩＰｖ６の仕様によりリンクローカル内には約２の６４乗個までの機器が存在する可能性がある。例えば同一のＳｕｂｊｅｃｔ名を持つ機器が１００台あったとし、そのうち２台のみが任意のプロトコルにより通信可能な組み合わせである場合、任意のプロトコルを開始したい機器は、最悪９９台に任意のプロトコルで問い合わせを行い、任意のプロトコルで通信可能かどうかチェックすることになってしまう。
【００２４】
そこで、通信を行える機器をあらかじめ絞り込んでおくことが望ましい。
【００２５】
その絞り込む方法として、各機器に複数のＳｕｂｊｅｃｔ名を所持させることが考えられる。例えば、図１３において、機器１−ａは「ｘｘｘｘｘ」と「ｄｉｇｉｔａｌｃａｍｅｒａ」２つのＳｕｂｊｅｃｔ名を、機器１−ｂは「ｘｘｘｘｘ」と「ｐｒｉｎｔｅｒ」２つのＳｕｂｊｅｃｔ名を、機器１−ｃは「ｘｘｘｘｘ」のＳｕｂｊｅｃｔ名を、機器１−ｄは「ｄｉｇｉｔａｌｃａｍｅｒａ」のＳｕｂｊｅｃｔ名を、機器１−ｅは「ｐｒｉｎｔｅｒ」のＳｕｂｊｅｃｔ名をもち、ドラフトに従い各Ｓｕｂｊｅｃｔ名から作成したＮＩグループアドレスをもつとする。この場合、「ｄｉｇｉｔａｌｃａｍｅｒａ」というＳｕｂｊｅｃｔ名をもつ機器群の範囲４、「ｐｒｉｎｔｅｒ」というＳｕｂｊｅｃｔ名をもつ機器群の範囲５が定義できる。
【００２６】
先と同じように機器１−ａがデジタルカメラであり、機器１−ｂがプリンタであり、デジタルカメラ（１−ａ）内の画像データをプリンタ（１−ｂ）に直接送信して印刷できる任意のプロトコルを機器１−ａ、機器１−ｂとも実装しているとし、機器１−ａが機器１−ｂを発見したい場合、次のようにすれば発見できる。
【００２７】
すなわち、機器１−ａは、「ｘｘｘｘｘ」というＳｕｂｊｅｃｔ名から作成したＮＩグループアドレスで問い合わせを行い、「ｘｘｘｘｘ」というＳｕｂｊｅｃｔ名を持つ機器のリストを作成する。同様に「ｐｒｉｎｔｅｒ」というＳｕｂｊｅｃｔ名から作成したＮＩグループアドレスで問い合わせを行い、「ｐｒｉｎｔｅｒ」というＳｕｂｊｅｃｔ名を持つ機器のリストを作成する。２つのリストのＡＮＤをとることにより、機器の絞込みができ、任意のプロトコルで問い合わせを行いチェックする回数が減る。より絞り込みたい場合は、さらにＳｕｂｊｅｃｔ名を増やし、リストを作成すれば対応できる。
【００２８】
しかしながら、上記方法の場合、例えばＳｕｂｊｅｃｔ名がＮ個ある場合では、Ｎ個の別々のリストを生成、管理する必要があり、また、そのリストを生成するためには、Ｓｕｂｊｅｃｔ名からＮＩグループアドレスを生成し、問い合わせるという作業を、Ｎ回行わなければならない、という問題がある。さらに、リスト用の記憶領域を多く必要とする、という問題がある。
【００２９】
組み込み機器でも家電製品は計算機資源に対する要求が大変厳しいので、問い合わせの回数を少なくし、さらにリスト用の記憶領域を少なくし、もって計算機資源に対する要求を軽くし、迅速に機器を発見通信したいという問題がある。
【００３０】
本発明は、上記の問題に鑑みてなされたものであり、ＤＮＳサーバが存在しない環境において、通信相手のアドレスを知らない機器が、効率良く通信相手を発見し、通信できるようにすることを目的とする。
【００３１】
【課題を解決するための手段】
上記目的を達成するために、本発明は、ネットワークを介して接続された非機器発見通信装置を発見する機器発見通信装置であって、複数の要素文字列を組み合わせて１つ以上の文字列を生成する文字列手段生成と、前記１つ以上の文字列よりネットワークアドレスを生成するネットワークアドレス生成手段と、前記ネットワークアドレスを送信先アドレスとし、機器発見通信装置の情報を記述したパケットを送信する送信手段と、前記パケットに対する返信パケットを受信する受信手段とを備え、前記返信パケットにより非機器発見通信装置を発見することを特徴とする。
【００３２】
また、機器発見通信装置とネットワークを介して接続された非機器発見通信装置であって、複数の要素文字列を組み合わせて１つ以上の文字列を生成する文字列生成手段と、前記１つ以上の文字列よりネットワークアドレスを生成するネットワークアドレス生成手段と、機器発見通信装置から送信されたパケットを受信する受信手段と、前記パケットの送信先アドレスを読み出し、前記１つ以上の文字列より生成されたネットワークアドレスとの比較結果に応じて、非機器発見通信装置の情報を記述した返信パケットを送信する送信手段とを備えることを特徴とする。
【００３３】
【発明の実施の形態】
（第１の実施の形態）
本実施の形態では、機器に予めホスト名を設定しておき、そのホスト名からＳｕｂｊｅｃｔ名を抽出して、迅速に機器を特定する仕組みについて説明する。
【００３４】
図１は、本実施の形態におけるネットワークを示す図である。本実施の形態において、機器１−ａはデジタルカメラであり、機器１−ｂはプリンタであるとする。ネットワーク２はＬＡＮ（Ｌｏｃａｌ　Ａｒｅａ　Ｎｅｔｗｏｒｋ）である。ネットワーク２の種類としてはＬＡＮとしたが、特に種類は問わない。イーサネット（Ｒ）、ＩＥＥＥ８０２．１１、Ｂｌｕｅｔｏｏｔｈなど、通信ができれば問題はない。ただし、マルチキャストアドレスによる通信とユニキャストアドレスによる通信が行える必要がある。
【００３５】
図１において、機器発見通信装置（機器１−ａ）は、複数の要素（５つの要素）より成る第１の名前（ｘｘｘｘｘ−ｄｉｇｉｃａｍｅ−ａ２０−ｄｐｐｒｏ−１２３４）より、要素を抽出して組み合わせて第１の文字列（図６）を生成する。機器発見通信装置（機器１−ａ）は第１の文字列より第１のグループアドレスを生成し、第１のグループアドレスを送信先アドレスとして第１のパケット（ＮＩ　Ｑｕｅｒｙパケット）を送信する。
【００３６】
非機器発見通信装置（機器１−ｂ）は複数の要素（５つの要素）より成る第２の名前（ｘｘｘｘｘ−ｐｒｉｎｔｅｒ−ｓ３００−ｄｐｐｒｏ−５６７８）より、要素を抽出して組み合わせて第２の文字列（図７）を生成し、第２の文字列より第２のグループアドレスを生成する。非機器発見通信装置（機器１−ｂ）は受信した第１のパケット（ＮＩ　Ｑｕｅｒｙパケット）の送信先アドレスが第２のグループアドレスと一致したら非機器発見通信装置（機器１−ｂ）の情報を含んだ第２のパケット（ＮＩ　Ｒｅｐｌｙパケット）を機器発見通信装置（機器１−ａ）に返信する。
【００３７】
機器発見通信装置（機器１−ａ）は第２のパケット（ＮＩ　Ｒｅｐｌｙパケット）を受信し、第２のパケット（ＮＩ　Ｒｅｐｌｙパケット）内の情報を元に非機器発見通信装置（機器１−ａ）と通信する。
【００３８】
上記の複数の要素とは、例えば、機器の製造者を示すメーカ名、使用可能な通信プロトコルを示すプロトコル名などである。機器１−ａ、１−ｂは、これらの要素を組み合わせて、第１、第２の文字列（例えば、メーカ名とプロトコル名をつなげたもの）を生成し、一方向性ハッシュ関数での演算結果を求め、更に、演算結果の所定部分に所定のプレフィックスを追加して、第１、第２のグループアドレスを生成する。
【００３９】
本実施の形態では、機器１−ａと機器１−ｂが、通信プロトコルにＩｎｔｅｒｎｅｔ　Ｐｒｏｔｏｃｏｌ　Ｖｅｒｓｉｏｎ　６を用い、グループアドレスがＮｏｄｅ　Ｉｎｆｏｒｍａｔｉｏｎグループアドレスである形態を説明する。
【００４０】
図２は、機器１−ａの構成を示す図である。ＣＰＵ２０１が機器１−ａの全体の動作を制御する。ＲＡＭ２０２は一時記憶装置であり、ＲＯＭ２０３はプログラムなど、消去不可能なデータが組み込まれているＲｅａｄ　Ｏｎｌｙ　Ｍｅｍｏｒｙである。ネットワークインタフェース２０４は、機器１−ａが外部機器とデータ送受信を行う際に使用するインタフェースである。ネットワークインタフェース２０４は、ネットワーク２を接続し、ネットワーク２を介して、機器１−ｂとデータを送受信する。バス２０５は、各モジュールを接続する内部バスである。画像データ生成部２０６は、外部からレンズを通してＣＣＤなどの受光素子にて色彩データにし、ＪＰＥＧなどの画像データを生成するモジュールを指す。他に、デジカメの構成要素として、外部記憶素子（Ｆｌａｓｈメモリなど）や、フラッシュなど多くの要素があるが、省略する。
【００４１】
図３は、機器１−ｂの構成を示す図である。ＣＰＵ３０１が機器１−ｂの全体の動作を制御する。ＲＡＭ３０２は一時記憶装置であり、ＲＯＭ３０３はプログラムなど、消去不可能なデータが組み込まれているＲｅａｄ　Ｏｎｌｙ　Ｍｅｍｏｒｙである。ネットワークインタフェース３０４は、機器１−ｂが外部機器とデータ送受信を行う際に使用するインタフェースである。ネットワークインタフェース３０４は、ネットワーク２を接続し、ネットワーク２を介して、機器１−ａとデータを送受信する。機器１−ｂはプリンタであるので、プリント用データや、制御コマンドなどを主に受信する際に使用される。バス３０５は、各モジュールを接続する内部バスである。プリント部３０６は、受信したプリント用データを紙などに印刷するモジュールである。
【００４２】
図２および図３の、ネットワークインタフェース２０４、３０４については、特に種類を問わないが、ネットワーク２に接続可能なものである必要がある。
【００４３】
機器１−ａには、ホスト名として「ｘｘｘｘｘ−ｄｉｇｉｃａｍｅ−ａ２０−ｄｐｐｒｏ−１２３４」がＲＯＭ２０３に、機器１−ｂには「ｘｘｘｘｘ−ｐｒｉｎｔｅｒ−ｓ３００−ｄｐｐｒｏ−５６７８」がＲＯＭ３０３に、あらかじめ設定されているとする。ホスト名は、メーカが製品出荷前に設定を行うことを想定している。また、ホスト名は６３バイト以下であることが望ましい。
【００４４】
ここで、ホスト名の構造について説明する。機器１−ａ、機器１−ｂとも、ホスト名は、「メーカ名−製品ジャンル−製品名−プロトコル名−シリアル番号」という順で構成されており、「−」（ハイフン）はセパレータ文字である。なお、この構造はあくまで例である。本実施の形態のホスト名の４番目の要素（ｄｐｐｒｏ）はプロトコル名としたが、例えば、画像フォーマットの種類やグループを示す文字列でもよいし、セキュリティの種類を示す文字列でもよい。他の例は、後の実施例で述べる。要は、ホスト名がいくつかの文字列より構成され、その区切りが判明できれば問題はない。ホスト名のデータは、ＲＯＭ２０３およびＲＯＭ３０３にそれぞれ記録されているものとする。
【００４５】
さて、機器１−ａ、機器１−ｂとあるが、機器１−ａを開始側として説明を行う。
【００４６】
機器１−ａは、図４で示すフローチャートに従い動作する。このフローチャートは、ＲＯＭ２０３に記憶されているプログラムの一部を示す。ＣＰＵ２０１は、このプログラムをＲＯＭ２０３から読出して、このプログラムに従って、各モジュールを制御する。機器１−ａは、この制御により、図４のフローチャートにより示される動作を行う。
【００４７】
機器１−ａは、何らかのスタート要因、例えば、機器発見ボタンを押される、ネットワーク２に接続されるなどのイベントが発生したときに、本形態の動作をスタート（Ｓ４０１）する。Ｓ４０２において、ＣＰＵ２０１はホスト名をＲＯＭ２０３から読み込み、要素を抽出する。本実施の形態では、ホスト名は「ｘｘｘｘｘ−ｄｉｇｉｃａｍｅ−ａ２０−ｄｐｐｒｏ−１２３４」であるので、「ｘｘｘｘｘ」「ｄｉｇｉｃａｍｅ」「ａ２０」「ｄｐｐｒｏ」「１２３４」の５つの要素が抽出される。抽出された要素は、ＲＡＭ２０２に一時格納される。
【００４８】
Ｓ４０３において、要素を組み合わせてＮＩグループアドレス用の文字列を生成する。要素の組み合わせとは、例えば「ｘｘｘｘｘ」と「ｄｐｐｒｏ」、「ｘｘｘｘｘ」と「ｄｉｇｉｃａｍｅ」と「ａ２０」と「ｄｐｐｒｏ」などの、任意個の要素の組み合わせを指す。本実施の形態では、図６に示すようなリストをＲＡＭ２０２内に生成するものとする。図６のリストは、例えば線形リスト構造で保持される。ここで、図６は、上から（参照順）「ｘｘｘｘｘｄｉｇｉｃａｍｅａ２０ｄｐｐｒｏ」「ｘｘｘｘｘｄｉｇｉｃａｍｅｄｐｐｒｏ」「ｘｘｘｘｘｄｐｐｒｏ」「ｘｘｘｘｘ」と４つの文字列があるが、最初の２つはあくまで説明用に例としてあげた文字列であり、実際の使用にあたっては「ｘｘｘｘｘｄｐｐｒｏ」から下の２つが生成されると有用である。
【００４９】
さて、Ｓ４０４において規定の要素の組み合わせを全て試行したかチェックする。ここで、規定の要素の組み合わせとは、図６のリストを指す。１度も試行していないので、ＮＯとなりＳ４０５に遷移する。Ｓ４０５において、ＮＩグループアドレスを生成する。生成方法は基本的にドラフトと同様である。ただし、ホスト名ではなく、Ｓ４０３において生成した文字列のどれかに適用する。つまり、文字列を一方向ハッシュ関数に通し、１２８ビットのデータを得る。この１２８ビットの最初の３２ビットに、「ＦＦ０２：０：０：０：０：２：：／９６」のプレフィックスを追加して、マルチキャストアドレスを生成し、これをＮＩグループアドレスとする。ここでは、図６のリストの最上位にある文字列から適用するとする。つまり、「ｘｘｘｘｘｄｉｇｉｃａｍｅａ２０ｄｐｐｒｏ」に適用する。
【００５０】
次に、Ｓ４０６においてＳｕｂｊｅｃｔ名をＮＩ　Ｑｕｅｒｙパケットに入れ、生成したＮＩグループアドレスを送信先として、ネットワークインタフェース２０４からネットワーク２にパケットを送信する。ここで、Ｓｕｂｊｅｃｔ名は、ホスト名を適用するものとする。また、本実施の形態ではＮＩ　Ｑｕｅｒｙパケット送信直前にＮＩグループアドレスを生成しているが、もちろん、Ｓ４０３において、ＮＩグループアドレス用の文字列が生成された直後に、各々のＮＩグループアドレスを生成しておいても問題はない。ただ、余分にＮＩグループアドレスを生成する時間と記憶領域が必要となる。
【００５１】
Ｓ４０７において、先に送信したＮＩ　Ｑｕｅｒｙパケットに対する返信があったかチェックする。返信がない場合とは、先のＮＩグループアドレスに参加する機器がいない場合か、いたとしても返信しなかった場合である。本実施の形態の場合、一定時間が経過し、その間返信がない場合、返信がなかったものと見なす。返信がなかった場合、Ｓ４０４に遷移し、あった場合、Ｓ４０８に遷移する。本実施の形態では、「ｘｘｘｘｘｄｉｇｉｃａｍｅａ２０ｄｐｐｒｏ」から生成したＮＩグループアドレスには返信がなかったとする。返信がなかったので、Ｓ４０４に遷移する。
【００５２】
Ｓ４０４において、「ｘｘｘｘｘｄｉｇｉｃａｍｅａ２０ｄｐｐｒｏ」の次の文字列があるので、ＮＯとなり、次の文字列「ｘｘｘｘｘｄｉｇｉｃａｍｅｄｐｐｒｏ」を適用する。Ｓ４０５、Ｓ４０６で先と同様に「ｘｘｘｘｘｄｉｇｉｃａｍｅｄｐｐｒｏ」からＮＩグループアドレスを生成し、送信する。本実施の形態ではＳ４０７において、また返信がないとする。再びＳ４０４に遷移し、次の文字列「ｘｘｘｘｘｄｐｐｒｏ」があるので、ＮＯとなり、Ｓ４０５、Ｓ４０６と先と同様に送信する。
【００５３】
Ｓ４０７において、今度は返信があったとする。返信があるのでＳ４０７においてＹＥＳとなり、Ｓ４０８に遷移する。Ｓ４０８において、ＮＩ　Ｒｅｐｌｙパケットが正しいかチェックする。ここで正しいとは、パケットフォーマットが規則にあっているか、また自身が送信したＮＩ　Ｑｕｅｒｙに対する返答であるか、といったことを指す。Ｓ４０８において、正しくなければＮＯとなり、Ｓ４０９に遷移し、適切なエラー処理を行ったのち、Ｓ４１２に遷移して終了となる。Ｓ４０８において、受信したＮＩ　Ｒｅｐｌｙパケットが正しかった場合、ＹＥＳとなり、Ｓ４１０に遷移し、正当時の処理を行い、さらにＳ４１１に遷移して任意のプロトコルを実行し（しなくともよい）、Ｓ４１２に遷移して終了となる。
【００５４】
次に機器１−ｂ、つまり受信側の機器１−ｂの動作について、図５を参照しながら説明する。このフローチャートは、ＲＯＭ３０３に記憶されているプログラムの一部を示す。ＣＰＵ３０１は、このプログラムをＲＯＭ３０３から読出して、このプログラムに従って、各モジュールを制御する。機器１−ｂは、この制御により、図５のフローチャートにより示される動作を行う。
【００５５】
機器１−ｂは、例えば電源を入れたりすることにより、Ｓ５０１のスタートとなる。Ｓ５０２において、ＣＰＵ３０１はホスト名をＲＯＭ３０３から読み込み、要素を抽出する。本実施の形態では、ホスト名は「ｘｘｘｘｘ−ｐｒｉｎｔｅｒ−ｓ３００−ｄｐｐｒｏ−５６７８」であるので、「ｘｘｘｘｘ」「ｐｒｉｎｔｅｒ」「ｓ３００」「ｄｐｐｒｏ」「５６７８」の５つの要素が抽出される。抽出された要素は、ＲＡＭ３０２に一時格納される。
【００５６】
Ｓ５０３において、要素を組み合わせてＮＩグループアドレス用の文字列を生成する。本実施の形態では、図７に示すようなリストをＲＡＭ３０２内に生成するものとする。図７のリストは、例えば線形リスト構造で保持される。ここで、図７は、上から（参照順）「ｘｘｘｘｘｐｒｉｎｔｅｒｓ３００ｄｐｐｒｏ」「ｘｘｘｘｘｐｒｉｎｔｅｒｄｐｐｒｏ」「ｘｘｘｘｘｄｐｐｒｏ」「ｘｘｘｘｘ」と４つの文字列があるが、最初の２つはあくまで説明用に例としてあげた文字列であり、実際の使用にあたっては「ｘｘｘｘｘｄｐｐｒｏ」から下の２つが生成されると有用である。
【００５７】
次に、Ｓ５０４において、ＮＩグループ用の文字列から、ＮＩグループアドレスを生成する。ＮＩグループアドレスの生成方法は、先に説明したＳ４０５の生成方法と同様であるが、文字列は図７のリストのものである。
【００５８】
さて、ＮＩ　Ｑｕｅｒｙパケットを受信（Ｓ５０５）したとする。Ｓ５０６において、ＮＩ　Ｑｕｅｒｙパケットが正しいかチェックする。ここでは、ＮＩ　Ｑｕｅｒｙパケットが規則にのっとったものであるかのチェックである。正しくない場合、ＮＯとなり、Ｓ５１３に遷移し、エラー処理を行って終了（Ｓ５１４）となる。正しい場合、ＹＥＳとなり、Ｓ５０７に遷移する。
【００５９】
Ｓ５０７において、受信したＮＩ　Ｑｕｅｒｙパケットの送信先アドレスとなっているＮＩグループアドレスと、Ｓ５０４において生成したＮＩグループアドレスが一致するか判定する。本実施の形態の場合、機器１−ａが「ｘｘｘｘｘｄｉｇｉｃａｍｅａ２０ｄｐｐｒｏ」、「ｘｘｘｘｘｄｉｇｉｃａｍｅｄｐｐｒｏ」から生成したＮＩグループアドレスを送信先としたＮＩ　ＱｕｅｒｙパケットはＮＯとなり、「ｘｘｘｘｘｄｐｐｒｏ」、「ｘｘｘｘｘ」からのはＹＥＳとなる。「ｘｘｘｘｘｄｉｇｉｃａｍｅａ２０ｄｐｐｒｏ」が最初に送信されたと本実施の形態では仮定している。
【００６０】
図７で示したリストの、「ｘｘｘｘｘｐｒｉｎｔｅｒｓ３００ｄｐｐｒｏ」から生成したＮＩグループアドレスとは一致しないので、ここではＮＯとなり、Ｓ５１２に遷移する。Ｓ５１２では、規定の要素の組み合わせを全て試行したか、判定する。試行していたら、Ｓ５１３に遷移してエラー処理を行い、Ｓ５１４において終了となる。試行していなかったら、Ｓ５０７に戻り、違う文字列から生成されたＮＩグループアドレスと比較する。そして、Ｓ５０７、Ｓ５１２を繰り替えして、Ｓ５０４において生成した複数のＮＩグループアドレスのどれかと一致するか判定する。
【００６１】
本実施の形態の場合、「ｘｘｘｘｘｄｉｇｉｃａｍｅａ２０ｄｐｐｒｏ」から生成された、受信したＮＩグループアドレスは、「ｘｘｘｘｘｐｒｉｎｔｅｒｄｐｐｒｏ」、「ｘｘｘｘｘｄｐｐｒｏ」、「ｘｘｘｘｘ」から生成したＮＩグループアドレスのどれとも一致しないので、Ｓ５１３、Ｓ５１４と遷移し、終了となる。
【００６２】
次に、機器１−ａが「ｘｘｘｘｘｄｉｇｉｃａｍｅｄｐｐｒｏ」から生成したＮＩグループアドレスを送信先アドレスとしたＮＩ　Ｑｕｅｒｙパケットを、機器１−ｂが受信した場合も同様に本実施の形態ではエラーとなる。
【００６３】
機器１−ａが「ｘｘｘｘｘｄｐｐｒｏ」から生成したＮＩグループアドレスを送信先アドレスとしたＮＩ　Ｑｕｅｒｙパケットを送信した場合は、次のように動作する。Ｓ５０７において、機器１−ｂが生成したＮＩグループアドレスと一致するので、ＹＥＳとなり、Ｓ５０８に遷移する。
【００６４】
Ｓ５０８において、受信したＮＩ　Ｑｕｅｒｙパケットの要求に応えるか決定する。これは、例えば、ＮＩ　Ｑｕｅｒｙパケットが（機器１−ｂの）グローバルユニキャストアドレスを返信時のＮＩ　Ｒｅｐｌｙパケットに含むように要求しているが、機器１−ｂのポリシー（設定）として、グローバルユニキャストアドレスを返信しないとしているときは、応えない。また、ＮＩ　Ｑｕｅｒｙパケットに含まれるＳｕｂｊｅｃｔ名をチェックし、それがある用件を満たしていた場合のみ、要求に応えるというポリシーもある。
【００６５】
応えない場合、ＮＩ　Ｒｅｐｌｙパケットを返信するが要求されたデータは含めない場合と、返信しない場合がある。Ｓ５０８では、その場合ＮＯとなり、Ｓ５１３においてポリシーに沿ったエラー処理を行ったあと、Ｓ５１４にて終了となる。
【００６６】
本実施の形態では、ＮＩ　Ｑｕｅｒｙパケットの要求にはホスト名が要求されており、機器１−ｂのポリシーとしても問題ないとする。そのとき、Ｓ５０８においてＹＥＳとなり、Ｓ５０９に遷移する。Ｓ５０９において、受信したＮＩ　Ｑｕｅｒｙの要求に沿ったＮＩ　Ｒｅｐｌｙ（すなわち、機器１−ｂのホスト名を含む）を生成し、ＮＩ　Ｑｕｅｒｙの送信元アドレスをＮＩ　Ｒｅｐｌｙの送信先アドレスとして返信する。ここでＮＩ　Ｒｅｐｌｙの送信元アドレスは、一般的にはリンクローカルアドレスとするが、他のアドレスでもかまわない。ただし、ポリシーやセキュリティに留意し、決める必要がある。そして、Ｓ５１０において、正当時の処理を行い、Ｓ５１１において任意のプロトコルを実行される準備をし（実行してもかまわない。任意のプロトコルの種類による）、Ｓ５１４にて終了となる。Ｓ５０９とＳ５１０の順番は、逆でもかまわない。Ｓ５１０の処理では、例えば、要求に応答したＮＩ　Ｑｕｅｒｙの送信元アドレスを、ＲＡＭ３０２に記憶する。
【００６７】
強調するが、通常の使用では、「ｘｘｘｘｘｄｐｐｒｏ」からＮＩグループアドレスを生成することを最初に行うことを想定している。これにより、機器１−ａは、「ｄｐｐｒｏ」というプロトコル名を仲立ちとして通信可能な相手を、１回のステップで発見することが可能となる。「発明が解決しようとする課題」であげた、Ｎ個の文字列（Ｓｕｂｊｅｃｔ名）より各々のＮＩグループアドレスを生成して各々問い合わせを行う方法であると、Ｎ回のステップが必要となり、Ｎ個のさらにリスト間のＡＮＤをとる必要がある。この点において、本実施の形態は、少ない計算機資源（Ｎ個のリストは不要、ＡＮＤをとる必要もない）で、迅速（たかだか１回の問い合わせで終了する）であるといえる。
【００６８】
以上、本発明の実施の形態における送信側と受信側の動作について説明した。
【００６９】
ここで、Ｓ４１０とＳ５１０において、適切な処理を行うことにより、Ｓ４１１、Ｓ５１１における任意のプロトコルにおいて様々な処理を行うことが可能となる。
【００７０】
次に、本発明の第１の実施の形態のさらなる応用例として、その処理について具体例を挙げて説明する。
【００７１】
さて、第１の実施の形態において説明したように、「ｘｘｘｘｘｄｐｐｒｏ」という文字列から生成したＮＩグループアドレスにより、機器１−ａと１−ｂ間で通信が成立した。その結果、機器１−ａはＮＩ　Ｑｕｅｒｙにより要求したデータ（例えば機器１−ｂのホスト名やリンクローカルアドレス）を得ることが可能となり、機器１−ｂは機器１−ａのＳｕｂｊｅｃｔ名とアドレス（ＮＩ　Ｑｕｅｒｙの送信元アドレス）を得られる。ここで、Ｓｕｂｊｅｃｔ名は、ホスト名「ｘｘｘｘｘ−ｄｉｇｉｃａｍｅ−ａ２０−ｄｐｐｒｏ−１２３４」である。
【００７２】
Ｓ４１０において、ＮＩ　Ｒｅｐｌｙパケットの送信元アドレス（多くの場合、リンクローカルアドレス）とホスト名をＲＡＭ２０２に記録し、Ｓ５１０においてＮＩ　Ｑｕｅｒｙパケットの送信元アドレスとＳｕｂｊｅｃｔ名（本実施例ではホスト名）をＲＡＭ３０２に記録するとする。
【００７３】
この場合、機器１−ａおよび機器１−ｂは「ｘｘｘｘｘｄｐｐｒｏ」という文字列から生成したＮＩグループアドレスによる機器のグループ、つまり「ｘｘｘｘｘ」というメーカであり「ｄｐｐｒｏ」というプロトコルをもつグループのホスト名とユニキャストアドレスを把握したことになる。
【００７４】
それにより、任意のプロトコルを開始できる。
【００７５】
以下、任意のプロトコルを開始、実行する一例として、機器１−ａ（デジタルカメラ）から機器１−ｂ（プリンタ）へのダイレクトプリントを実現する独自プロトコルを開始、実行する仕組みを説明する。この例は、図４のＳ４１１と図５のＳ５１１で示した部分を、具体的に示すために記すものである。ダイレクトプリントとは、通常、デジタルカメラ内の画像データを印刷する際には、パソコンなどに一時画像データを蓄積し、パソコンからプリンタへ印刷する手順を踏むのに際し、デジタルカメラとプリンタを直接通信可能とすることで、パソコンを介さずとも印刷を行うことを指す。ダイレクトプリントを実現している製品として、キヤノン社製ＩＸＹ　ＤＩＧＩＴＡＬ３００ａ，　２００ａ（デジタルカメラ）とＢＪ８９５ＰＤ、ＢＪ５３５ＰＤ（プリンタ）などの組み合わせが挙げられる。
【００７６】
さて、機器１−ａにおいて、図２の画像データ生成部２０６により撮影、生成された画像データがＲＡＭ２０２に蓄積されているとする。機器１−ａにおいて、ダイレクトプリントボタンを押す。それをきっかけとし、図８に示す独自プロトコルが開始される。すなわち、機器１−ａでは、図４のＳ４１０までは、処理が終了しており、ダイレクトプリントボタンが押されると、Ｓ４１１の任意のプロトコルを実行する。図４のＳ４１１における任意のプロトコルが、図８で説明する独自プロトコルである。
【００７７】
機器１−ａのＣＰＵ２０１は、ＲＯＭ２０３内に仕込まれた独自プロトコル用のプログラムをロードし、独自プロトコルを開始する（Ｓ８０１）。先の仕組みにより、機器１−ａは機器１−ｂのホスト名およびリンクローカルアドレスを取得している。機器１−ａは、発見した機器のリストから機器１−ｂを選択する。第１の形態では、このリストは、図４のＳ４１０で表示されている。本実施例の場合、発見した機器は機器１−ｂのみであるので、自動的に機器１−ｂが選択される。ここで、複数の機器が発見されていた場合、ユーザにどの機器でダイレクトプリントを行うか選択させてもよい。また、選択させずに各機器に対し、独自プロトコルを試行してもよい。
【００７８】
開始したら、機器１−ａのＣＰＵ２０１は、ＲＡＭ２０２に記録してある機器１−ｂのリンクローカルアドレスを送信先、自身のリンクローカルアドレスを送信元として、Ｓ８０２のように、機器１−ｂとのコネクションを確立するための命令である文字列ｏｐｅｎ　ｄｐｐｒｏを、ネットワークインタフェース２０４を通して送信する。
【００７９】
機器１−ｂは、ネットワークインタフェース３０４を通してＳ８０２で示す文字列ｏｐｅｎ　ｄｐｐｒｏを含んだパケットを受信し、ＲＡＭ３０２に記録する。機器１−ｂのＣＰＵ３０１は、ＲＯＭ３０３内に仕込まれた独自プロトコル用のプログラムを起動し、受信したパケットの送信元アドレスを、図５のＳ５１０でＲＡＭ３０２に保存した送信元アドレスと比較する。一致すれば独自プロトコルを解する機器であると判定し、コネクションの開始を許可し（Ｓ８０３）、Ｓ８０４のように、文字列ｏｋを機器１−ａに返す。一致しない場合、パケットを破棄するか、もしくはエラーを示す文字列を返信するなど、適切な処理を行う。なお、機器１−ｂは、図５のＳ５１０までの処理を実行しており、図８のＳ８０２の文字列ｏｐｅｎ　ｄｐｐｒｏを受信すると、図５のＳ５１１における任意のプロトコルを実行する。図５のＳ５１１における任意のプロトコルは、図８で説明する独自プロトコルである。ここで、独自プロトコル用のプログラムは、機器１−ｂが起動したときに起動しておいてもかまわない。
【００８０】
機器１−ａは、機器１−ｂからＳ８０４で示す文字列（ｏｋ）を受信し、コネクション確立を確認する。その後、より詳細な機器１−ｂの状態を把握するために、Ｓ８０６のように、状態情報取得要求を示す文字列ｇｅｔ　ｓｔａｔｕｓを送信する（Ｓ８０５）。
【００８１】
機器１−ｂは、ネットワークインタフェース３０４を通じてＳ８０６に示す文字列ｇｅｔ　ｓｔａｔｕｓを受信し、ＲＡＭ３０２に記録する。機器１−ｂのＣＰＵ３０１は、受信した文字列を独自プログラムに渡し、独自プログラム内のコマンドと比較し、状態情報取得要求を示す文字列と判定し、Ｓ８０８のように、自身の状態情報を示す文字列を返信する（Ｓ８０７）。ここで、Ｓ８０８に示した文字列ａ３００，　ａ４，　ｃｏｌｏｒ，　ｉｄｌｅは、左端より順に、機器１−ｂの製品名、対応する紙のサイズ、カラーか白黒か、現在の状態（ｉｄｌｅは印刷を行っていないことを示す）を示している。
【００８２】
機器１−ａは、Ｓ８０８に示した文字列を受信する。そして、文字列を独自プロトコル内の解析プログラムにかけ、機器１−ｂの状態情報をＲＡＭ２０２に記録する。機器間でやりとりする文字列はあくまで例である。機器１−ａは、ＲＡＭ２０２内に保管した機器１−ｂの状態情報を独自プログラムに渡し、問題がなければプリント要求の文字列を生成し、Ｓ８１０のように、プリント要求の文字列ｐｒｉｎｔと画像データを送信する（Ｓ８０９）。
【００８３】
機器１−ｂは、Ｓ８１０で示した文字列と画像データを、ネットワークインタフェース３０４を通して受信し、ＲＡＭ３０２内に一時記録する。Ｓ８１０で示した文字列を独自プログラムに渡し、コマンドと比較してプリント要求コマンドであることを判定すると（Ｓ８１１）、Ｓ８１２のように、プリント要求を受け付けたことを示す文字列（ｏｋ）を機器１−ａに返信する。その後、ＲＡＭ３０２から画像データを読み込み、プリント部３０６にデータを送信し、プリント部３０６は画像データから印刷を行う。印刷が終了したら（Ｓ８１３）、ＣＰＵ３０１は、Ｓ８１４のように、印刷終了を示す文字列ｄｏｎｅを機器１−ａに返信する。
【００８４】
機器１−ａは、Ｓ８１４の印刷終了の文字列ｄｏｎｅを受信し、独自プロトコルを終了することを決定し（Ｓ８１５）、Ｓ８１６のように、独自プロトコル終了を要求する文字列ｃｌｏｓｅ　ｄｐｐｒｏを送信する。機器１−ｂは、Ｓ８１６の文字列ｃｌｏｓｅ　ｄｐｐｒｏを解し、Ｓ８１８のように、独自プロトコル終了を受け付けたことを示す文字列（ｏｋ）を返信し、終了する（Ｓ８１７）。以上により、図４のＳ４１１及び図５のＳ５１１における任意のプロトコルである独自プロトコルは、終了する。以上の仕組みにより、ダイレクトプリントを実現した。
【００８５】
以上、ダイレクトプリントという独自プロトコルを例とし、任意のプロトコルを開始、実行できることを示した。なお、図８を用いて説明した独自プロトコルは、あくまで一例である。
【００８６】
以上、ホスト名から要素を抽出し、その要素の組み合わせより生成したＮＩグループアドレスにより、任意のプロトコルで通信できる機器を絞り、任意のプロトコルを素早く開始することを可能とする仕組みについて、説明した。
【００８７】
（第２の実施の形態）
本実施の形態では、機器に予め複数のＳｕｂｊｅｃｔ名要素を設定しておき、複数のＳｕｂｊｅｃｔ名要素を組み合わせてＳｕｂｊｅｃｔ名とすることにより、ＤＮＳサーバが存在しない環境において、計算資源が少なく、通信相手のアドレスを知らない機器が、効率良く通信相手を発見し、通信できるようにする仕組みについて説明する。
【００８８】
本実施の形態が第１の実施の形態と異なるのは、図４のＳ４０２、Ｓ４０３および図５のＳ５０２、Ｓ５０３にあたる部分のみであり、それ以外の部分の動作は第１の実施の形態と変わらない。そこで、その部分のみを変更したフローチャート図を示し、変更点のみについて説明する。
【００８９】
図９が、図４のＳ４０２、Ｓ４０３に相当する部分を変更した図である。また、ネットワーク構成は図１、機器構成は図２、図３と共通である。つまり、ネットワーク構成、機器構成とも、第１の実施の形態と基本的に変更ないものとする。
【００９０】
図９のＳ４０１において、スタート後、Ｓ９０１に遷移する。Ｓｕｂｊｅｃｔ名要素とは、例えば、機器１−ａでは「ｘｘｘｘｘ」「ｄｉｇｉｃａｍｅ」「ａ２０」「ｄｐｐｒｏ」「１２３４」といった文字列である。ただし、これは第１の実施の形態のようにホスト名から抽出したものではなく、ホスト名とは独立にＲＯＭ２０３にあらかじめ設定された文字列である点が第１の実施の形態と異なる。
【００９１】
９０１において、ＣＰＵ２０１はＲＯＭ２０３からＳｕｂｊｅｃｔ名要素を読み出し、ＲＡＭ２０２に一時記録する。そしてＳ９０２において、あらかじめ定められたアルゴリズムに従い、Ｓｕｂｊｅｃｔ名要素を組み合わせてＮＩグループアドレス用の文字列を生成する。ここで、Ｓ９０２において生成される文字列は、例えば図６で示すようなものである。Ｓ９０２以降の処理は、図４のＳ４０４以降と同じ動作でよい。
【００９２】
一方、機器１−ｂでは、図１０に示す部分が図５に示した動作と異なる。機器１−ｂは、図１０のＳ５０１においてスタート後、Ｓ１００１に遷移する。機器１−ｂにおけるＳｕｂｊｅｃｔ名要素は、本実施の形態の場合、「ｘｘｘｘｘ」「ｐｒｉｎｔｅｒ」「ｓ３００」「ｄｐｐｒｏ」「５６７８」といった文字列である。この文字列は、先と同様、第１の実施の形態のようにホスト名から抽出したものではなく、ホスト名とは独立にＲＯＭ３０３にあらかじめ設定された文字列である点が第１の実施の形態と異なる。
【００９３】
Ｓ１００１において、ＣＰＵ３０１はＲＯＭ３０３からＳｕｂｊｅｃｔ名要素を読み出し、ＲＡＭ３０２に一時記録する。そしてＳ１００２において、あらかじめ定められたアルゴリズムに従い、Ｓｕｂｊｅｃｔ名要素を組み合わせてＮＩグループアドレス用の文字列を生成する。ここで、Ｓ１００２において生成される文字列は、例えば図７で示すようなものである。Ｓ１００２以降の処理は、図５のＳ５０４以降と同じ動作でよい。
【００９４】
このように動作したあと、第１の実施の形態で示したように任意のプロトコルを素早く開始することが可能となる。
【００９５】
また、第１の実施の形態では詳細に説明していなかったが、ＮＩ　Ｑｕｅｒｙに含めるＳｕｂｊｅｃｔ名を、機器のチェックなどに利用する場合には、第１の実施の形態のようにＳｕｂｊｅｃｔ名としてホスト名を用いるのではなく、ＮＩグループアドレス用の文字列を用いる方が好ましい場合もある。これは、各機器でＳｕｂｊｅｃｔ名を用いてどのような処理を行うか、に依存する問題であり、ここで特に規定はしない。ただし、本発明はＳｕｂｊｅｃｔ名としてホスト名（もしくはＦＱＤＮ）、ＮＩグループアドレス用の文字列のどちらでも適用可能である。
【００９６】
（第３の実施の形態）
第１の実施の形態において、ホスト名はあらかじめ機器に設定されているという仮定を置いたが、ホスト名となる文字列はその他の個所で記録されていてもかまわない。
【００９７】
例えば、機器がアプリケーションソフトウェアを別途ネットワーク経由でダウンロードし、そのアプリケーションソフト内にホスト名となる文字列がある場合、それを適用してもよい。もちろん、ダウンロードしたアプリケーションソフトウェアでなく、ＣＤ、メモリカード、フロッピー（Ｒ）ディスクなどの媒体を用いて機器にインストールしたアプリケーションソフトウェアであってもよい。さらに、ホスト名となる文字列を他の機器よりネットワーク経由で受信してもよい。つまり、なんらかの手段を用いてホスト名を取得できるのならば、本発明は適用可能である。
【００９８】
（第４の実施の形態）
第２の実施の形態において、Ｓｕｂｊｅｃｔ名要素となる文字列は、あらかじめ機器に設定されているという仮定を置いたが、Ｓｕｂｊｅｃｔ名要素となる文字列は、機器の他の部分、もしくは機器外に記録されていてもかまわない。例えば、機器がアプリケーションソフトウェアを別途ネットワーク経由でダウンロードし、そのアプリケーションソフト内にＳｕｂｊｅｃｔ名要素となる文字列がある場合、それを適用してもよい。もちろん、ダウンロードしたアプリケーションソフトウェアでなく、ＣＤ、メモリカード、フロッピー（Ｒ）ディスクなどの媒体を用いて機器にインストールしたアプリケーションソフトウェアであってもよい。さらに、Ｓｕｂｊｅｃｔ名要素となる文字列を他の機器よりネットワーク経由で受信してもよい。つまり、なんらかの手段を用いてＳｕｂｊｅｃｔ名要素となる文字列を取得できるのならば、本発明は適用可能である。
【００９９】
（第５の実施の形態）
第１の実施の形態において、ホスト名の構造を、「メーカ名−製品ジャンル−製品名−プロトコル名−シリアル番号」という順で構成されており、「−」（ハイフン）はセパレータ（区切り）文字である、とした。しかし、これはあくまで一例である。
【０１００】
以下、他のホスト名の構造について例を挙げる。
【０１０１】
ひとつは、文字列のセパレート方法である。まず、第１の実施の形態において、「−」（ハイフン）をセパレータ文字としたが、他の文字であってもよい。ただし、ホスト名をＤＮＳサーバに登録したりする必要がある場合は、ＤＮＳ関連のＲＦＣ（Ｋ．　Ｈａｒｒｅｎｓｔｉｅｎ、Ｍ．　Ｓｔａｈｌ、Ｅ．　Ｆｅｉｎｌｅｒ、「ＤＯＤ　ＩＮＴＥＲＮＥＴ　ＨＯＳＴ　ＴＡＢＬＥ　ＳＰＥＣＩＦＩＣＡＴＩＯＮ」、ＲＦＣ９５２、Ｏｃｔｏｂｅｒ　１９８５とＲ．　Ｂｒａｄｅｎ、「Ｒｅｑｕｉｒｅｍｅｎｔｓ　ｆｏｒ　Ｉｎｔｅｒｎｅｔ　Ｈｏｓｔｓ　−−　Ａｐｐｌｉｃａｔｉｏｎ　ａｎｄ　Ｓｕｐｐｏｒｔ」、ＲＦＣ１１２３、Ｏｃｔｏｂｅｒ　１９８９）で規定された文字のみを使用するべきである。
【０１０２】
他に、セパレータ文字を使用するのではなく、あらかじめ文字数を決めておく方法がある。例えば、メーカ名は５文字、製品ジャンルは５文字、製品名は１０文字、プロトコル名は１０文字、シリアル番号は２０文字、などである。このようにして規定おけば、セパレート文字を使用しなくても、ホスト名を要素に分解することは可能である。
【０１０３】
次に、ホスト名の要素の並び順がある。第１の実施の形態では、メーカ名、製品ジャンル、製品名、プロトコル名、シリアル番号という順としたが、もちろんこの順でなくとも、規定の順序を定めるのならば問題ない。他に、例えばメーカ名なら文字列の最初に「ｍｋ」を、製品ジャンルなら「ｐｇ」を、と固有の文字列をつけておく、と規定し、他の要素の文字列の最初と一致しないように規定しておくのならば、要素の順を定めておく必要はない。
【０１０４】
次に、ホスト名の要素として何を含むように規定しておくか、という点がある。第１の実施の形態では、「メーカ名」「製品ジャンル」「製品名」「プロトコル名」「シリアル番号」を要素として含めるようホスト名をつけた例を示した。しかし、もしシリアル番号のみから製品、ひいてはその製品が備える機能を把握できるのであり、他の製品のホスト名と一致しないのであれば、「シリアル番号」のみをホスト名とすることももちろん可能である。また、プロトコルで一致する製品群よりなるグループを対象としたいと、あらかじめ決定しておくのならば、「メーカ名」「プロトコル名」「シリアル番号」からなるホスト名としておいてもよい。ここで、ホスト名となる関係上、「シリアル番号」を含めることが好ましい。
【０１０５】
また、プロトコル名は第１の実施の形態では「ｄｐｐｒｏ」１つであったが、例えば「ｄｐｐｒｏ−ｓｓｐｒｏ」のように、「−」など要素に用いたのとは異なる区切り文字を用い、複数のプロトコル名を含むようにすることも可能である。逆に、プロトコル名の要素が「−」のみの場合はプロトコルをまったくサポートしていないことを示す、と規定してもよい。
【０１０６】
また、「メーカ名」「製品ジャンル」「製品名」「プロトコル名」「シリアル番号」以外の要素を追加してもよい。例えば、「画像フォーマット」、「ファイルの拡張子名」、「セキュリティ機能」、「機器のバージョン」、「他の機器スペック」など、およそ機器に関することを要素として用いることが可能である。
【０１０７】
これにより、例えば「メーカ名」「プロトコル名」「画像フォーマット」「シリアル番号」という要素よりなるホスト名であれば、同一メーカの機器間で、共通の画像フォーマット、プロトコルでデータの送受信を行える機器グループを構成することが可能となる。
【０１０８】
また、「メーカ名」「プロトコル名」「セキュリティ機能」「シリアル番号」であれば、相手となる機器がどのセキュリティ機能、例えばサポートしている暗号の種類、鍵交換プロトコルの種類やポリシー、証明書の種類などを把握することができる。よって、例えばある機器間で（例えばＩＰＳｅｃを用いて）セキュアな通信路を確保したあと、任意のプロトコルを実行して、機密性の高いデータをやりとりする、などといったことが可能となる。
【０１０９】
他に、図６、７ではメーカ名を含むようにＮＩグループアドレス用の文字列を生成したが、メーカ名によらないグループを想定するのであればメーカ名を含ませる必要はない。これは、例えば数社のメーカで共通に使用できるプロトコルやセキュリティ、標準となっているほかの仕様により機器のグループを規定したい場合、有効である。
【０１１０】
また、第１の実施の形態では通信相手となる機器のリンクローカルアドレスを取得したあと、独自プロトコルを実行する例を説明したが、独自プロトコルでなくともかまわない。たとえばＨＴＴＰやＦＴＰなど、ＲＦＣで規定されている標準プロトコルであってもよい。つまり、任意のプロトコルを開始、実行可能である。
【０１１１】
（第６の実施の形態）
「第５の実施の形態」では、ホスト名を利用する場合について述べたが、第２の実施の形態や第４の実施の形態で示したような、ホスト名とは別の文字列を用意する場合にも、同様にあてはまる。
【０１１２】
さらに、「第５の実施の形態」ではホスト名を用いる関係上、「第１の実施の形態」と同様に、例えばホスト名は６３文字以下が望ましい、といった制約が存在したが、第２の実施の形態で示したように、ホスト名と独立のＮＩグループアドレス用の文字列を用いるのであれば、ホスト名にまつわる制約はない。
【０１１３】
ホスト名の制約を受けない例として、例えば入力機器、出力機器を示す要素名を用いる場合を示す。
【０１１４】
例えば、「ｘｘｘｘｘ」「ｉｍａｇｅｉｎ」「ｉｍａｇｅｏｕｔ」と３つの要素文字列を記録している２つの機器（機器１−ａ、１−ｂ）があり、一方（機器１−ａ）はデジタルカメラ、もう一方（機器１−ｂ）はプリンタであるとする。「ｉｍａｇｅｉｎ」は入力機器を、「ｉｍａｇｅｏｕｔ」は出力機器を示すとする。
【０１１５】
ここで、デジタルカメラ（機器１−ａ）は「ｘｘｘｘｘｉｍａｇｅｉｎｉｍａｇｅｏｕｔ」という文字列よりＮＩグループアドレスを生成し、ＮＩ　Ｑｕｅｒｙに入れる文字列として「ｘｘｘｘｘｉｍａｇｅｉｎ」を選択するとする。プリンタ（機器１−ｂ）は、「ｘｘｘｘｘｉｍａｇｅｉｎｉｍａｇｅｏｕｔ」という文字列よりＮＩグループアドレスを生成し、ＮＩ　Ｒｅｐｌｙに入れる文字列として「ｘｘｘｘｘｉｍａｇｅｏｕｔ」を選択するとする。
【０１１６】
その形態では、２つの機器（機器１−ａ、１−ｂ）は同一のＮＩグループアドレスなので発見可能であり、またプリンタ（機器１−ｂ）はＮＩ　Ｑｕｅｒｙ中の文字列「ｘｘｘｘｘｉｍａｇｅｉｎ」より通信相手（機器１−ａ）が入力機器であると判断でき、デジタルカメラ（機器１−ａ）はＮＩ　Ｒｅｐｌｙ中の文字列「ｘｘｘｘｘｉｍａｇｅｏｕｔ」より通信相手（機器１−ｂ）が出力機器であると判断できる。その場合、さらに迅速に任意のプロトコルを開始し、ダイレクトプリントなどを行うことが可能となる。
【０１１７】
（他の実施の形態）
前記実施の形態において、何らかのスタート要因、例えば、機器発見ボタンを押される、ネットワーク２に接続される、電源が入るなどのイベントが発生したときに開始する、と説明していたが、機器の電源が入っており、ネットワーク２に接続して他の機器と通信可能な状態であり、かつ任意のプロトコル実行前であれば、いつ開始するようにしてもよい。
【０１１８】
前記実施の形態において、ＮＩ　Ｑｕｅｒｙパケットを送信する機器と、ＮＩ　Ｑｕｅｒｙパケットを受信する機器では、図４、図５で示したような別々の動作フローチャートを実行していたが、図４、図５で示したようなＮＩ　Ｑｕｅｒｙパケットを送信および受信する機能を単一の機器に実装しても、よいし、また、可能である。その場合、ＮＩグループアドレス用の文字列を生成、管理する部分、およびＮＩグループアドレス用の文字列からＮＩグループアドレスを生成する部分の共通化を図ることができる。
【０１１９】
上記実施の形態においては、機器またはＣＰＵを用いて、前述した機能を実現するソウトウェアプログラムを動作させる実施形態であったが、その機能の全部または一部を実現する論理回路により達成される。
【０１２０】
また、前述した実施形態の機能を実現するソフトウエアのプログラムコードを記録した記録媒体を、装置に供給し、その装置のコンピュータ（またはＣＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成される。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【０１２１】
プログラムコードを供給するための記録媒体としては、ＲＯＭ以外にも、例えば、フロッピー（Ｒ）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカードなどを用いることができる。
【０１２２】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１２３】
更に、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１２４】
【発明の効果】
以上説明したように、本発明によれば、効率良く通信相手を発見し通信することが可能となる。更に、多くの計算機資源（記録資源、計算資源）を必要としないと言う効果も得られる。
【図面の簡単な説明】
【図１】第１の実施の形態を説明するためのネットワークを示す図である。
【図２】第１の実施の形態で送信側を行うデジタルカメラの構成を示す図である。
【図３】第１の実施の形態で受信側を行うのプリンタの構成を示す図である。
【図４】第１の実施の形態の送信側の動作を示すフローチャート図である。
【図５】第１の実施の形態の受信側の動作を示すフローチャート図である。
【図６】送信側機器で用意される、ＮＩグループアドレス用文字列のリストの一例である。
【図７】受信側機器で用意される、ＮＩグループアドレス用文字列のリストの一例である。
【図８】独自プロトコルの送信側機器、受信側機器間の通信の様子を示す図である。
【図９】ＮＩグループアドレス用の文字列を用意する、送信側の動作を示すフローチャートの一部の図である。
【図１０】ＮＩグループアドレス用の文字列を用意する、受信側の動作を示すフローチャートの一部の図である。
【図１１】ＦＱＤＮ、ホスト名、ドメイン名を説明するための図である。
【図１２】１つの要素から作成された１つのＮＩグループアドレスに参加している機器群の範囲を示す図である。
【図１３】複数の要素から、別個に作成された、複数のＮＩグループアドレスに参加している機器群の範囲を示す図である。
【図１４】複数の要素から、合成して作成された、１つのＮＩグループアドレスに参加している機器群の範囲を示す図である。
【符号の説明】
１−ａ、１−ｂ　機器
２　ネットワーク（リンクローカル）
【図１】
2004088428.tif 000003
【図２】
2004088428.tif 000004
【図３】
2004088428.tif 000005
【図４】
2004088428.tif 000006
【図５】
2004088428.tif 000007
【図６】
2004088428.tif 000008
【図７】
2004088428.tif 000009
【図８】
2004088428.tif 000010
【図９】
2004088428.tif 000011
【図１０】
2004088428.tif 000012
【図１１】
2004088428.tif 000013
【図１２】
2004088428.tif 000014
【図１３】
2004088428.tif 000015
【図１４】
2004088428.tif 000016