(57)【特許請求の範囲】
【請求項１】
物理的な伝送処理によりネットワークに可変のパケットデータを送信するネットワーク装置において、
一定のブロックサイズ単位で、ある通信回線で送信した確認済のオフセット値である確認済みオフセット値を保持するメモリと、
該確認済みオフセット値の位置でパケットデータに格納すべき所定のブロックサイズ単位のデータを生成する第１の処理、及び該パケットデータを送信する際に、パケットで必要となるブロックサイズ単位の回数に応じた分、該第１の処理を繰り返して行う第２の処理と、を実行するプロセッサと、を有し、
前記メモリは、複数の通信先を識別する識別情報と、該識別情報に対応付けられて、送信されたパケットデータに対して受信したＡＣＫによって確認された前記確認済みオフセット値と、承認の成否を示す情報と、要求されたファイルの情報とを登録する通信状態管理テーブルを記憶し、
前記プロセッサは、前記第１の処理において、前記パケットデータの送信前に該所定のブロックサイズの単位として応答すべきデータを１バイト単位で作成し、作成した前記データを前記通信先に送信するとともに前記データの送信確認を１バイト単位で行い、前記パケットデータの送信に対してＮＡＫを受信した場合、該プロセッサは該確認済みオフセット値を維持した状態で、前記第1の処理と前記第２の処理を繰り返して行ない、ＡＣＫを受信した場合、該プロセッサは該受信したＡＣＫ分だけ該確認済みオフセット値を更新する、ことを特徴とするネットワーク装置。
【請求項２】
該ネットワーク装置は、更に、家電機器又は住宅設備機器の入出力装置、メモリ装置、各種センサ、スイッチ、制御器のいずれかを含む制御対象機器と、該制御対象機器を制御する制御部を有し、該制御対象機器から得られたデータに関する処理データから所定のブロックサイズ単位のデータを生成することを特徴とする請求項１に記載のネットワーク装置。
【請求項３】
物理的な伝送処理によりネットワークに可変のパケットデータを送信するネットワーク装置におけるデータ送信方法において、
一定のブロックサイズ単位で、通信回線に送信した確認済のオフセット値である確認済みオフセット値をメモリに保持する第１の処理ステップと、
該確認済みオフセット値の位置でパケットデータに格納すべき１ブロックサイズ単位のデータを返す第２の処理ステップと、
該パケットデータを送信する際に、パケットで必要となるブロックサイズ単位の回数に応じた数だけ該第１及び該第２の処理を繰り返して行う第３の処理ステップと、
該第３の処理の期間にパケットデータの送信を行う第４の処理ステップと、を有し、
前記第１の処理ステップにおいて、複数の通信先を識別する識別情報と、該識別情報に対応付けられて、送信されたパケットデータに対して受信したＡＣＫによって確認された前記確認済みオフセット値と、承認の成否を示す情報と、要求されたファイルの情報とを登録する通信状態管理テーブルを記憶し、
前記第２の処理ステップにおいて、前記パケットデータの送信前に該所定のブロックサイズの単位として応答すべきデータを１バイト単位で作成し、作成した前記データを前記通信先に送信するとともに前記データの送信確認を１バイト単位で行い、
前記第３の処理ステップにおいて、前記パケットデータの送信に対してＮＡＫを受信した場合、該プロセッサは該確認済みオフセット値を維持した状態で、前記第1の処理と前記第２の処理を繰り返して行ない、ＡＣＫを受信した場合、該プロセッサは該受信したＡＣＫ分だけ該確認済みオフセット値を更新する、ことを特徴とするデータ送信方法。
【請求項４】
ネットワークを通して他の装置から要求メッセージを受け、応答メッセージを他の装置に送信するネットワーク装置におけるメッセージの処理方法であって、ネットワークに対するプロトコルを管理し、あるプロトコルの下に、該要求メッセージ及び該応答メッセージを処理するプロトコルスタックと、該プロトコルスタックで受信された該要求メッセージに対して応答を生成し、作成された応答メッセージを該プロトコルスタックに渡すアプリケーションとを含み、
複数の通信先を識別する識別情報と、他の装置へのメッセージの送信を確認した確認済みのストリームの位置を示すオフセット値であって、該識別情報に対応付けられて、送信されたメッセージに対して受信したＡＣＫによって確認された確認済みオフセット値と、承認の成否を示す情報と、要求されたファイルの情報とを登録する通信状態管理テーブルをメモリに保持し、
該プロトコルスタックは、該要求メッセージを受信すると、該アプリケーションに対して、該確認済みオフセット値を渡して応答メッセージの送信前に該所定のブロックサイズの単位として前記応答メッセージを１バイト単位で生成することを要求し（要求処理）、
かつ該プロトコルスタックは、該アプリケーションで生成された前記応答メッセージを前記通信先に送信するとともに前記応答メッセージの送信確認を１バイト単位で行い（送信処理）、
該要求処理と該送信処理を、前記応答メッセージの送信に対してＮＡＫを受信した場合、該プロトコルスタックは該確認済みオフセット値を維持した状態で、該送信すべきメッセージのデータサイズに至るまで繰り返して行ない、ＡＣＫを受信した場合、該プロセッサは該受信したＡＣＫ分だけ該確認済みオフセット値を更新する、ことを特徴とするメッセージの処理方法。
【請求項５】
該要求処理と該送信処理とを並行して実行することを特徴とする請求項４の処理方法。
【請求項６】
ネットワークを通して他の装置から要求メッセージを受け、応答メッセージを他の装置に送信するネットワーク装置においてメッセージを処理するプログラムであって、ネットワークに対するプロトコルを管理し、あるプロトコルの下に、該要求メッセージ及び該応答メッセージを処理するプロトコルスタックと、該プロトコルスタックで受信された該要求メッセージに対して応答を生成し、作成された応答メッセージを該プロトコルスタックに渡すアプリケーションとを含み、
該プロトコルスタックは、複数の通信先を識別する識別情報と、他の装置へのメッセージの送信を確認した確認済みのストリームの位置を示すオフセット値であって、該識別情報に対応付けられて、送信されたメッセージに対して受信したＡＣＫによって確認された確認済みオフセット値と、承認の成否を示す情報と、要求されたファイルの情報とを管理し、
該要求メッセージを受信すると、該アプリケーションに対して、該確認済みオフセット値を渡して応答メッセージの送信前に該所定のブロックサイズの単位として前記応答メッセージを１バイト単位で生成することを要求し（要求処理）、
かつ、該アプリケーションで生成された前記応答メッセージを前記通信先に送信するとともに前記応答メッセージの送信確認を１バイト単位で行い（送信処理）、
該要求処理と該送信処理を、前記応答メッセージの送信に対してＮＡＫを受信した場合、該プロトコルスタックは該確認済みオフセット値を維持した状態で、該送信すべきメッセージのデータサイズに至るまで繰り返して行ない、ＡＣＫを受信した場合、該プロセッサは該受信したＡＣＫ分だけ該確認済みオフセット値を更新する、ことを特徴とするメッセージの処理のためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はネットワーク装置に係り、特に家庭内の家電や住宅設備機器やセンサなどの機器や、ビル内や街に配置された様々な機器をネットワークに接続するためのネットワーク装置、及びネットワーク装置におけるメッセージの処理方法に関するものである。
【背景技術】
【０００２】
電子機器間を有線や無線で相互に接続する技術として、例えばＩＰ（Internet Protocol）などの様々な方法が規格化され、これに準拠したネットワーク装置を内蔵した電子機器が製品化されている。この種のネットワーク装置は、大型計算機やパーソナルコンピュータ、携帯型情報機器、携帯電話などだけでなく、ＡＶ（Audio Visual）家電機器、白物家電機器、センサ、設備機器などの家庭内やビル内、街に配置される様々な機器に搭載することが提唱されている。
この種の、携帯型の電子機器や小型の家電機器やセンサをネットワークに接続するためのネットワーク装置には、小型化、低消費電力であることが求められる。また、白物家電や設備系の機器に対しては、ネットワーク装置が低コストであることが重要である。
【０００３】
ネットワークによる通信においては、パケットとよばれる数バイトから数キロバイトのメッセージデータをネットワーク装置間でやり取りする。ネットワーク装置は、このパケットデータに対して様々な処理を施しつつ送信および受信するので、このパケットデータのサイズに応じた大量のメモリ、例えばＲＡＭ（Random Access Memory）を必要とする。大量のメモリを実装する結果、ネットワーク装置が大型化し、コストアップ及び消費電力の増大という問題が生じる。また、パケットデータの処理に時間がかかり、実用的な応答時間を得るためには大型のプロセッサが必要となる。このことも、ネットワーク装置の大型化やコストアップ、消費電力の増大を招く。
【０００４】
一般的に、あるネットワーク装置がネットワークに接続され、別のネットワーク装置からの要求を受けて、その要求に応じた応答を、複数のパケットに分割して送信する場合、通常、いったん送信すべきデータ列の全部または一部をＲＡＭ上の送信バッファに格納し、その内の一部分をパケットに格納し送信する処理が行われる。この際、そのパケットの送信が正しく行われたかどうかは、送信先のネットワーク装置から、そのパケットが正しく受け取れたことを示す肯定応答を受け取るまでわからない。もし、そのパケットが正しく受け取れなかったことを示す否定応答が返答された場合には、再び送信バッファからその内の一部分をパケットに格納し送信する処理が行われる。
【０００５】
このような処理においては、少なくとも、１パケットに格納できるデータサイズ以上の大きさの送信バッファサイズが必要であり、また実用的には、何倍もの送信バッファが必要となる。一方、送信するパケットサイズを小さくすると、送信バッファのサイズも小さくて済むが、その場合には送信回数が増大し、通信の時間がより多くかかる。
【０００６】
例えば、特許文献１（特開平７−２５０１２４公報）には、送信するレイヤー毎のヘッダサイズを先に計算し、各レイヤーが書き込む送信バッファの位置を求めることにより、送信バッファを有効に活用する方法が開示されている。然るに、このような方法においても、送信バッファのサイズをパケットサイズ以下にすることはできない。
【０００７】
【特許文献１】特開平７−２５０１２４公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上述のように、パケットの送信に実用的な速度を得るために、送信パケットサイズを大きくするためには、メモリが多く必要であり、消費電力や装置サイズを増大させてしまう。また、パケットを一旦送信バッファに格納してからこれを再び取り出し送信するという処理を、低消費電力でしかも低コストでネットワークを実現しようとして、より低速のプロセッサで行った場合、処理速度が多くかかるという問題が発生する。従来の方法で応答性能を確保するためには、より高速のプロセッサが必要であり、それでは消費電力の増大やコストの増大を招く。
【０００９】
そこで、本発明の目的は、通信メッセージの処理に必要とされる可変メモリの容量を節約することができるネットワーク装置、メッセージの処理方法、及びそれを実行するプログラムを提供することにある。
【課題を解決するための手段】
【００１０】
本発明に係るネットワーク装置は、好ましくは、物理的な伝送処理によりネットワークに可変のパケットデータを送信するネットワーク装置において、一定のブロックサイズ単位で、ある通信回線で送信した確認済のオフセット値である確認済みオフセット値を保持するメモリと、該確認済みオフセット値の位置でパケットデータに格納すべき所定のブロックサイズ単位のデータを生成する第１の処理、及び該パケットデータを送信する際に、パケットで必要となるブロックサイズ単位の回数に応じた分、該第１の処理を繰り返して行う第２の処理と、を実行するプロセッサと、を有し、前記メモリは、複数の通信先を識別する識別情報と、該識別情報に対応付けられて、送信されたパケットデータに対して受信したＡＣＫによって確認された前記確認済みオフセット値と、承認の成否を示す情報と、要求されたファイルの情報とを登録する通信状態管理テーブルを記憶し、前記プロセッサは、前記第１の処理において、前記パケットデータの送信前に該所定のブロックサイズの単位として応答すべきデータを１バイト単位で作成し、作成した前記データを前記通信先に送信するとともに前記データの送信確認を１バイト単位で行い、前記パケットデータの送信に対してＮＡＫを受信した場合、該プロセッサは該確認済みオフセット値を維持した状態で、前記第1の処理と前記第２の処理を繰り返して行ない、ＡＣＫを受信した場合、該プロセッサは該受信したＡＣＫ分だけ該確認済みオフセット値を更新する。
また、一例では、このネットワーク装置は、更に、家電機器又は住宅設備機器の入出力装置、メモリ装置、各種センサ、スイッチ、制御器のいずれかを含む制御対象機器と、制御対象機器を制御する制御部を有し、制御対象機器から得られたデータに関する処理データから所定のブロックサイズ単位のデータを生成する。
【００１１】
本発明に係るデータ送信方法は、好ましくは、物理的な伝送処理によりネットワークに可変のパケットデータを送信するネットワーク装置におけるデータ送信方法において、一定のブロックサイズ単位で、通信回線に送信した確認済のオフセット値である確認済みオフセット値をメモリに保持する第１の処理ステップと、該確認済みオフセット値の位置でパケットデータに格納すべき１ブロックサイズ単位のデータを返す第２の処理ステップと、該パケットデータを送信する際に、パケットで必要となるブロックサイズ単位の回数に応じた数だけ該第１及び該第２の処理を繰り返して行う第３の処理ステップと、該第３の処理の期間にパケットデータの送信を行う第４の処理ステップと、を有し、前記第１の処理ステップにおいて、複数の通信先を識別する識別情報と、該識別情報に対応付けられて、送信されたパケットデータに対して受信したＡＣＫによって確認された前記確認済みオフセット値と、承認の成否を示す情報と、要求されたファイルの情報とを登録する通信状態管理テーブルを記憶し、前記第２の処理ステップにおいて、前記パケットデータの送信前に該所定のブロックサイズの単位として応答すべきデータを１バイト単位で作成し、作成した前記データを前記通信先に送信するとともに前記データの送信確認を１バイト単位で行い、前記第３の処理ステップにおいて、前記パケットデータの送信に対してＮＡＫを受信した場合、該プロセッサは該確認済みオフセット値を維持した状態で、前記第1の処理と前記第２の処理を繰り返して行ない、ＡＣＫを受信した場合、該プロセッサは該受信したＡＣＫ分だけ該確認済みオフセット値を更新する。
【００１２】
本発明は、またメッセージの処理方法として把握され得る。すなわち、ネットワークを通して他の装置から要求メッセージを受け、応答メッセージを他の装置に送信するネットワーク装置におけるメッセージの処理方法であって、ネットワークに対するプロトコルを管理し、あるプロトコルの下に、該要求メッセージ及び該応答メッセージを処理するプロトコルスタックと、該プロトコルスタックで受信された該要求メッセージに対して応答を生成し、作成された応答メッセージを該プロトコルスタックに渡すアプリケーションとを含み、複数の通信先を識別する識別情報と、他の装置へのメッセージの送信を確認した確認済みのストリームの位置を示すオフセット値であって、該識別情報に対応付けられて、送信されたメッセージに対して受信したＡＣＫによって確認された確認済みオフセット値と、承認の成否を示す情報と、要求されたファイルの情報とを登録する通信状態管理テーブルをメモリに保持し、該プロトコルスタックは、該要求メッセージを受信すると、該アプリケーションに対して、該確認済みオフセット値を渡して応答メッセージの送信前に該所定のブロックサイズの単位として前記応答メッセージを１バイト単位で生成することを要求し（要求処理）、かつ該プロトコルスタックは、該アプリケーションで生成された前記応答メッセージを前記通信先に送信するとともに前記応答メッセージの送信確認を１バイト単位で行い（送信処理）、該要求処理と該送信処理を、前記応答メッセージの送信に対してＮＡＫを受信した場合、該プロトコルスタックは該確認済みオフセット値を維持した状態で、該送信すべきメッセージのデータサイズに至るまで繰り返して行ない、ＡＣＫを受信した場合、該プロセッサは該受信したＡＣＫ分だけ該確認済みオフセット値を更新するメッセージの処理方法である。
好ましくは、この要求処理と送信処理とを並行して実行するメッセージの処理方法である。
本発明はまた、上記データ送信方法又はメッセージの処理方法をプロセッサで実行するためのプログラムとしても把握され得る。
〔発明の効果〕
【発明の効果】
【００１３】
本発明によれば、通信メッセージの処理に必要とされる可変メモリの容量を節約することができる。また、低速なプロセッサでも高速にメッセージの応答処理を行うことができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
図１は、ネットワークシステム及びネットワーク装置の例を示す。
図において、ネットワーク１０１に、コントロール装置１０２及びネットワーク装置１０９が接続され、これらの装置間でデータの通信が行なわれる。なお、図１の例では、便宜上１台のコントロール装置１０２と１台のネットワーク装置１０９が示されているが、実際にはこれらの複数の装置がネットワークに接続され、それら複数の装置間でデータ通信が行なわれることは容易に想像できるであろう。
ネットワーク１０１は電波、光、音、電気信号など通信手段を用いて互いの装置間でメッセージやパケットを交換するものであり、ルータやケーブルなども含むものとする。コントロール装置１０２はネットワーク装置１０９に対して制御信号を与えたり、応答を受け取ったりする、例えばＰＣ（パーソナルコンピュータ）の如き情報処理装置である。
【００１５】
ネットワーク装置１０９は、ネットワークアダプタ１１０と、このアダプタに接続された制御対象機器１０８を有し、ネットワークアダプタ１１０は通信部１０３、ＣＰＵ１０４、ＲＯＭ１０５、ＲＡＭ１０６、制御部１０７を備える。
通信部１０３はネットワーク１０１及びＣＰＵ１０４と接続され、ネットワーク１０１を介してパケットを通信するためのユニットである。ＣＰＵ(Central Processing Unit)１０４は中央演算装置（プロセッサ）であり、プログラムを実行して所定の処理機能を実現する。実行されるプログラムはＲＯＭ１０５やＲＡＭ１０６に記憶されているか、又は予めＲＯＭ１０５や外部の記憶装置（図示せず）からＲＡＭ１０６にロードされて実行される。ＲＯＭ(Read Only Memory)１０５はデータやプログラムを記憶する。ＲＡＭ(Random Access Memory)１０６は、プログラムやデータを一時的に記憶する。
制御部１０７は、ＣＰＵ１０４からの命令に従い、制御対象機器１０８を適切に制御したり、操作する。制御対象機器１０８は、制御部１０７の制御対象となる、家電機器や住宅設備機器における入出力装置やメモリ装置、各種センサやスイッチ、制御器などである。
【００１６】
尚、図示の例では、ネットワーク装置１０９として制御対象機器１０８まで含む単一の装置構成を示しているが、他の例としては既存の制御対象機器１０８にネットワークアダプタ１１０を接続して構成するようにしてもよい。この場合、ネットワーク装置１０９には、制御対象機器１０８は含まれないことになるが、ネットワークアダプタ１１０と制御対象機器１０８との関係は上述の例と同様である。
【００１７】
次に、本実施例におけるプロトコルスタックの処理について説明する。この処理は、コントロール装置１０２からネットワーク１０１上に送信される何らかの要求メッセージに対して、ネットワーク装置１０９から応答を返す処理である。
ここで、本発明による処理の特徴を明確にするため、従来のプロトコルスタックとの対比において説明しておきたい。そこで、まず、図２を参照して、ネットワーク装置における従来のプロトコルスタックの処理の例について、説明する。
【００１８】
図２において、コントロール装置２０２とネットワーク装置２１４との間でメッセージに係る通信が行なわれる。図２において、２０１はアプリケーション、２０２はコントロール装置、２０３はプロトコルスタック、２０４はある要求メッセージ、２０５はメッセージのコピー、２０６は応答メッセージ、２０７は応答メッセージのコピー、２０８は応答の生成、２０９は送信バッファに追加、２１０は応答メッセージのコピー、２１１はＮＡＫ、２１２はＡＣＫ、２１３は送信バッファからＡＣＫ分を削除、２１４はネットワーク装置である。
【００１９】
コントロール装置２０２はコントロール装置１０２に対応し、ネットワーク装置２１４はネットワーク装置１０９に対応するが、いずれも従来の装置である。ネットワーク装置２１４の内部の処理プログラムとして、プロトコルスタック２０３と、アプリケーション２０１を有する。今、コントロール装置２０２からある要求メッセージ２０４をネットワーク装置２１４へ送信したとする。このメッセージはプロトコルスタック２０３で受け取られ、アプリケーション２０１にコピーされる。アプリケーション２０１は応答の生成処理２０８を行い、応答メッセージ２０６をプロトコルスタック２０３に渡す。
プロトコルスタック２０３はこれを送信バッファに追加処理２０９を行う。そして、その後送信バッファの先頭から、応答メッセージを構成し、応答メッセージのコピー２０７をコントロール装置２０２に送信する。ここで、コントロール装置２０２が、ＮＡＫ２１１すなわちこのメッセージの受け取りに失敗したことを表す不可応答を返答したとすると、再び、送信バッファの先頭から、応答メッセージを構成し、応答メッセージのコピー２１０をコントロール装置２０２に送信する。ここで、コントロール装置２０２がＡＣＫ２１２すなわち、このメッセージの受け取りに成功したことを表す肯定応答を返答したとすると、送信バッファからＡＣＫ分を削除する処理２１３を行う。
【００２０】
通信においてＡＣＫを受け取ることができなかった場合は、ネットワークにおける障害などの理由により、パケットデータの転送が正しく行われなかったことを意味する。その場合には、元のパケットを再送する必要がある。もちろん、常にコントロール装置２０２が肯定応答を返すのであれば、送信バッファに格納する処理は不要である。しかしながら、コントロール装置２０２が肯定応答を返すか、または、否定応答を返すか、あるいは一定時間何も応答がない、すなわちタイムアウトが発生するかは不明である。
【００２１】
そのため、パケットＰを送信後、タイムアウトやＡＣＫ、ＮＡＫの受信までパケットＰのデータを保持しなければならない。もし、ネットワーク装置が複数のコントロール装置からの通信を同時に行うことを可能にするためには、それぞれの通信回線毎に上記のプログラムを別のメモリエリアで実行する必要があり、ひいては送信バッファの記憶領域は、その通信回線分だけ余計に必要となる。
【００２２】
従来、ネットワーク装置において、ＲＡＭエリアが小さいマイコン(マイクロコントローラ)あるいはＲＡＭエリアの小さいネットワーク装置でこのようなプログラムを実行させる場合には、１パケットに格納するバイト数ｎを小さくしたり、同時に通信可能な回線数を小さくすることが一般的に行われてきた。
しかし、１パケットに格納するバイト数を小さくすると、ある送信すべきデータ量に対して、送信しなければならないパケット数が増大し、その結果、データ転送に時間がかかるようになる。また同時に通信可能な回線数を少なくすると、複数のコントローラからの操作が不可能になり、ネットワークの使用者にとって不便なシステムとなってしまう。
【００２３】
これに対して、本発明の実施例では、他のネットワーク装置からの要求を受けて、その要求に応じた応答を生成する際、応答に必要な現在状態とオフセット値のみを記憶し、オフセット値に対する応答を小さいブロックサイズ、例えば１バイトづつ生成しながら送信することにより、送信バッファを無くし、これにより大きいパケットサイズを用いる通信を省メモリで実現できる。
つまり、プロトコルスタックは、アプリケーションに対して、確認済みのオフセット値、即ちストリームでの位置を渡し、これに対して一定サイズ（例えば１バイト）のデータを返す処理を行い、実際のデータ転送の時点で、データ転送すべき１バイトのデータが必要になった時点でアプリケーションに要求することによって、送信バッファを無くすことができる。
【００２４】
図３は、ネットワーク装置のプロトコルスタックの処理を示すものであり、コントロール装置からネットワークを介して送信されるあるメッセージに対して、ネットワーク装置が応答を返す処理の実施例について説明するものである。
この処理は、ＲＯＭ１０５に記憶されたプロトコルスタックの処理プログラムがＣＰＵ１０４で実行されることにより行なわれる。この図において、３０１はコントロール装置、３０２はネットワーク装置、３０３はプロトコルスタック、３０４はアプリケーション、３０５はある要求メッセージ、３０６は確認済みオフセット=０、３０７はメッセージのコピー、３０８は応答メッセージ要求、３０９は応答の生成、３１０は応答メッセージ、３１１は応答メッセージのコピー、３１２はＮＡＫ、３１３は確認済みオフセットはそのまま、３１４は応答メッセージ要求、３１５は応答の生成、３１６は応答メッセージ、３１７は応答メッセージのコピー、３１８はＡＣＫ、３１９は確認済みオフセットをＡＣＫ分だけ加算である。
ここで、確認済みオフセットにおける確認とは、送信メッセージに対してネットワーク装置３０２がＡＣＫを受信したことを意味し、オスセットとは、データストリームの位置を指す。
【００２５】
コントロール装置３０１はコントロール装置１０２に対応し、ネットワーク装置３０２はネットワーク装置１０９に対応する。ネットワーク装置３０２の内部の処理プログラムとして、プロトコルスタック３０３と、アプリケーション３０４を有する。今、コントロール装置３０１からネットワーク装置３０２へある要求メッセージ３０５を送信したとする。このメッセージはプロトコルスタック３０３で受け取られ、確認済みオフセット=０の処理３０６を行い、メッセージのコピー３０７がアプリケーション３０４に渡される。
【００２６】
その後、プロトコルスタック３０３は確認済みオフセット値を元に、応答メッセージ要求３０８を１バイト分だけ行う。アプリケーション３０４は応答の生成３０９を行い、応答メッセージ３１０を１バイト返す。これを応答メッセージのコピー３１１として送信する。この処理をパケット長だけ繰り返し、応答メッセージの１パケットを生成する。
【００２７】
ここで、コントロール装置３１０がＮＡＫ３１２すなわち、このメッセージの受け取りに失敗したことを表す不可応答を返答したとすると、確認済みオフセットはそのまま３１３、応答メッセージ要求３０８と同様に、応答メッセージ要求３１４を１バイト分だけ行い、応答の生成３１５を行い、応答メッセージ３１６を１バイト返す。これを応答メッセージのコピー３１７として送信する。この処理をパケット長だけ繰り返し、応答メッセージの１パケットを生成する。
一方、コントロール装置３０１がＡＣＫ３１８すなわち、このメッセージの受け取りに成功したことを表す肯定応答を返答したとすると、確認済みオフセットをＡＣＫ分だけ加算する処理３１９を行う。
【００２８】
以上のように、本実施例によれば、プロトコルスタック３０３は送信バッファを持たず、確認済みオフセット値を管理することにより応答を生成することができる。アプリケーション３０４は現在の送信済みオフセット値に相当する送信すべきデータを１バイトだけ計算して返す処理を行い、これがパケット中のデータサイズ分だけ繰り返されることにより、パケット全体が構成される。一般的に、アプリケーション３０４が送信データをオフセット値から生成することは、順番にデータ列を生成することに比べて時間がかかる。
【００２９】
また、主にインターネット上のサーバ等においては、１つのサーバ等のネットワーク装置に対して、きわめて多数の要求者であるＰＣ、すなわちコントローラが存在するため、１つの通信回線に対する処理時間をできるだけ小さくすることが求められる。しかしながら、特に小型のネットワーク、ホームネットワークや機器の制御などの目的のネットワークにおいては、多数のネットワーク装置に対して単一または少数のコントローラから構成されることが多く、そのため、ネットワーク装置のプロセッサは１通信にそのリソースを集中させてもよい。更に、ネットワークに１バイトを送信するには、そのネットワークの転送速度に反比例するある一定の時間がかかるため、その時間以内に、１バイトを生成する処理を行うことができれば、応答速度が遅くなることはない。逆に、パケットの先頭１バイトが送信される時刻、すなわち、レスポンスにおいては、従来の方法では送信バッファに少なくとも、１パケットで格納するデータ列が生成されてから、最初の１パケットの送信が開始されるのに対して、本実施例によれば、パケットの先頭文字は１バイト分の応答を生成する時間で生成される。このため、特に低速なプロセッサを用いたネットワーク装置３０２であっても、実用的な応答速度が得られる。
【００３０】
次に、図４を参照して具体的な適用例について説明する。
図示の例は、アプリケーションとしてＨＴＴＰ(Hyper Text Transfer Protocol)を実装した場合の例である。ネットワーク装置１０９の構成は図１と同様であり、また基本的なソフトウエアによる処理動作は図３に示したものと同様である。
ネットワーク装置１０９が、ＨＴＴＰに応答するためには、ＨＴＴＰで規定されているいくつかのメッセージを生成し、そのメッセージを適当なパケットサイズに分割して要求元に送信する。
【００３１】
図４において、４０１は認証失敗メッセージ、４０２はファイル非存在メッセージ、４０３はファイル存在メッセージ、４０４はファイル存在メッセージヘッダー、４０５はファイル存在メッセージ本文である。ファイル存在メッセージ４０３はファイル存在メッセージヘッダー４０４とファイル存在メッセージ本文４０５から構成されている。
【００３２】
コントロール装置１０２からファイル名やユーザ名やパスワードを含むある要求を受け取った際、まずネットワーク装置１０９はその要求に含まれる要素を調べる。そしてそのユーザ名に対するパスワードが不正である場合は、「認証に失敗」した状態となる。またネットワーク装置１０９で受け付けられないファイル名が指定されていれば「ファイル不存在」の状態となる。
【００３３】
この後、ネットワーク装置１０９は、認証状態およびファイル存在状態により出力を変更する。認証に失敗した場合は認証失敗メッセージ４０１を返す。認証に成功しファイル非存在の場合はファイル不存在メッセージ４０２を、認証に成功しファイルも存在する場合は、ファイル存在メッセージ４０３を、そのファイルの中身に応じたファイル存在メッセージヘッダー４０４、ファイル存在メッセージ本文４０５から組み立て返す。
【００３４】
このような処理を行う、プロトコルスタック３０３（図３）のプログラムの処理動作について、図５を用いて説明する。
まず、送信データに残りありかどうか調べる（５０１）。その結果、もし送信データに残りが有れば、ステップ５０２へ進む。一方、送信データに残りが無ければ、終了する。
送信データに残りが有る場合、パケットの送信開始する（５０２）。以降、パケットの送信終了までに出力したデータを連結したものを１パケットとする。ステップ５０３ではｉ=０にする。次に、ｉ<送信サイズｎかどうか調べる処理である。もしｉ<送信サイズｎであれば、ステップ５０５へ進み、ｉ<送信サイズｎでなければ、ステップ５０９へ進む。
【００３５】
ステップ５０５では、ｋに現在の通信における確認済みオフセット値+ｉを代入する。そして、オフセットデータｋの文字ｃを得る（５０６）。その結果、ｃを出力する（５０７）。そして、ｉにｉ+１を代入して（５０８）、ステップ５０４からの処理を繰り返す。
尚、上記ステップ５０６の処理の詳細については図７を参照して後述する。
【００３６】
一方、ステップ５０９ではパケットの送信終了する。その後、ＡＣＫまたはＮＡＫを受信するか、タイムアウトまで待つ（５１０）。そして、ＡＣＫを受信したかどうか調べ（５１１）、もしＡＣＫを受信したら、ステップ５１２へ進み、確認済みオフセット値をｋ増加させる（５１２）。オフセット値がｋ増加して変更されると、通信状態管理テーブル６００のオフセット値６０４が更新される（５１３）。
このステップにおいて、ただし、ＡＣＫパケットに確認したデータ量が含まれる場合はｋの替わりにその値を用いる。一方、ＡＣＫを受信していない場合は、ステップ５０１へ戻り、処理を続ける。
【００３７】
この例において、１パケットを生成する際に、ステップ５０４〜５０８の処理を繰り返すことにより、１パケットの１文字づつを構成する。勿論、パケットの先頭にヘッダが存在する場合は、ステップ５０２の前にそのヘッダを送信する処理を行うことが可能である。また、パケットの末尾にフッタが存在する場合は、ステップ５０９の前にそのフッタを送信する処理を行うことが可能である。また、ヘッダやフッタがプロトコルスタックの別のレイヤーから構成されている場合は、ステップ５０６が呼び出すサブルーチンをそのレイヤーによるものと置き換えることにより、いかなるレイヤー構成でも対応可能である。また、ＣＲＣ（巡回走査符号）やチェックサムをヘッダーに付け加える処理は、先に、ステップ５０３の直後にステップ５０４〜ステップ５０８の処理を行い、ただし、ステップ５０７はｃを出力するのではなく、ＣＲＣ値やチェックサムを更新することにより、この繰り返しでＣＲＣ値やチェックサムを取得し、再び、図５の処理フローに戻ることにより実現できる。
【００３８】
次に、図６を参照して、確認済みオフセット値の管理について説明する。
図６は通信状態管理テーブル６００の例を示す。このテーブルは、ネットワーク装置１０９における通信を管理するためのものであり、ＲＡＭ１０６に保持される。
通信識別情報６０３は複数の通信を識別するための情報であり、通信先のＩＰアドレスと通信先が決定した通信ポート番号の組などである。列６０１は通信識別情報が「１９２．１６８．１．１：１０２４」であることを示し、列６０２は通信識別情報が「１９２．１６８．１．２：１０２５」であることを示す。
確認済みオフセット値６０４は、ネットワーク装置がこの通信において送信し、ＡＣＫによって確認されたデータサイズを記憶する。例えば、通信識別情報が「１９２．１６８．１．１：１０２４」、確認済みオフセット値が「１２３」の例において、「１２３」はネットワーク装置から相手の装置に１２３バイト送信し、それに対するＡＣＫを受け取ったことを意味する。同じく、通信識別情報が「１９２．１６８．１．２：１０２５」の例では、確認済みオフセット値が２４５バイトであることを示す。
【００３９】
認証状態６０５は認証の成否を示す情報を記憶する。例えば、通信識別情報が「１９２．１６８．１．１：１０２４」の認証状態は成功であり、通信識別情報が「１９２．１６８．１．２：１０２５」の認証状態は失敗を示している。要求ファイル６０６は要求されたファイルの情報が記憶される。例えば、通信識別情報が「１９２．１６８．１．１：１０２４」の要求ファイルは「３４５６」であり、この「３４５６」はＲＯＭ１０５上のアドレスを意味する。また、通信識別情報が「１９２．１６８．１．２：１０２５」の要求ファイルの「０」は、ファイルが存在しないを意味する。
尚、通信先が増えた場合、それに応じてテーブル６００内の通信識別情報の組が、更に追加されることが理解される。
【００４０】
図７は、図５の処理ステップ５０６に関するオフセットデータｋの文字ｃを得る処理の詳細例を示す。
この処理は、ネットワークを介して長いメッセージを送るＲＯＭ１０５に格納されているプログラムにより実行される。
例えばパスワードの照合による不一致の結果、認証に成功したかどうか調べる（７０１）。もし認証に成功した場合は、ステップ７０２へ進む。もし認証に成功していない場合は、ステップ７０４へ進む。
ステップ７０２では、ｋ<８４かどうか調べる。ここで、「８４」は認証成功メッセージの長さである。この比較の結果、もしｋ<８４であれば、ステップ７０３へ進み、ｋ<８４で無ければ、ステップ７１４へ進む。ステップ７０３では認証成功メッセージのｋ番目（０を先頭として）の文字を返す処理をする。
【００４１】
上記認証に失敗した場合、ステップ７０４ではファイルが存在しないかどうか調べる。その結果、もしファイルが存在しない場合は、ステップ７０５へ進み、一方ファイルが存在する場合は、ステップ７０７へ進む。ステップ７０５では、ｋ<４１かどうか調べる。このステップ７０５で、「４１」はファイル非存在メッセージ４０２の長さである。この比較の結果、もしｋ<４１であれば、ステップ７０６へ進み、一方ｋ<４１で無ければ、ステップ７１４へ進む。ステップ７０６ではファイル非存在メッセージ４０２のｋ番目（０を先頭として）の文字を返す処理をする。
【００４２】
ステップ７０７では、ｋ<３１かどうか調べる。このステップ７０７において、「３１」はファイル存在メッセージヘッダー４０４の長さである。比較の結果、もしｋ<３１であれば、ステップ７１３へ進み、もしｋ<３１で無ければ、ステップ７０８へ進む。ステップ７０８ではmimelenにこのファイルのmimetype文字列の長さを代入する。そして、ｋ<３１+mimelenかどうか調べる（７０９）。その結果、もしｋ<３１+mimelenであれば、ステップ７１２へ進み、一方ｋ<３１+mimelenで無ければ、ステップ７１０へ進む。
【００４３】
ステップ７１０では、ｋ<３１+mimelen+ファイルのサイズかどうか調べる。その結果、もしｋ<３１+mimelen+ファイルのサイズであれば、ステップ７１１へ進み、一方、ｋ<３１+mimelen+ファイルのサイズで無ければ、ステップ７１４へ進む。ステップ７１１ではこのファイルのｋ-３１-len番目（０を先頭として）の文字を返す。ステップ７１２では、このファイルのmimetype文字列のｋ-３１番目（０を先頭として）の文字を返す処理を行なう。
ステップ７１３では、ファイル存在メッセージヘッダー４０４のｋ番目（０を先頭として）の文字を返す処理を行なう。
また、ステップ７１４ではデータの終了を示す特別な文字を返す処理を行なう。
【００４４】
以上のように、上記実施例によれば、ネットワーク装置１０９で記憶しなければならないメモリ容量はわずかである。なお、本実施例の説明では、処理単位を１バイトとして説明しているが、１バイト以外のサイズ、たとえば１ビット単位や任意のブロックサイズ単位であっても良い。
【００４５】
上記実施例においては、１パケットを生成する際に、ステップ５０４〜５０８の処理を繰り返し、そしてその処理の中で、図７に示す処理を行う。この処理の全体は、従来の、送信バッファに認証失敗メッセージ４０１またはファイル不存在メッセージ４０２またはファイル存在メッセージ４０３をコピーして作成するよりも時間がかかる。しかしながら、１パケット中の１バイトを送信するには時間がかかるため、その時間以内に、ステップ５０４〜５０８の処理が完結しさえすれば、通信の応答時間としては従来の方法と変わらない。
【００４６】
むしろ、従来の、先に一度に送信バッファを完成させてからパケットの送信を開始する方法では、最初のパケットを送信するまでに、ある程度の時間がかかる。しかし本実施例によると、最初のパケットが送信されるまでにすべき処理は、そのパケットの先頭の１バイトを生成するだけの処理であるため、本実施例の方が高速に応答できることになる。また、多数のコントローラを相手に通信する場合は、一度に短時間の処理を行うことによって他の通信のための処理を行うことになるが、特に本実施例で想定しているような、特に小型のネットワーク、ホームネットワークや機器の制御などの目的のネットワークにおいては、多数のネットワーク装置に対して単一または少数のコントローラから構成されることが多く、処理時間が短時間であることは特に要求されない。むしろ、ユーザがコントローラを介して指令を出した際にすぐに応答が返ってくることが重要であり、そのため本実施例のようにより短時間の応答を実現することが可能である。
【００４７】
以上のように、本実施例によれば、別のネットワーク装置からの要求を受けて、その要求に応じた応答を生成する際、応答に必要な現在状態及びオフセット値を記憶し、オフセット値に対する応答を小さいブロックサイズ、例えば１バイトづつ生成しながら送信することにより、送信バッファを不要とすることができる。これにより、大きいパケットサイズを用いる通信を省メモリで実現する。
また、上記した１バイトずつのデータの生成処理と、ネットワークへのパケットデータの送信と並行同時的に動作させることにより、低速なプロセッサにおいても高速な応答を行うことが可能であり、これにより、低消費電力かつ低コストなネットワーク装置を実現することができる。
【００４８】
尚、本発明は上述した実施例に限定されず、本件発明の範囲内で種々変形可能である。以下、その幾つかの変形例について述べる。
上述した実施例においては、単純な構成のネットワーク装置を例にして説明したが、例えばヘッドセットや携帯型ゲーム機などのその他の携帯型電子機器にも適用可能であることは勿論である。また、制御対象機器としては、小型の機器に限らず、据え置き型の電子機器、例えば、計算機、パーソナルコンピュータ、携帯型情報機器、携帯電話、ＡＶ(Audio Visual)家電機器、白物家電機器、センサ、設備機器などの家庭内、ビル内、街に設置される様々な機器にも適用できる。
また、ネットワーク装置には、例えば人感センサ、温度センサ、湿度センサ、ガス漏れセンサなどのセンサが直接組み込まれていてもよいし、また、ＬＥＤやブザーや液晶ディスプレイなどの出力機器が直接組み込まれていても良い。
【００４９】
また、他の変形例として、上記実施例では、特定のパケットフォーマットについて例示しているが、ＴＣＰ／ＩＰ（Transmission Control Protocol/ Internet Protocol）、ＨＴＴＰなどにおけるアドレス処理、フラグメント処理、上位プロトコル処理であっても、同様に本発明を適用することができる。
【図面の簡単な説明】
【００５０】
【図１】本発明の一実施例におけるネットワークシステム及びネットワーク装置の構成例を示す図。
【図２】ネットワーク装置における従来のプロトコルスタックの処理の例を示す図。
【図３】本発明の一実施例によるネットワーク装置におけるプロトコルスタックの処理の例を示す図。
【図４】一実施例におけるネットワーク装置１０９で扱われるＨＴＴＰのデータの例を示す図。
【図５】一実施例におけるプロトコルスタックプログラムの処理動作を示すのフローチャート図。
【図６】一実施例における通信状態管理テーブルの例を示す図。
【図７】一実施例におけるプロトコルスタックプログラムの処理（図５）のステップ５０６に係る、オフセットデータｋの文字ｃを得るプログラムの処理動作の一例を示すフローチャート図。
【符号の説明】
【００５１】
１０１：ネットワーク  １０２：コントロール装置  １０３：通信部  １０４：ＣＰＵ  １０５：ＲＯＭ  １０６：ＲＡＭ  １０７制御部  １０８：制御対象機器  １０９：ネットワーク装置  １１０：ネットワークアダプタ  
３０１：コントロール装置  ３０２：ネットワーク装置  ３０３：プロトコルスタック  ３０４：アプリケーション  ６００：通信状態管理テーブル。
【図１】
0004456556.tif 000002
【図２】
0004456556.tif 000003
【図３】
0004456556.tif 000004
【図４】
0004456556.tif 000005
【図５】
0004456556.tif 000006
【図６】
0004456556.tif 000007
【図７】
0004456556.tif 000008