[go: up one dir, main page]

JP2004088428A - Communication device, program, recording medium, and device discovery method - Google Patents

Communication device, program, recording medium, and device discovery method Download PDF

Info

Publication number
JP2004088428A
JP2004088428A JP2002246929A JP2002246929A JP2004088428A JP 2004088428 A JP2004088428 A JP 2004088428A JP 2002246929 A JP2002246929 A JP 2002246929A JP 2002246929 A JP2002246929 A JP 2002246929A JP 2004088428 A JP2004088428 A JP 2004088428A
Authority
JP
Japan
Prior art keywords
communication device
device discovery
packet
character strings
discovery communication
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2002246929A
Other languages
Japanese (ja)
Inventor
Haruyuki Kitawaki
北脇 晴之
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2002246929A priority Critical patent/JP2004088428A/en
Publication of JP2004088428A publication Critical patent/JP2004088428A/en
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Abstract

【課題】DNSサーバが存在しない環境において、通信相手のアドレスを知らない機器が、効率良く通信相手を発見し、通信できるようにする。
【解決手段】機器1−aは、複数の要素を組み合わせて第1の文字列を生成し、第1の文字列より第1のグループアドレスを生成する。機器1−aは、その第1のグループアドレスを送信先アドレスとして、NI Queryパケットを送信する。機器1−bは、複数の要素を組み合わせて第2の文字列を生成し、第2の文字列より第2のグループアドレスを生成する。機器1−bは、受信したNI Queryパケットの送信先アドレスが第2のグループアドレスと一致したら、機器1−bの情報を含んだNI Replyパケットを機器1−bに返信する。機器1−aは、NI Replyパケットを受信し、NI Replyパケット内の情報を元に機器1−bと通信する。
【選択図】   図1
In an environment where a DNS server does not exist, a device that does not know the address of a communication partner can efficiently discover the communication partner and perform communication.
A device 1-a generates a first character string by combining a plurality of elements, and generates a first group address from the first character string. The device 1-a transmits an NI Query packet using the first group address as a transmission destination address. The device 1-b generates a second character string by combining a plurality of elements, and generates a second group address from the second character string. When the destination address of the received NI Query packet matches the second group address, the device 1-b returns an NI Reply packet including information on the device 1-b to the device 1-b. The device 1-a receives the NI Reply packet, and communicates with the device 1-b based on information in the NI Reply packet.
[Selection diagram] Fig. 1

Description

