(57)【要約】【課題】データのチェックサムの算出に要する時間を短縮する。【解決手段】データ入力部２１０を介して送信データが入力されると、チェックサム算出部２２０は、入力されたデータの先頭からのチェックサムの累積値を算出し、所定長ごとにチェックサム格納部２３２に保持する。ヘッダ生成部２５０は、送信サイズ制御部２４０から次に送信すべきパケットのサイズを取得すると、送信すべきデータの区間を決定し、その区間の直前のデータまでのチェックサム累積値と、その区間の最後のデータまでのチェックサム累積値とを、チェックサム格納部２３２から読み出して、それらの差を算出し、当該区間のチェックサム値を得る。【選択図】        図２
2004153471.tif 000002
【特許請求の範囲】
【請求項１】
所定のタイミングでデータ長が確定するデータブロックにチェックサムを与えるために、前記タイミングに先立って、前記データブロックを含むデータユニットの所定長ごとに、前記データユニットの先頭からのチェックサムの累積値を算出して記憶装置に保持することを特徴とするチェックサム算出方法。
【請求項２】
前記データブロックのデータ長が確定したあと、そのデータブロックの前後の前記累積値を前記記憶装置から読み出して、そのデータブロックのチェックサムを算出することを特徴とする請求項１に記載のチェックサム算出方法。
【請求項３】
前記データブロックの直前のデータまでのチェックサムの累積値と、前記データブロックの最後のデータまでのチェックサム累積値とを前記記憶装置から読み出し、それらの差を算出して、そのデータブロックのチェックサムとすることを特徴とする請求項２に記載のチェックサム算出方法。
【請求項４】
所定のタイミングでデータ長が確定するデータブロックにチェックサムを与えるために、前記タイミングに先立って、前記データブロックを含むデータユニットを所定長に分割し、その各部分ごとにチェックサム値を算出して記憶装置に保持することを特徴とするチェックサム算出方法。
【請求項５】
前記データブロックのデータ長は、前記所定長の整数倍になるよう制限されることを特徴とする請求項１から４のいずれかに記載のチェックサム算出方法。
【請求項６】
あるデータユニットの複数の箇所について、データユニットの先頭からその箇所までのチェックサム値を算出して保持することを特徴とするチェックサム記録方法。
【請求項７】
データユニットの入力を受け付ける入力部と、
前記データユニットの先頭からのチェックサムの累積値を算出する算出部と、
前記データユニットの所定長ごとに、前記累積値を保持する保持部と、
を備えることを特徴とする通信装置。
【請求項８】
前記データユニットを複数のデータブロックに分割し、ネットワークを介して送出する出力部と、
次に送出するデータブロックのサイズを制御するサイズ制御部と、
次に送出するデータブロックのサイズを取得して、そのデータブロックの前後の前記累積値を前記保持部から読み出し、そのデータブロックのチェックサムを算出する第２算出部と、
をさらに備えることを特徴とする請求項７に記載の通信装置。
【請求項９】
前記保持部は、送出するデータブロックのサイズが予め定まっていない通信方式でデータユニットを送出する場合は、所定長ごとに、そのデータユニットの先頭からのチェックサムの累積値を保持し、送出するデータブロックのサイズが予め定まっている通信方式でデータユニットを送出する場合は、そのデータユニット全体のチェックサムを保持することを特徴とする請求項８に記載の通信装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はチェックサム生成技術に関し、特にネットワークを介して送受信されるパケットのチェックサムを算出する技術に関する。
【０００２】
【従来の技術】
インターネットが広く普及し、大量のデータがインターネットを介して送受信されている。現在、インターネットで広く利用されている通信プロトコルとして、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ  ／  Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）およびＵＤＰ／ＩＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ  ／  Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）がある。ＴＣＰおよびＵＤＰでは、データをパケット化して送受信するが、受信したデータの信頼性をチェックするために、それぞれのパケットにはチェックサムが与えられる。チェックサムは、パケットの全データを１の補数加算したものであり、パケットのヘッダ内に格納される。送信側は、パケットの送信に先立って、そのパケットの全データを加算してチェックサムを算出し、ヘッダに格納して送信する。受信側は、パケットを受信すると、そのパケットの全データを加算し、その結果が、ヘッダ内に格納されたチェックサム値と一致するか否かをチェックする。一致していれば、パケットの受信に成功したと判断し、一致していなければ、受信したパケット内のデータに誤りがあると判断して、そのパケットを廃棄する。
【０００３】
ＴＣＰの場合、１回に送信可能なデータの量は、ネットワークの状況や、受信側のバッファの状況などにより変動し、送信の直前に決定される。そのため、送信側では、一般に、次に送信するパケットのサイズが確定した後に、そのパケットのデータを読み出してチェックサムを算出している。そして、そのチェックサムをパケットのヘッダに格納し、ヘッダ情報を送信した後、再びデータを読み出して送信する。
【０００４】
特開２００１−２６８１５９号公報は、ＴＣＰパケットを生成する方法を開示する。この方法では、ＴＣＰにより送信すべきデータをいったんＴＸバッファに貯蔵し、次に送信するパケットのサイズが確定すると、そのサイズのデータをＴＸバッファから読み出してチェックサムを算出するとともに、そのデータを臨時バッファに格納する。そして、チェックサムを含むヘッダを送信した後、臨時バッファからデータを読み出して送信する。このように、メモリを２つ用意することにより、チェックサム算出のためのＴＸバッファからのデータ読み出しと、データ送信のための臨時バッファからのデータ読み出しを並行してパイプライン的に行うことができるので、オーバーヘッドを改善することができる。
【０００５】
【特許文献１】
特開２００１−２６８１５９号公報（図３）
【０００６】
【発明が解決しようとする課題】
しかしながら、この方法によっても、次に送信するパケットのサイズが確定してからチェックサムを算出することに変わりはなく、パケット送出までの遅延時間が長いという問題がある。また、物理的に分割された２種類のメモリを用意する必要があるので、ハードウエア規模が大きくなり、コストがかかるという問題がある。
【０００７】
本発明は、そうした課題に鑑みてなされたものであり、その目的は、データのチェックサムの算出に要する時間を短縮する技術を提供することにある。本発明の別の目的は、高速なチェックサム算出に要するハードウエアの規模を削減する技術を提供することにある。
【０００８】
【課題を解決するための手段】
本発明のある態様はチェックサム算出方法に関する。この方法は、所定のタイミングでデータ長が確定するデータブロックにチェックサムを与えるために、前記タイミングに先立って、前記データブロックを含むデータユニットの所定長ごとに、前記データユニットの先頭からのチェックサムの累積値を算出して記憶装置に保持する。
【０００９】
データブロックは、たとえば、ＴＣＰにおけるペイロードであってもよい。ＴＣＰパケットは送信直前にデータ長が確定するが、予め所定長ごとにチェックサムの累積値を格納しておくことで、データ長が確定したときに、そのデータブロックの前後の累積値を利用して、短時間でパケットのチェックサムを算出することができる。
【００１０】
前記データブロックのデータ長が確定したあと、そのデータブロックの前後の前記累積値を前記記憶装置から読み出して、そのデータブロックのチェックサムを算出してもよい。前記データブロックの直前のデータまでのチェックサムの累積値と、前記データブロックの最後のデータまでのチェックサム累積値とを前記記憶装置から読み出し、それらの差を算出して、そのデータブロックのチェックサムとしてもよい。
【００１１】
本発明の別の態様も、チェックサム算出方法に関する。この方法は、所定のタイミングでデータ長が確定するデータブロックにチェックサムを与えるために、前記タイミングに先立って、前記データブロックを含むデータユニットを所定長に分割し、その各部分ごとにチェックサム値を算出して記憶装置に保持する。
【００１２】
前記データブロックのデータ長は、前記所定長の整数倍になるよう制限されてもよい。
【００１３】
本発明のさらに別の態様は、チェックサム記録方法に関する。この方法は、あるデータユニットの複数の箇所について、データユニットの先頭からその箇所までのチェックサム値を算出して保持する。データユニットのサイズが大きい場合であっても、途中の複数の箇所について、チェックサムの途中結果を記録しておくことで、データユニットの先頭に近いデータに誤りがあったときに、データユニット全体のチェックサムを計算するまでもなく、誤りを検出することができる。
【００１４】
本発明のさらに別の態様は、通信装置に関する。この通信装置は、データユニットの入力を受け付ける入力部と、前記データユニットの先頭からのチェックサムの累積値を算出する算出部と、前記データユニットの所定長ごとに、前記累積値を保持する保持部と、を備える。
【００１５】
前記データユニットを複数のデータブロックに分割し、ネットワークを介して送出する出力部と、次に送出するデータブロックのサイズを制御するサイズ制御部と、次に送出するデータブロックのサイズを取得して、そのデータブロックの前後の前記累積値を前記保持部から読み出し、そのデータブロックのチェックサムを算出する第２算出部と、をさらに備えてもよい。
【００１６】
前記保持部は、送出するデータブロックのサイズが予め定まっていない通信方式でデータユニットを送出する場合は、所定長ごとに、そのデータユニットの先頭からのチェックサムの累積値を保持し、送出するデータブロックのサイズが予め定まっている通信方式でデータユニットを送出する場合は、そのデータユニット全体のチェックサムを保持してもよい。送出するデータブロックのサイズが予め定まっていない通信方式は、たとえばＴＣＰであってもよく、送出するデータブロックのサイズが予め定まっている通信方式は、たとえばＵＤＰであってもよい。
【００１７】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、などの間で変換したものもまた、本発明の態様として有効である。
【００１８】
【発明の実施の形態】
図１は、本発明の実施の形態に係る通信装置の一例としてのインターネット電話装置１００の全体構成を示す。インターネット電話装置１００は、インターネット２０を介して、他のインターネット電話装置１００との間で通話を行うための装置である。インターネット電話装置１００は、主に、ソフトウェア処理を実行するための汎用回路であるＣＰＵ１１０、プログラムエリアまたはワークエリアとして利用されるメモリ１２０、インターネット２０を介してパケットを送受信するネットワークインターフェース部１３０、音声信号を入力するマイク１５０、音声信号を出力するスピーカ１６０、音声信号の圧縮符号化処理および復号処理を行うコーデック処理部１４０、ＩＰによる通信のための各種処理を行うＩＰ処理部１７０、ＴＣＰまたはＵＤＰによる通信のための各種処理を行うＴＣＰ／ＵＤＰ処理部２００、およびこれらの構成を電気的に接続するバス１０２を備える。
【００１９】
本実施の形態のインターネット電話装置１００では、音声信号などのデータをＴＣＰ／ＩＰにより送信するためにＴＣＰパケットを生成するにあたって、送信するデータが入力されたときに、予め所定長ごとにチェックサムの累積値を算出して保持しておく。そして、ＴＣＰパケットのサイズが確定したときに、その累積値を利用して、そのパケットのチェックサムを算出する。これにより、従来の、送信サイズが確定してからデータを読み出してチェックサムを算出する方式に比べて、チェックサムの算出に要する時間を大幅に短縮することができる。この点については、図２以降の説明部分で詳述する。
【００２０】
まず、インターネット電話装置１００がパケットを受信したときの動作の概要について説明する。ネットワークインターフェース部１３０が受信したパケットは、ＩＰ処理部１７０に送られる。ＩＰ処理部１７０は、パケットが自装置に割り当てられたＩＰアドレスに宛てられたものであるか否かを判断し、自装置宛てのパケットのみをＴＣＰ／ＵＤＰ処理部２００に送る。ＴＣＰ／ＵＤＰ処理部２００は、ヘッダ情報などからパケットがＴＣＰパケットであるかＵＤＰパケットであるかを判断し、それぞれのパケットに対して必要な処理を実行する。受信したパケットが音声信号であった場合、そのデータはコーデック処理部１４０に送られる。コーデック処理部１４０は、圧縮符号化されていた通話音声信号を復号し、スピーカ１６０に出力する。
【００２１】
つづいて、インターネット電話装置１００が音声信号を含むデータを送信するときの動作の概要について説明する。マイク１５０から入力された音声信号は、コーデック処理部１４０に送られ、符号化される。符号化された信号は、必要であれば、図示しないセキュリティ処理部により暗号化された後、ＴＣＰ／ＵＤＰ処理部２００に送られパケット化される。生成されたＴＣＰまたはＵＤＰパケットは、ネットワークインターフェース部１３０を介して、インターネット２０に送出される。
【００２２】
ＩＰ処理部１７０、ＴＣＰ／ＵＤＰ処理部２００、およびコーデック処理部１４０の機能は、ハードウエア的にはＣＰＵ１１０やメモリ１２０などの構成で実現でき、ソフトウエア的にはプロトコル処理機能またはコーデック処理機能のあるプログラムなどによって実現できるが、本図ではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウエア、ソフトウエアの組合せによっていろいろなかたちで実現できる。これらの構成を、専用の回路により実現してもよい。本図では、ＩＰ処理部１７０、ＴＣＰ／ＵＤＰ処理部２００、およびコーデック処理部１４０は、それぞれバス１０２に接続されているが、これらを専用の回路により実現する場合、それぞれの回路を専用バスにより接続してもよい。
【００２３】
図２は、図１のＴＣＰ／ＵＤＰ処理部２００の内部構成のうち、本実施の形態において特徴的なパケット生成機能を実現するための構成を示す。ＴＣＰ／ＵＤＰ処理部２００は、ＣＰＵ１１０などにより用意された送信データの入力を受け付けるデータ入力部２１０、送信データのチェックサムの累積値を算出するチェックサム算出部２２０、送信データを保持するデータ格納部２３０、送信データの所定長の区間ごとにチェックサムの累積値を保持するチェックサム格納部２３２、データ格納部２３０に残っている未送信のデータのサイズを格納するデータサイズ格納部２３４、ＴＣＰパケットの送信サイズを制御する送信サイズ制御部２４０、ＴＣＰおよびＵＤＰパケットのヘッダ情報を生成する、第２算出部の一例としてのヘッダ生成部２５０、およびＴＣＰおよびＵＤＰパケットを出力するパケット出力部２６０を含む。
【００２４】
まず、ＴＣＰパケットが生成される手順について説明する。ＣＰＵ１１０などからデータ入力部２１０を介して入力された送信データは、データ格納部２３０に格納されるとともに、チェックサム算出部２２０に送られる。チェックサム算出部２２０は、入力されたデータの先頭からのチェックサムの累積値を算出し、所定長ごとに、算出された累積値を出力してチェックサム格納部２３２に保持しておく。チェックサムは、１６ビット（１ワード）ごとに一まとめにしたデータを順次加算することにより算出されるが、ここで、加算とは１の補数加算を指し、加算結果が１６ビットに収まらずに桁あふれした場合は、加算結果に１を加える。
【００２５】
図３は、データ格納部２３０およびチェックサム格納部２３２の内部データの例を示す。本図では、２８８ワードの送信データがデータ格納部２３０に格納されている。チェックサム格納部２３２には、６４ワードごとにチェックサムの累積値が格納されている。たとえば、送信データの先頭から６４ワード目までのチェックサム累積値は１６進数で３２１０であり、先頭から１２８ワード目までのチェックサム累積値は１６進数で５３３２である。
【００２６】
図２に戻り、ＴＣＰパケットの生成手順の説明を続ける。送信サイズ制御部２４０は、受信側のバッファの状況や、パケット消失等のネットワークの状況を考慮して、次に送信すべきＴＣＰパケットのサイズを決定する。このとき、ＴＣＰパケットのサイズは、チェックサム累積値を記録した区間の単位長の整数倍に制限される。すなわち、本実施の形態では、ＴＣＰパケットのサイズは、６４ワードの整数倍に制限される。この理由については後で詳述する。
【００２７】
ヘッダ生成部２５０は、送信サイズ制御部２４０から、次に送信すべきＴＣＰパケットのサイズを取得すると、そのサイズをもとに送信すべきデータの区間を決定し、その区間の直前の区間の最後のチェックサム累積値と、その区間の最後のチェックサム累積値とを、チェックサム格納部２３２から読み出す。そして、それらの差を算出し、当該区間のチェックサム値を得る。１の補数演算においては、負数を絶対値のビット反転で表現し、ａ−ｂ＝ａ＋＾ｂ（ただし、＾ｂはｂのビット反転を表す）として減算を行う。ヘッダ生成部２５０は、このチェックサム値をヘッダ情報に格納し、その他のヘッダ情報とともに出力する。パケット出力部２６０は、ヘッダ生成部２５０から取得したヘッダ情報を出力した後、データ格納部２３０から送信サイズ分のデータを読み出して出力する。
【００２８】
図３の例において、たとえば、最初に送信するＴＣＰパケットのサイズが６４ワードであったとすると、そのパケットのチェックサム値は、３２１０ｈである。つづいて、１４４ワードのデータ長のパケットを送信可能であったとする。このとき、送信サイズ制御部２４０は、チェックサム累積値を記録した区間の単位長の整数倍で、かつ、送信可能なパケットのサイズを超えないサイズを、次に送信するＴＣＰパケットのサイズとする。ここでは、１４４を超えない最大の６４の倍数、すなわち１２８ワードとなる。次に送信すべきデータ２３０ｂおよび２３０ｃのチェックサム値は、その区間の最後のチェックサム累積値である７６５４ｈから、その区間の直前の区間２３０ａの最後のチェックサム累積値である３２１０ｈを減じた値、すなわち４４４４ｈとなる。
【００２９】
データを送信すると、データサイズ格納部２３４に保持している未送信データサイズの値から、送信したデータのサイズを減じる。送信サイズ制御部２４０が決定したＴＣＰパケットのデータサイズが、未送信データのサイズよりも大きい場合は、データサイズ格納部２３４に保持されたデータサイズがヘッダ生成部２５０に出力される。このとき、ヘッダ生成部２５０は、データ全体のチェックサム累積値から、直前に送信したデータ区間の最後のチェックサム累積値を減じて、送信パケットのチェックサム値を得る。
【００３０】
このように、予め所定長ごとにチェックサム累積値を算出して保持しておき、その累積値を利用してパケットのチェックサムを算出するので、チェックサムの算出に要する時間を大幅に短縮することができ、パケットサイズが確定してからパケットを送出するまでの遅延時間を削減することができる。これは、通話音声などリアルタイム性が要求されるデータを送受信する際に、とくに有効である。
【００３１】
チェックサム累積値を記録する単位区間のサイズは、送信側および受信側の装置の性能や、ネットワークの性能などを考慮して設計すればよい。ネットワーク上の通信がある程度の不確実性を伴うのは不可避であり、また、必要以上に小さいサイズのパケットで通信を行うことは非効率的であるから、送信するパケットのサイズを、たとえば６４ワードの整数倍に制限したとしても支障はない。６４ワードごとにチェックサム累積値を格納する場合、チェックサム格納部２３２の容量は、全てのデータについてチェックサム累積値を保持しておく場合に比べて、６４分の１ですむ。また、パケットのチェックサムを算出するためにメモリから読み出すデータは、パケットデータの前後のチェックサム累積値に対応する２ワードですむため、データ格納部２３０とチェックサム格納部２３２とを物理的に分割された２種類のメモリにより実現する必要はなく、１つにまとめてもよい。すなわち、メモリに対する制約が小さい。
【００３２】
上述の方法は、ソフトウエアによっても実現できるが、より高速化を図るためにＴＣＰおよびＵＤＰのための処理を専用のハードウエアにより実現する場合に、本方法を適用すれば、メモリアクセスのオーバーヘッドが改善され、より有効に処理の高速化に寄与することができる。
【００３３】
次に、ＵＤＰパケットを生成する手順について説明する。ＣＰＵ１１０などからデータ入力部２１０を介して入力されたデータは、データ格納部２３０に格納されるとともに、チェックサム算出部２２０に送られる。ＵＤＰの場合は、送信するパケットのサイズが予め指定されるので、所定の区間ごとにチェックサム累積値を保持しておく必要はなく、パケット全体のチェックサムを算出してチェックサム格納部２３２に保持する。ヘッダ生成部２５０は、次に送信すべきＵＤＰパケットのチェックサム値をチェックサム格納部２３２から読み出してヘッダ情報に格納し、その他のヘッダ情報とともに出力する。パケット出力部２６０は、ヘッダ生成部２５０から取得したヘッダ情報を出力した後、データ格納部２３０からデータを読み出して出力する。
【００３４】
このように、本実施の形態によれば、ＴＣＰとＵＤＰのパケット生成処理のための構成を別個に設ける必要はなく、同じ構成により双方のパケットを生成して送信することができる。
【００３５】
ＴＣＰによりデータを送信する場合であっても、最初に送信すべきパケットのサイズがデータサイズよりも大きい場合には、一度に全てのデータを送信可能であるから、減算によりチェックサム値を算出する必要はなく、データ全体のチェックサム値がパケットのチェックサム値となる。
【００３６】
図４は、本実施の形態におけるチェックサム算出方法の手順を示すフローチャートである。ＣＰＵ１１０などからデータ入力部２１０を介して送信データが入力されると（Ｓ１００）、チェックサム算出部２２０は、入力されたデータの先頭からのチェックサムの累積値を算出し、所定長ごとに、算出された累積値を出力してチェックサム格納部２３２に保持する（Ｓ１０２）。ヘッダ生成部２５０は、送信サイズ制御部２４０から、次に送信すべきＴＣＰパケットのサイズを取得すると（Ｓ１０４）、そのサイズをもとに送信すべきデータの区間を決定し、その区間の直前のデータまでのチェックサム累積値と、その区間の最後のデータまでのチェックサム累積値とを、チェックサム格納部２３２から読み出す（Ｓ１０６）。そして、それらの差を算出し、当該区間のチェックサム値を得る（Ｓ１０８）。パケット出力部２６０は、ヘッダ生成部２５０から取得したチェックサムを含むヘッダ情報を送信し（Ｓ１１０）、さらにデータ格納部２３０から送信サイズ分のデータを読み出して送信する（Ｓ１１２）。送信データが残っている場合は（Ｓ１１４のＮ）、Ｓ１０４に戻り、パケットを生成して送信する手順を繰り返す。全てのデータを送信すると（Ｓ１１４のＹ）、処理を終了する。
【００３７】
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。以下、そうした例を述べる。
【００３８】
実施の形態では、インターネット電話装置を例にとって説明したが、本発明の技術は、コンピュータ、携帯電話、デジタルカメラ、ビデオ装置など、データを送受信する通信装置全般に利用可能である。また、一連のデータ列について、先頭からのチェックサム累積値を複数箇所に埋め込む技術は、通信に限らず、データを記録する装置全般に利用可能である。
【００３９】
ＴＣＰ／ＵＤＰ処理部２００を実現するための回路およびメモリを、一つの半導体基板上に搭載してもよい。さらに、ＩＰ処理部１７０、コーデック処理部１４０、ＣＰＵ１１０、セキュリティ処理部などの回路を搭載してもよい。これにより、通信装置の小型化、軽量化、高速化を図ることができる。
【００４０】
【発明の効果】
本発明によれば、データのチェックサムの算出に要する時間を短縮する技術を提供することができる。また、本発明によれば、高速なチェックサム算出に要するハードウエアの規模を削減する技術を提供することができる。
【図面の簡単な説明】
【図１】第１の実施の形態に係る通信装置の一例としてのインターネット電話装置の全体構成を示す図である。
【図２】図１のＴＣＰ／ＵＤＰ処理部の内部構成を示す図である。
【図３】データ格納部とチェックサム格納部の内部データの例を示す図である。
【図４】第１の実施の形態に係るチェックサム算出方法の手順を示すフローチャートである。
【符号の説明】
１００  インターネット電話装置、  ２００  ＴＣＰ／ＵＤＰ処理部、  ２１０  データ入力部、  ２２０  チェックサム算出部、  ２３０  データ格納部、２３２  チェックサム格納部、  ２３４  データサイズ格納部、  ２４０  送信サイズ制御部、  ２５０  ヘッダ生成部、  ２６０  パケット出力部。
【図１】
2004153471.tif 000003
【図２】
2004153471.tif 000004
【図３】
2004153471.tif 000005
【図４】
2004153471.tif 000006