"自ノードの隣接ノードとなる通信装置の情報を含む第1のメッセージを送信する第1メッセージ送信手段と、第1のメッセージを受信できるが自ノードからの第1のメッセージを到達させることができない片方向リンク、および、双方向で第1のメッセージを到達させることができる双方向リンクを検出するリンク検出手段と、前記片方向リンクを介して第1のメッセージを送信してくる通信装置である片方向隣接ノードに対して、当該片方向隣接ノードと自ノードとの間に前記片方向リンクがあることを通知するための第2のメッセージを作成し、ユニキャスト送信する第2メッセージ送信手段と、前記双方向リンクを介して第1のメッセージを送信してくる通信装置である双方向隣接ノードと、第2のメッセージの送信元に該当する通信装置である逆片方向隣接ノードの中から、自ノードが送信したメッセージを転送すべき転送ノードを選択する転送ノード選択手段とを備えることを特徴とする通信装置。リンク検出手段は、自ノードが隣接ノードとして記述されていない第1のメッセージの受信回数に基づいて、第1のメッセージを送信してくる他のノードと自ノードとの間のリンクが片方向リンクであると判定する請求項1に記載の通信装置。第2メッセージ送信手段は、片方向隣接ノードまでのホップ数に応じて、第2のメッセージの送信を抑制する請求項1または請求項2に記載の通信装置。第2メッセージ送信手段は、片方向隣接ノードを起点として当該片方向隣接ノードが選択した転送ノードを経由する2ホップ先のノードと、片方向隣接ノードを起点として自ノードを経由する2ホップ先のノードとに基づいて、自ノードが転送ノードに選択された場合に、片方向隣接ノードを起点として自ノードを経由する2ホップ先のノードとして新たなノードが発生するか否かを判定し、前記新たなノードが発生する場合に、前記片方向隣接ノードに対する第2のメッセージの送信を抑制する請求項1から請求項3のうちのいずれか1項に記載の通信装置。片方向隣接ノードに対して第2のメッセージをユニキャスト送信可能な通信経路が存在せず、自ノードの隣接ノードの中に前記片方向隣接ノードからの第1のメッセージを受信していないノードが存在する場合に、自ノードを前記片方向隣接ノードの転送ノードとして定める自律的転送ノード判定手段を備える請求項1から請求項4のうちのいずれか1項に記載の通信装置。自律的転送ノード判定手段は、共通の片方向隣接ノードに関して、前記片方向隣接ノードに対して第2のメッセージをユニキャスト送信可能な通信経路が存在せず、自ノードの隣接ノードの中に前記片方向隣接ノードからの第1のメッセージを受信していないノードが存在するという条件を満たす複数の通信装置が存在する場合、自ノードの識別情報が、前記複数の通信装置の識別情報の中で所定の条件を満たしている場合に、自ノードを前記片方向隣接ノードの転送ノードとして定める請求項5に記載の通信装置。メッセージを無線で送受信する通信装置を複数備え、各通信装置は、自ノードの隣接ノードとなる通信装置の情報を含む第1のメッセージを送信する第1メッセージ送信手段と、第1のメッセージを受信できるが自ノードからの第1のメッセージを到達させることができない片方向リンク、および、双方向で第1のメッセージを到達させることができる双方向リンクを検出するリンク検出手段と、前記片方向リンクを介して第1のメッセージを送信してくる通信装置である片方向隣接ノードに対して、当該片方向隣接ノードと自ノードとの間に前記片方向リンクがあることを通知するための第2のメッセージを作成し、ユニキャスト送信する第2メッセージ送信手段と、前記双方向リンクを介して第1のメッセージを送信してくる通信装置である双方向隣接ノードと、第2のメッセージの送信元に該当する通信装置である逆片方向隣接ノードの中から、自ノードが送信したメッセージを転送すべき転送ノードを選択する転送ノード選択手段とを含むことを特徴とする通信システム。メッセージを無線で送受信する通信装置を複数備える通信システムに適用される通信方法であって、各通信装置が、自ノードの隣接ノードとなる通信装置の情報を含む第1のメッセージを送信し、各通信装置が、第1のメッセージを受信できるが自ノードからの第1のメッセージを到達させることができない片方向リンク、および、双方向で第1のメッセージを到達させることができる双方向リンクを検出し、各通信装置が、片方向リンクを介して第1のメッセージを送信してくる通信装置である片方向隣接ノードに対して、当該片方向隣接ノードと自ノードとの間に前記片方向リンクがあることを通知するための第2のメッセージを作成し、ユニキャスト送信し、各通信装置が、双方向リンクを介して第1のメッセージを送信してくる通信装置である双方向隣接ノードと、第2のメッセージの送信元に該当する通信装置である逆片方向隣接ノードの中から、自ノードが送信したメッセージを転送すべき転送ノードを選択することを特徴とする通信方法。コンピュータに、自ノードの隣接ノードとなる通信装置の情報を含む第1のメッセージを送信する第1メッセージ送信処理、第1のメッセージを受信できるが自ノードからの第1のメッセージを到達させることができない片方向リンク、および、双方向で第1のメッセージを到達させることができる双方向リンクを検出するリンク検出処理、前記片方向リンクを介して第1のメッセージを送信してくる通信装置である片方向隣接ノードに対して、当該片方向隣接ノードと自ノードとの間に前記片方向リンクがあることを通知するための第2のメッセージを作成し、ユニキャスト送信する第2メッセージ送信処理、および、前記双方向リンクを介して第1のメッセージを送信してくる通信装置である双方向隣接ノードと、第2のメッセージの送信元に該当する通信装置である逆片方向隣接ノードの中から、自ノードが送信したメッセージを転送すべき転送ノードを選択する転送ノード選択処理を実行させるための通信プログラム。実際の通信の状況では、ノード毎の送信電力の違い、受信設定の違い、障害物や無線干渉による影響等により、2つのノード間で片方向でしか通信できない状況が多く発生する。このような2つのノード間のリンクを片方向リンクと称する。すなわち、2つのノード間のリンクであって、一方から他方へは通信可能であるが、その逆方向の通信を行えないリンクを片方向リンクと称する。片方向リンクは、ARPAddressResolutionProtocolや、MACMediaAccessControlのAckACKnowledgementが必要なユニキャスト通信にはそのまま利用できない。しかし、APRやAckを必要としないブロードキャスト通信やマルチキャスト通信には、メッセージの転送負荷を減らすために有効である。以下、図14を参照して具体例を示す。図14は、片方向リンクを含むネットワークの一例を示している。図14では、4つのノードA~Dを示し、各ノードを中心とする円は、ノードからの無線到達範囲を示している。本例では、ノードA,B間、ノードB,C間、および、ノードC,D間のリンクは双方向リンクである。一方、ノードA,C間のリンクは、ノードAからノードCへの通信のみが可能な片方向リンクである。仮に、ノードAが片方向リンクを考慮してノードCをMPRノードとして選択できるものとすると、ノードAがノードB,CにTCメッセージを送信し、ノードCが、ノードDにそのTCメッセージを送信すれば、TCメッセージは行き渡る。一方、ノードAが片方向リンクを考慮せず、ノードBをMPRノードに定めると、ノードAがノードBにTCメッセージを送信し、ノードBがノードCにTCメッセージを転送し、さらに、ノードCがノードDにTCメッセージを転送しなければならない。従って、図14に示す例において、ノードAは、ノードCをMPRノードとして選択した方が転送負荷の観点から好ましい。しかし、非特許文献1,2に記載されたHelloメッセージの送受信では、片方向リンクで結ばれる2つのノードのうち、相手側のノードからHelloメッセージを受信できない方のノードは、片方向リンクの存在を認識することができない。例えば、図14に示すノードAは、ノードA,C間の片方向リンクの存在を認識できない。そのため、非特許文献1,2に開示されている技術では、あるノードがMPRノードを定める場合、自ノードと双方向通信可能な自ノードの隣接ノードの中からMPRノードを選択していた。その結果、ネットワーク内の各ノードにブロードキャスト通信やマルチキャスト通信でメッセージを行き渡らせる際に、無駄な転送負荷が生じていた。そこで、本発明は、ネットワーク内にメッセージを行き渡らせる際に、片方向リンクも利用して、効率的なメッセージ転送を実現することができる通信装置、通信システム、通信方法および通信プログラムを提供することを目的とする。本発明による通信装置は、自ノードの隣接ノードとなる通信装置の情報を含む第1のメッセージを送信する第1メッセージ送信手段と、第1のメッセージを受信できるが自ノードからの第1のメッセージを到達させることができない片方向リンク、および、双方向で第1のメッセージを到達させることができる双方向リンクを検出するリンク検出手段と、片方向リンクを介して第1のメッセージを送信してくる通信装置である片方向隣接ノードに対して、当該片方向隣接ノードと自ノードとの間に片方向リンクがあることを通知するための第2のメッセージを作成し、ユニキャスト送信する第2メッセージ送信手段と、双方向リンクを介して第1のメッセージを送信してくる通信装置である双方向隣接ノードと、第2のメッセージの送信元に該当する通信装置である逆片方向隣接ノードの中から、自ノードが送信したメッセージを転送すべき転送ノードを選択する転送ノード選択手段とを備えることを特徴とする。また、本発明による通信システムは、メッセージを無線で送受信する通信装置を複数備え、各通信装置が、自ノードの隣接ノードとなる通信装置の情報を含む第1のメッセージを送信する第1メッセージ送信手段と、第1のメッセージを受信できるが自ノードからの第1のメッセージを到達させることができない片方向リンク、および、双方向で第1のメッセージを到達させることができる双方向リンクを検出するリンク検出手段と、片方向リンクを介して第1のメッセージを送信してくる通信装置である片方向隣接ノードに対して、当該片方向隣接ノードと自ノードとの間に片方向リンクがあることを通知するための第2のメッセージを作成し、ユニキャスト送信する第2メッセージ送信手段と、双方向リンクを介して第1のメッセージを送信してくる通信装置である双方向隣接ノードと、第2のメッセージの送信元に該当する通信装置である逆片方向隣接ノードの中から、自ノードが送信したメッセージを転送すべき転送ノードを選択する転送ノード選択手段とを含むことを特徴とする。また、本発明による通信方法は、メッセージを無線で送受信する通信装置を複数備える通信システムに適用される通信方法であって、各通信装置が、自ノードの隣接ノードとなる通信装置の情報を含む第1のメッセージを送信し、各通信装置が、第1のメッセージを受信できるが自ノードからの第1のメッセージを到達させることができない片方向リンク、および、双方向で第1のメッセージを到達させることができる双方向リンクを検出し、各通信装置が、片方向リンクを介して第1のメッセージを送信してくる通信装置である片方向隣接ノードに対して、当該片方向隣接ノードと自ノードとの間に片方向リンクがあることを通知するための第2のメッセージを作成し、ユニキャスト送信し、各通信装置が、双方向リンクを介して第1のメッセージを送信してくる通信装置である双方向隣接ノードと、第2のメッセージの送信元に該当する通信装置である逆片方向隣接ノードの中から、自ノードが送信したメッセージを転送すべき転送ノードを選択することを特徴とする。また、本発明による通信プログラムは、コンピュータに、自ノードの隣接ノードとなる通信装置の情報を含む第1のメッセージを送信する第1メッセージ送信処理、第1のメッセージを受信できるが自ノードからの第1のメッセージを到達させることができない片方向リンク、および、双方向で第1のメッセージを到達させることができる双方向リンクを検出するリンク検出処理、片方向リンクを介して第1のメッセージを送信してくる通信装置である片方向隣接ノードに対して、当該片方向隣接ノードと自ノードとの間に片方向リンクがあることを通知するための第2のメッセージを作成し、ユニキャスト送信する第2メッセージ送信処理、および、双方向リンクを介して第1のメッセージを送信してくる通信装置である双方向隣接ノードと、第2のメッセージの送信元に該当する通信装置である逆片方向隣接ノードの中から、自ノードが送信したメッセージを転送すべき転送ノードを選択する転送ノード選択処理を実行させることを特徴とする。本発明によれば、ネットワーク内にメッセージを行き渡らせる際に、片方向リンクも利用して、効率的なメッセージ転送を実現することができる。以下、本発明の実施形態を図面を参照して説明する。なお、以下の説明では、本発明の通信システムがOLSRをベースとして、OLSRを拡張した態様で動作する場合を例にして説明する。ただし、本発明はOLSRをベースにしていなくてもよい。また、以下の説明では、ノードがブロードキャストによりメッセージを転送する場合を例にして説明するが、各ノードが属するマルチキャストグループが予め分かっている場合には、ノードがマルチキャストによりメッセージを転送する場合にも本発明に適用可能である。本発明では、非特許文献2と同様に、MPRを利用して、ユーザアプリケーションのブロードキャストパケットもしくはマルチキャストパケットを転送することも実現する。ここで、本発明の説明に用いる用語の定義を示す。図1は、片方向隣接ノードおよび逆片方向隣接ノードを説明するための図である。図1において、ノードA,Bは、片方向リンクによって結ばれている。ノードAからノードBへのメッセージ送信は可能である。しかし、ノードBからノードAへのメッセージ送信はできないノードAはノードBからのメッセージを受信できない。片方向隣接ノードとは、着目しているノードの隣接ノードであって、着目しているノードへのリンクは存在するが、着目しているノードからのリンクは存在しないノードである。換言すれば、片方向隣接ノードとは、着目しているノードの隣接ノードであって、着目しているノードに対してメッセージを送信できるが、着目しているノードからはメッセージを受信できないノードである。例えば、図1に示す例において、ノードBに着目した場合、ノードAはノードBの片方向隣接ノードに該当する。逆片方向隣接ノードとは、着目しているノードの隣接ノードであって、着目しているノードからのリンクは存在するが、着目しているノードへのリンクは存在しないノードである。換言すれば、逆片方向隣接ノードとは、着目しているノードの隣接ノードであって、着目しているノードからメッセージを受信できるが、着目しているノードに対してメッセージを到達させられないノードである。例えば、図1に示す例において、ノードAに着目した場合、ノードBはノードAの逆片方向隣接ノードに該当する。片方向リンクによって一方向のみで通信可能な2つのノードのうち、送信側ノードは受信側ノードの片方向隣接ノードに該当し、受信側ノードは送信側ノードの逆片方向隣接ノードに該当する。また、双方向隣接ノードとは、双方向リンクによって通信可能な隣接ノードである。図2は、本発明の通信システムの例を示す説明図である。本発明の通信システムは、複数のノードを含む。ノード間のリンクの種類には、双方向リンクと片方向リンクとがある。各ノードを中心とする円は、ノードからの無線到達範囲を示している。本例では、ノード11,12間、ノード12,13間、および、ノード13,14間のリンクは双方向リンクである。また、ノード11,13間のリンクは、ノード11からノード13への通信のみが可能な片方向リンクである。リンクが双方向リンクになるか片方向リンクになるかは、ノード毎の送信電力の違い、受信設定の違い、障害物や電波干渉による影響等の要因によって決まる。なお、ネットワークのトポロジーは、図2に示す例に限定されない。各ノード11~14は、本発明による通信装置であり、無線通信を行う。本発明の通信システムにおいて、各ノードは、自ノードにとっての片方向隣接ノードに対して、自ノードとの間に片方向リンクがあることを通知する。この通知は、他のノードを介して行う。そして、各ノードは、自ノードの双方向隣接ノードおよび逆片方向隣接ノードの中から、効率的なメッセージ転送に適したMPRノードを選択する。また、本発明の通信システムでは、2種類のHelloメッセージを用いる。以下の説明では、2種類のHelloメッセージのうち、第1のHelloメッセージを、単にHelloメッセージと記し、第2のHelloメッセージをユニキャストHelloメッセージと記す。Helloメッセージ第1のHelloメッセージは、Helloメッセージを送信する自ノードの識別情報、自ノードの隣接ノードの識別情報、およびその隣接ノードに関するステータスを含む。以下の説明では、ノードの識別情報として、ノードのIPアドレスを用いる場合を例に説明するが、ノードの識別情報はIPアドレス以外であってもよい。ただし、識別情報としては、識別情報同士の大小関係を判断可能な情報を用いる。IPアドレスは、そのビット列を数値として扱うことにより大小関係を判断できる。このHelloメッセージの受信状況により、各ノードは、Helloメッセージの送信元が自ノードの片方向隣接ノードであるか双方向隣接ノードであるかを判定する。各ノードは、Helloメッセージの送信元が自ノードの片方向隣接ノードであると判定した場合に、別のノードを介して、そのHelloメッセージの送信元のノードに対して、ユニキャストHelloメッセージを送信する。ユニキャストHelloメッセージは、その送り先のノードに対して、片方向隣接ノードに該当していることを伝えるメッセージである。すなわち、片方向リンクにおける送信側のノードに該当していることを伝えるメッセージである。ユニキャストHelloメッセージは、Helloメッセージと同様に、ユニキャストHelloメッセージを送信する自ノードの識別情報、自ノードの隣接ノードの識別情報、およびその隣接ノードに関するステータスを含む。さらに、ユニキャストHelloメッセージは、ユニキャストHelloメッセージであることを示すフラグ以下、片方向リンクフラグと記す。を含む。また、自ノードが選択したMPRノードがある場合には、Helloメッセージ、ユニキャストHelloメッセージは、どのノードをMPRノードとして選択しているかを示す情報も含む。ユニキャストHelloメッセージは、他のノードを介して、転送される。一方、Helloメッセージは、ブロードキャスト送信され、送信元からの無線到達範囲内に存在するノードに受信される。ただし、Helloメッセージは、受信されたノードによって転送されない。また、隣接ノードに関するステータスは、例えば、隣接ノード自体のステータスと、隣接ノードとの間に介在するリンクのステータスとを含む。図3は、隣接ノードに関するステータスの例を示す説明図である。図3aは、隣接ノード自体のステータスを示し、図3bは、隣接ノードとの間に介在するリンクのステータスを示す。図3aに示すように、隣接ノード自体のステータスとして、双方向隣接ノード、片方向隣接ノード、逆片方向隣接ノード、MPRノード等がある。なお、各ステータスの表記の仕方は特に限定されず、図3aにおいて括弧書きで示したように、SYMNEIGH,ASYMNEIGH,REVASYMNEIGH,MPRNEIGH等のように表してもよい。図3bに示すように、隣接ノードとの間に介在するリンクのステータスとして双方向リンク、相手側が片方向隣接ノードとなる片方向リンク、相手側が逆片方向隣接ノードとなる片方向リンク、切断、未定等がある。図3bに示すように、隣接ノードが片方向隣接ノードであるか逆片方向隣接ノードであるかによって、片方向リンクを区別している。なお、各ステータスの表記の仕方は特に限定されず、図3bにおいて括弧書きで示したように、SYMLINK,ASYMLINK,REVASYMLINK,LOSTLINK,UNSPECLINK等のように表記してもよい。また、図3a,bに示した以外のステータスが定められていてもよい。次に、本発明の通信装置ノードの構成について説明する。図4は、本発明の通信装置の構成例を示すブロック図である。図4では、図2に示す各ノードのうちノード11を例にして説明するが、図2に示す他のノード12~14の構成も同様である。ノード11は、Hello受信処理部21と、Hello送信処理部22と、片方向リンク判定部23と、ユニキャストHello受信処理部24と、ユニキャストHello送信処理部25と、MPR選択部26と、隣接ノードテーブル記憶部31と、2ホップ先ノードテーブル記憶部32と、MPRノードテーブル記憶部33と、ブロードキャスト転送テーブル記憶部34とを備える。Hello受信処理部21は、HelloメッセージおよびユニキャストHelloメッセージを受信する。Hello受信処理部21は、Helloメッセージを受信した場合には、Helloメッセージの内容に応じて、隣接ノードテーブル、2ホップ先ノードテーブルを更新する。隣接ノードテーブル、2ホップ先ノードテーブルに関しては、後述する。また、Hello受信処理部21は、ユニキャストHelloメッセージを受信した場合、そのユニキャストHelloメッセージを、ユニキャストHello受信処理部24に渡す。Hello送信処理部22は、Helloメッセージを作成し、送信する。また、Hello送信処理部22は、ユニキャストHello送信処理部25によって作成されたユニキャストHelloメッセージを送信する。Hello送信処理部22は、Helloメッセージや、ユニキャストHello送信処理部25によって作成されたユニキャストHelloメッセージを、定期的に送信する。HelloメッセージやユニキャストHelloメッセージの送信間隔は、予め定められている。また、Hello送信処理部22は、Helloメッセージと同等の送信間隔で、ユニキャストHelloメッセージを送信する。片方向リンク判定部23は、Helloメッセージの受信回数をその送信元毎に隣接ノードテーブルに記録し、Helloメッセージの受信状況に応じて、Helloメッセージの送信元との間のリンクが片方向リンクであるかを判定する。ユニキャストHello送信処理部25は、片方向リンク判定部23が片方向リンクを判定した場合、その片方向リンクによって結ばれる自ノードにとっての片方向隣接ノードに対してユニキャストHelloメッセージを送信するか否かを判定する。そして、送信すると判定した場合、ユニキャストHello送信処理部25は、その片方向隣接ノードに送信するユニキャストHelloメッセージを作成し、Hello送信処理部22に送信させる。ユニキャストHello送信処理部25は、ユニキャストHelloメッセージに片方向リンクフラグを含め、また、ユニキャストHelloメッセージのTTLを1よりも大きな値として定める。TTLは、ユニキャストHelloメッセージが転送過程で破棄されないように、例えば128等の安全な値とすればよい。ユニキャストHello受信処理部24は、Hello受信処理部21からユニキャストHelloメッセージを受け取ると、そのユニキャストHelloメッセージの送信元を、自ノードにとっての逆片方向隣接ノードとして、隣接ノードテーブルに記憶する。隣接ノードテーブル記憶部31は、隣接ノードテーブルを記憶する記憶装置である。図5は、隣接ノードテーブルに登録される情報の例を示す説明図である。隣接ノードテーブルは、例えば、自ノードの隣接ノードのIPアドレスと、その隣接ノード自体のステータスと、自ノードとその隣接ノードとの間に介在するリンクのステータスと、Helloメッセージの受信回数とを記憶する。例えば、Hello受信処理部21は、他のノードからHelloメッセージを受信した場合、そのHelloメッセージの送信元ノードのIPアドレスを、隣接ノードのIPアドレスとして隣接ノードテーブルに登録する。そして、Hello受信処理部21は、Helloメッセージ内に自ノードが隣接ノードとして記述されているか否かなどにより、隣接ノードに関するステータス隣接ノード自体のステータス、リンクのステータスを定め、隣接ノードテーブルに登録する。また、例えば、ユニキャストHello受信処理部24は、ユニキャストHelloメッセージを受け取ると、そのユニキャストHelloメッセージの送信元のノードのIPアドレスを、隣接ノードのIPアドレスとして隣接ノードテーブルに登録する。さらに、その隣接ノード自体のステータスを逆片方向隣接ノードREVASYMNEIGHとし、その隣接ノードとの間のリンクのステータスを相手側が逆片方向隣接ノードとなる片方向リンクREVASYMLINKとして、隣接ノードテーブルに登録する。2ホップ先ノードテーブル記憶部32は、2ホップ先ノードテーブルを記憶する記憶装置である。図6は、2ホップ先ノードテーブルに登録される情報の例を示す説明図である。2ホップ先ノードテーブルは、例えば、自ノードの隣接ノードのIPアドレスと、自ノードから2ホップ先のノードのIPアドレスとを登録する。ここで、2ホップ先のノードは、自ノードの隣接ノードの隣接ノードに該当する。2ホップ先ノードテーブルは、さらに、例えば、自ノードの隣接ノードに着目した場合における、2ホップ先のノード自体のステータスと、自ノードの隣接ノードと2ホップ先のノードとの間のリンクのステータスも登録する。Hello受信処理部21は、Helloメッセージを受信したときに、そのHelloメッセージにおいて隣接ノードメッセージ送信元の隣接ノードとして記述されているノードのうち、自ノードの隣接ノードテーブルに登録されていないノードがあれば、そのノードを2ホップ先ノードと判断する。そして、Hello受信処理部21は、そのHelloメッセージの送信元のノードのIPアドレスを、隣接ノードのIPアドレスとして2ホップ先ノードテーブルに登録する。さらに、2ホップ先ノードのIPアドレス、および、自ノードの隣接ノードすなわち、メッセージ送信元に着目した場合の2ホップ先ノードに関するステータスをHelloメッセージから読み込み、2ホップ先ノードテーブルに登録する。なお、以下の場合には、隣接ノードテーブルや、2ホップ先ノードテーブルから情報が削除される。例えば、Hello受信処理部21が受信したHelloメッセージの内容が、前回受信したHelloメッセージの内容と異なっていて、既に隣接ノードテーブルに登録されている隣接ノードの情報が、新たに受信したHelloメッセージに記述されていない場合、その隣接ノードに関する情報IPアドレスやステータス、受信回数を隣接ノードテーブルから削除する。さらに、Hello受信処理部21は、その隣接ノードに関する情報、およびその隣接ノードに対応する2ホップ先のノードに関する情報IPアドレスやステータスを2ホップ先ノードテーブルから削除する。また、ある隣接ノードからHelloメッセージを一定期間例えば、Helloメッセージ送信間隔の3倍の期間受信しなかった場合、Hello受信処理部21は、その隣接ノードに関する情報IPアドレスやステータス、受信回数を隣接ノードテーブルから削除する。さらに、Hello受信処理部21は、その隣接ノードに関する情報、およびその隣接ノードに対応する2ホップ先のノードに関する情報IPアドレスやステータスを2ホップ先ノードテーブルから削除する。MPR選択部26は、自ノードから見て双方向隣接ノード、逆片方向隣接ノードとなるノードの中から、MPRノードを決定する。MPRノードテーブル記憶部33は、MPRノードテーブルを記憶する記憶装置である。MPRノードテーブルは、自ノードのMPR選択部26によって決定されたMPRノードの識別情報例えばIPアドレスを格納するテーブルである。ブロードキャスト転送テーブル記憶部34は、ブロードキャスト転送テーブルを記憶する記憶装置である。ブロードキャスト転送テーブルは、自ノードが、どの隣接ノードによってMPRノードとして選択されているかを格納するテーブルである。Hello受信処理部21は、自ノードがHelloメッセージの送信元ノードによってMPRノードに選択されていることをHelloメッセージによって認識すると、そのHelloメッセージの送信元ノードによってMPRノードに選択されている旨をブロードキャスト転送テーブルに登録する。また、ノード11は、制御メッセージ送受信部51と、トポロジー情報作成部52と、トポロジー情報記憶部53とを備える。制御メッセージ送受信部51は、自ノードの持つリンクの情報を含むTCメッセージを送信する。また、制御メッセージ送受信部51は、他のノードからTCメッセージを受信した場合、そのノードが自ノードをMPRノードとして選択しているか否かを、ブロードキャスト転送テーブルを参照して判定し、自ノードがMPRノードとして選択されているならば、受信したTCメッセージを転送する。トポロジー情報作成部52は、各ノードから受信したTCメッセージに基づいて、ネットワークのトポロジー情報を作成し、トポロジー情報記憶部53に記憶させる。トポロジー情報記憶部53は、ネットワークのトポロジー情報を記憶する記憶装置である。データパケット送受信部61は、データパケットの送信および受信を行う。また、データパケット送受信部61は、ネットワーク全体へのブロードキャストパケットを他のノードから受信した場合、そのノードが自ノードをMPRノードとして選択しているか否かを、ブロードキャスト転送テーブルを参照して判定し、自ノードがMPRノードとして選択されているならば、受信したブロードキャストパケットを転送する。Hello受信処理部21、Hello送信処理部22、片方向リンク判定部23、ユニキャストHello受信処理部24、ユニキャストHello送信処理部25、MPR選択部26、制御メッセージ送受信部51、トポロジー情報作成部52、データパケット送受信部61は、例えば、通信プログラムに従って動作するコンピュータのCPUによって実現される。この場合、コンピュータのプログラム記憶装置図示略が通信プログラムを記憶し、CPUがそのプログラムに従って、Hello受信処理部21、Hello送信処理部22、片方向リンク判定部23、ユニキャストHello受信処理部24、ユニキャストHello送信処理部25、MPR選択部26、制御メッセージ送受信部51、トポロジー情報作成部52およびデータパケット送受信部61として動作すればよい。あるいは、これらの各手段がそれぞれ別々のユニットで実現されていてもよい。また、ノード内の各記憶部31,32,33,34,53は、同一の記憶装置によって実現されていても、あるいは、それぞれ別々の記憶装置であってもよい。次に、動作について説明する。本発明の通信システムノードが形成する無線通信ネットワークは、例えば、アドホックネットワークであり、トポロジーが適宜変化する。このとき、通信システムの各ノードがトポロジー情報を作成する処理経過について、まず説明する。図7は、トポロジー情報作成の処理経過の例を示すフローチャートである。まず、通信システムの各ノードのHello送信処理部22は、それぞれHelloメッセージを送信するステップS1。各Helloメッセージは、送信元からの無線到達範囲内に存在する全ノードに受信される。このHelloメッセージは、転送されない。ステップS1におけるHelloメッセージ送信により、各ノードは、自ノードの情報を広告し、また、隣接ノードの情報を収集する。そして、各ノードにおいて、MPR選択部26は、自ノードのMPRノードを決定するステップS2。MPRノード決定後、各ノードは、次回のHelloメッセージ時に、自ノードのMPRノードの情報も含めて送信するステップS3。次に、各ノードの制御メッセージ送受信部51は、自ノードをMPRノードとして選択したノードとのリンクの情報を含むTCメッセージを送信するステップS3。ただし、このとき、TCメッセージには、双方向リンクの情報のみを含める。また、自ノードをMPRノードとして選択したノードから、TCメッセージを受信した場合、そのTCメッセージを転送する。この結果、各ノードは、他の各ノードが送信したTCメッセージを受信することになる。各ノードのトポロジー情報作成部52は、他のノードから受信したTCメッセージを用いてネットワークのトポロジー情報を作成し、トポロジー情報記憶部53に記憶させるステップS5。このトポロジー情報を用いることで、自身からネットワーク内の各ノードまでの最短経路を計算することができる。各ノードは、自身から各ノードまでの最短経路を計算し、計算した最短経路に基づき、宛先と転送ノード、宛先までのホップ数を記録したユニキャスト経路表不図示を保持する。以降、ステップS1からの動作を繰り返す。この結果、ノードの移動、追加、離脱等の変化が合っても、ネットワークに応じたトポロジー情報がステップS5で作成される。なお、ステップS1の時点において、既にMPRノードが定まっているならば、その情報もHelloメッセージに含める。また、各ノードがステップS5の処理を行い、トポロジー情報を作成することによって、各ノードは、他のノードまでの最短経路を導出したり、他のノードまでのホップ数をカウントしたりすることができる。次に、各ノードが、MPRノードを決定し、そのMPRノードを介してTCメッセージ等をネットワーク内の各ノードに通知する際の動作について説明する。図8は、MPRノードを介してメッセージを送信する際の処理経過の例を示すフローチャートである。また、以下の説明では、ノード11,13が、それぞれノード12をMPRノードとして選択しているものとする。そして、各ノード11~14は、図2に示す状態になったとする。[片方向リンクの判定]まず、片方向リンクの判定処理について説明する。各ノードのHello送信処理部22は、隣接ノードテーブル、2ホップ先ノードテーブル、およびMPRノードテーブルに基づいて、Helloメッセージを作成し、送信する。既に説明したように、このHelloメッセージは、無線到達範囲内に存在するノードに受信されるが、転送はされない。各ノードのHello送信処理部22は、Helloメッセージに、自ノードのIPアドレス、既にHelloメッセージを受信して存在を認識している自ノードの隣接ノードのIPアドレス、およびその隣接ノードに関するステータスを含める。また、自ノードのMPRノードを選択している場合には、そのMPRノードを示す情報も含める。各ノードのHelloメッセージ受信処理部21は、Helloメッセージを受信すると、Helloメッセージの内容に応じて、隣接ノードテーブル、2ホップ先ノードテーブルを更新する。すなわち、Helloメッセージ受信処理部21は、Helloメッセージの送信元のIPアドレスを、自ノードの隣接ノードのIPアドレスとして、隣接ノードテーブルに登録する。また、Helloメッセージ受信処理部21は、Helloメッセージにおいて、Helloメッセージ送信元ノードの隣接ノードとして自ノードが記述されていた場合、そのHelloメッセージ送信元ノードのステータスを双方向隣接ノードとし、その双方向隣接ノードとの間のリンクのステータスをSYMLINK図3参照として、隣接ノードテーブルに登録する。また、Helloメッセージ受信処理部21は、Helloメッセージにおいて、Helloメッセージ送信元ノードの隣接ノードとして自ノードが記述されていない場合、そのHelloメッセージ送信元ノードのステータスを片方向隣接ノードとして、隣接ノードテーブルに登録する。また、そのHelloメッセージ送信元ノード片方向隣接ノードとの間のリンクのステータスをASYMLINK図3参照として、隣接ノードテーブルに登録する。また、Helloメッセージ受信処理部21からHelloメッセージの受信通知を受けた片方向リンク判定部23は、Helloメッセージの受信回数を隣接ノードテーブルに記録する。さらに、片方向リンク判定部23は、受信回数が3回以上で、かつ、隣接ノードのステータスが片方向隣接ノードである隣接ノードを、ユニキャストHello送信処理部25へ通知する。なお、ここでは、各ノードにおけるHelloメッセージ送信間隔が等しいものとしている。この場合、通常、1回半のHelloメッセージの往復で、双方向隣接ノードとして認識できることに基づいて、上記の3回という回数を定めた。ただし、上記の所定回数は3回でなくてもよい。また、各ノードにおけるHelloメッセージ送信間隔が異なっている場合、その態様に応じて、上記の所定回数を決定しておけばよい。図8に示す例では、ノード11は、ノード12が双方向通信ノードであり、ノード12をMPRノードとしているという情報を含むHelloメッセージを送信する。このHelloメッセージを受信したノード13は、ノード11が片方向隣接ノードであると判定する。そして、ノード11が片方向隣接ノードであり、ノード12,14が双方向通信ノードであり、ノード12をMPRノードとしているという情報を含むHelloメッセージを送信する。ただし、このHelloメッセージは、ノード11に到達しないものとする。この結果、ノード11は、ノード13を隣接ノードとして定めていないHelloメッセージを繰り返し送信し、ノード13は、このHelloメッセージを3回受信した時点で、ノード11との間のリンクが片方向リンクであり、そのステータスがASYMLINKであると判断するステップS11、図8参照。また、Helloメッセージ受信処理部21は、Helloメッセージ送信元のノードから、Helloメッセージを受信しなくなり、そのノードから受信していたHelloメッセージの有効期間が経過した場合、そのノードに関しては切断LOSTと判断し、隣接ノードテーブルおよび2ホップ先ノードテーブルから、そのノードに関する情報を削除する。また、Helloメッセージ受信処理部21は、Helloメッセージ送信元ノードの隣接ノードとしてHelloメッセージ内に記述されているノードのうち、自ノードの隣接ノードテーブルに登録されていないノードがあれば、そのノードを2ホップ先ノードと判断する。そして、Hello受信処理部21は、そのHelloメッセージの送信元のノードのIPアドレスを、隣接ノードのIPアドレスとして2ホップ先ノードテーブルに登録する。さらに、2ホップ先ノードのIPアドレス、および、自ノードの隣接ノードに着目した場合の2ホップ先ノードに関するステータスをHelloメッセージから読み込み、2ホップ先ノードテーブルに登録する。また、Helloメッセージ受信処理部21は、自ノードがHelloメッセージの送信元ノードによってMPRノードに選択されていることをHelloメッセージによって認識すると、そのHelloメッセージの送信元ノードによってMPRノードに選択されている旨をブロードキャスト転送テーブルに登録する。[片方向リンクの通知]ノード13の片方向リンク判定部23が、Helloメッセージの送信元ノードと自ノードとの間のリンクが片方向リンクASYMLINKであると判定した場合、ノード13のユニキャストHello送信処理部25は、そのHelloメッセージの送信元ノードに対して、ユニキャストHelloメッセージを送信するか否かを判定する。送信すると判定した場合、ノード13のユニキャストHello送信処理部25は、ノード11が自ノードにとって片方向隣接ノードであり、ノード11と自ノードとのリンクステータスがASYMLINKであるという情報を含むユニキャストHelloメッセージを作成する。なお、ユニキャストHelloメッセージには、ユニキャストHelloメッセージであることを示す片方向リンクフラグを含める。ノード13のユニキャストHello送信処理部25は、作成したユニキャストHelloメッセージをHello送信処理部22に渡し、Hello送信処理部22は、そのユニキャストHelloメッセージを送信する。なお、Hello送信処理部22は、Helloメッセージの送信間隔毎に、そのユニキャストHelloメッセージを送信する。片方向リンク判定部23が、Helloメッセージの送信元ノードと自ノードとの間のリンクが片方向リンクASYMLINKであると判定した場合、ユニキャストHello送信処理部25が、そのHelloメッセージの送信元ノードに対して、ユニキャストHelloメッセージを送信するか否かを判定する処理について説明する。ここでは、図9に示す各ノードを例にして説明する。図9において、実線の矢印は、双方向リンクを表している。破線の矢印は、片方向リンクを表している。例えば、図9において、ノード11,17間のリンクは片方向リンクであり、ノード11からノード17への通信のみが可能である。また、点線の矢印は、矢印の始点のノードが選択しているMPRノードを表している。例えば、図9において、ノード11は、ノード12,13,14をMPRノードとして選択していることを表している。ここでは、ノード17が、ノード11との間のリンクが片方向リンクASYMLINKであると判定した場合に、ノード17がノード11にユニキャストHelloメッセージを送信するか否かを判定する場合を例にして説明する。ノード17のユニキャストHello送信処理部25は、以下の1~6の手順により、ノード11にユニキャストHelloメッセージを送信するか否かを判定する1ノード17のユニキャストHello送信処理部25は、ノード11へのユニキャスト経路のホップ数をトポロジー情報に基づいてカウントし、そのホップ数が3以上であるならば、ユニキャストHelloメッセージを送信しないと決定する。そのホップ数が2であるならば、以下の計算を行う。2ノード17のユニキャストHello送信処理部25は、ノード11の隣接ノードノード12,13,14のうち、ノード11がMPRノードに選択していて、かつ、ノード17自身がHelloメッセージを受信しているノードを選択する。なお、これまでの説明において、双方向隣接ノード、片方向隣接ノードおよび逆片方向隣接ノードをそれぞれ隣接ノードと称していたが、この2の処理において、ユニキャストHelloメッセージを送信するか否かの判定対象となるノードの隣接ノードは、双方向隣接ノードおよび逆片方向隣接ノードであるものとする。すなわち、ここでは、ノード11の隣接ノードとは、ノード11の双方向隣接ノードおよびノード11の逆片方向隣接ノードである。図9に示す例では、ノード11の隣接ノードのうち、ノード11がMPRノードに選択していて、かつ、ノード17自身がHelloメッセージを受信しているノードは、ノード13,14である。よって、ノード17のユニキャストHello送信処理部25は、ノード13,14を選択する。また、図9では、ノード11の隣接ノード12,13,14が全て双方向隣接ノードとなっているが、上述のように、ノード11の隣接ノードは、逆片方向隣接ノードノード11にとって、REVASYMLINKで結ばれるノードも含む。例えば、仮に、図9に示す例において、ノード16が、ノード11の逆片方向隣接ノードであり、ノード11がノード16もMPRノードとしているとする。この場合、ノード17は、ノード16からHelloメッセージを受信しているので、ノード16も選択することとなる。3ノード17のユニキャストHello送信処理部25は、ノード11から見て、上記2で選択したノードを経由した2ホップ先のノードを特定し、その集合を第1の集合Xとする。ただし、自ノード本例ではノード17は、除外する。本例では、ノード11からノード13を経由した2ホップ先のノード、および、ノード11からノード14を経由した2ホップ先のノードのうち、ノード17以外のノードは、ノード16,18である。よって、ノード16,18を第1の集合Xとする。なお、ノード11から見て2ホップ先のノードまでの経路において、ノード11や、上記2で選択したノードに着目した場合、双方向リンクだけでなく、REVASYMLINK図3b参照が含まれていてもよい。例えば、図9に示す例において、ノード13にとってノード16が逆片方向隣接ノードであったとする。この場合であっても、ノード11からノード13を経由した2ホップ先のノードとしてノード16を特定する。4次に、ノード17のユニキャストHello送信処理部25は、自ノードノード17を経由したノード11から2ホップ先のノードを特定し、その集合を第2の集合Yとする。本例では、ノード16,19を特定し、第2の集合Yとする。上記の4においても、ノード11から2ホップ先のノードまでの経路で、ノード11や自ノードノード17に着目した場合、双方向リンクだけでなく、REVASYMLINK図3b参照が含まれていてもよい。例えば仮に、ノード17にとって、ノード19との間のリンクがREVASYMLINKであったとしても、ノード19を第2の集合Yに含めてよい。5次に、ノード17のユニキャストHello送信処理部25は、第1の集合Xおよび第2の集合Yに属するノードを、Covered,Uncovered,ExtraCoveredの3種類に分類する。Coveredとは、第1の集合Xおよび第2の集合Yの両方に属している、ノード11から2ホップ先のノードである。本例では、ノード16がCoveredに該当する。Uncoveredとは、第1の集合Xに属しているが第2の集合Yに属していない、ノード11から2ホップ先のノードである。本例では、ノード18がUncoveredに該当する。ExtraCoveredとは、第1の集合Xに属していないが第2の集合Yに属している、ノード11から2ホップ先のノードである。本例では、ノード19がExtraCoveredに該当する。6次に、ノード17のユニキャストHello送信処理部25は、ExtraCoveredに該当するノードが1つ以上ある場合には、ノード11に対してユニキャストHelloメッセージを送信しないと決定する。その他の場合すなわち、ExtraCoveredに該当するノードが0個である場合には、ノード11に対してユニキャストHelloメッセージを送信すると決定する。ここで、ExtraCoveredに該当するノードが1つ以上ある場合に、ノード11にユニキャストHelloメッセージを送信しないと決定するのは、自ノードノード17がノード11によって既存のMPRノードとともにMPRノードとして選択され、MPRノードが増加してしまう可能性があるからである。ExtraCoveredに該当するノードが1つ以上あるということは、自ノードが片方向隣接ノードによってMPRノードとして選択された場合に、その片方向隣接ノードを起点とし、自ノードを経由してTCメッセージが転送されることになる新たな2ホップ先ノードが発生することを意味する。ユニキャストHello送信処理部25は、ユニキャストHelloメッセージを送信すると決定した場合、Hello送信処理部22にそのユニキャストHelloメッセージの送信を依頼する。Hello送信処理部22は、元のHelloメッセージの送信元ノードに対して、他のノードを経由してユニキャストHelloメッセージを送信する。図2に示す例では、ノード13が送信したユニキャストHelloメッセージは、ノード12を経由して、ノード11に受信されるステップS12、図8参照。なお、1の処理によって、ユニキャストHelloメッセージの宛先までのホップ数が2であると判定した場合にのみ、2以降の処理を行う。よって、ユニキャストHelloメッセージの宛先ノードまでに経由する他のノードは1つである。なお、ユニキャストHello送信処理部25は、どのノードを経由してユニキャストHelloメッセージを送信するのかを、トポロジー情報に基づいて判断すればよい。すなわち、ステップS5図7参照で作成されているトポロジー情報に基づいて、ユニキャストHelloメッセージの宛先までの最新経路を決定し、その経路で、ユニキャストHelloメッセージを送信するように、Hello送信処理部22に要求すればよい。図8に示すステップS12で、ノード13が送信したユニキャストHelloメッセージには、ノード11が片方向隣接ノードであり、ノード12,14が双方向隣接リンクであり、ノード12をMPRノードに定めている旨の情報が含まれている。[片方向リンクを考慮したMPRノードの計算]ユニキャストHelloメッセージを受信したノードのHello受信処理部21は、そのユニキャストHelloメッセージをユニキャストHello受信処理部24に渡す。すると、ユニキャストHello受信処理部24は、そのユニキャストHelloメッセージの送信元ノードのIPアドレスを、隣接ノードテーブルに登録する。さらに、ユニキャストHello受信処理部24は、その送信元ノードのステータスを逆方向隣接ノードREVASYMNEIGHとし、その送信元ノードとの間のリンクのステータスをREVASYMLINKとし、隣接ノードテーブルに登録する。すなわち、ユニキャストHelloメッセージを受信したノードは、自ノードが片方向リンクにおける送信側ノードに該当していることを、ユニキャストHelloメッセージによって認識することができる。また、ユニキャストHello受信処理部24は、そのユニキャストHelloメッセージの送信元ノードの隣接ノードここでは、双方向隣接ノードまたは逆片方向隣接ノードのうち、自身の隣接ノードでないノードの情報を、2ホップ先ノードテーブルに登録する。そして、MPR選択部26は、隣接ノードテーブルおよび2ホップ先ノードテーブルの変化を契機として、隣接ノードテーブルおよび2ホップ先ノードテーブルを参照して、MPRノードを特定する。MPR選択部26は、隣接ノードテーブルにおいて、双方向隣接ノードおよび逆片方向隣接ノードとして登録されているノードの中から、自ノードから2ホップ先の全てのノードに対して制御メッセージネットワーク内の全ノードに通知すべき制御メッセージを転送することができるノード群を、できるだけノードの数が少なくなるように選択する。MPR選択部26は、選択した各ノードをMPRノードとして決定するステップS13、図8参照。図8に示す例では、ノード11図2参照のMPR選択部26は、双方向隣接ノード12と逆片方向隣接ノード13の中から、逆片方向隣接ノード13をMPRノードとして決定する。MPR選択部26は、新たに決定したMPRノードのIPアドレスを、MPRノードテーブルに登録する。また、MPRノードに該当しなくなったノードの情報がMPRノードテーブルに記憶されている場合、そのノードの情報をMPRノードテーブルから削除する。また、MPR選択部26は、隣接ノードテーブルにおいて、隣接ノードのうちMPRノードとしたノードのステータスをMPRノードMPRNEIGHとして更新してもよい。例えば、双方向隣接ノードや逆片方向隣接ノードがMPRノードにも該当する場合には、それらのノードのステータスを上記のようにMPRノードMPRNEIGHとしてもよい。その後、Hello受信処理部21がHelloメッセージを作成送信する場合には、新たに定めたMPRノードの情報をそのHelloメッセージに含める。図8に示す例では、ステップS13の後、ノード11は、ノード12が双方向隣接リンクであり、ノード13が逆片方向隣接ノードかつMPRノードであるという情報を含んだHelloメッセージを送信する。[MPRノードとして選択された旨のブロードキャスト転送テーブルへの登録]Helloメッセージを受信したノードのHello受信処理部21は、自ノードがそのHelloメッセージにおいてMPRノードに定められているならば、そのHelloメッセージの送信元ノードにとって自ノードがMPRノードである旨をブロードキャスト転送テーブルに登録するステップS14、図8参照。例えば、受信したHelloメッセージにおいて、そのHelloメッセージの送信元ノードと自ノードとのリンクがREVASYMLINKあるいはSYMLINKであり、自ノードがMPRノードとして定められている場合、その送信元のノードにとって自ノードがMPRノードであることを登録する。図8に示す例では、ノード13は、ノード13自身がノード11のMPRノードである旨をブロードキャスト転送テーブルに登録する。その後、ノード13の制御メッセージ送受信部51は、自ノードをMPRノードとして定めたノードからTCメッセージを受信した場合、そのTCメッセージを転送する。すなわち、制御メッセージ送受信部51は、TCメッセージを受信したならば、TCメッセージの送信転送元が自ノードをMPRノードとして定めたノードであるか否かを、ブロードキャスト転送テーブルを参照して判定すればよい。そして、TCメッセージの送信転送元が自ノードをMPRノードとして定めたノードであるならば、そのTCメッセージを転送すればよい。また、ノード13のデータパケット送受信部61は、自ノードをMPRノードとして定めたノードから、ネットワーク全体へのブロードキャストパケットを受信した場合、そのパケットを転送する。すなわち、データパケット送受信部61は、ネットワーク全体へのブロードキャストパケットを受信したならば、そのパケットの送信転送元が自ノードをMPRノードとして定めたノードであるか否かを、ブロードキャスト転送テーブルを参照して判定すればよい。そして、そのパケットの送信転送元が自ノードをMPRノードとして定めたノードであるならば、そのパケットを転送すればよい。図8では、ノード11,13を例に説明したが、各ノードが、それぞれ上記と同様の動作を繰り返せばよい。以上の説明では、あるノードが片方向隣接ノードに対してユニキャストHelloメッセージを送信する場合、その片方向隣接ノードまでの通信経路が存在し、その片方向隣接ノードにユニキャストHelloメッセージを送信できる場合を示した。ネットワークの状態によっては、片方向隣接ノードまでの通信経路しない場合もある。例えば、図10に示す例において、ノード13に着目した場合、ノード13から片方向隣接ノード11へのユニキャストHelloメッセージの送信経路は存在しない。この結果、ノード11は、ノード13を逆片方向隣接ノードとして認識できない。このような場合、定められた条件を満たしている場合に、ノード13が、自ノードが片方向隣接ノード11のMPRノードに該当すると自律的に判断し、片方向隣接ノード11からのTCメッセージや、ネットワーク全体へのブロードキャストパケットを転送送信してもよい。この結果、ノード14は、ノード11に対してユニキャスト送信できないが、ノード11からのTCメッセージや、ネットワーク全体へのブロードキャストパケットは受信することができる。このような自律的判断について説明する。ユニキャストHello受信処理部25は、自ノードから片方向隣接ノードすなわち、ユニキャストHelloメッセージの宛先までの通信経路がないことを、ユニキャスト経路表に基づいて判断したとする。この場合、ユニキャストHello受信処理部25は、自ノードの隣接ノードのうち、その片方向隣接ノードとの間に双方向リンクと片方向リンクのいずれのリンクも存在しないノードがあるかどうかを判断する。そのようなノードがあれば、ユニキャストHello受信処理部25は、自ノードがその片方向隣接ノードのMPRノードであると判定し、その旨をブロードキャスト転送テーブルに登録する。ただし、共通のノードを片方向隣接ノードとして認識している同じ条件のノードが複数存在する場合には、その複数のノードのうち、識別情報の値が最小のノードが、ブロードキャスト転送テーブルへの登録を行い、MPRノードとして動作する。ここでは、識別情報の値が最小となっているノードがMPRノードとして動作する場合を例にしたが、識別情報の値が最小という条件とは異なる条件により、MPRノードとして動作するノードを定めてもよい。より具体的に説明する。片方向リンク判定部23が、Helloメッセージの送信元ノードと自ノードとの間のリンクが片方向リンクASYMLINKであると判定した場合、ユニキャストHello受信処理部25は、そのHelloメッセージの送信元ノードの情報を片方向リンク判定部23から受け取る。そのHelloメッセージの送信元ノードXとする。は、自ノードにとって片方向隣接ノードである。ユニキャストHello受信処理部25は、その片方向隣接ノードXへのユニキャスト経路があるかどうかを、ユニキャスト経路表から判断する。片方向隣接ノードXへの経路がない場合、ユニキャストHello受信処理部25は、自ノードの双方向隣接ノードのうち、ノードXとの間に片方向リンクを有し、ノードXを片方向隣接ノードと認識しているノードが存在しているか否かを判定する。そのようなノードが存在しているならば、ユニキャストHello受信処理部25は、それらのノードの中で自ノードの識別情報が最小であるか否かを判定する。自ノードの双方向隣接ノードのうち、ノードXとの間に片方向リンクを有し、ノードXを片方向隣接ノードと認識しているノードが存在していない場合、または、それらのノードの中で自ノードの識別情報が最小である場合、ユニキャストHello受信処理部25は、以下に示す処理を行う。なお、いずれの場合でもなければ、処理を終了する。ユニキャストHello受信処理部25は、自ノードの双方向隣接ノードのうち、上記のノードXとの間に双方向リンクと片方向リンクのいずれのリンクも存在しないノードがあるかどうかを判断する。そのようなノードがなければ処理を終了する。そのようなノードがあれば、ユニキャストHello受信処理部25は、自ノードがノードXのMPRノードであると判断し、その旨をブロードキャスト転送テーブルに登録する。その後、そのノードは、ノードXからTCメッセージや、ネットワーク全体へのブロードキャストパケットを受信した場合、そのTCメッセージやブロードキャストパケットを転送する。本実施形態によれば、自ノードにHelloメッセージを送信してくるノードと自ノードとの間のリンクが片方向リンクであり、自ノードにとってそのノードが片方向隣接ノードである場合、その片方向隣接ノードに対して、ユニキャストHelloメッセージを送信する。従って、片方向リンクにおける送信側のノードは、逆片方向隣接ノードの存在を認識することができ、逆片方向隣接ノードおよび双方向隣接ノードの中からMPRノードを決定することができる。その結果、片方向リンクも利用して、効率的なメッセージ転送を実現することができる。また、各ノードは、所定の条件ExtraCoveredに該当するノードが0個であるという条件を満たす場合にユニキャストHelloメッセージを送信し、その所定の条件が満たされていなければユニキャストHelloメッセージを送信しない。このことにより、MPRノードの数の増加を抑えることができ、効率的なメッセージ転送を実現することができる。また、ユニキャストHelloメッセージを宛先片方向隣接ノードまで送ることができる経路が存在しない場合、自ノードをその片方向隣接ノードのMPRノードとして自律的に判断することにより、その片方向隣接ノードからのメッセージをネットワーク内に転送することができる。次に、本発明の最小構成について説明する。図11は、本発明の通信装置の最小構成の例を示すブロック図である。図12は、本発明の通信システムの最小構成の例を示すブロック図である。本発明の通信システムは、メッセージを無線で送受信する通信装置81を複数備える図12参照。。そして、各通信装置81は、第1メッセージ送信手段71と、リンク検出手段72と、第2メッセージ送信手段73と、転送ノード選択手段74とを備える図11、図12参照。第1メッセージ送信手段71例えば、Hello送信処理部22は、ノードの隣接ノードとなる通信装置の情報を含む第1のメッセージ例えば、Helloメッセージ第1のHelloメッセージを送信する。リンク検出手段72例えば、Hello受信処理部22および片方向リンク判定部23によって実現される。は、第1のメッセージを受信できるが自ノードからの第1のメッセージを到達させることができない片方向リンク、および、双方向で第1のメッセージを到達させることができる双方向リンクを検出する。第2メッセージ送信手段73例えば、ユニキャストHello送信処理部25およびHello送信処理部22によって実現される。は、片方向リンクを介して第1のメッセージを送信してくる通信装置である片方向隣接ノードに対して、当該片方向隣接ノードと自ノードとの間に片方向リンクがあることを通知するための第2のメッセージ例えば、ユニキャストHelloメッセージ第2のHelloメッセージを作成し、ユニキャスト送信する。転送ノード選択手段74例えば、MPR選択部26は、双方向リンクを介して第1のメッセージを送信してくる通信装置である双方向隣接ノードと、第2のメッセージの送信元に該当する通信装置である逆片方向隣接ノードの中から、自ノードが送信したメッセージを転送すべき転送ノード例えば、MPRノードを選択する。そのような構成によれば、転送ノード選択手段74が、双方向隣接ノードおよび逆片方向隣接ノードの中から転送ノードを選択することができるので、片方向リンクも利用して、効率的なメッセージ転送を実現することができるまた、リンク検出手段72が、自ノードが隣接ノードとして記述されていない第1のメッセージの受信回数に基づいて、第1のメッセージを送信してくる他のノードと自ノードとの間のリンクが片方向リンクであると判定する構成であってもよい。また、第2メッセージ送信手段73が、片方向隣接ノードまでのホップ数に応じて、第2のメッセージの送信を抑制する例えば、片方向隣接ノードまでのホップ数が3以上のときにユニキャストHelloメッセージを送信しない構成であってもよい。また、第2メッセージ送信手段73が、片方向隣接ノードを起点として当該片方向隣接ノードが選択した転送ノードを経由する2ホップ先のノードと、片方向隣接ノードを起点として自ノードを経由する2ホップ先のノードとに基づいて、自ノードが転送ノードに選択された場合に、片方向隣接ノードを起点として自ノードを経由する2ホップ先のノードとして新たなノードが発生するか否かを判定し、新たなノードが発生する場合に、その片方向隣接ノードに対する第2のメッセージの送信を抑制する例えば、ExtraCoveredに該当するノードが1つ以上ある場合にユニキャストHelloメッセージを送信しない構成であってもよい。また、片方向隣接ノードに対して第2のメッセージをユニキャスト送信可能な通信経路が存在せず、自ノードの隣接ノードの中にその片方向隣接ノードからの第1のメッセージを受信していないノードが存在する場合に、自ノードをその片方向隣接ノードの転送ノードとして定める自律的転送ノード判定手段例えば、ユニキャストHello送信処理部25によって実現される。を備える構成であってもよい。また、自律的転送ノード判定手段が、共通の片方向隣接ノードに関して、その片方向隣接ノードに対して第2のメッセージをユニキャスト送信可能な通信経路が存在せず、自ノードの隣接ノードの中にその片方向隣接ノードからの第1のメッセージを受信していないノードが存在するという条件を満たす複数の通信装置が存在する場合、自ノードの識別情報が、その複数の通信装置の識別情報の中で所定の条件例えば、識別情報が複数の通信装置の中で最小であるという条件を満たしている場合に、自ノードを片方向隣接ノードの転送ノードとして定める構成であってもよい。また、本発明による通信装置は、自ノードの隣接ノードとなる通信装置の情報を含む第1のメッセージを送信する第1メッセージ送信部と、第1のメッセージを受信できるが自ノードからの第1のメッセージを到達させることができない片方向リンク、および、双方向で第1のメッセージを到達させることができる双方向リンクを検出するリンク検出部と、前記片方向リンクを介して第1のメッセージを送信してくる通信装置である片方向隣接ノードに対して、当該片方向隣接ノードと自ノードとの間に前記片方向リンクがあることを通知するための第2のメッセージを作成し、ユニキャスト送信する第2メッセージ送信部と、前記双方向リンクを介して第1のメッセージを送信してくる通信装置である双方向隣接ノードと、第2のメッセージの送信元に該当する通信装置である逆片方向隣接ノードの中から、自ノードが送信したメッセージを転送すべき転送ノードを選択する転送ノード選択部とを備えることを特徴とする通信装置であってもよい。リンク検出部が、自ノードが隣接ノードとして記述されていない第1のメッセージの受信回数に基づいて、第1のメッセージを送信してくる他のノードと自ノードとの間のリンクが片方向リンクであると判定する構成であってもよい。第2メッセージ送信部が、片方向隣接ノードまでのホップ数に応じて、第2のメッセージの送信を抑制する構成であってもよい。第2メッセージ送信部が、片方向隣接ノードを起点として当該片方向隣接ノードが選択した転送ノードを経由する2ホップ先のノードと、片方向隣接ノードを起点として自ノードを経由する2ホップ先のノードとに基づいて、自ノードが転送ノードに選択された場合に、片方向隣接ノードを起点として自ノードを経由する2ホップ先のノードとして新たなノードが発生するか否かを判定し、前記新たなノードが発生する場合に、前記片方向隣接ノードに対する第2のメッセージの送信を抑制する構成であってもよい。片方向隣接ノードに対して第2のメッセージをユニキャスト送信可能な通信経路が存在せず、自ノードの隣接ノードの中に前記片方向隣接ノードからの第1のメッセージを受信していないノードが存在する場合に、自ノードを前記片方向隣接ノードの転送ノードとして定める自律的転送ノード判定部を備える構成であってもよい。自律的転送ノード判定部が、共通の片方向隣接ノードに関して、前記片方向隣接ノードに対して第2のメッセージをユニキャスト送信可能な通信経路が存在せず、自ノードの隣接ノードの中に前記片方向隣接ノードからの第1のメッセージを受信していないノードが存在するという条件を満たす複数の通信装置が存在する場合、自ノードの識別情報が、前記複数の通信装置の識別情報の中で所定の条件を満たしている場合に、自ノードを前記片方向隣接ノードの転送ノードとして定める構成であってもよい。また、本発明による通信システムは、メッセージを無線で送受信する通信装置を複数備え、各通信装置が、自ノードの隣接ノードとなる通信装置の情報を含む第1のメッセージを送信する第1メッセージ送信部と、第1のメッセージを受信できるが自ノードからの第1のメッセージを到達させることができない片方向リンク、および、双方向で第1のメッセージを到達させることができる双方向リンクを検出するリンク検出部と、前記片方向リンクを介して第1のメッセージを送信してくる通信装置である片方向隣接ノードに対して、当該片方向隣接ノードと自ノードとの間に前記片方向リンクがあることを通知するための第2のメッセージを作成し、ユニキャスト送信する第2メッセージ送信部と、前記双方向リンクを介して第1のメッセージを送信してくる通信装置である双方向隣接ノードと、第2のメッセージの送信元に該当する通信装置である逆片方向隣接ノードの中から、自ノードが送信したメッセージを転送すべき転送ノードを選択する転送ノード選択部とを含むことを特徴とする通信システムであってもよい。以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。この出願は、2010年3月24日に出願された日本特許出願2010-068540を基礎とする優先権を主張し、その開示の全てをここに取り込む。本発明は、無線マルチホップネットワークに適用される通信システムとして好適に利用される。"