【0001】
【発明の属する技術分野】
本発明は、機器発見通信装置、非機器発見通信装置、プログラム、記録媒体、及び、発見方法に関する。
【0002】
【従来の技術】
インターネットにおいて、名前とIPアドレスの対応をとることは普通に行われている。この対応をとることを名前解決という。名前とは、例えば「host.xxxxx.co.jp」や「host」といった、人間が読みやすくした文字列であり、多くの場合、あるパソコン1台や機器1台といった機器毎に人間がつけるものである。IPアドレスは例えばInternet Protocol Version4(以下IPv4と記す)であるならば192.10.0.1といった表記がなされ、Internet Protocol Version 6(以下IPv6と記す)であるならば2001:0340:1000::1といった表記がなされる。
【0003】
名前解決の最も原始的な方法は、各ホストがローカルファイルとして名前解決用のファイルを管理する方法である。LinuxなどのUnix(R)系OSでは「/etc/hosts」にあり、左側にIPアドレス、右側にホスト名を列挙して管理している。ここで、例えば「host」と「192.10.0.1」の対応がなされている場合、「host」で問い合わせを行うと「192.10.0.1」が、「192.10.0.1」で問い合わせを行うと「host」を返すことが名前解決の例である。名前解決を行うことにより、通信相手の指定にIPアドレスではなく名前を用いることが可能となり、人間にとって通信を使用しやすくしている。
【0004】
ローカルファイルにより名前解決を行う方法はホスト数が十分少ない場合は有効であるが、ホスト数が多くなると非効率である。ローカルファイルはホスト毎に存在するので、名前解決用ファイルのメンテナンスを行う場合、全てのホストの名前解決用ファイルを直接編集しなければならない。
【0005】
そのため考案されたのがDomain Name System(以下DNSと記す)である。DNSは名前解決用のファイルをDNSサーバ(別にネームサーバとも言う)で管理し、各ホストはDNSサーバに問い合わせ、名前やIPアドレスを取得する。DNSを用いることで、全ホストにローカルに存在する名前解決用ファイルを管理する必要がなくなり、DNSサーバの名前解決用ファイルのみを管理すれば名前解決が行える。DNSサーバでは、多数のホストからの要求を処理するので、多数のDNSサーバが階層構造をもって運用されている。
【0006】
DNSでは、A. Marine、G. Malkin、「FYI on Questions and Answers to Commonly asked ”New Internet User” Questions」、RFC1594、March 1994の5.2節で説明されているFully Qualified Domain Name(以下FQDNと記す)も用いられる。FQDNは世界で一意となるように設定するべき名前である。図11に例示するように、FQDNは「host」というホスト名と、「xxxxx.co.jp」で示されるドメイン名というDNS上の場所を示す名前を、ピリオドで繋げた名前となっている。FQDNをホスト名ということもあるが、ここでは図11に示すルールを取る。
【0007】
DNSの詳細な仕組みについては、P. Mockapetris、「DOMAIN NAMES − IMPLEMENTATION AND SPECIFICATION」、RFC1035、November 1987などのRFCや、「DNS &BIND」(Paul Albitz/Cricket Liu共著、浅羽登志也/上水流由香 監訳、アスキー出版局、ISBN4−7561−0314−6)などの書籍他、詳しい文献が多数あるので、詳細な説明は省略する。
【0008】
DNSは世界規模で名前解決を行う仕組みとして大変有用である。しかし、ローカルエリア内の数台のホストについて名前解決を行う場合といった、少数の機器に対して、しかも世界規模で名前解決を行う必要がない場合でもDNSサーバを運用するとなると、管理負荷が高いと言わざるを得ない。また、DNSサーバが停止した場合、名前解決が行えなくなり、ローカルエリア内であっても通信相手を名前で指定する通信が不可能となる。その場合、先に示したローカルファイルによって名前解決を行う方法もあるが、高々数台であっても、名前とIPアドレスの対応を、矛盾なく維持、管理するのは難しい。
【0009】
そこで、IPv6において、ホスト同士で直接メッセージをやりとりすることにより名前解決を行う仕組みがインターネットドラフト(Matt Crawford、「IPv6 Node Information Queries」、draft−ietf−ipngwg−icmp−name−lookups−09.txt、May 17, 2002。以下ドラフトと記す)で提案されている。
【0010】
ドラフトでは以下のようにして名前解決を行うことが説明されている。
【0011】
ICMPv6パケットを用いてホスト間で直接メッセージのやり取りを行う。問い合わせ元から問い合わせ先への、問い合わせ用のICMPv6パケットを「Node Information Query」(以下NI Queryと記す)、問い合わせ先から問い合わせ元への返答用のICMPv6パケットを「Node Information Reply」(以下NI Replyと記す)と定義している。
【0012】
問い合わせ元は、NI Queryを問い合わせ先に送信する。NI Queryには、問い合わせ先のどの情報が欲しいかといった要求が含まれている。問い合わせ先はNIQueryを受信し、チェックを行って返信を行うと決定した場合、NI Queryに含まれる要求に沿うデータをNI Replyに含め、NI Replyを問い合わせ元に送信する。問い合わせ元は、NI Replyを受信し、NI Replyをチェックし、要求に沿うデータが含まれていればそれを取り出す。
【0013】
問い合わせ方法にはSubjectアドレスを用いる方法と、Subject名を用いる方法の2種類が挙げられている。
【0014】
最初にSubjectアドレスを用いる方法について説明する。問い合わせ元がNI QueryにSubjectアドレスと称されるIPv6アドレスを含め、問い合わせ先にNI Queryを送信する。問い合わせ先はNI Queryを受信後、NI Query内のSubjectアドレスをチェックし、問い合わせ先が返答する必要があるSubjectアドレスであるならば、NI Queryに記された要求に従い、FQDN(ホスト名の場合もある)もしくは問い合わせ先のユニキャストアドレスを返信する。Subjectアドレスは大抵問い合わせ先のユニキャストアドレスであり、NI Queryの送信先アドレスも問い合わせ先のユニキャストアドレスである。
【0015】
次に、Subject名を用いる方法について説明する。Subject名を用いる方法では、問い合わせ元がNI QueryにSubject名となる文字列を含め、問い合わせ先にNIQueryを送信する。その際、問い合わせ元が問い合わせ先のユニキャストアドレスを所持せず、Subject名がFQDNかまたはホスト名の場合、以下のようにして作成したNode Informationグループアドレス(以下NIグループアドレスと記す)という名前のリンクローカルスコープマルチキャストアドレスを送信先アドレスとする。なお、この例については、図12を参照して説明する。その説明の前に、NIグループアドレスの作成方法について、先に説明する。
【0016】
すなわち、ホスト名を一方向ハッシュ関数(ドラフトではMD5(R. Rivest、「The MD5 Message−Digest Algorithm」、RFC1321、April 1992))に通し、128ビットのデータを得る。一方向ハッシュ関数とは、関数hとその定義域のある値xが与えられて、h(x)=h(y)となるようなyを求めることが難しいような関数のことである。さらに、衝突困難ハッシュ関数というのがあり、この関数は、関数hが与えられていて、h(x)=h(y)となるような一対の値(x、y)を求めることが難しいような関数である。両者をまとめて一方向ハッシュ関数と呼ぶことが多々あり、ここでもその慣習に習う。つまり、一方向ハッシュ関数とは、本関数を用いて生成したデータ列から元データを算出することが難しく、また異なる元データAとBから本関数を用いて生成したデータ列が一致することが稀な関数のことである。
【0017】
一方向ハッシュ関数については、例えば「現代暗号」(岡本龍明、山本博資 著、産業図書株式会社、シリーズ/情報科学の数学、ISBN4−7828−5353−X C3355)の12章などの他、暗号関係の書籍に詳しい説明があるので、詳細な説明は省略する。
【0018】
この128ビットの最初の32ビットに、「FF02:0:0:0:0:2::/96」のプレフィックスを追加して、マルチキャストアドレスを作成する。この作成したマルチキャストアドレスをNIグループアドレスとする。NI Queryを受信した問い合わせ先は、NI Queryの送信先アドレスをチェックし、問い合わせ先のユニキャストアドレス、エニキャストアドレス、問い合わせ先が参加しているリンクローカルスコープマルチキャストアドレス(NIグループアドレスも含まれる)のいずれでもない場合、パケットを廃棄する。それ以外の場合、問い合わせ先は、ポリシーに従い返信するかどうか決定し、NI Queryに記された要求に従い、名前もしくはユニキャストアドレスを返信する。
【0019】
ここで、ドラフトの仕組みのうちSubject名を用いる方法を利用して、リンクローカル内で機器を発見し、機器間のみで名前解決を行い、機器間で直接通信を行うことを想定してみる。
【0020】
もっとも簡単に推測できるのは、各機器が、ホスト名(もしくはFQDN)とは別に、共通のSubject名をもち、それによって共通のNIグループアドレスを各機器がもち、グループを構成することである。例えば、図12に示すように、同一リンクローカル2内にある複数の機器1−a ̄eがあり、機器1−a ̄cが「xxxxx」というSubject名をもつとすると、上述のようにNIグループアドレスを作成すると、その機器は「xxxxx」というSubject名から作成された同一のNIグループアドレスを持つことになる。ここで、3は「xxxxx」というSubject名をもつ機器群の範囲を示す。このNIグループアドレスを送信先アドレスとして名前解決を行うことにより、「xxxxx」というSubject名を持つ全ての機器のホスト名(もしくはFQDN)とユニキャストアドレスを得ることが可能となる。
【0021】
ここで、例えば機器1−aがデジタルカメラであり、機器1−bがプリンタであり、デジタルカメラ(1−a)内の画像データをプリンタ(1−b)に直接送信して印刷できる独自プロトコルを、機器1−a、機器1−bとも実装していたとすると、ユーザが機器1−aの独自プロトコル開始ボタンなどを押して独自プロトコル開始を指示するだけで、パソコンなどを介さなくとも印刷が可能となる。
【0022】
すなわち、同一のSubject名を持つ機器を発見し、その機器についてのユニキャストアドレスを得ることにより、機器間で直接通信を行い、独自プロトコル等の任意のプロトコルを開始、実行して制御することが可能となる。
【0023】
【発明が解決しようとする課題】
しかしながら、任意のプロトコルにより直接通信を行える機器が存在するがリンクローカル内に同一のSubject名をもつ機器が多数存在する場合、その相手を特定するのに時間がかかる。理屈ではIPv6の仕様によりリンクローカル内には約2の64乗個までの機器が存在する可能性がある。例えば同一のSubject名を持つ機器が100台あったとし、そのうち2台のみが任意のプロトコルにより通信可能な組み合わせである場合、任意のプロトコルを開始したい機器は、最悪99台に任意のプロトコルで問い合わせを行い、任意のプロトコルで通信可能かどうかチェックすることになってしまう。
【0024】
そこで、通信を行える機器をあらかじめ絞り込んでおくことが望ましい。
【0025】
その絞り込む方法として、各機器に複数のSubject名を所持させることが考えられる。例えば、図13において、機器1−aは「xxxxx」と「digitalcamera」2つのSubject名を、機器1−bは「xxxxx」と「printer」2つのSubject名を、機器1−cは「xxxxx」のSubject名を、機器1−dは「digitalcamera」のSubject名を、機器1−eは「printer」のSubject名をもち、ドラフトに従い各Subject名から作成したNIグループアドレスをもつとする。この場合、「digitalcamera」というSubject名をもつ機器群の範囲4、「printer」というSubject名をもつ機器群の範囲5が定義できる。
【0026】
先と同じように機器1−aがデジタルカメラであり、機器1−bがプリンタであり、デジタルカメラ(1−a)内の画像データをプリンタ(1−b)に直接送信して印刷できる任意のプロトコルを機器1−a、機器1−bとも実装しているとし、機器1−aが機器1−bを発見したい場合、次のようにすれば発見できる。
【0027】
すなわち、機器1−aは、「xxxxx」というSubject名から作成したNIグループアドレスで問い合わせを行い、「xxxxx」というSubject名を持つ機器のリストを作成する。同様に「printer」というSubject名から作成したNIグループアドレスで問い合わせを行い、「printer」というSubject名を持つ機器のリストを作成する。2つのリストのANDをとることにより、機器の絞込みができ、任意のプロトコルで問い合わせを行いチェックする回数が減る。より絞り込みたい場合は、さらにSubject名を増やし、リストを作成すれば対応できる。
【0028】
しかしながら、上記方法の場合、例えばSubject名がN個ある場合では、N個の別々のリストを生成、管理する必要があり、また、そのリストを生成するためには、Subject名からNIグループアドレスを生成し、問い合わせるという作業を、N回行わなければならない、という問題がある。さらに、リスト用の記憶領域を多く必要とする、という問題がある。
【0029】
組み込み機器でも家電製品は計算機資源に対する要求が大変厳しいので、問い合わせの回数を少なくし、さらにリスト用の記憶領域を少なくし、もって計算機資源に対する要求を軽くし、迅速に機器を発見通信したいという問題がある。
【0030】
本発明は、上記の問題に鑑みてなされたものであり、DNSサーバが存在しない環境において、通信相手のアドレスを知らない機器が、効率良く通信相手を発見し、通信できるようにすることを目的とする。
【0031】
【課題を解決するための手段】
上記目的を達成するために、本発明は、ネットワークを介して接続された非機器発見通信装置を発見する機器発見通信装置であって、複数の要素文字列を組み合わせて1つ以上の文字列を生成する文字列手段生成と、前記1つ以上の文字列よりネットワークアドレスを生成するネットワークアドレス生成手段と、前記ネットワークアドレスを送信先アドレスとし、機器発見通信装置の情報を記述したパケットを送信する送信手段と、前記パケットに対する返信パケットを受信する受信手段とを備え、前記返信パケットにより非機器発見通信装置を発見することを特徴とする。
【0032】
また、機器発見通信装置とネットワークを介して接続された非機器発見通信装置であって、複数の要素文字列を組み合わせて1つ以上の文字列を生成する文字列生成手段と、前記1つ以上の文字列よりネットワークアドレスを生成するネットワークアドレス生成手段と、機器発見通信装置から送信されたパケットを受信する受信手段と、前記パケットの送信先アドレスを読み出し、前記1つ以上の文字列より生成されたネットワークアドレスとの比較結果に応じて、非機器発見通信装置の情報を記述した返信パケットを送信する送信手段とを備えることを特徴とする。
【0033】
【発明の実施の形態】
(第1の実施の形態)
本実施の形態では、機器に予めホスト名を設定しておき、そのホスト名からSubject名を抽出して、迅速に機器を特定する仕組みについて説明する。
【0034】
図1は、本実施の形態におけるネットワークを示す図である。本実施の形態において、機器1−aはデジタルカメラであり、機器1−bはプリンタであるとする。ネットワーク2はLAN(Local Area Network)である。ネットワーク2の種類としてはLANとしたが、特に種類は問わない。イーサネット(R)、IEEE802.11、Bluetoothなど、通信ができれば問題はない。ただし、マルチキャストアドレスによる通信とユニキャストアドレスによる通信が行える必要がある。
【0035】
図1において、機器発見通信装置(機器1−a)は、複数の要素(5つの要素)より成る第1の名前(xxxxx−digicame−a20−dppro−1234)より、要素を抽出して組み合わせて第1の文字列(図6)を生成する。機器発見通信装置(機器1−a)は第1の文字列より第1のグループアドレスを生成し、第1のグループアドレスを送信先アドレスとして第1のパケット(NI Queryパケット)を送信する。
【0036】
非機器発見通信装置(機器1−b)は複数の要素(5つの要素)より成る第2の名前(xxxxx−printer−s300−dppro−5678)より、要素を抽出して組み合わせて第2の文字列(図7)を生成し、第2の文字列より第2のグループアドレスを生成する。非機器発見通信装置(機器1−b)は受信した第1のパケット(NI Queryパケット)の送信先アドレスが第2のグループアドレスと一致したら非機器発見通信装置(機器1−b)の情報を含んだ第2のパケット(NI Replyパケット)を機器発見通信装置(機器1−a)に返信する。
【0037】
機器発見通信装置(機器1−a)は第2のパケット(NI Replyパケット)を受信し、第2のパケット(NI Replyパケット)内の情報を元に非機器発見通信装置(機器1−a)と通信する。
【0038】
上記の複数の要素とは、例えば、機器の製造者を示すメーカ名、使用可能な通信プロトコルを示すプロトコル名などである。機器1−a、1−bは、これらの要素を組み合わせて、第1、第2の文字列(例えば、メーカ名とプロトコル名をつなげたもの)を生成し、一方向性ハッシュ関数での演算結果を求め、更に、演算結果の所定部分に所定のプレフィックスを追加して、第1、第2のグループアドレスを生成する。
【0039】
本実施の形態では、機器1−aと機器1−bが、通信プロトコルにInternet Protocol Version 6を用い、グループアドレスがNode Informationグループアドレスである形態を説明する。
【0040】
図2は、機器1−aの構成を示す図である。CPU201が機器1−aの全体の動作を制御する。RAM202は一時記憶装置であり、ROM203はプログラムなど、消去不可能なデータが組み込まれているRead Only Memoryである。ネットワークインタフェース204は、機器1−aが外部機器とデータ送受信を行う際に使用するインタフェースである。ネットワークインタフェース204は、ネットワーク2を接続し、ネットワーク2を介して、機器1−bとデータを送受信する。バス205は、各モジュールを接続する内部バスである。画像データ生成部206は、外部からレンズを通してCCDなどの受光素子にて色彩データにし、JPEGなどの画像データを生成するモジュールを指す。他に、デジカメの構成要素として、外部記憶素子(Flashメモリなど)や、フラッシュなど多くの要素があるが、省略する。
【0041】
図3は、機器1−bの構成を示す図である。CPU301が機器1−bの全体の動作を制御する。RAM302は一時記憶装置であり、ROM303はプログラムなど、消去不可能なデータが組み込まれているRead Only Memoryである。ネットワークインタフェース304は、機器1−bが外部機器とデータ送受信を行う際に使用するインタフェースである。ネットワークインタフェース304は、ネットワーク2を接続し、ネットワーク2を介して、機器1−aとデータを送受信する。機器1−bはプリンタであるので、プリント用データや、制御コマンドなどを主に受信する際に使用される。バス305は、各モジュールを接続する内部バスである。プリント部306は、受信したプリント用データを紙などに印刷するモジュールである。
【0042】
図2および図3の、ネットワークインタフェース204、304については、特に種類を問わないが、ネットワーク2に接続可能なものである必要がある。
【0043】
機器1−aには、ホスト名として「xxxxx−digicame−a20−dppro−1234」がROM203に、機器1−bには「xxxxx−printer−s300−dppro−5678」がROM303に、あらかじめ設定されているとする。ホスト名は、メーカが製品出荷前に設定を行うことを想定している。また、ホスト名は63バイト以下であることが望ましい。
【0044】
ここで、ホスト名の構造について説明する。機器1−a、機器1−bとも、ホスト名は、「メーカ名−製品ジャンル−製品名−プロトコル名−シリアル番号」という順で構成されており、「−」(ハイフン)はセパレータ文字である。なお、この構造はあくまで例である。本実施の形態のホスト名の4番目の要素(dppro)はプロトコル名としたが、例えば、画像フォーマットの種類やグループを示す文字列でもよいし、セキュリティの種類を示す文字列でもよい。他の例は、後の実施例で述べる。要は、ホスト名がいくつかの文字列より構成され、その区切りが判明できれば問題はない。ホスト名のデータは、ROM203およびROM303にそれぞれ記録されているものとする。
【0045】
さて、機器1−a、機器1−bとあるが、機器1−aを開始側として説明を行う。
【0046】
機器1−aは、図4で示すフローチャートに従い動作する。このフローチャートは、ROM203に記憶されているプログラムの一部を示す。CPU201は、このプログラムをROM203から読出して、このプログラムに従って、各モジュールを制御する。機器1−aは、この制御により、図4のフローチャートにより示される動作を行う。
【0047】
機器1−aは、何らかのスタート要因、例えば、機器発見ボタンを押される、ネットワーク2に接続されるなどのイベントが発生したときに、本形態の動作をスタート(S401)する。S402において、CPU201はホスト名をROM203から読み込み、要素を抽出する。本実施の形態では、ホスト名は「xxxxx−digicame−a20−dppro−1234」であるので、「xxxxx」「digicame」「a20」「dppro」「1234」の5つの要素が抽出される。抽出された要素は、RAM202に一時格納される。
【0048】
S403において、要素を組み合わせてNIグループアドレス用の文字列を生成する。要素の組み合わせとは、例えば「xxxxx」と「dppro」、「xxxxx」と「digicame」と「a20」と「dppro」などの、任意個の要素の組み合わせを指す。本実施の形態では、図6に示すようなリストをRAM202内に生成するものとする。図6のリストは、例えば線形リスト構造で保持される。ここで、図6は、上から(参照順)「xxxxxdigicamea20dppro」「xxxxxdigicamedppro」「xxxxxdppro」「xxxxx」と4つの文字列があるが、最初の2つはあくまで説明用に例としてあげた文字列であり、実際の使用にあたっては「xxxxxdppro」から下の2つが生成されると有用である。
【0049】
さて、S404において規定の要素の組み合わせを全て試行したかチェックする。ここで、規定の要素の組み合わせとは、図6のリストを指す。1度も試行していないので、NOとなりS405に遷移する。S405において、NIグループアドレスを生成する。生成方法は基本的にドラフトと同様である。ただし、ホスト名ではなく、S403において生成した文字列のどれかに適用する。つまり、文字列を一方向ハッシュ関数に通し、128ビットのデータを得る。この128ビットの最初の32ビットに、「FF02:0:0:0:0:2::/96」のプレフィックスを追加して、マルチキャストアドレスを生成し、これをNIグループアドレスとする。ここでは、図6のリストの最上位にある文字列から適用するとする。つまり、「xxxxxdigicamea20dppro」に適用する。
【0050】
次に、S406においてSubject名をNI Queryパケットに入れ、生成したNIグループアドレスを送信先として、ネットワークインタフェース204からネットワーク2にパケットを送信する。ここで、Subject名は、ホスト名を適用するものとする。また、本実施の形態ではNI Queryパケット送信直前にNIグループアドレスを生成しているが、もちろん、S403において、NIグループアドレス用の文字列が生成された直後に、各々のNIグループアドレスを生成しておいても問題はない。ただ、余分にNIグループアドレスを生成する時間と記憶領域が必要となる。
【0051】
S407において、先に送信したNI Queryパケットに対する返信があったかチェックする。返信がない場合とは、先のNIグループアドレスに参加する機器がいない場合か、いたとしても返信しなかった場合である。本実施の形態の場合、一定時間が経過し、その間返信がない場合、返信がなかったものと見なす。返信がなかった場合、S404に遷移し、あった場合、S408に遷移する。本実施の形態では、「xxxxxdigicamea20dppro」から生成したNIグループアドレスには返信がなかったとする。返信がなかったので、S404に遷移する。
【0052】
S404において、「xxxxxdigicamea20dppro」の次の文字列があるので、NOとなり、次の文字列「xxxxxdigicamedppro」を適用する。S405、S406で先と同様に「xxxxxdigicamedppro」からNIグループアドレスを生成し、送信する。本実施の形態ではS407において、また返信がないとする。再びS404に遷移し、次の文字列「xxxxxdppro」があるので、NOとなり、S405、S406と先と同様に送信する。
【0053】
S407において、今度は返信があったとする。返信があるのでS407においてYESとなり、S408に遷移する。S408において、NI Replyパケットが正しいかチェックする。ここで正しいとは、パケットフォーマットが規則にあっているか、また自身が送信したNI Queryに対する返答であるか、といったことを指す。S408において、正しくなければNOとなり、S409に遷移し、適切なエラー処理を行ったのち、S412に遷移して終了となる。S408において、受信したNI Replyパケットが正しかった場合、YESとなり、S410に遷移し、正当時の処理を行い、さらにS411に遷移して任意のプロトコルを実行し(しなくともよい)、S412に遷移して終了となる。
【0054】
次に機器1−b、つまり受信側の機器1−bの動作について、図5を参照しながら説明する。このフローチャートは、ROM303に記憶されているプログラムの一部を示す。CPU301は、このプログラムをROM303から読出して、このプログラムに従って、各モジュールを制御する。機器1−bは、この制御により、図5のフローチャートにより示される動作を行う。
【0055】
機器1−bは、例えば電源を入れたりすることにより、S501のスタートとなる。S502において、CPU301はホスト名をROM303から読み込み、要素を抽出する。本実施の形態では、ホスト名は「xxxxx−printer−s300−dppro−5678」であるので、「xxxxx」「printer」「s300」「dppro」「5678」の5つの要素が抽出される。抽出された要素は、RAM302に一時格納される。
【0056】
S503において、要素を組み合わせてNIグループアドレス用の文字列を生成する。本実施の形態では、図7に示すようなリストをRAM302内に生成するものとする。図7のリストは、例えば線形リスト構造で保持される。ここで、図7は、上から(参照順)「xxxxxprinters300dppro」「xxxxxprinterdppro」「xxxxxdppro」「xxxxx」と4つの文字列があるが、最初の2つはあくまで説明用に例としてあげた文字列であり、実際の使用にあたっては「xxxxxdppro」から下の2つが生成されると有用である。
【0057】
次に、S504において、NIグループ用の文字列から、NIグループアドレスを生成する。NIグループアドレスの生成方法は、先に説明したS405の生成方法と同様であるが、文字列は図7のリストのものである。
【0058】
さて、NI Queryパケットを受信(S505)したとする。S506において、NI Queryパケットが正しいかチェックする。ここでは、NI Queryパケットが規則にのっとったものであるかのチェックである。正しくない場合、NOとなり、S513に遷移し、エラー処理を行って終了(S514)となる。正しい場合、YESとなり、S507に遷移する。
【0059】
S507において、受信したNI Queryパケットの送信先アドレスとなっているNIグループアドレスと、S504において生成したNIグループアドレスが一致するか判定する。本実施の形態の場合、機器1−aが「xxxxxdigicamea20dppro」、「xxxxxdigicamedppro」から生成したNIグループアドレスを送信先としたNI QueryパケットはNOとなり、「xxxxxdppro」、「xxxxx」からのはYESとなる。「xxxxxdigicamea20dppro」が最初に送信されたと本実施の形態では仮定している。
【0060】
図7で示したリストの、「xxxxxprinters300dppro」から生成したNIグループアドレスとは一致しないので、ここではNOとなり、S512に遷移する。S512では、規定の要素の組み合わせを全て試行したか、判定する。試行していたら、S513に遷移してエラー処理を行い、S514において終了となる。試行していなかったら、S507に戻り、違う文字列から生成されたNIグループアドレスと比較する。そして、S507、S512を繰り替えして、S504において生成した複数のNIグループアドレスのどれかと一致するか判定する。
【0061】
本実施の形態の場合、「xxxxxdigicamea20dppro」から生成された、受信したNIグループアドレスは、「xxxxxprinterdppro」、「xxxxxdppro」、「xxxxx」から生成したNIグループアドレスのどれとも一致しないので、S513、S514と遷移し、終了となる。
【0062】
次に、機器1−aが「xxxxxdigicamedppro」から生成したNIグループアドレスを送信先アドレスとしたNI Queryパケットを、機器1−bが受信した場合も同様に本実施の形態ではエラーとなる。
【0063】
機器1−aが「xxxxxdppro」から生成したNIグループアドレスを送信先アドレスとしたNI Queryパケットを送信した場合は、次のように動作する。S507において、機器1−bが生成したNIグループアドレスと一致するので、YESとなり、S508に遷移する。
【0064】
S508において、受信したNI Queryパケットの要求に応えるか決定する。これは、例えば、NI Queryパケットが(機器1−bの)グローバルユニキャストアドレスを返信時のNI Replyパケットに含むように要求しているが、機器1−bのポリシー(設定)として、グローバルユニキャストアドレスを返信しないとしているときは、応えない。また、NI Queryパケットに含まれるSubject名をチェックし、それがある用件を満たしていた場合のみ、要求に応えるというポリシーもある。
【0065】
応えない場合、NI Replyパケットを返信するが要求されたデータは含めない場合と、返信しない場合がある。S508では、その場合NOとなり、S513においてポリシーに沿ったエラー処理を行ったあと、S514にて終了となる。
【0066】
本実施の形態では、NI Queryパケットの要求にはホスト名が要求されており、機器1−bのポリシーとしても問題ないとする。そのとき、S508においてYESとなり、S509に遷移する。S509において、受信したNI Queryの要求に沿ったNI Reply(すなわち、機器1−bのホスト名を含む)を生成し、NI Queryの送信元アドレスをNI Replyの送信先アドレスとして返信する。ここでNI Replyの送信元アドレスは、一般的にはリンクローカルアドレスとするが、他のアドレスでもかまわない。ただし、ポリシーやセキュリティに留意し、決める必要がある。そして、S510において、正当時の処理を行い、S511において任意のプロトコルを実行される準備をし(実行してもかまわない。任意のプロトコルの種類による)、S514にて終了となる。S509とS510の順番は、逆でもかまわない。S510の処理では、例えば、要求に応答したNI Queryの送信元アドレスを、RAM302に記憶する。
【0067】
強調するが、通常の使用では、「xxxxxdppro」からNIグループアドレスを生成することを最初に行うことを想定している。これにより、機器1−aは、「dppro」というプロトコル名を仲立ちとして通信可能な相手を、1回のステップで発見することが可能となる。「発明が解決しようとする課題」であげた、N個の文字列(Subject名)より各々のNIグループアドレスを生成して各々問い合わせを行う方法であると、N回のステップが必要となり、N個のさらにリスト間のANDをとる必要がある。この点において、本実施の形態は、少ない計算機資源(N個のリストは不要、ANDをとる必要もない)で、迅速(たかだか1回の問い合わせで終了する)であるといえる。
【0068】
以上、本発明の実施の形態における送信側と受信側の動作について説明した。
【0069】
ここで、S410とS510において、適切な処理を行うことにより、S411、S511における任意のプロトコルにおいて様々な処理を行うことが可能となる。
【0070】
次に、本発明の第1の実施の形態のさらなる応用例として、その処理について具体例を挙げて説明する。
【0071】
さて、第1の実施の形態において説明したように、「xxxxxdppro」という文字列から生成したNIグループアドレスにより、機器1−aと1−b間で通信が成立した。その結果、機器1−aはNI Queryにより要求したデータ(例えば機器1−bのホスト名やリンクローカルアドレス)を得ることが可能となり、機器1−bは機器1−aのSubject名とアドレス(NI Queryの送信元アドレス)を得られる。ここで、Subject名は、ホスト名「xxxxx−digicame−a20−dppro−1234」である。
【0072】
S410において、NI Replyパケットの送信元アドレス(多くの場合、リンクローカルアドレス)とホスト名をRAM202に記録し、S510においてNI Queryパケットの送信元アドレスとSubject名(本実施例ではホスト名)をRAM302に記録するとする。
【0073】
この場合、機器1−aおよび機器1−bは「xxxxxdppro」という文字列から生成したNIグループアドレスによる機器のグループ、つまり「xxxxx」というメーカであり「dppro」というプロトコルをもつグループのホスト名とユニキャストアドレスを把握したことになる。
【0074】
それにより、任意のプロトコルを開始できる。
【0075】
以下、任意のプロトコルを開始、実行する一例として、機器1−a(デジタルカメラ)から機器1−b(プリンタ)へのダイレクトプリントを実現する独自プロトコルを開始、実行する仕組みを説明する。この例は、図4のS411と図5のS511で示した部分を、具体的に示すために記すものである。ダイレクトプリントとは、通常、デジタルカメラ内の画像データを印刷する際には、パソコンなどに一時画像データを蓄積し、パソコンからプリンタへ印刷する手順を踏むのに際し、デジタルカメラとプリンタを直接通信可能とすることで、パソコンを介さずとも印刷を行うことを指す。ダイレクトプリントを実現している製品として、キヤノン社製IXY DIGITAL300a, 200a(デジタルカメラ)とBJ895PD、BJ535PD(プリンタ)などの組み合わせが挙げられる。
【0076】
さて、機器1−aにおいて、図2の画像データ生成部206により撮影、生成された画像データがRAM202に蓄積されているとする。機器1−aにおいて、ダイレクトプリントボタンを押す。それをきっかけとし、図8に示す独自プロトコルが開始される。すなわち、機器1−aでは、図4のS410までは、処理が終了しており、ダイレクトプリントボタンが押されると、S411の任意のプロトコルを実行する。図4のS411における任意のプロトコルが、図8で説明する独自プロトコルである。
【0077】
機器1−aのCPU201は、ROM203内に仕込まれた独自プロトコル用のプログラムをロードし、独自プロトコルを開始する(S801)。先の仕組みにより、機器1−aは機器1−bのホスト名およびリンクローカルアドレスを取得している。機器1−aは、発見した機器のリストから機器1−bを選択する。第1の形態では、このリストは、図4のS410で表示されている。本実施例の場合、発見した機器は機器1−bのみであるので、自動的に機器1−bが選択される。ここで、複数の機器が発見されていた場合、ユーザにどの機器でダイレクトプリントを行うか選択させてもよい。また、選択させずに各機器に対し、独自プロトコルを試行してもよい。
【0078】
開始したら、機器1−aのCPU201は、RAM202に記録してある機器1−bのリンクローカルアドレスを送信先、自身のリンクローカルアドレスを送信元として、S802のように、機器1−bとのコネクションを確立するための命令である文字列open dpproを、ネットワークインタフェース204を通して送信する。
【0079】
機器1−bは、ネットワークインタフェース304を通してS802で示す文字列open dpproを含んだパケットを受信し、RAM302に記録する。機器1−bのCPU301は、ROM303内に仕込まれた独自プロトコル用のプログラムを起動し、受信したパケットの送信元アドレスを、図5のS510でRAM302に保存した送信元アドレスと比較する。一致すれば独自プロトコルを解する機器であると判定し、コネクションの開始を許可し(S803)、S804のように、文字列okを機器1−aに返す。一致しない場合、パケットを破棄するか、もしくはエラーを示す文字列を返信するなど、適切な処理を行う。なお、機器1−bは、図5のS510までの処理を実行しており、図8のS802の文字列open dpproを受信すると、図5のS511における任意のプロトコルを実行する。図5のS511における任意のプロトコルは、図8で説明する独自プロトコルである。ここで、独自プロトコル用のプログラムは、機器1−bが起動したときに起動しておいてもかまわない。
【0080】
機器1−aは、機器1−bからS804で示す文字列(ok)を受信し、コネクション確立を確認する。その後、より詳細な機器1−bの状態を把握するために、S806のように、状態情報取得要求を示す文字列get statusを送信する(S805)。
【0081】
機器1−bは、ネットワークインタフェース304を通じてS806に示す文字列get statusを受信し、RAM302に記録する。機器1−bのCPU301は、受信した文字列を独自プログラムに渡し、独自プログラム内のコマンドと比較し、状態情報取得要求を示す文字列と判定し、S808のように、自身の状態情報を示す文字列を返信する(S807)。ここで、S808に示した文字列a300, a4, color, idleは、左端より順に、機器1−bの製品名、対応する紙のサイズ、カラーか白黒か、現在の状態(idleは印刷を行っていないことを示す)を示している。
【0082】
機器1−aは、S808に示した文字列を受信する。そして、文字列を独自プロトコル内の解析プログラムにかけ、機器1−bの状態情報をRAM202に記録する。機器間でやりとりする文字列はあくまで例である。機器1−aは、RAM202内に保管した機器1−bの状態情報を独自プログラムに渡し、問題がなければプリント要求の文字列を生成し、S810のように、プリント要求の文字列printと画像データを送信する(S809)。
【0083】
機器1−bは、S810で示した文字列と画像データを、ネットワークインタフェース304を通して受信し、RAM302内に一時記録する。S810で示した文字列を独自プログラムに渡し、コマンドと比較してプリント要求コマンドであることを判定すると(S811)、S812のように、プリント要求を受け付けたことを示す文字列(ok)を機器1−aに返信する。その後、RAM302から画像データを読み込み、プリント部306にデータを送信し、プリント部306は画像データから印刷を行う。印刷が終了したら(S813)、CPU301は、S814のように、印刷終了を示す文字列doneを機器1−aに返信する。
【0084】
機器1−aは、S814の印刷終了の文字列doneを受信し、独自プロトコルを終了することを決定し(S815)、S816のように、独自プロトコル終了を要求する文字列close dpproを送信する。機器1−bは、S816の文字列close dpproを解し、S818のように、独自プロトコル終了を受け付けたことを示す文字列(ok)を返信し、終了する(S817)。以上により、図4のS411及び図5のS511における任意のプロトコルである独自プロトコルは、終了する。以上の仕組みにより、ダイレクトプリントを実現した。
【0085】
以上、ダイレクトプリントという独自プロトコルを例とし、任意のプロトコルを開始、実行できることを示した。なお、図8を用いて説明した独自プロトコルは、あくまで一例である。
【0086】
以上、ホスト名から要素を抽出し、その要素の組み合わせより生成したNIグループアドレスにより、任意のプロトコルで通信できる機器を絞り、任意のプロトコルを素早く開始することを可能とする仕組みについて、説明した。
【0087】
(第2の実施の形態)
本実施の形態では、機器に予め複数のSubject名要素を設定しておき、複数のSubject名要素を組み合わせてSubject名とすることにより、DNSサーバが存在しない環境において、計算資源が少なく、通信相手のアドレスを知らない機器が、効率良く通信相手を発見し、通信できるようにする仕組みについて説明する。
【0088】
本実施の形態が第1の実施の形態と異なるのは、図4のS402、S403および図5のS502、S503にあたる部分のみであり、それ以外の部分の動作は第1の実施の形態と変わらない。そこで、その部分のみを変更したフローチャート図を示し、変更点のみについて説明する。
【0089】
図9が、図4のS402、S403に相当する部分を変更した図である。また、ネットワーク構成は図1、機器構成は図2、図3と共通である。つまり、ネットワーク構成、機器構成とも、第1の実施の形態と基本的に変更ないものとする。
【0090】
図9のS401において、スタート後、S901に遷移する。Subject名要素とは、例えば、機器1−aでは「xxxxx」「digicame」「a20」「dppro」「1234」といった文字列である。ただし、これは第1の実施の形態のようにホスト名から抽出したものではなく、ホスト名とは独立にROM203にあらかじめ設定された文字列である点が第1の実施の形態と異なる。
【0091】
901において、CPU201はROM203からSubject名要素を読み出し、RAM202に一時記録する。そしてS902において、あらかじめ定められたアルゴリズムに従い、Subject名要素を組み合わせてNIグループアドレス用の文字列を生成する。ここで、S902において生成される文字列は、例えば図6で示すようなものである。S902以降の処理は、図4のS404以降と同じ動作でよい。
【0092】
一方、機器1−bでは、図10に示す部分が図5に示した動作と異なる。機器1−bは、図10のS501においてスタート後、S1001に遷移する。機器1−bにおけるSubject名要素は、本実施の形態の場合、「xxxxx」「printer」「s300」「dppro」「5678」といった文字列である。この文字列は、先と同様、第1の実施の形態のようにホスト名から抽出したものではなく、ホスト名とは独立にROM303にあらかじめ設定された文字列である点が第1の実施の形態と異なる。
【0093】
S1001において、CPU301はROM303からSubject名要素を読み出し、RAM302に一時記録する。そしてS1002において、あらかじめ定められたアルゴリズムに従い、Subject名要素を組み合わせてNIグループアドレス用の文字列を生成する。ここで、S1002において生成される文字列は、例えば図7で示すようなものである。S1002以降の処理は、図5のS504以降と同じ動作でよい。
【0094】
このように動作したあと、第1の実施の形態で示したように任意のプロトコルを素早く開始することが可能となる。
【0095】
また、第1の実施の形態では詳細に説明していなかったが、NI Queryに含めるSubject名を、機器のチェックなどに利用する場合には、第1の実施の形態のようにSubject名としてホスト名を用いるのではなく、NIグループアドレス用の文字列を用いる方が好ましい場合もある。これは、各機器でSubject名を用いてどのような処理を行うか、に依存する問題であり、ここで特に規定はしない。ただし、本発明はSubject名としてホスト名(もしくはFQDN)、NIグループアドレス用の文字列のどちらでも適用可能である。
【0096】
(第3の実施の形態)
第1の実施の形態において、ホスト名はあらかじめ機器に設定されているという仮定を置いたが、ホスト名となる文字列はその他の個所で記録されていてもかまわない。
【0097】
例えば、機器がアプリケーションソフトウェアを別途ネットワーク経由でダウンロードし、そのアプリケーションソフト内にホスト名となる文字列がある場合、それを適用してもよい。もちろん、ダウンロードしたアプリケーションソフトウェアでなく、CD、メモリカード、フロッピー(R)ディスクなどの媒体を用いて機器にインストールしたアプリケーションソフトウェアであってもよい。さらに、ホスト名となる文字列を他の機器よりネットワーク経由で受信してもよい。つまり、なんらかの手段を用いてホスト名を取得できるのならば、本発明は適用可能である。
【0098】
(第4の実施の形態)
第2の実施の形態において、Subject名要素となる文字列は、あらかじめ機器に設定されているという仮定を置いたが、Subject名要素となる文字列は、機器の他の部分、もしくは機器外に記録されていてもかまわない。例えば、機器がアプリケーションソフトウェアを別途ネットワーク経由でダウンロードし、そのアプリケーションソフト内にSubject名要素となる文字列がある場合、それを適用してもよい。もちろん、ダウンロードしたアプリケーションソフトウェアでなく、CD、メモリカード、フロッピー(R)ディスクなどの媒体を用いて機器にインストールしたアプリケーションソフトウェアであってもよい。さらに、Subject名要素となる文字列を他の機器よりネットワーク経由で受信してもよい。つまり、なんらかの手段を用いてSubject名要素となる文字列を取得できるのならば、本発明は適用可能である。
【0099】
(第5の実施の形態)
第1の実施の形態において、ホスト名の構造を、「メーカ名−製品ジャンル−製品名−プロトコル名−シリアル番号」という順で構成されており、「−」(ハイフン)はセパレータ(区切り)文字である、とした。しかし、これはあくまで一例である。
【0100】
以下、他のホスト名の構造について例を挙げる。
【0101】
ひとつは、文字列のセパレート方法である。まず、第1の実施の形態において、「−」(ハイフン)をセパレータ文字としたが、他の文字であってもよい。ただし、ホスト名をDNSサーバに登録したりする必要がある場合は、DNS関連のRFC(K. Harrenstien、M. Stahl、E. Feinler、「DOD INTERNET HOST TABLE SPECIFICATION」、RFC952、October 1985とR. Braden、「Requirements for Internet Hosts −− Application and Support」、RFC1123、October 1989)で規定された文字のみを使用するべきである。
【0102】
他に、セパレータ文字を使用するのではなく、あらかじめ文字数を決めておく方法がある。例えば、メーカ名は5文字、製品ジャンルは5文字、製品名は10文字、プロトコル名は10文字、シリアル番号は20文字、などである。このようにして規定おけば、セパレート文字を使用しなくても、ホスト名を要素に分解することは可能である。
【0103】
次に、ホスト名の要素の並び順がある。第1の実施の形態では、メーカ名、製品ジャンル、製品名、プロトコル名、シリアル番号という順としたが、もちろんこの順でなくとも、規定の順序を定めるのならば問題ない。他に、例えばメーカ名なら文字列の最初に「mk」を、製品ジャンルなら「pg」を、と固有の文字列をつけておく、と規定し、他の要素の文字列の最初と一致しないように規定しておくのならば、要素の順を定めておく必要はない。
【0104】
次に、ホスト名の要素として何を含むように規定しておくか、という点がある。第1の実施の形態では、「メーカ名」「製品ジャンル」「製品名」「プロトコル名」「シリアル番号」を要素として含めるようホスト名をつけた例を示した。しかし、もしシリアル番号のみから製品、ひいてはその製品が備える機能を把握できるのであり、他の製品のホスト名と一致しないのであれば、「シリアル番号」のみをホスト名とすることももちろん可能である。また、プロトコルで一致する製品群よりなるグループを対象としたいと、あらかじめ決定しておくのならば、「メーカ名」「プロトコル名」「シリアル番号」からなるホスト名としておいてもよい。ここで、ホスト名となる関係上、「シリアル番号」を含めることが好ましい。
【0105】
また、プロトコル名は第1の実施の形態では「dppro」1つであったが、例えば「dppro−sspro」のように、「−」など要素に用いたのとは異なる区切り文字を用い、複数のプロトコル名を含むようにすることも可能である。逆に、プロトコル名の要素が「−」のみの場合はプロトコルをまったくサポートしていないことを示す、と規定してもよい。
【0106】
また、「メーカ名」「製品ジャンル」「製品名」「プロトコル名」「シリアル番号」以外の要素を追加してもよい。例えば、「画像フォーマット」、「ファイルの拡張子名」、「セキュリティ機能」、「機器のバージョン」、「他の機器スペック」など、およそ機器に関することを要素として用いることが可能である。
【0107】
これにより、例えば「メーカ名」「プロトコル名」「画像フォーマット」「シリアル番号」という要素よりなるホスト名であれば、同一メーカの機器間で、共通の画像フォーマット、プロトコルでデータの送受信を行える機器グループを構成することが可能となる。
【0108】
また、「メーカ名」「プロトコル名」「セキュリティ機能」「シリアル番号」であれば、相手となる機器がどのセキュリティ機能、例えばサポートしている暗号の種類、鍵交換プロトコルの種類やポリシー、証明書の種類などを把握することができる。よって、例えばある機器間で(例えばIPSecを用いて)セキュアな通信路を確保したあと、任意のプロトコルを実行して、機密性の高いデータをやりとりする、などといったことが可能となる。
【0109】
他に、図6、7ではメーカ名を含むようにNIグループアドレス用の文字列を生成したが、メーカ名によらないグループを想定するのであればメーカ名を含ませる必要はない。これは、例えば数社のメーカで共通に使用できるプロトコルやセキュリティ、標準となっているほかの仕様により機器のグループを規定したい場合、有効である。
【0110】
また、第1の実施の形態では通信相手となる機器のリンクローカルアドレスを取得したあと、独自プロトコルを実行する例を説明したが、独自プロトコルでなくともかまわない。たとえばHTTPやFTPなど、RFCで規定されている標準プロトコルであってもよい。つまり、任意のプロトコルを開始、実行可能である。
【0111】
(第6の実施の形態)
「第5の実施の形態」では、ホスト名を利用する場合について述べたが、第2の実施の形態や第4の実施の形態で示したような、ホスト名とは別の文字列を用意する場合にも、同様にあてはまる。
【0112】
さらに、「第5の実施の形態」ではホスト名を用いる関係上、「第1の実施の形態」と同様に、例えばホスト名は63文字以下が望ましい、といった制約が存在したが、第2の実施の形態で示したように、ホスト名と独立のNIグループアドレス用の文字列を用いるのであれば、ホスト名にまつわる制約はない。
【0113】
ホスト名の制約を受けない例として、例えば入力機器、出力機器を示す要素名を用いる場合を示す。
【0114】
例えば、「xxxxx」「imagein」「imageout」と3つの要素文字列を記録している2つの機器(機器1−a、1−b)があり、一方(機器1−a)はデジタルカメラ、もう一方(機器1−b)はプリンタであるとする。「imagein」は入力機器を、「imageout」は出力機器を示すとする。
【0115】
ここで、デジタルカメラ(機器1−a)は「xxxxximageinimageout」という文字列よりNIグループアドレスを生成し、NI Queryに入れる文字列として「xxxxximagein」を選択するとする。プリンタ(機器1−b)は、「xxxxximageinimageout」という文字列よりNIグループアドレスを生成し、NI Replyに入れる文字列として「xxxxximageout」を選択するとする。
【0116】
その形態では、2つの機器(機器1−a、1−b)は同一のNIグループアドレスなので発見可能であり、またプリンタ(機器1−b)はNI Query中の文字列「xxxxximagein」より通信相手(機器1−a)が入力機器であると判断でき、デジタルカメラ(機器1−a)はNI Reply中の文字列「xxxxximageout」より通信相手(機器1−b)が出力機器であると判断できる。その場合、さらに迅速に任意のプロトコルを開始し、ダイレクトプリントなどを行うことが可能となる。
【0117】
(他の実施の形態)
前記実施の形態において、何らかのスタート要因、例えば、機器発見ボタンを押される、ネットワーク2に接続される、電源が入るなどのイベントが発生したときに開始する、と説明していたが、機器の電源が入っており、ネットワーク2に接続して他の機器と通信可能な状態であり、かつ任意のプロトコル実行前であれば、いつ開始するようにしてもよい。
【0118】
前記実施の形態において、NI Queryパケットを送信する機器と、NI Queryパケットを受信する機器では、図4、図5で示したような別々の動作フローチャートを実行していたが、図4、図5で示したようなNI Queryパケットを送信および受信する機能を単一の機器に実装しても、よいし、また、可能である。その場合、NIグループアドレス用の文字列を生成、管理する部分、およびNIグループアドレス用の文字列からNIグループアドレスを生成する部分の共通化を図ることができる。
【0119】
上記実施の形態においては、機器またはCPUを用いて、前述した機能を実現するソウトウェアプログラムを動作させる実施形態であったが、その機能の全部または一部を実現する論理回路により達成される。
【0120】
また、前述した実施形態の機能を実現するソフトウエアのプログラムコードを記録した記録媒体を、装置に供給し、その装置のコンピュータ(またはCPU)が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成される。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【0121】
プログラムコードを供給するための記録媒体としては、ROM以外にも、例えば、フロッピー(R)ディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカードなどを用いることができる。
【0122】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOSなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【0123】
更に、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【0124】
【発明の効果】
以上説明したように、本発明によれば、効率良く通信相手を発見し通信することが可能となる。更に、多くの計算機資源(記録資源、計算資源)を必要としないと言う効果も得られる。
【図面の簡単な説明】
【図1】第1の実施の形態を説明するためのネットワークを示す図である。
【図2】第1の実施の形態で送信側を行うデジタルカメラの構成を示す図である。
【図3】第1の実施の形態で受信側を行うのプリンタの構成を示す図である。
【図4】第1の実施の形態の送信側の動作を示すフローチャート図である。
【図5】第1の実施の形態の受信側の動作を示すフローチャート図である。
【図6】送信側機器で用意される、NIグループアドレス用文字列のリストの一例である。
【図7】受信側機器で用意される、NIグループアドレス用文字列のリストの一例である。
【図8】独自プロトコルの送信側機器、受信側機器間の通信の様子を示す図である。
【図9】NIグループアドレス用の文字列を用意する、送信側の動作を示すフローチャートの一部の図である。
【図10】NIグループアドレス用の文字列を用意する、受信側の動作を示すフローチャートの一部の図である。
【図11】FQDN、ホスト名、ドメイン名を説明するための図である。
【図12】1つの要素から作成された1つのNIグループアドレスに参加している機器群の範囲を示す図である。
【図13】複数の要素から、別個に作成された、複数のNIグループアドレスに参加している機器群の範囲を示す図である。
【図14】複数の要素から、合成して作成された、1つのNIグループアドレスに参加している機器群の範囲を示す図である。
【符号の説明】
1−a、1−b 機器
2 ネットワーク(リンクローカル)
[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to a device discovery communication device, a non-device discovery communication device, a program, a recording medium, and a discovery method.
[0002]
[Prior art]
In the Internet, it is common to associate a name with an IP address. Taking this correspondence is called name resolution. The name is a human-readable character string such as "host.xxxxxx.co.jp" or "host". In many cases, the name is assigned to each device such as one personal computer or one device. It is. If the IP address is, for example, Internet Protocol Version 4 (hereinafter, referred to as IPv4), a description such as 192.10.0.1 is given. If the IP address is, for example, Internet Protocol Version 6 (hereinafter, referred to as IPv6), 2001: 0340: 1000 :: Notation such as 1 is made.
[0003]
The most primitive method of name resolution is that each host manages a file for name resolution as a local file. In a Unix (R) -based OS such as Linux, it is located in "/ etc / hosts", and an IP address is listed on the left and a host name is listed on the right and managed. Here, for example, when the correspondence between “host” and “192.10.0.1” is made, if an inquiry is made with “host”, “192.10.0.1” becomes “192.10.10. .1 "is an example of name resolution to return" host ". By performing name resolution, it is possible to use a name instead of an IP address for the designation of a communication partner, making communication easier for humans.
[0004]
The method of performing name resolution using a local file is effective when the number of hosts is sufficiently small, but is inefficient when the number of hosts is large. Since local files exist for each host, when maintaining name resolution files, the name resolution files of all hosts must be directly edited.
[0005]
For this reason, Domain Name System (hereinafter referred to as DNS) has been devised. The DNS manages a file for name resolution by a DNS server (also referred to as a name server), and each host inquires the DNS server to obtain a name and an IP address. By using DNS, there is no need to manage name resolution files that exist locally on all hosts, and name management can be performed by managing only DNS server name resolution files. Since the DNS server processes requests from many hosts, many DNS servers are operated in a hierarchical structure.
[0006]
In the DNS, A. See Marine, G .; Malkin, "FYI on Questions and Answers to Commonly Asked" New Internet User "Questions", RFC 1594, March 1994. Fully Qualified and Fully Qualified as described in Section 5.2 of RFC 1594 and March 1994. FQDN is a name that should be set to be unique in the world. As illustrated in FIG. 11, the FQDN is a name obtained by connecting a host name “host” and a domain name “xxxxxx.co.jp” indicating a place on the DNS with a period. Although FQDN is sometimes referred to as a host name, the rule shown in FIG. 11 is employed here.
[0007]
For the detailed mechanism of DNS, see Mockapetris, RFCs such as "DOMAIN NAMES-IMPLEMENTATION AND SPECIFICATION", RFC1035, November 1987, and "DNS &BIND" (written by Paul Albitz / Cricket Liu; ), There are many detailed documents, and a detailed description is omitted.
[0008]
DNS is very useful as a mechanism for performing name resolution on a global scale. However, if the DNS server is operated for a small number of devices, such as when performing name resolution for several hosts in the local area, and even when it is not necessary to perform name resolution on a global scale, the management load is high. I have to say. Further, when the DNS server is stopped, name resolution cannot be performed, and communication in which a communication partner is specified by name becomes impossible even in the local area. In such a case, there is a method of performing name resolution using the local file described above, but it is difficult to maintain and manage the correspondence between the name and the IP address without inconsistency even if the number is at most several.
[0009]
Therefore, in IPv6, a mechanism for performing name resolution by directly exchanging messages between hosts is an Internet draft (Matt Crawford, “IPv6 Node Information Queries”, draft-ietf-ipngwg-icmp-name-lookups-09.txt, May 17, 2002, hereafter referred to as draft).
[0010]
The draft explains that name resolution is performed as follows.
[0011]
Messages are exchanged directly between hosts using ICMPv6 packets. An ICMPv6 packet for an inquiry from an inquiry source to an inquiry destination is referred to as a "Node Information Query" (hereinafter referred to as an NI Query), and an ICMPv6 packet for a response from the inquiry source to the inquiry source is referred to as a "Node Information Reply" (hereinafter referred to as an NI Reply). Described).
[0012]
The inquiry source transmits the NI Query to the inquiry destination. The NI Query includes a request as to which information of an inquiry destination is desired. When the inquiry destination receives the NI Query, determines that a reply is made after checking, the NI Reply includes data along the request included in the NI Query, and transmits the NI Reply to the inquiry source. The inquiry source receives the NI Reply, checks the NI Reply, and retrieves the data if the data meets the request.
[0013]
There are two types of inquiry methods: a method using a subject address and a method using a subject name.
[0014]
First, a method using a subject address will be described. The inquiry source includes the IPv6 address called the subject address in the NI Query and transmits the NI Query to the inquiry destination. After receiving the NI Query, the inquiry destination checks the Subject address in the NI Query. If the inquiry destination is a Subject address that needs to be answered, the inquiry destination follows the request described in the NI Query, and the FQDN (in the case of a host name, as well). Yes) or return the unicast address of the inquiry destination. The Subject address is usually the unicast address of the inquiry destination, and the transmission destination address of the NI Query is also the unicast address of the inquiry destination.
[0015]
Next, a method using a subject name will be described. In the method using the subject name, the query source includes a character string to be the subject name in the NI Query, and transmits the NI Query to the query destination. At this time, if the inquiry source does not have the unicast address of the inquiry destination and the subject name is FQDN or the host name, the node name is a Node Information group address (hereinafter, referred to as an NI group address) created as follows. Let the link-local scope multicast address be the destination address. This example will be described with reference to FIG. Prior to the description, a method of creating an NI group address will be described first.
[0016]
That is, the host name is passed through a one-way hash function (MD5 (R. Rivest, “The MD5 Message-Digest Algorithm”, RFC1321, April 1992 in draft)) to obtain 128-bit data. A one-way hash function is a function for which it is difficult to find y such that h (x) = h (y) given a function h and a certain value x of its domain. Furthermore, there is a collision-resistant hash function, which is given a function h, and it is difficult to find a pair of values (x, y) such that h (x) = h (y). Function. Both are often referred to collectively as one-way hash functions, and once again follow that convention. In other words, a one-way hash function means that it is difficult to calculate original data from a data sequence generated using this function, and that a data sequence generated using this function from different original data A and B matches. It is a rare function.
[0017]
The one-way hash function is described in, for example, Chapter 12 of “Modern Cryptography” (written by Tatsuaki Okamoto and Hiroshi Yamamoto, Sangyo Tosho Co., Ltd., Mathematics in Information Science, ISBN4-7828-5353-X C3355), and cryptography. Since the related books have detailed explanations, detailed explanations are omitted.
[0018]
A prefix of “FF02: 0: 0: 0: 0: 0 :: / 96” is added to the first 32 bits of the 128 bits to create a multicast address. The created multicast address is used as the NI group address. The inquiry destination receiving the NI Query checks the transmission destination address of the NI Query, and the unicast address, anycast address of the inquiry destination, and the link-local scope multicast address (including the NI group address) in which the inquiry destination participates. If none of the above, discard the packet. Otherwise, the contact determines whether to reply according to the policy, and returns the name or unicast address according to the request described in the NI Query.
[0019]
Here, it is assumed that a device using a subject name in the draft mechanism is used to find a device in link local, perform name resolution only between the devices, and perform direct communication between the devices.
[0020]
The easiest thing to guess is that each device has a common Subject name, apart from the host name (or FQDN), so that each device has a common NI group address and forms a group. For example, as shown in FIG. 12, if there are a plurality of devices 1-a @ e in the same link local 2 and the device 1-a @ c has a subject name of "xxxxxx", the NI When the group address is created, the device has the same NI group address created from the subject name “xxxxxx”. Here, 3 indicates the range of the device group having the subject name “xxxxxx”. By performing name resolution using this NI group address as the transmission destination address, it becomes possible to obtain the host names (or FQDN) and the unicast addresses of all the devices having the subject name “xxxxxx”.
[0021]
Here, for example, the device 1-a is a digital camera, the device 1-b is a printer, and a unique protocol capable of directly transmitting image data in the digital camera (1-a) to the printer (1-b) for printing. If the device 1-a and device 1-b are installed, printing can be performed without a personal computer or the like, simply by the user pressing the unique protocol start button of the device 1-a and instructing the start of the unique protocol. It becomes.
[0022]
That is, by discovering a device having the same subject name and obtaining a unicast address for the device, it is possible to directly communicate between the devices and start, execute, and control an arbitrary protocol such as a proprietary protocol. It becomes possible.
[0023]
[Problems to be solved by the invention]
However, if there are devices that can directly communicate with an arbitrary protocol but there are many devices with the same Subject name in the link local, it takes time to identify the other party. In theory, there may be up to about 2 64 devices in the link local due to the specification of IPv6. For example, suppose that there are 100 devices having the same subject name, and if only two of them are combinations that can communicate with any protocol, the device that wants to start an arbitrary protocol queries the worst 99 devices with any protocol. To check whether communication is possible with an arbitrary protocol.
[0024]
Therefore, it is desirable to narrow down devices that can perform communication in advance.
[0025]
As a method of narrowing down, it is conceivable that each device has a plurality of subject names. For example, in FIG. 13, the device 1-a has two subject names “xxxxxx” and “digitalcamera”, the device 1-b has two subject names “xxxxxx” and “printer”, and the device 1-c has “xxxxxx”. The device 1-d has the subject name of "digitalcamera", the device 1-e has the subject name of "printer", and has the NI group address created from each subject name according to the draft. In this case, a range 4 of a device group having a subject name of “digitalcamera” and a range 5 of a device group having a subject name of “printer” can be defined.
[0026]
As before, the device 1-a is a digital camera, the device 1-b is a printer, and any image data in the digital camera (1-a) can be directly transmitted to the printer (1-b) and printed. If the device 1-a wants to find the device 1-b, the following protocol can be found.
[0027]
That is, the device 1-a makes an inquiry with the NI group address created from the subject name "xxxxxx", and creates a list of devices having the subject name "xxxxxx". Similarly, an inquiry is made with the NI group address created from the subject name "printer", and a list of devices having the subject name "printer" is created. By ANDing the two lists, devices can be narrowed down, and the number of inquiries and checks made using an arbitrary protocol is reduced. To further narrow down the list, it is possible to further increase the number of subject names and create a list.
[0028]
However, in the case of the above method, for example, when there are N Subject names, it is necessary to generate and manage N separate lists. In addition, in order to generate the list, the NI group address is obtained from the Subject name. There is a problem that the operation of generating and inquiring must be performed N times. Further, there is a problem that a large storage area for the list is required.
[0029]
Even with embedded devices, home appliances have very strict requirements for computer resources, so the number of inquiries is reduced, the storage area for lists is reduced, the demand for computer resources is reduced, and devices are quickly discovered and communicated. There is.
[0030]
The present invention has been made in view of the above-described problems, and has as its object to enable a device that does not know the address of a communication partner to efficiently discover the communication partner and communicate in an environment where there is no DNS server. And
[0031]
[Means for Solving the Problems]
In order to achieve the above object, the present invention relates to a device discovery communication device that discovers a non-device discovery communication device connected via a network, and combines one or more character strings by combining a plurality of element character strings. Generating a character string means for generating, a network address generating means for generating a network address from the one or more character strings, and transmitting a packet describing information of the device discovery communication device using the network address as a destination address Means, and a receiving means for receiving a reply packet corresponding to the packet, wherein a non-device discovery communication device is found by the reply packet.
[0032]
A non-device discovery communication device connected to the device discovery communication device via a network, wherein the character string generation means generates one or more character strings by combining a plurality of element character strings; A network address generating means for generating a network address from the character string, a receiving means for receiving a packet transmitted from the device discovery communication device, and a destination address of the packet, and generating the network address from the one or more character strings. Transmitting means for transmitting a reply packet describing information of the non-device discovery communication device in accordance with the result of comparison with the network address.
[0033]
BEST MODE FOR CARRYING OUT THE INVENTION
(First Embodiment)
In the present embodiment, a mechanism will be described in which a host name is set in advance for a device, a Subject name is extracted from the host name, and the device is quickly specified.
[0034]
FIG. 1 is a diagram illustrating a network according to the present embodiment. In the present embodiment, the device 1-a is a digital camera, and the device 1-b is a printer. The network 2 is a LAN (Local Area Network). Although the type of the network 2 is a LAN, the type is not particularly limited. There is no problem if communication is possible, such as Ethernet (R), IEEE802.11, and Bluetooth. However, it is necessary to perform communication using a multicast address and communication using a unicast address.
[0035]
In FIG. 1, the device discovery communication device (device 1-a) extracts and combines elements from a first name (xxxxxx-digitame-a20-dpro-1234) composed of a plurality of elements (five elements). Generate a first character string (FIG. 6). The device discovery communication device (device 1-a) generates a first group address from the first character string, and transmits a first packet (NI Query packet) using the first group address as a destination address.
[0036]
The non-device discovery communication device (device 1-b) extracts and combines elements from a second name (xxxxxx-printer-s300-dpro-5678) composed of a plurality of elements (five elements) to form a second character. A column (FIG. 7) is generated, and a second group address is generated from the second character string. If the destination address of the received first packet (NI Query packet) matches the second group address, the non-device discovery communication device (device 1-b) transmits the information of the non-device discovery communication device (device 1-b). The second packet (NI Reply packet) including the reply is returned to the device discovery communication device (device 1-a).
[0037]
The device discovery communication device (device 1-a) receives the second packet (NI Reply packet), and uses the information in the second packet (NI Reply packet) as a non-device discovery communication device (device 1-a). Communicate with
[0038]
The plurality of elements include, for example, a manufacturer name indicating a device manufacturer, a protocol name indicating a usable communication protocol, and the like. The devices 1-a and 1-b combine these elements to generate first and second character strings (for example, those obtained by connecting a manufacturer name and a protocol name), and perform an operation using a one-way hash function. A result is obtained, and a predetermined prefix is added to a predetermined part of the operation result to generate first and second group addresses.
[0039]
In the present embodiment, a mode in which the device 1-a and the device 1-b use Internet Protocol Version 6 as a communication protocol and the group address is a Node Information group address will be described.
[0040]
FIG. 2 is a diagram illustrating a configuration of the device 1-a. The CPU 201 controls the entire operation of the device 1-a. The RAM 202 is a temporary storage device, and the ROM 203 is a read only memory in which non-erasable data such as a program is incorporated. The network interface 204 is an interface used when the device 1-a transmits and receives data to and from an external device. The network interface 204 connects the network 2 and transmits and receives data to and from the device 1-b via the network 2. The bus 205 is an internal bus that connects each module. The image data generation unit 206 refers to a module that generates color data from outside using a light receiving element such as a CCD through a lens and generates image data such as JPEG. There are many other components such as an external storage element (such as a flash memory) and a flash as components of the digital camera, but a description thereof is omitted.
[0041]
FIG. 3 is a diagram illustrating a configuration of the device 1-b. The CPU 301 controls the entire operation of the device 1-b. The RAM 302 is a temporary storage device, and the ROM 303 is a read only memory in which non-erasable data such as a program is incorporated. The network interface 304 is an interface used when the device 1-b transmits and receives data to and from an external device. The network interface 304 connects the network 2 and transmits and receives data to and from the device 1-a via the network 2. Since the device 1-b is a printer, it is used mainly for receiving print data, control commands, and the like. The bus 305 is an internal bus that connects each module. The print unit 306 is a module that prints the received print data on paper or the like.
[0042]
The network interfaces 204 and 304 in FIGS. 2 and 3 are not particularly limited, but need to be connectable to the network 2.
[0043]
For the device 1-a, “xxxxxx-digitame-a20-dpro-1234” is set as the host name in the ROM 203, and for the device 1-b, “xxxxxx-printer-s300-dpro-5678” is set in the ROM 303 in advance. Suppose you have The host name is assumed to be set by the manufacturer before shipping the product. Also, the host name is desirably 63 bytes or less.
[0044]
Here, the structure of the host name will be described. In each of the devices 1-a and 1-b, the host name is configured in the order of "manufacturer name-product genre-product name-protocol name-serial number", and "-" (hyphen) is a separator character. . Note that this structure is merely an example. Although the fourth element (dpro) of the host name in the present embodiment is a protocol name, for example, it may be a character string indicating the type or group of the image format or a character string indicating the type of security. Other examples will be described in later embodiments. In short, there is no problem if the host name is composed of several character strings and the delimiter can be identified. It is assumed that the data of the host name is recorded in the ROM 203 and the ROM 303, respectively.
[0045]
The device 1-a and the device 1-b will be described with the device 1-a as a start side.
[0046]
The device 1-a operates according to the flowchart shown in FIG. This flowchart shows a part of the program stored in the ROM 203. The CPU 201 reads out this program from the ROM 203 and controls each module according to this program. Under this control, the device 1-a performs the operation shown by the flowchart in FIG.
[0047]
The device 1-a starts the operation according to the present embodiment when an event such as pressing of a device discovery button or connection to the network 2 occurs (S401). In S402, the CPU 201 reads the host name from the ROM 203 and extracts an element. In the present embodiment, since the host name is “xxxxxx-digitame-a20-dpro-1234”, five elements of “xxxxxx”, “digitalname”, “a20”, “dpro”, and “1234” are extracted. The extracted elements are temporarily stored in the RAM 202.
[0048]
In step S403, a character string for the NI group address is generated by combining the elements. The combination of elements indicates an arbitrary combination of elements such as “xxxxxx” and “dppro”, “xxxx”, “digicame”, “a20”, and “dppro”. In the present embodiment, it is assumed that a list as shown in FIG. The list in FIG. 6 is held, for example, in a linear list structure. Here, FIG. 6 shows four character strings from the top (in the order of reference) such as “xxxxxxdigicamea20dpro”, “xxxxxxdigicamedpro”, “xxxxxxdpro”, and “xxxxxx”. In actual use, it is useful to generate the following two from “xxxxxxdppro”.
[0049]
Now, in S404, it is checked whether all combinations of specified elements have been tried. Here, the combination of prescribed elements indicates the list in FIG. Since no attempt has been made, the result is NO, and the process transits to S405. In S405, an NI group address is generated. The generation method is basically the same as that of the draft. However, it applies to any of the character strings generated in S403 instead of the host name. That is, the character string is passed through a one-way hash function to obtain 128-bit data. A prefix “FF02: 0: 0: 0: 0: 2 :: / 96” is added to the first 32 bits of the 128 bits to generate a multicast address, which is used as the NI group address. Here, it is assumed that the character string at the top of the list in FIG. 6 is applied. That is, it is applied to “xxxxxxdigicamea20dpro”.
[0050]
Next, in S406, the subject name is put into the NI Query packet, and the packet is transmitted from the network interface 204 to the network 2 with the generated NI group address as the transmission destination. Here, a host name is applied to the subject name. In the present embodiment, the NI group address is generated immediately before the transmission of the NI Query packet. However, in S403, each NI group address is generated immediately after the character string for the NI group address is generated. There is no problem if you keep it. However, extra time and a storage area for generating the NI group address are required.
[0051]
In S407, it is checked whether there is a reply to the previously transmitted NI Query packet. The case where there is no reply is the case where there is no device participating in the previous NI group address or the case where no reply is made even if there is. In the case of the present embodiment, if a certain time has elapsed and there is no reply during that time, it is considered that there has been no reply. If there is no reply, the process proceeds to S404. If there is no reply, the process proceeds to S408. In the present embodiment, it is assumed that there is no reply to the NI group address generated from “xxxxxxdigicamea20dpro”. Since there is no reply, the process transits to S404.
[0052]
In S404, since there is a character string next to “xxxxxxdigicamea20dpro”, the result is NO, and the next character string “xxxxxxdigicamedpro” is applied. In steps S405 and S406, an NI group address is generated from “xxxxxxdigitizedpro” and transmitted as described above. In this embodiment, it is assumed that there is no reply in S407. The process transits to S404 again, and since there is the next character string “xxxxxxdpro”, the result is NO, and transmission is performed in the same manner as S405 and S406.
[0053]
In S407, it is assumed that there is a reply this time. Since there is a reply, “YES” is determined in S407, and the process transits to S408. In step S408, it is checked whether the NI Reply packet is correct. Here, "correct" indicates whether the packet format conforms to the rules and whether the packet format is a response to the NI Query transmitted by itself. In S408, if it is not correct, the answer is NO, the process transits to S409, performs appropriate error processing, transits to S412, and ends. In step S408, if the received NI Reply packet is correct, the determination is YES, the process transits to S410, performs the process at the proper time, further transits to S411, executes an arbitrary protocol (it does not need to be performed), and transits to S412. And ends.
[0054]
Next, the operation of the device 1-b, that is, the operation of the device 1-b on the receiving side will be described with reference to FIG. This flowchart shows a part of the program stored in the ROM 303. The CPU 301 reads out this program from the ROM 303 and controls each module according to this program. The device 1-b performs the operation shown in the flowchart of FIG. 5 by this control.
[0055]
The device 1-b starts S501 by, for example, turning on the power. In step S502, the CPU 301 reads the host name from the ROM 303 and extracts an element. In the present embodiment, since the host name is “xxxxxx-printer-s300-dpro-5678”, the five elements “xxxxxx”, “printer”, “s300”, “dpro”, and “5678” are extracted. The extracted elements are temporarily stored in the RAM 302.
[0056]
In step S503, a character string for the NI group address is generated by combining the elements. In the present embodiment, a list as shown in FIG. 7 is generated in the RAM 302. The list in FIG. 7 is held in, for example, a linear list structure. Here, FIG. 7 shows four character strings from the top (in the order of reference) such as “xxxxxxprinters300dpro”, “xxxxxxprinterdpro”, “xxxxxxdppro”, and “xxxxxx”, but the first two are character strings given as examples only for explanation. In actual use, it is useful to generate the following two from “xxxxxxdppro”.
[0057]
Next, in S504, an NI group address is generated from the character string for the NI group. The generation method of the NI group address is the same as the generation method of S405 described above, but the character string is that of the list in FIG.
[0058]
Now, it is assumed that the NI Query packet has been received (S505). In step S506, it is checked whether the NI Query packet is correct. Here, it is a check whether the NI Query packet conforms to the rules. If it is not correct, the answer is NO, the process transits to S513, performs error processing, and ends (S514). If it is correct, the determination becomes YES, and the process proceeds to S507.
[0059]
In step S507, it is determined whether the NI group address that is the destination address of the received NI Query packet matches the NI group address generated in step S504. In the case of the present embodiment, the NI-Query packet to which the device 1-a is the destination of the NI group address generated from "xxxxxxdigitalcamera20dpro" and "xxxxxxdigitalmedpro" is NO, and the answer from "xxxxxxdpro" and "xxxxxx" is YES. . In the present embodiment, it is assumed that “xxxxxxdigicamea20dpro” is transmitted first.
[0060]
Since the list does not match the NI group address generated from “xxxxxxprinters300dpro” in the list shown in FIG. 7, the result is NO here, and the process transits to S512. In S512, it is determined whether all combinations of the specified elements have been tried. If an attempt has been made, the process transits to S513 to perform error processing, and ends in S514. If no attempt has been made, the process returns to step S507, and a comparison is made with the NI group address generated from a different character string. Then, S507 and S512 are repeated to determine whether any one of the plurality of NI group addresses generated in S504 matches.
[0061]
In the case of the present embodiment, the received NI group address generated from “xxxxxxdigitalamea20dpro” does not match any of the NI group addresses generated from “xxxxxxprinterdpro”, “xxxxxxdppro”, and “xxxxxx”, and thus S513 and S514. Transitions and ends.
[0062]
Next, similarly, in the present embodiment, an error occurs in the present embodiment when the device 1-a receives the NI Query packet generated from “xxxxxxdigitizedpro” and using the NI group address as the destination address.
[0063]
When the device 1-a transmits an NI Query packet in which the NI group address generated from “xxxxxxdpro” is the destination address, the following operation is performed. In S507, since it matches the NI group address generated by the device 1-b, the result is YES, and the process transits to S508.
[0064]
In S508, it is determined whether or not to respond to the request for the received NI Query packet. This means that, for example, the NI Query packet requests that the global unicast address (of the device 1-b) be included in the NI Reply packet upon return, but the global unicast address is set as the policy (setting) of the device 1-b. If you do not want to return the cast address, you will not respond. There is also a policy in which a subject name included in an NI Query packet is checked, and the request is fulfilled only when the subject name satisfies a certain requirement.
[0065]
When not responding, there is a case where a NI Reply packet is returned but the requested data is not included, and a case where it is not returned. In S508, the answer is NO in this case. After performing error processing in accordance with the policy in S513, the process ends in S514.
[0066]
In the present embodiment, it is assumed that the host name is requested in the request for the NI Query packet, and that there is no problem as a policy of the device 1-b. At that time, YES is determined in S508, and the process proceeds to S509. In step S509, an NI Reply (that includes the host name of the device 1-b) is generated in accordance with the received request for the NI Query, and the source address of the NI Query is returned as the destination address of the NI Reply. Here, the source address of the NI Reply is generally a link local address, but may be another address. However, it is necessary to decide with consideration for policies and security. Then, in S510, a process at a proper time is performed, and in S511, an arbitrary protocol is prepared for execution (it may be executed, depending on an arbitrary protocol type), and the process ends in S514. The order of S509 and S510 may be reversed. In the process of S510, for example, the source address of the NI Query that has responded to the request is stored in the RAM 302.
[0067]
It should be emphasized that in normal use, it is assumed that the generation of the NI group address from "xxxxxxdpro" is performed first. As a result, the device 1-a can discover a communication partner that can communicate with the device using the protocol name “dpro” as an intermediary in one step. In the method described in "Problems to be Solved by the Invention", each NI group address is generated from N character strings (Subject names) and each inquiry is made, and N steps are required. AND between the further lists. In this regard, in this embodiment, it can be said that the present embodiment is quick (completes with at most one query) with a small amount of computer resources (N lists are unnecessary and there is no need to take AND).
[0068]
The operation on the transmitting side and the receiving side in the embodiment of the present invention has been described above.
[0069]
Here, by performing appropriate processing in S410 and S510, it becomes possible to perform various processing in any protocol in S411 and S511.
[0070]
Next, as a further application example of the first embodiment of the present invention, its processing will be described with a specific example.
[0071]
Now, as described in the first embodiment, communication is established between the devices 1-a and 1-b by the NI group address generated from the character string “xxxxxxdpro”. As a result, the device 1-a can obtain the data requested by the NI Query (for example, the host name or the link local address of the device 1-b), and the device 1-b obtains the subject name and address ( NI Query source address). Here, the subject name is the host name “xxxxxx-digitame-a20-dpro-1234”.
[0072]
In step S410, the source address (in most cases, a link local address) and the host name of the NI Reply packet and the host name are recorded in the RAM 202. And record it in
[0073]
In this case, the device 1-a and the device 1-b are a group of devices by the NI group address generated from the character string “xxxxxxdpro”, that is, the host name of the group of the manufacturer “xxxxxx” and the protocol “dpro”. You now know the unicast address.
[0074]
Thereby, any protocol can be started.
[0075]
Hereinafter, as an example of starting and executing an arbitrary protocol, a mechanism for starting and executing a unique protocol for realizing direct printing from the device 1-a (digital camera) to the device 1-b (printer) will be described. In this example, the portions shown in S411 in FIG. 4 and S511 in FIG. 5 are described in order to specifically show. Direct printing means that when printing image data in a digital camera, the digital camera and printer can directly communicate with each other when temporarily storing image data on a personal computer and printing from the personal computer to the printer. Indicates that printing is performed without the use of a personal computer. Examples of products that realize direct printing include a combination of IXY DIGITAL 300a, 200a (digital camera) manufactured by Canon Inc. and BJ895PD, BJ535PD (printer).
[0076]
Now, it is assumed that in the device 1-a, image data captured and generated by the image data generation unit 206 in FIG. In the device 1-a, a direct print button is pressed. In response to this, the unique protocol shown in FIG. 8 is started. That is, in the device 1-a, the process is completed up to S410 in FIG. 4, and when the direct print button is pressed, an arbitrary protocol in S411 is executed. The arbitrary protocol in S411 in FIG. 4 is the unique protocol described in FIG.
[0077]
The CPU 201 of the device 1-a loads the program for the unique protocol loaded in the ROM 203, and starts the unique protocol (S801). By the above mechanism, the device 1-a acquires the host name and the link local address of the device 1-b. The device 1-a selects the device 1-b from the list of discovered devices. In the first mode, this list is displayed in S410 of FIG. In the case of the present embodiment, since the discovered device is only the device 1-b, the device 1-b is automatically selected. Here, when a plurality of devices have been found, the user may be allowed to select which device performs direct printing. Alternatively, a unique protocol may be tried for each device without making a selection.
[0078]
When started, the CPU 201 of the device 1-a communicates with the device 1-b using the link local address of the device 1-b recorded in the RAM 202 as a transmission destination and its own link local address as a transmission source as in S802. A character string open dpro, which is a command for establishing a connection, is transmitted through the network interface 204.
[0079]
The device 1-b receives the packet including the character string open dpro shown in S802 through the network interface 304, and records the packet in the RAM 302. The CPU 301 of the device 1-b starts the program for the unique protocol stored in the ROM 303, and compares the source address of the received packet with the source address stored in the RAM 302 in S510 of FIG. If they match, it is determined that the device is one that solves the unique protocol, the start of the connection is permitted (S803), and a character string ok is returned to the device 1-a as in S804. If they do not match, appropriate processing such as discarding the packet or returning a character string indicating an error is performed. Note that the device 1-b executes the processes up to S510 in FIG. 5, and upon receiving the character string open dpro in S802 in FIG. 8, executes the arbitrary protocol in S511 in FIG. The arbitrary protocol in S511 of FIG. 5 is a unique protocol described in FIG. Here, the program for the unique protocol may be activated when the device 1-b is activated.
[0080]
The device 1-a receives the character string (ok) shown in S804 from the device 1-b, and confirms connection establishment. After that, in order to grasp the state of the device 1-b in more detail, a character string get status indicating a state information acquisition request is transmitted as in S806 (S805).
[0081]
The device 1-b receives the character string get status shown in S806 through the network interface 304 and records it in the RAM 302. The CPU 301 of the device 1-b passes the received character string to the unique program, compares the received character string with a command in the unique program, determines that the character string indicates a status information acquisition request, and indicates its own state information as in step S808. The character string is returned (S807). Here, the character strings a300, a4, color, and idle shown in S808 are, in order from the left end, the product name of the device 1-b, the corresponding paper size, whether it is color or black and white, and the current state (idle is printed. Is not shown).
[0082]
The device 1-a receives the character string shown in S808. Then, the character string is applied to an analysis program in the unique protocol, and the status information of the device 1-b is recorded in the RAM 202. The character strings exchanged between the devices are only examples. The device 1-a passes the status information of the device 1-b stored in the RAM 202 to the original program, and if there is no problem, generates a character string of the print request and, as in S810, prints the character string print of the print request and the image. The data is transmitted (S809).
[0083]
The device 1-b receives the character string and the image data shown in S810 through the network interface 304, and temporarily records them in the RAM 302. When the character string shown in S810 is passed to the unique program and compared with the command to determine that the command is a print request command (S811), the character string (ok) indicating that the print request has been received is sent to the device as in S812. Reply to 1-a. Thereafter, the image data is read from the RAM 302, and the data is transmitted to the print unit 306, and the print unit 306 performs printing from the image data. When the printing is completed (S813), the CPU 301 returns a character string “done” indicating the end of the printing to the device 1-a as in S814.
[0084]
The device 1-a receives the character string “done” indicating the end of printing in S814, determines to end the unique protocol (S815), and transmits a character string “close dpro” requesting the end of the unique protocol as in S816. The device 1-b interprets the character string close dpro in S816, returns a character string (ok) indicating that the end of the unique protocol has been received as in S818, and ends the processing (S817). As described above, the unique protocol which is an arbitrary protocol in S411 of FIG. 4 and S511 of FIG. 5 ends. With the above mechanism, direct printing was realized.
[0085]
As described above, it has been shown that an arbitrary protocol can be started and executed by taking a proprietary protocol called direct printing as an example. Note that the unique protocol described with reference to FIG. 8 is merely an example.
[0086]
As described above, a mechanism has been described in which elements are extracted from a host name, devices that can communicate with an arbitrary protocol are narrowed down by an NI group address generated from a combination of the elements, and an arbitrary protocol can be started quickly.
[0087]
(Second embodiment)
In the present embodiment, a plurality of Subject name elements are set in advance in a device, and a plurality of Subject name elements are combined to form a Subject name. In an environment where there is no DNS server, the computational resources are small and the communication partner is small. A mechanism that allows a device that does not know the address of a device to efficiently find a communication partner and perform communication will be described.
[0088]
This embodiment is different from the first embodiment only in portions corresponding to S402 and S403 in FIG. 4 and S502 and S503 in FIG. 5, and the operation of the other portions is different from that of the first embodiment. Absent. Therefore, a flowchart diagram in which only that portion is changed is shown, and only the changed point will be described.
[0089]
FIG. 9 is a diagram in which portions corresponding to S402 and S403 in FIG. 4 are changed. The network configuration is common to FIG. 1 and the device configuration is common to FIGS. That is, neither the network configuration nor the device configuration is basically the same as in the first embodiment.
[0090]
In S401 of FIG. 9, after the start, the process proceeds to S901. The subject name element is, for example, a character string such as “xxxxxx”, “digicame”, “a20”, “dppro”, and “1234” in the device 1-a. However, this is different from the first embodiment in that it is not extracted from the host name as in the first embodiment, but is a character string preset in the ROM 203 independently of the host name.
[0091]
In step 901, the CPU 201 reads out a subject name element from the ROM 203 and temporarily records it in the RAM 202. Then, in step S902, a character string for the NI group address is generated by combining the subject name elements according to a predetermined algorithm. Here, the character string generated in S902 is, for example, as shown in FIG. The processing after S902 may be the same operation as the processing after S404 in FIG.
[0092]
On the other hand, in the device 1-b, the part shown in FIG. 10 is different from the operation shown in FIG. The device 1-b transits to S1001 after starting in S501 in FIG. In the present embodiment, the subject name element in the device 1-b is a character string such as “xxxxxx”, “printer”, “s300”, “dpro”, and “5678”. As in the first embodiment, this character string is not extracted from the host name as in the first embodiment, but is a character string preset in the ROM 303 independently of the host name in the first embodiment. Different from form.
[0093]
In step S <b> 1001, the CPU 301 reads out a subject name element from the ROM 303 and temporarily records it in the RAM 302. In step S1002, a character string for the NI group address is generated by combining the subject name elements according to a predetermined algorithm. Here, the character string generated in S1002 is, for example, as shown in FIG. The processing after S1002 may be the same operation as the processing after S504 in FIG.
[0094]
After such an operation, an arbitrary protocol can be started quickly as shown in the first embodiment.
[0095]
Although not described in detail in the first embodiment, when the Subject name to be included in the NI Query is used for checking a device or the like, the host name is used as the Subject name as in the first embodiment. It may be preferable to use a character string for the NI group address instead of using the name. This is a problem that depends on what processing is performed by each device using the subject name, and is not specified here. However, the present invention is applicable to any of a host name (or FQDN) as a subject name and a character string for an NI group address.
[0096]
(Third embodiment)
In the first embodiment, it is assumed that the host name is set in the device in advance, but the character string serving as the host name may be recorded in another place.
[0097]
For example, when a device separately downloads application software via a network, and the application software includes a character string serving as a host name, it may be applied. Of course, instead of the downloaded application software, application software installed on the device using a medium such as a CD, a memory card, or a floppy disk may be used. Further, a character string serving as a host name may be received from another device via a network. In other words, the present invention is applicable if the host name can be obtained by using any means.
[0098]
(Fourth embodiment)
In the second embodiment, it is assumed that the character string serving as the subject name element is set in the device in advance, but the character string serving as the subject name element may be located in another part of the device or outside the device. It may be recorded. For example, when a device separately downloads application software via a network and the application software includes a character string serving as a subject name element, the character string may be applied. Of course, instead of the downloaded application software, application software installed on the device using a medium such as a CD, a memory card, or a floppy disk may be used. Further, a character string serving as a subject name element may be received from another device via a network. That is, the present invention is applicable as long as a character string serving as a subject name element can be acquired by using any means.
[0099]
(Fifth embodiment)
In the first embodiment, the structure of the host name is configured in the order of "manufacturer name-product genre-product name-protocol name-serial number", and "-" (hyphen) is a separator character. It was said that. However, this is only an example.
[0100]
Hereinafter, examples of other host name structures will be described.
[0101]
One is a method of separating character strings. First, in the first embodiment, “-” (hyphen) is used as a separator character, but another character may be used. However, if it is necessary to register the host name in the DNS server, DNS-related RFCs (K. Harrensteen, M. Stahl, E. Feinler, “DOD INTERNET HOST TABLE SPECIFICATION”, RFC952, October 1985 and R.K. Braden, "Requirements for Internet Hosts-Application and Support", RFC 1123, October 1989).
[0102]
In addition, there is a method of determining the number of characters in advance instead of using a separator character. For example, the manufacturer name is 5 characters, the product genre is 5 characters, the product name is 10 characters, the protocol name is 10 characters, the serial number is 20 characters, and so on. With this definition, it is possible to decompose the host name into elements without using separate characters.
[0103]
Next, there is the order of the elements of the host name. In the first embodiment, the manufacturer name, the product genre, the product name, the protocol name, and the serial number are used in this order. However, the order is not limited to this, and there is no problem if the specified order is determined. In addition, for example, it is specified that a unique character string such as “mk” is attached at the beginning of a character string for a manufacturer name and “pg” is assigned for a product genre, and does not match the beginning of character strings of other elements. It is not necessary to specify the order of the elements if it is defined as follows.
[0104]
Next, there is a point to specify what should be included as an element of the host name. In the first embodiment, an example has been described in which a host name is given to include “manufacturer name”, “product genre”, “product name”, “protocol name”, and “serial number” as elements. However, if you only know the product from the serial number, and therefore the function that the product has, you can of course use only the "serial number" as the host name if it does not match the host name of other products . If it is determined in advance that a group consisting of a product group that matches with a protocol is targeted, a host name including a “manufacturer name”, a “protocol name”, and a “serial number” may be used. Here, it is preferable to include a “serial number” in relation to the host name.
[0105]
In the first embodiment, the protocol name is one “dpro”. However, for example, “dpro-sspro” uses a different delimiter character such as “−” for the element. It is also possible to include the protocol name. Conversely, it may be defined that when the element of the protocol name is only "-", it indicates that the protocol is not supported at all.
[0106]
Further, elements other than “manufacturer name”, “product genre”, “product name”, “protocol name”, and “serial number” may be added. For example, it is possible to use a device-related element such as "image format", "file extension name", "security function", "device version", or "other device specifications" as an element.
[0107]
Thus, for example, if a host name is composed of elements such as "manufacturer name", "protocol name", "image format", and "serial number", devices that can transmit and receive data with a common image format and protocol between devices of the same manufacturer Groups can be configured.
[0108]
In addition, if it is "manufacturer name", "protocol name", "security function", "serial number", which security function is supported by the partner device, such as supported encryption type, key exchange protocol type and policy, certificate Can be grasped. Therefore, for example, after securing a secure communication path between certain devices (for example, using IPSec), it is possible to execute an arbitrary protocol and exchange highly confidential data.
[0109]
In addition, in FIGS. 6 and 7, the character string for the NI group address is generated so as to include the maker name. However, if a group that does not depend on the maker name is assumed, it is not necessary to include the maker name. This is effective, for example, when it is desired to define a group of devices according to a protocol, security, and other standard specifications that can be commonly used by several manufacturers.
[0110]
Further, in the first embodiment, an example has been described in which the link local address of the device to be communicated with is acquired and then the unique protocol is executed. However, the unique protocol may be used. For example, a standard protocol defined by RFC such as HTTP or FTP may be used. That is, any protocol can be started and executed.
[0111]
(Sixth embodiment)
In the “fifth embodiment”, a case where a host name is used has been described. However, a character string different from the host name as shown in the second and fourth embodiments is prepared. The same is true when doing so.
[0112]
Further, in the "fifth embodiment", there is a restriction that, for example, the host name is desirably 63 characters or less as in the "first embodiment" due to the use of the host name. As described in the embodiment, if a character string for the NI group address independent of the host name is used, there is no restriction on the host name.
[0113]
As an example of not being restricted by the host name, a case where element names indicating, for example, an input device and an output device are used will be described.
[0114]
For example, there are two devices (devices 1-a and 1-b) that record three element character strings, "xxxxxx", "imagein", and "imageout", while one (device 1-a) is a digital camera and another On the other hand, it is assumed that (device 1-b) is a printer. It is assumed that “imagein” indicates an input device and “imageout” indicates an output device.
[0115]
Here, it is assumed that the digital camera (device 1-a) generates an NI group address from a character string “xxxxxximageimageout” and selects “xxxxxximage” as a character string to be included in the NI Query. It is assumed that the printer (device 1-b) generates an NI group address from the character string “xxxxxximageimageout” and selects “xxxxxximageout” as a character string to be inserted into the NI Reply.
[0116]
In this mode, the two devices (devices 1-a and 1-b) can be found because they have the same NI group address, and the printer (device 1-b) can communicate with the communication partner from the character string "xxxxxximage" in the NI Query. The device (device 1-a) can be determined to be an input device, and the digital camera (device 1-a) can determine that the communication partner (device 1-b) is an output device from the character string “xxxxxximageout” in the NI Reply. . In this case, an arbitrary protocol can be started more quickly to perform direct printing or the like.
[0117]
(Other embodiments)
In the above-described embodiment, it has been described that the process is started when an event such as a certain start factor is pressed, for example, a device discovery button is pressed, the device is connected to the network 2, or the power is turned on. May be started at any time as long as it is connected to the network 2 and is in a state where it can communicate with other devices and before execution of an arbitrary protocol.
[0118]
In the above embodiment, the device transmitting the NI Query packet and the device receiving the NI Query packet execute different operation flowcharts as shown in FIGS. 4 and 5. The function of transmitting and receiving the NI Query packet as shown in (1) may be or may be implemented in a single device. In this case, the portion for generating and managing the character string for the NI group address and the portion for generating the NI group address from the character string for the NI group address can be shared.
[0119]
In the above embodiment, the software program for realizing the above-described functions is operated using the device or the CPU. However, the present invention is achieved by a logic circuit for realizing all or a part of the functions.
[0120]
In addition, a recording medium storing software program codes for realizing the functions of the above-described embodiments is supplied to the apparatus, and a computer (or CPU) of the apparatus reads and executes the program codes stored in the recording medium. Is also achieved. In this case, the program code itself read from the recording medium implements the functions of the above-described embodiment, and the recording medium on which the program code is recorded constitutes the present invention.
[0121]
As a recording medium for supplying the program code, in addition to the ROM, for example, a floppy (R) disk, a hard disk, an optical disk, a magneto-optical disk, a CD-ROM, a CD-R, a magnetic tape, a nonvolatile memory card, and the like Can be used.
[0122]
When the computer executes the readout program code, not only the functions of the above-described embodiments are realized, but also the OS or the like running on the computer performs the actual processing based on the instruction of the program code. This includes a case where some or all of the functions are performed and the functions of the above-described embodiments are realized by the processing.
[0123]
Further, after the program code read from the recording medium is written into a memory provided in a function expansion board inserted into the computer or a function expansion unit connected to the computer, the function expansion is performed based on the instruction of the program code. This includes the case where the CPU or the like provided in the board or the function expansion unit performs part or all of the actual processing, and the processing realizes the functions of the above-described embodiments.
[0124]
【The invention's effect】
As described above, according to the present invention, it is possible to efficiently find and communicate with a communication partner. Further, there is an effect that a large amount of computer resources (recording resources, computation resources) are not required.
[Brief description of the drawings]
FIG. 1 is a diagram illustrating a network for explaining a first embodiment;
FIG. 2 is a diagram illustrating a configuration of a digital camera that performs a transmission side according to the first embodiment.
FIG. 3 is a diagram illustrating a configuration of a printer that performs a receiving side according to the first embodiment.
FIG. 4 is a flowchart illustrating an operation on the transmission side according to the first embodiment;
FIG. 5 is a flowchart illustrating an operation on the receiving side according to the first embodiment;
FIG. 6 is an example of a list of character strings for an NI group address prepared by a transmitting device.
FIG. 7 is an example of a list of character strings for an NI group address prepared by a receiving device.
FIG. 8 is a diagram showing a state of communication between a transmission-side device and a reception-side device of a unique protocol.
FIG. 9 is a part of a flowchart showing an operation on the transmission side for preparing a character string for an NI group address.
FIG. 10 is a part of a flowchart showing an operation on the receiving side for preparing a character string for an NI group address.
FIG. 11 is a diagram illustrating an FQDN, a host name, and a domain name.
FIG. 12 is a diagram showing a range of a device group participating in one NI group address created from one element.
FIG. 13 is a diagram illustrating a range of a device group that is separately created from a plurality of elements and participates in a plurality of NI group addresses.
FIG. 14 is a diagram showing a range of a device group participating in one NI group address, which is created by combining a plurality of elements.
[Explanation of symbols]
1-a, 1-b equipment
2 Network (link local)

Claims (12)

ネットワークを介して接続された非機器発見通信装置を発見する機器発見通信装置であって、
複数の要素文字列を組み合わせて1つ以上の文字列を生成する文字列手段生成と、
前記1つ以上の文字列よりネットワークアドレスを生成するネットワークアドレス生成手段と、
前記ネットワークアドレスを送信先アドレスとし、機器発見通信装置の情報を記述したパケットを送信する送信手段と、
前記パケットに対する返信パケットを受信する受信手段とを備え、
前記返信パケットにより非機器発見通信装置を発見することを特徴とする機器発見通信装置。
A device discovery communication device that discovers a non-device discovery communication device connected via a network,
Generating a character string means for generating one or more character strings by combining a plurality of element character strings;
Network address generating means for generating a network address from the one or more character strings;
Transmitting means for transmitting a packet describing information of the device discovery communication device, wherein the network address is a destination address,
Receiving means for receiving a reply packet to the packet,
A device discovery communication device that discovers a non-device discovery communication device by the reply packet.
請求項1記載の機器発見通信装置であって、
前記受信手段が、ネットワークに接続された他の機器発見通信装置から送信されたパケットを受信した場合には、前記送信手段は、前記他の機器発見通信装置から送信されたパケットの送信先アドレスを読み出し、前記1つ以上の文字列より生成されたネットワークアドレスとの比較結果に応じて、機器発見通信装置の情報を記述した返信パケットを送信することを特徴とする機器発見通信装置。
The device discovery communication device according to claim 1,
When the receiving unit receives a packet transmitted from another device discovery communication device connected to the network, the transmission unit sets a transmission destination address of the packet transmitted from the other device discovery communication device. A device discovery communication device for reading and transmitting a reply packet describing information of the device discovery communication device in accordance with a comparison result with a network address generated from the one or more character strings.
機器発見通信装置とネットワークを介して接続された非機器発見通信装置であって、
複数の要素文字列を組み合わせて1つ以上の文字列を生成する文字列生成手段と、
前記1つ以上の文字列よりネットワークアドレスを生成するネットワークアドレス生成手段と、
機器発見通信装置から送信されたパケットを受信する受信手段と、
前記パケットの送信先アドレスを読み出し、前記1つ以上の文字列より生成されたネットワークアドレスとの比較結果に応じて、非機器発見通信装置の情報を記述した返信パケットを送信する送信手段とを備えることを特徴とする非機器発見通信装置。
A non-device discovery communication device connected to the device discovery communication device via a network,
Character string generating means for generating one or more character strings by combining a plurality of element character strings;
Network address generating means for generating a network address from the one or more character strings;
Receiving means for receiving a packet transmitted from the device discovery communication device;
A transmission unit for reading a destination address of the packet and transmitting a reply packet describing information of the non-device discovery communication device according to a result of comparison with a network address generated from the one or more character strings. A non-device discovery communication device, characterized in that:
請求項1又は2記載の機器発見通信装置、又は、請求項3記載の非機器発見通信装置であって、
前記文字列生成手段は、ホスト名より抽出した複数の要素文字列を組み合わせて1つ以上の文字列を生成することを特徴とする機器発見通信装置、又は、非機器発見通信装置。
The device discovery communication device according to claim 1 or 2, or the non-device discovery communication device according to claim 3,
The device discovery communication device or the non-device discovery communication device, wherein the character string generation unit generates one or more character strings by combining a plurality of element character strings extracted from a host name.
請求項1又は2記載の機器発見通信装置であって、
返信パケットから読み出した情報を元に任意のプロトコルを実行する手段を備え、非機器発見通信装置を発見し、任意のプロトコルを介して通信することを特徴とする機器発見通信装置。
The device discovery communication device according to claim 1 or 2,
A device discovery communication device comprising means for executing an arbitrary protocol based on information read from a reply packet, discovering a non-device discovery communication device, and communicating via the arbitrary protocol.
ネットワークを介して接続された非機器発見通信装置を発見する機器発見プログラムであって、
複数の要素文字列を組み合わせて1つ以上の文字列を生成する文字列生成手順と、
前記1つ以上の文字列よりネットワークアドレスを生成するネットワークアドレス生成手順と、
前記ネットワークアドレスを送信先アドレスとし、機器発見通信装置の情報を記述したパケットを送信する送信手順と、
前記パケットに対する返信パケットを受信する受信手順とを備え、
前記返信パケットにより非機器発見通信装置を発見することを特徴とする機器発見プログラム。
A device discovery program for discovering a non-device discovery communication device connected via a network,
A character string generation procedure for generating one or more character strings by combining a plurality of element character strings;
A network address generation procedure for generating a network address from the one or more character strings;
A transmission procedure of transmitting a packet describing information of the device discovery communication device, with the network address as a destination address,
A receiving procedure for receiving a reply packet to the packet,
A device discovery program for discovering a non-device discovery communication device using the reply packet.
請求項6記載の機器発見プログラムであって、
ネットワークに接続された他の機器発見通信装置から送信されたパケットを受信した場合には、前記他の機器発見通信装置から送信されたパケットの送信先アドレスを読み出し、前記1つ以上の文字列より生成されたネットワークアドレスとの比較結果に応じて、機器発見通信装置の情報を記述した返信パケットを送信することを特徴とする機器発見プログラム。
The device discovery program according to claim 6,
When a packet transmitted from another device discovery communication device connected to the network is received, a destination address of the packet transmitted from the other device discovery communication device is read, and the destination address of the packet is read from the one or more character strings. A device discovery program for transmitting a reply packet describing information on a device discovery communication device according to a result of comparison with a generated network address.
ネットワークを介して接続された機器発見通信装置から受信したパケットに返信パケットを送信する送信プログラムであって、
複数の要素文字列を組み合わせて1つ以上の文字列を生成する文字列生成手順と、
前記1つ以上の文字列よりネットワークアドレスを生成するネットワークアドレス生成手順と、
機器発見通信装置から送信されたパケットを受信する受信手順と、
前記パケットの送信先アドレスを読み出し、前記1つ以上の文字列より生成されたネットワークアドレスとの比較結果に応じて、非機器発見通信装置の情報を記述した返信パケットを送信する送信手順とを備えることを特徴とする送信プログラム。
A transmission program for transmitting a reply packet to a packet received from a device discovery communication device connected via a network,
A character string generation procedure for generating one or more character strings by combining a plurality of element character strings;
A network address generation procedure for generating a network address from the one or more character strings;
A receiving procedure for receiving a packet transmitted from the device discovery communication device;
Reading a destination address of the packet and transmitting a reply packet describing information on the non-device discovery communication device according to a comparison result with a network address generated from the one or more character strings. A transmission program characterized by the above-mentioned.
請求項6又は7記載の機器発見プログラム、又は、請求項8記載の送信プログラムであって、
前記文字列生成手順は、ホスト名より抽出した複数の要素文字列を組み合わせて1つ以上の文字列を生成することを特徴とする機器発見プログラム、又は、送信プログラム。
An apparatus discovery program according to claim 6 or 7, or a transmission program according to claim 8,
The device discovery program or transmission program, wherein the character string generation procedure generates one or more character strings by combining a plurality of element character strings extracted from a host name.
請求項6又は7記載の機器発見プログラムであって、
返信パケットから読み出した情報を元に任意のプロトコルを実行する手段を備え、非機器発見通信装置を発見し、任意のプロトコルを介して通信することを特徴とする機器発見プログラム。
The device discovery program according to claim 6, wherein:
A device discovery program comprising means for executing an arbitrary protocol based on information read from a reply packet, discovering a non-device discovery communication device, and communicating via an arbitrary protocol.
請求項6乃至請求項10の何れか一項に記載のプログラムが記録されたコンピュータ読み取り可能な記録媒体。A computer-readable recording medium on which the program according to claim 6 is recorded. ネットワークを介して接続された第1の装置が第2の装置を発見する機器発見方法であって、
第1の装置が、
複数の要素文字列を組み合わせて1つ以上の第1の文字列を生成する第1の文字列生成手順と、
前記第1の文字列より第1のネットワークアドレスを生成する第1のネットワークアドレス生成手順と、
前記第1のネットワークアドレスを送信先アドレスとし、第1の装置の情報を記述したパケットを送信する送信手順と、
前記パケットに対する返信パケットを受信する受信手順とを行い、
第2の装置が、
複数の要素文字列を組み合わせて1つ以上の第2の文字列を生成する第2の文字列生成手順と、
前記第2の文字列より第2のネットワークアドレスを生成する第2のネットワークアドレス生成手順と、
第1の装置から送信されたパケットを受信する受信手順と、
前記パケットの送信先アドレスを読み出し、前記第2のネットワークアドレスとの比較結果に応じて、第2の装置の情報を記述した返信パケットを送信する送信手順とを行うことを特徴とする機器発見方法。
A device discovery method in which a first device connected via a network discovers a second device,
The first device is
A first character string generation procedure for generating one or more first character strings by combining a plurality of element character strings;
A first network address generation procedure for generating a first network address from the first character string;
A transmission procedure of transmitting a packet describing information of a first device, using the first network address as a destination address;
Performing a receiving procedure for receiving a reply packet to the packet,
The second device is
A second character string generation procedure for generating one or more second character strings by combining a plurality of element character strings;
A second network address generation procedure for generating a second network address from the second character string;
A receiving procedure for receiving a packet transmitted from the first device;
Transmitting the reply address describing the information of the second device in accordance with the result of comparison with the second network address. .
JP2002246929A 2002-08-27 2002-08-27 Communication device, program, recording medium, and device discovery method Withdrawn JP2004088428A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002246929A JP2004088428A (en) 2002-08-27 2002-08-27 Communication device, program, recording medium, and device discovery method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002246929A JP2004088428A (en) 2002-08-27 2002-08-27 Communication device, program, recording medium, and device discovery method

Publications (1)

Publication Number Publication Date
JP2004088428A true JP2004088428A (en) 2004-03-18

Family

ID=32054693

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002246929A Withdrawn JP2004088428A (en) 2002-08-27 2002-08-27 Communication device, program, recording medium, and device discovery method

Country Status (1)

Country Link
JP (1) JP2004088428A (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007201917A (en) * 2006-01-27 2007-08-09 Ricoh Co Ltd Network equipment
JP2007288531A (en) * 2006-04-17 2007-11-01 Canon Inc COMMUNICATION DEVICE AND ITS CONTROL METHOD
JP2008293165A (en) * 2007-05-23 2008-12-04 Nippon Telegr & Teleph Corp <Ntt> ACCESS CONTROL DEVICE, ACCESS CONTROL METHOD, ACCESS CONTROL PROGRAM, AND COMPUTER-READABLE RECORDING MEDIUM CONTAINING THE ACCESS CONTROL PROGRAM
US7627906B2 (en) 2004-08-27 2009-12-01 Ntt Docomo, Inc. Service discovery system, client terminal, service providing device, and service discovery method
JP2010010789A (en) * 2008-06-24 2010-01-14 Canon Inc Information processor, image processor, control method, and program
JP2012118577A (en) * 2010-11-29 2012-06-21 Ird:Kk Illegal domain detection device, illegal domain detection method and program

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7627906B2 (en) 2004-08-27 2009-12-01 Ntt Docomo, Inc. Service discovery system, client terminal, service providing device, and service discovery method
JP2007201917A (en) * 2006-01-27 2007-08-09 Ricoh Co Ltd Network equipment
JP2007288531A (en) * 2006-04-17 2007-11-01 Canon Inc COMMUNICATION DEVICE AND ITS CONTROL METHOD
US8040881B2 (en) 2006-04-17 2011-10-18 Canon Kabushiki Kaisha Communication apparatus and control method of the apparatus
US8867536B2 (en) 2006-04-17 2014-10-21 Canon Kabushiki Kaisha Communication apparatus conditional notification destination registration
JP2008293165A (en) * 2007-05-23 2008-12-04 Nippon Telegr & Teleph Corp <Ntt> ACCESS CONTROL DEVICE, ACCESS CONTROL METHOD, ACCESS CONTROL PROGRAM, AND COMPUTER-READABLE RECORDING MEDIUM CONTAINING THE ACCESS CONTROL PROGRAM
JP2010010789A (en) * 2008-06-24 2010-01-14 Canon Inc Information processor, image processor, control method, and program
US8817783B2 (en) 2008-06-24 2014-08-26 Canon Kabushiki Kaisha Information processing apparatus, image processing apparatus, control method, and storage medium
JP2012118577A (en) * 2010-11-29 2012-06-21 Ird:Kk Illegal domain detection device, illegal domain detection method and program

Similar Documents

Publication Publication Date Title
US7415536B2 (en) Address query response method, program, and apparatus, and address notification method, program, and apparatus
JP5662133B2 (en) Method and system for resolving conflict between IPSEC and IPV6 neighbor requests
JP4748174B2 (en) Network device management apparatus and network device management program
CN102207834B (en) printer searching device
JP5388784B2 (en) COMMUNICATION DEVICE, COMMUNICATION DEVICE CONTROL METHOD, AND PROGRAM
JP2010108396A (en) Network device
JP2005151142A (en) Information communication system and method, information processing apparatus and method, program, and recording medium
JP2006254137A (en) User terminal management device, user terminal management program and user terminal management system
US8601271B2 (en) Method and system for power management using ICMPV6 options
JP5850046B2 (en) COMMUNICATION DEVICE, COMMUNICATION SYSTEM, AND COMMUNICATION METHOD
EP1353486B1 (en) Communication device capable of setting unique names on a communications network
JP2004088428A (en) Communication device, program, recording medium, and device discovery method
US20080118005A1 (en) Receiving apparatus and receiving method
JP5473248B2 (en) Information processing apparatus, information processing apparatus control method, and computer program
JP2005031982A (en) Image processing apparatus, image forming apparatus, and network system
CN101803343B (en) Identifying subnet address range from DNS information
JP3890243B2 (en) Control device, network communication method, and control program
JP2022161704A (en) Communication system and communication method
JP6825459B2 (en) Communication device
JP2001345841A (en) Communication network system, data communication method, communication relay device, and program providing medium
JP7577456B2 (en) COMMUNICATION DEVICE, CONTROL METHOD AND PROGRAM FOR COMMUNICATION DEVICE
JP5413940B2 (en) Thin client network, thin client, unauthorized connection prevention device, operation method thereof, and recording medium
JP2018088645A (en) Communication device, and computer program
JP2003345552A (en) Method and device for controlling operation mode of network equipment, network equipment, program and storage medium
JP4242752B2 (en) Address table management method and terminal

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20051101