(57)【要約】【課題】順序番号が付与されたデータを受信バッファに効率的に格納して受信性能の低下を有効に防止することが可能な通信装置を提供する。【解決手段】通信装置は、受信バッファに格納されたパケットのうち、先頭のパケットからデータの順序番号が連続する末尾のパケットの情報を記憶し、受信されたパケットが、受信バッファ中で、末尾のパケットに連続するか否かを順序番号に基づいて判定し、受信されたパケットが末尾のパケットに連続しないと判定された場合、受信バッファ中の末尾のパケットから、受信されるパケットの受信バッファ中の格納位置を探索し、受信されたパケットを探索された格納位置に格納する。【選択図】図３
2020141188.tif 000002
【特許請求の範囲】
【請求項１】
パケットを受信する受信手段と、
前記受信手段により受信されたパケットを格納する受信バッファと、
前記受信バッファに格納されたパケットのうち、先頭のパケットからデータの順序番号が連続する末尾のパケットの情報を記憶する記憶手段と、
前記受信手段により受信されたパケットが、前記受信バッファ中で、前記末尾のパケットに連続するか否かを前記順序番号に基づいて判定する判定手段と、
前記判定手段により、前記受信されたパケットが前記末尾のパケットに連続しないと判定された場合、前記受信バッファ中の前記末尾のパケットから、前記受信されるパケットの前記受信バッファ中の格納位置を探索し、前記受信されたパケットを、探索された前記格納位置に格納するよう制御する制御手段と
を備えることを特徴とする通信装置。
【請求項２】
前記制御手段は、前記判定手段により、前記受信されたパケットが前記末尾のパケットに連続すると判定された場合、前記受信されたパケットを、前記受信バッファ中で、前記末尾のパケットの後に連続して格納する
ことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記制御手段は、前記受信されたパケットが前記受信バッファに格納された際に、前記記憶手段により記憶される前記末尾のパケットの情報を更新する
ことを特徴とする請求項１または２に記載の通信装置。
【請求項４】
前記判定手段は、前記受信されたパケットに付与された順序番号およびデータ長を参照して、前記受信されたパケットが、前記末尾のパケットに連続するか否かを判定する
ことを特徴とする請求項１から３のいずれか１項に記載の通信装置。
【請求項５】
前記判定手段は、前記末尾のパケットの前記順序番号に前記データ長を加算した値が、前記受信されたパケットの順序番号に合致する場合に、前記受信されたパケットが前記末尾パケットに連続すると判定する
ことを特徴とする請求項４に記載の通信装置。
【請求項６】
前記制御手段は、前記受信されたパケットを、前記末尾のパケットに連続する場合と前記末尾のパケットに連続しない場合とのいずれも、同一の受信バッファに格納する
ことを特徴とする請求項１から４のいずれか１項に記載の通信装置。
【請求項７】
前記制御手段は、前記受信バッファ中で、前記末尾パケットに後続してパケットが格納されているか否かを判定し、後続するパケットが先頭のパケットからデータの順序番号が連続する場合に、前記記憶手段により記憶される前記末尾パケットの情報を、前記後続するパケットで更新する
ことを特徴とする請求項１から６のいずれか１項に記載の通信装置。
【請求項８】
前記制御手段は、前記受信されたパケットが、前記受信バッファ中に格納されていないデータを含むか否かを判定し、前記受信されたパケットが前記受信バッファ中に格納されていないデータを含むと判定された場合、前記受信バッファ中に格納されていないデータを抽出して前記受信バッファに格納する
ことを特徴とする請求項１から７のいずれか１項に記載の通信装置。
【請求項９】
前記制御手段は、前記受信されたパケットが、前記受信バッファ中に格納されていないデータを含まないと判定された場合、前記受信パケットを破棄する
ことを特徴とする請求項８に記載の通信装置。
【請求項１０】
前記順序番号は、ＴＣＰ（Ｔｒａｎｓｐｏｒｔ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）におけるシーケンス番号である
ことを特徴とする請求項１から９のいずれか１項に記載の通信装置。
【請求項１１】
パケットを受信するステップと、
受信バッファに格納されたパケットのうち、先頭のパケットからデータの順序番号が連続する末尾のパケットの情報を記憶するステップと、
受信されたパケットが、前記バッファ中で、前記末尾のパケットに連続するか否かを前記順序番号に基づいて判定するステップと、
前記受信されたパケットが前記末尾のパケットに連続しないと判定された場合、前記受信バッファ中の前記末尾のパケットから、前記受信されるパケットの前記受信バッファ中の格納位置を探索し、前記受信されたパケットを、探索された前記格納位置に格納するステップと
を備えることを特徴とする通信装置の制御方法。
【請求項１２】
コンピュータを、請求項１から１０のいずれか１項に記載の通信装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データに順序番号が付与されたパケットを受信する通信装置、通信装置の制御方法およびプログラムに関する。
【背景技術】
【０００２】
通信プロトコルにおいてデータ通信の信頼性を実現するため、送信側装置から送信されたデータに順序番号を付与し、受信側装置によりデータが成功裡に受信されたことを、受信側装置が送信側装置に通知する手法がある。
例えば、ＴＣＰ（Ｔｒａｎｓｐｏｒｔ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）では、データにシーケンス番号を付与して管理する。受信側装置は、受信したデータに付与されたシーケンス番号に基づき、受信したデータを受信バッファに格納し、受信済みの最終データを示すシーケンス番号を確認応答（Ａｃｋｎｏｗｌｅｄｇｅ、以下「ＡＣＫ」という。）パケットとして送信側装置に通知する。
【０００３】
このＡＣＫパケットを送信側装置が受信することで、受信側装置によりデータが受信されたことが保証され、データの送信が完了したと判断することができる。一方、所定時間内に送信したデータに対するＡＣＫが受信できない場合、送信側装置は、データを送信側装置へ再送するよう制御する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平５−５６０７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、受信側装置は、新たなデータを受信すると、受信したデータに付与されたシーケンス番号を参照し、受信バッファの先頭から受信バッファ内の格納位置を探索して、探索された格納位置に受信したデータを格納する。
このため、受信バッファで管理されるデータの量が増加するのに比例して、新たに受信したデータの受信バッファ中の格納位置の探索およびデータの格納に要する処理時間が増加してしまい、受信側装置におけるデータの受信性能が低下しかねない。
【０００６】
特許文献１は、順序通りに受信したデータと順序違いで受信したデータとを別々のメモリに格納する受信装置を開示する。具体的には、特許文献１の受信装置は、受信バッファを複数のメモリブロックに分け、データパケットが順序通りに到着している間は、メモリブロック内の各メモリへデータを順序番号順に物理的に整列させて格納する。一方、順序違いのデータパケットを受信すると、受信装置は、順序通りのデータを格納するメモリとは異なるメモリへデータを格納する。
【０００７】
しかしながら、特許文献１の受信装置では、順序違いのデータは、順序通りのデータを格納するメモリとは異なるメモリに受信した順に格納されるため、順序通りのデータと順序違いのデータを最終的に順序番号順に結合しなければならない。このため、順序通りのデータを格納するメモリの先頭から探索して、順序通りのデータに再送データ等の順序違いのデータを結合していかなければならない。
従って、受信バッファで管理されるデータの数が増加するのに比例して、順序通りのデータへの順序違いのデータを結合する際の、データの受信バッファ中の格納位置の探索およびデータの格納に要する処理時間が増加してしまう。このため、データの受信性能が低下するおそれがあった。
【０００８】
本発明は上記課題に鑑みてなされたものであり、その目的は、順序番号が付与されたデータを受信バッファに効率的に格納して受信性能の低下を有効に防止することにある。
【課題を解決するための手段】
【０００９】
上記課題を解決するため、本発明に係る通信装置は、パケットを受信する受信手段と、前記受信手段により受信されたパケットを格納する受信バッファと、前記受信バッファに格納されたパケットのうち、先頭のパケットからデータの順序番号が連続する末尾のパケットの情報を記憶する記憶手段と、前記受信手段により受信されたパケットが、前記受信バッファ中で、前記末尾のパケットに連続するか否かを前記順序番号に基づいて判定する判定手段と、前記判定手段により、前記受信されたパケットが前記末尾のパケットに連続しないと判定された場合、前記受信バッファ中の前記末尾のパケットから、前記受信されるパケットの前記受信バッファ中の格納位置を探索し、前記受信されたパケットを、探索された前記格納位置に格納するよう制御する制御手段とを備える。
【発明の効果】
【００１０】
本発明によれば、順序番号が付与されたデータを受信バッファに効率的に格納して受信性能の低下を有効に防止することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の各実施形態に係る通信装置のハードウエア構成の一例を示す図。
【図２】各実施形態に係る通信装置の機能構成の一例を示すブロック図。
【図３】実施形態１に係る通信装置が受信パケットを受信バッファに格納する処理の概略処理手順の一例を示すフローチャート。
【図４】実施形態１に係る通信装置が受信パケットを受信バッファに格納する前後の受信バッファの構成例。
【図５】実施形態１に係る通信装置が受信パケットを受信バッファに格納する前後の受信バッファへの他の格納例。
【図６】実施形態２に係る通信装置が受信パケットを受信バッファに格納する処理の概略処理手順の一例を示すフローチャート。
【図７】実施形態２に係る通信装置が受信パケットを受信バッファに格納する前後の受信バッファの構成例。
【図８】実施形態３に係る通信装置が受信パケットを受信バッファに格納する処理の概略処理手順の一例を示すフローチャート。
【図９】実施形態３に係る通信装置が受信パケットを受信バッファに格納する前後の受信バッファの構成例。
【図１０】実施形態３に係る通信装置が受信パケットを受信バッファに格納する前後の受信バッファの他の構成例。
【図１１】実施形態３に係る通信装置が受信パケットを受信バッファに格納せず廃棄する場合の受信バッファの構成例。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照して、本発明を実施するための実施形態について詳細に説明する。なお、以下に説明する実施形態は、本発明の実現手段としての一例であり、本発明が適用される装置の構成や各種条件によって適宜修正または変更されるべきものであり、本発明は以下の実施形態に限定されるものではない。また、本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１３】
以下、通信装置が、ＴＣＰ（Ｔｒａｎｓｐｏｒｔ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）に準拠してシーケンス番号が付与されたデータを送受信する例を説明するが、本実施形態が使用可能な通信プロトコルはＴＣＰに限定されない。例えば、通信装置は、シーケンス番号等の順序番号が付与されるデータを管理する機構を持つ他の通信プロトコルを使用してもよい。
【００１４】
（実施形態１）
＜本実施形態のハードウエア構成＞
図１は、本実施形態に係る通信装置のハードウエア構成の一例を示す図である。
図１の通信装置１は、ＲＡＭ１１、ＲＯＭ１２、ＣＰＵ１３、タイマ管理部１４、メディアアクセス制御モジュール（ＭＡＣ）１５、物理レイヤモジュール（ＰＨＹ）１６、およびアンテナ１８を備える。ＲＡＭ１１、ＲＯＭ１２、ＣＰＵ１３、タイマ管理部１４、およびＭＡＣ１５は、システムバス１７により、通信可能に接続される。
なお、通信装置１は、上記のモジュール全てを備えなくともよく、例えばタイマ管理部１４やアンテナ１８等は、必要に応じて省略されてもよいし、図１の構成に加えて入出力インタフェースや外部メモリ等を備えてもよい。
【００１５】
ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１１は、ＣＰＵ１３の主メモリ、ワークエリア等として機能し、プログラムやデータを一時的に記憶する。
ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２は、ＣＰＵ１３が各種処理を実行するために必要となる、変更を必要としない制御プログラムやパラメータ等を記憶する不揮発性メモリである。なお、これら制御プログラム等は、外部メモリや着脱可能な記憶媒体（不図示）に記憶されていてもよい。
【００１６】
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１３は、通信装置１における動作を統括的に制御するものであり、システムバス１７を介して、各構成部（１１、１２、１４〜１６）を制御する。すなわち、ＣＰＵ１３は、各種処理の実行に際してＲＯＭ１２やＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ：不図示）等の記憶媒体から必要なプログラム等をＲＡＭ１１にロードし、当該プログラム等を実行することで各種の機能動作を実現する。
【００１７】
タイマ管理部１４は、ＣＰＵ１３により実行されるプログラムの処理等の時間の経過を管理する。
ＭＡＣ１５は、ＰＨＹ１６およびアンテナ１８を介して無線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等のネットワークでの通信を行うための通信部であり、ＩＥＥＥ８０２ＯＳＩ参照モデルのデータリンク層中のメディアアクセス制御機能を提供する。ＣＰＵ１３は、ネットワークドライバを実行し、ＭＡＣ１５を制御して、他の装置との間でのデータの送受信を実行する。
ＰＨＹ１６は、アンテナ１８を介して無線ＬＡＮ等のネットワークでの通信を行うための通信部であり、データリンク層の下層である物理層の制御機能を提供する。
【００１８】
通信装置１が他の通信装置とデータ送受信を実行するためのネットワークは、無線ネットワークで構成されてよい。この無線ネットワークは、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＺｉｇＢｅｅ（登録商標）、ＵＷＢ（Ｕｌｔｒａ  Ｗｉｄｅ  Ｂａｎｄ）等の無線ＰＡＮ（Ｐｅｒｓｏｎａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を含む。また、Ｗｉ−Ｆｉ（Ｗｉｒｅｌｅｓｓ  Ｆｉｄｅｌｉｔｙ）（登録商標）等の無線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）や、ＷｉＭＡＸ（登録商標）等の無線ＭＡＮ（Ｍｅｔｒｏｐｏｌｉｔａｎ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を含む。さらに、ＬＴＥ／３Ｇ等の無線ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を含む。
あるいは、ネットワークは、例えば、Ｅｔｈｅｒｎｅｔ（登録商標）等の通信規格に準拠する有線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等の有線ネットワークであってよく、無線ＬＡＮ通信機能と有線ＬＡＮ通信機能を組み合わせてもよい。
なお、ネットワークは、各機器を相互に通信可能に接続できればよく、通信の規格、規模、構成は上記に限定されない。
【００１９】
また、図１の通信装置１の具体例は、各種センサデバイス、デジタルカメラ、デジタルビデオカメラ、携帯電話、スマートフォン、ＰＣ（ＰｅｒｓｏｎａｌＣｏｍｐｕｔｅｒ）、ノートＰＣ、サーバ等を含むがこれらに限定されない。
【００２０】
＜通信装置１の機能構成＞
図２は、本実施形態に係る通信装置１の機能構成の一例を示すブロック図である。
図２に示す各装置の各機能モジュールのうち、ソフトウエアにより実現される機能については、各機能モジュールの機能を提供するためのプログラムがＲＯＭ１２等のメモリに記憶され、ＲＡＭ１１に読み出してＣＰＵ１３が実行することにより実現される。ハードウエアにより実現される機能については、例えば、所定のコンパイラを用いることで、各機能モジュールの機能を実現するためのプログラムからＦＰＧＡ上に自動的に専用回路を生成すればよい。ＦＰＧＡとは、Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略である。また、ＦＰＧＡと同様にしてＧａｔｅ  Ａｒｒａｙ回路を形成し、ハードウエアとして実現するようにしてもよい。また、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）により実現するようにしてもよい。この場合、専用ハードウエアはＣＰＵ１１の制御に基づいて動作する。
なお、図２に示した機能ブロックの構成は一例であり、複数の機能ブロックが１つの機能ブロックを構成するようにしてもよいし、いずれかの機能ブロックが複数の機能を行うブロックに分かれてもよい。
【００２１】
通信装置１は、制御部２１、ＬＡＮ通信制御部２２、記憶制御部２３、ＴＣＰ／ＩＰ通信制御部２４、受信バッファ管理部２５、連続性判定部２６、および末尾パケット記憶部２７を備える。なお、通信装置１が図２のモジュール全てを備えることは必須でない。
制御部２１は、通信装置１が備える各機能モジュール（２２〜２７）を制御して、本実施形態におけるパケット送受信および受信されたパケットの受信バッファへの格納処理を含む処理を実行する。
ＬＡＮ通信制御部２２は、ＭＡＣ１５を制御し、他の通信装置とのＬＡＮ通信の制御を実行する。通信装置１が外部の無線アクセスポイント（ＡＰ）を経由して他の通信装置と接続する場合、ＬＡＮ通信制御部２２は、ＭＡＣ１５を制御して無線ＡＰ（不図示）との無線ＬＡＮ通信の制御を行う。ＬＡＮ通信制御部２２はその他、有線ＬＡＮ通信機能等、ＴＣＰ／ＩＰ通信が可能な通信方式であれば他の通信方式を利用してもよい。
【００２２】
記憶制御部２３は、ＲＡＭ１１やＲＯＭ１２を制御し、処理データや画像コンテンツ、映像コンテンツなどの各種データを、これら記憶装置に記憶し、または削除する。なお、記憶制御部２３は、補助記憶装置等の他の記憶装置を利用してもよい。
ＴＣＰ／ＩＰ通信制御部２４は、ＬＡＮ通信制御部２２を使用して、他の通信装置との間でＴＣＰ／ＩＰ方式の通信プロトコル処理および各種通信制御を行う。なお、ＴＣＰ／ＩＰ通信制御部２４は、ＴＣＰ／ＩＰ方式に限らず、シーケンス番号等の順序番号でデータ順序を管理する機構を持つ他のプロトコルの通信制御部に置き換えてもよい。
【００２３】
受信バッファ管理部２５は、１つまたは複数の受信バッファを通信装置１のメモリ上に動的に構成する。受信バッファは、通信装置１が通信対向装置との間で送受信されるデータを受信及びプロトコル処理する際に使用される受信バッファである。受信バッファは、受信バッファが必要になったタイミングでメモリ上に動的に獲得され、データ受信処理が終了して不要になった際に解放される。受信バッファが構成されるメモリは、ＲＡＭ１１であってよく、またはＦＰＧＡ、ＡＳＩＣ、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）等の上に構成されるメモリであってよい。
【００２４】
受信バッファ管理部２５はまた、受信されるパケット中のデータ部分（以下、「受信データ」という。）を受信バッファ上に格納および管理する。具体的には、受信バッファ管理部２５は、ＴＣＰ／ＩＰ制御部２４から使用され、受信バッファ内のデータを、ＴＣＰにおいて、１オクテット（バイト）ごとにそれぞれ順に付与されているシーケンス番号に基づく順序で管理する。
連続性判定部２６は、ＴＣＰ／ＩＰ制御部２４から使用され、受信データの連続性を判定する。具体的には、連続性判定部２６は、受信バッファ管理部２５により管理される受信バッファに受信データが格納される際に、シーケンス番号に基づいて、受信データと、受信バッファ内に格納されたデータとの間の連続性を判定する。
【００２５】
末尾パケット記憶部２７は、ＴＣＰ／ＩＰ制御部２４から使用され、受信バッファ管理部２５により管理される受信バッファ内のデータのうち、受信バッファの先頭のデータからシーケンス番号が連続する末尾パケットの情報を記憶する。この末尾パケットは、受信されたパケットのうち、受信バッファの末尾に格納すべきと判断されたパケットに含まれていた、受信バッファへの格納単位としての末尾のデータ群であり、以下、単に末尾パケットという。
本実施形態において、連続性判定部２６は、受信されるパケットと、末尾パケット記憶部２７により記憶される末尾パケットとの間でシーケンス番号を比較することにより、受信データの連続性を判定する。受信バッファ管理部２５は、連続性判定部２６により判定された受信データの連続性に基づいて、受信バッファ中で受信データを格納すべき位置を探索するが、この受信バッファ中の格納位置探索処理の詳細は、図３から図５を参照して後述する。
【００２６】
＜通信装置１の受信パケットの受信バッファへの格納処理の処理フロー＞
図３は、通信装置１が実行するパケット受信および受信されたパケットの受信バッファへの格納処理手順の一例を示すフローチャートである。図３に示す処理は、例えば、他の通信装置からパケットを受信したことを契機に開始されてよい。
通信装置１はＣＰＵ１３が必要なプログラムをＲＯＭ１２または外部メモリから読み出して実行することにより、図３に示す処理を実行することができる。ただし、図２に示す各要素のうち少なくとも一部が専用のハードウエアとして動作することで図３の処理が実現されるようにしてもよい。この場合、専用のハードウエアは、ＣＰＵ１３の制御に基づいて動作する。
【００２７】
Ｓ１で、通信装置１のＬＡＮ通信制御部２２は、他の通信装置からパケットを受信する。他の通信装置から受信されたパケットは、まず、ＬＡＮ通信制御部２２がアクセスおよび管理可能なバッファに保持される。
Ｓ２で、通信装置１のＴＣＰ／ＩＰ通信制御部２４は、連続性判定部２６を使用し、Ｓ１で受信されたパケットの受信データが末尾パケット記憶部２７により記録される末尾パケットのデータに連続するか否かを判定する。
具体的には、まず、通信装置１のＴＣＰ／ＩＰ通信制御部２４は、ＬＡＮ通信制御部２２が管理するバッファから受信されたパケットを取り出す。通信装置１のＴＣＰ／ＩＰ通信制御部２４は、連続性判定部２６を使用して、末尾パケット記憶部２７で記憶されている末尾パケットと、取り出された受信パケットとを比較することにより、両者の連続性を判定する。
【００２８】
受信パケットと末尾パケットとの間の連続性判定において、連続性判定部２６は、まず、末尾パケット記憶部２７で記憶されている末尾パケットのシーケンス番号にデータ長を加算して、次に受信されることが期待されるシーケンス番号を算出する。
末尾パケット記憶部２７は、受信バッファ中に格納される末尾パケットのＴＣＰヘッダから、少なくともシーケンス番号（先頭データ１バイトのシーケンス番号）およびデータ長（バイト数）を取得して、記憶している。連続性判定部２６は、末尾パケット記憶部２７のこの末尾パケットの情報を参照することにより、Ｓ２で、次に受信されることが期待されるシーケンス番号を算出することができる。
算出されたシーケンス番号が受信パケットのシーケンス番号に合致する場合、連続性判定部２６は、受信パケットのデータ（受信データ）が末尾パケットのデータに連続すると判定する。一方、シーケンス番号が受信パケットのシーケンス番号に合致しない場合、連続性判定部２６は、受信パケットのデータが末尾パケットのデータに連続しないと判定する。
【００２９】
受信パケットのデータが末尾パケットのデータに連続すると判定された場合（Ｓ２：Ｙ）、Ｓ３へ進み、一方、受信パケットのデータが末尾パケットのデータに連続しないと判定された場合（Ｓ２：Ｎ）、Ｓ５へ進む。
受信データが末尾パケットのデータに連続すると判定された場合、Ｓ３で、受信バッファ管理部２５は、末尾パケット記憶部２７で記憶されている末尾パケットに後続するよう、受信データを受信バッファ中の末尾パケットの後に連続して格納する。
受信データが受信バッファに格納されると、Ｓ４で、通信装置１の末尾パケット記憶部２７は、記憶している末尾パケットの位置（ポインタ）を、Ｓ３で格納された受信データのパケット（後続のパケット）に更新する。
【００３０】
一方、Ｓ２で、受信データが末尾パケットのデータに連続しないと判定された場合、Ｓ５で、通信装置１の受信バッファ管理部２５は、受信パケットのシーケンス番号に基づき、受信データを格納すべき受信バッファ中の位置を探索する。
具体的には、本実施形態において、受信バッファ管理部２５は、受信パケットのシーケンス番号に基づいて、末尾パケット記憶部２７で記憶されている末尾パケットを起点として、受信バッファ中で末尾パケットに後続するパケットのデータを探索する。受信バッファ管理部２５は、受信バッファ中で後続するパケットのデータを探索して、受信バッファに格納済みのデータと受信データのシーケンス番号が連続的に整列するよう受信パケットを挿入すべき格納位置を特定する。そして、受信バッファ管理部２５は、受信データを受信バッファ中の特定された格納位置へ格納する。
上記のとおり、本実施形態では、受信データが末尾パケットのデータに連続する場合であっても連続しない場合であっても、受信バッファ管理部２５は、受信データを同一の受信バッファに格納する。
【００３１】
図４は、本実施形態に係る通信装置１が、受信パケットを受信バッファに格納する一例を概略的に示す図であり、図３のＳ２で、受信パケットのデータが末尾パケットのデータに連続すると判定された場合（Ｓ２：Ｙ）の例を示す。なお、図４中、データＮ（Ｎ＝整数）の下方に括弧書で示される番号は、当該データのシーケンス番号を示す。
図４（Ａ）は、図３のＳ１において、パケットが受信された際の受信データと、受信バッファ管理部２５により管理される、受信データ格納前の受信バッファの状態を示す。
図３のＳ１で受信されたパケット４１は、シーケンス番号３０１〜４００が付与されたデータ４を含む。受信パケット４１のデータ４が格納される前の受信バッファ４２には、データ１（シーケンス番号１〜１００）、データ２（シーケンス番号１０１〜２００）、およびデータ３（シーケンス番号２０１〜３００）が格納されている。図４（Ａ）において、末尾パケット記憶部２７が記憶している末尾パケットの記憶位置（ポインタ）はデータ３（シーケンス番号２０１〜３００）を示している。
【００３２】
一方、図４（Ｂ）は、図４（Ａ）の受信パケット４１および受信バッファ４２に対して、図３のＳ２、Ｓ３およびＳ４の順に処理が実行された、受信データ４格納後の受信バッファの状態を示す。
図３のＳ２で、通信装置１の連続性判定部２６は、末尾パケット（データ３）のシーケンス番号（先頭データ：２０１）にデータ長１００を加算して得られるシーケンス番号３０１が、受信パケット４１のシーケンス番号に合致すると判定する。
このため、Ｓ３へ進み、通信装置１の受信バッファ管理部２５は、受信パケット４１のデータ４を、末尾パケット記憶部２７で記憶されている末尾パケットのデータ３に後続する受信バッファ４３中の位置に格納する。Ｓ４で、末尾パケット記憶部２７は、受信バッファ４３中の末尾パケットの記憶位置として、データ３からデータ４にポインタを更新して、処理を終了する。
【００３３】
図５は、本実施形態に係る通信装置１が、受信パケットを受信バッファに格納する他の例を概略的に示す図であり、図３のＳ２で、受信パケットのデータが末尾パケットのデータに連続しないと判定された場合（Ｓ２：Ｎ）の例を示す。
図５（Ａ）は、図３のＳ１において、パケットが受信された際の受信データと、受信バッファ管理部２５により管理される、受信データ格納前の受信バッファの状態を示す。
図３のＳ１で受信されたパケット５１は、シーケンス番号６０１〜７００が付与されたデータ７を含む。受信パケット５１の受信データ７が格納される前の受信バッファ５２には、データ１（シーケンス番号１〜１００）、データ２（シーケンス番号１０１〜２００）、データ３（シーケンス番号２０１〜３００）が格納されている。受信バッファ５２にはさらに、データ５（シーケンス番号４０１〜５００）、およびデータ６（シーケンス番号５０１〜６００）が格納されている。図５（Ａ）において、末尾パケット記憶部２７が記憶している末尾パケットの記憶位置（ポインタ）はデータ３（シーケンス番号２０１〜３００）を示している。
【００３４】
一方、図５（Ｂ）は、図５（Ａ）の受信パケット５１および受信バッファ５２に対して、図３のＳ２およびＳ５の順に処理が実行された、受信データ７格納後の受信バッファの状態を示す。
図３のＳ２で、通信装置１の連続性判定部２６は、末尾パケット（データ３）のシーケンス番号（先頭データ：２０１）にデータ長１００を加算して得られるシーケンス番号３０１が、受信パケット５１のシーケンス番号に合致しないと判定する。
このため、Ｓ５へ進み、通信装置１の受信バッファ管理部２５は、受信パケット５１のデータ７のシーケンス番号に基づき、末尾パケット記憶部２７で記憶されている末尾パケットのデータ３に後続するデータ５、データ６と探索する。受信バッファ管理部２５は、受信バッファ５３中のデータ６（シーケンス番号５０１〜６００）に後続する位置を、受信パケット５１のデータ７の格納位置として特定し、受信バッファ５３中のデータ６に後続する格納位置に、受信パケット５１のデータ７を格納する。Ｓ４の処理はスキップされるため、末尾パケット記憶部２７は、受信バッファ４３中の末尾パケットの記憶位置を、データ３のままとして更新しない。
【００３５】
以上説明したように、本実施形態によれば、通信装置は、管理されている受信バッファに受信データを格納する際、末尾パケット記憶部で管理されている末尾パケットの情報に基づいて、受信バッファ中で受信データを格納すべき位置を探索する。
受信バッファに受信データを格納する際、受信バッファの先頭から受信データを格納する位置を探索することなく、記憶される末尾パケットを起点として格納位置を探索すれば足りる。
従って、シーケンス番号通りに受信したパケットを受信バッファに格納する際だけでなく、パケットロス時や再送時等、順序番号通りでないパケットを受信バッファに格納する際にも、受信データを受信バッファに格納する際の探索時間を低減することができる。これにより、パケットの受信性能の低下が有効に防止される。
【００３６】
（実施形態２）
以下、実施形態２を、図６および図７を参照して、上記の実施形態１と異なる点についてのみ詳細に説明する。実施形態２は、受信バッファ内に非連続の受信データが格納されている場合、受信バッファ内の受信データが連続となるデータを受信した際に、受信バッファ内の受信データを格納した後、末尾パケットの記憶位置を、受信データより後続の受信データに更新する。
【００３７】
実施形態２に係る通信装置１のハードウエア構成および機能構成は、図１および図２にそれぞれ示される実施形態１と同様である。
図６は、実施形態２に係る通信装置１が実行する受信パケットの受信バッファへの格納処理の処理手順の一例を示すフローチャートである。図６では、図３のフローチャートに対して、Ｓ６が追加されている。
Ｓ１〜Ｓ５までの各処理は、図３に示すＳ１〜Ｓ５までの処理と同様である。
【００３８】
Ｓ２で、受信パケットのデータが、末尾パケット記憶部２７で記憶される末尾パケットのデータに連続すると判定された場合（Ｓ２：Ｙ）、Ｓ３およびＳ４の処理が実行され、末尾パケットの記憶位置が受信されたパケットに更新されて、Ｓ６に進む。
Ｓ６で、通信装置１の受信バッファ管理部２５は、Ｓ４で更新された、末尾パケット記憶部２７で記憶されている末尾パケットに後続して、シーケンス番号が連続するパケットが存在するか否かを判定する。
【００３９】
Ｓ４で更新された末尾パケットに後続して、シーケンス番号が連続するパケットのデータが存在する場合（Ｓ６：Ｙ）、Ｓ４に戻って、末尾パケットの位置を、末尾パケットに後続し、かつシーケンス番号が連続するパケットに更新する。一方、末尾パケットに後続して、シーケンス番号が連続するパケットのデータが存在しない場合（Ｓ６：Ｎ）、処理を終了する。
【００４０】
図７は、本実施形態に係る通信装置１が、受信パケットを受信バッファに格納する一例を概略的に示す図であり、図６のＳ６で、末尾パケットに後続して、シーケンス番号が連続するデータが存在すると判定された場合（Ｓ６：Ｙ）の例を示す。
図７（Ａ）は、図６のＳ１において、パケットが受信された際の受信データと、受信バッファ管理部２５により管理される、受信データ格納前の受信バッファの状態を示す。
図６のＳ１で受信されたパケット７１は、シーケンス番号３０１〜４００が付与されたデータ４を含む。受信パケット７１の受信データ４が格納される前の受信バッファ７２には、データ１（シーケンス番号１〜１００）、データ２（シーケンス番号１０１〜２００）、データ３（シーケンス番号２０１〜３００）、データ５（シーケンス番号４０１〜５００）が格納されている。図７（Ａ）において、受信バッファ７２内でデータ３とデータ５とは非連続であるため、末尾パケット記憶部２７が記憶している末尾パケットの記憶位置（ポインタ）はデータ３（シーケンス番号２０１〜３００）を示している。
【００４１】
一方、図７（Ｂ）は、図７（Ａ）の受信パケット７１および受信バッファ７２に対して、図６のＳ２、Ｓ３、Ｓ４、Ｓ６、およびＳ４およびＳ６の１回ループの順に処理が実行された、受信データ４格納後の受信バッファの状態を示す。
図６のＳ２で、通信装置１の連続性判定部２６は、末尾パケット（データ３）のシーケンス番号（先頭データ：２０１）にデータ長１００を加算して得られるシーケンス番号３０１が、受信パケット７１のシーケンス番号に合致すると判定する。
このため、Ｓ３へ進み、通信装置１の受信バッファ管理部２５は、受信パケット７１のデータ４を、末尾パケット記憶部２７で記憶されている末尾パケットのデータ３に後続する受信バッファ７３中の位置に格納する。Ｓ４で、末尾パケット記憶部２７は、受信バッファ７３中の末尾パケットの記憶位置として、データ３からデータ４にポインタを更新する。
【００４２】
Ｓ６で、通信装置１の受信バッファ管理部２５は、末尾パケット記憶部２７で記憶されている末尾パケット（データ４）に後続して、シーケンス番号が連続するパケットのデータ（データ５）が存在することを判定する（Ｓ６：Ｙ）。Ｓ４へ戻り、受信バッファ管理部２５は、末尾パケット記憶部２７で記憶する末尾パケットのデータを、データ４から後続するデータ５にさらに更新する。次のＳ６では、末尾パケット記憶部２７で記憶されている末尾パケットのデータ５に後続して、シーケンス番号が連続するデータがもはや存在しないと判定して（Ｓ６：Ｎ）、処理を終了する。
【００４３】
以上説明したように、本実施形態によれば、通信装置は、受信バッファ内に非連続のデータが存在する場合において、受信バッファ内のデータが連続となるデータを受信した際に、まず、受信バッファに受信データを格納した後、末尾パケットの位置を更新する。  さらに、通信装置は、末尾パケットの後続にシーケンス番号が連続するパケットが存在する場合、末尾パケットの記憶位置を、受信バッファに格納した受信データより後続のデータに更新する。
受信バッファに受信データを格納する際、受信バッファの先頭から受信データを格納する位置を探索することなく、記憶される末尾パケットを起点として格納位置を探索すれば足りる。先頭のデータから末尾パケット位置とされた後続のデータまでは、シーケンス番号が連続することが保証されており、更新された末尾パケットから格納位置を探索するから、受信データを受信バッファに格納する際の探索時間をさらに低減することができる。
【００４４】
（実施形態３）
以下、実施形態３を、図８〜図１１を参照して、上記の実施形態２と異なる点についてのみ詳細に説明する。実施形態３は、受信データに受信済みのデータが含まれている場合、受信データから受信バッファ中のデータと重複しない有効データを抽出して、受信バッファに格納する。
【００４５】
実施形態３に係る通信装置１のハードウエア構成および機能構成は、図１および図２にそれぞれ示される実施形態１と同様である。
図８は、実施形態３に係る通信装置１が実行する受信パケットの受信バッファへの格納処理の処理手順の一例を示すフローチャートである。図８では、図６のフローチャートに対して、Ｓ７、Ｓ８、およびＳ９が追加されている。
Ｓ１の処理は、図６に示すＳ１の処理と同様である。
【００４６】
Ｓ１でパケットを受信すると、Ｓ７で、通信装置１の連続性判定部２６は、Ｓ１で受信されたデータと、末尾パケット記憶部２７で記憶されている末尾パケットのデータとの順序関係を判定する。
具体的には、受信データが末尾パケットのデータに連続する場合、または、受信パケットのシーケンス番号が末尾パケットのデータに後続するシーケンス番号以下である場合（Ｓ７：Ｙ）、Ｓ２に進む。一方、末尾パケットのデータに後続するシーケンス番号、すなわち次に到来すると期待される受信データのシーケンス番号よりも、受信パケットのシーケンス番号が大きい場合（Ｓ７：Ｎ）、Ｓ５に進んで、受信バッファ中の受信データの挿入位置を探索する。
【００４７】
Ｓ２は、図３および図６のＳ２と同様であり、末尾パケットのデータと受信データとが連続する場合（Ｓ２：Ｙ）、Ｓ３へ進むが、一方、末尾パケットのデータと受信データとが連続しない場合（Ｓ２：Ｎ）、Ｓ８へ進む。
Ｓ３〜Ｓ６の各処理は、図６に示すＳ３〜Ｓ６の各処理と同様である。
Ｓ８で、通信装置１の受信バッファ管理部２５は、Ｓ１で受信されたパケットに、未だ受信バッファに格納されていない未受信データが含まれるか否かを判定する。
受信パケットのデータが未受信データを含む場合（Ｓ８：Ｙ）、Ｓ９に進み、一方、受信パケットのデータが未受信データを含まない場合（Ｓ８：Ｎ）、処理を終了する。
【００４８】
受信パケットのデータが未受信データを含む場合、Ｓ９で、受信バッファ管理部２５は、Ｓ１で受信されたパケットのデータのうち、未受信のデータ部分のみを有効データとして、受信データを更新する。これにより、Ｓ３で、受信バッファ中の末尾パケットに後続して、未受信である有効データが格納され、格納済みのデータと重複するデータは格納されず破棄されることになる。
【００４９】
図９は、本実施形態に係る通信装置１が、受信パケットを受信バッファに格納する一例を概略的に示す図であり、図８のＳ８で、受信パケットのデータが未受信データを含むと判定された場合（Ｓ８：Ｙ）の例を示す。
図９（Ａ）は、図８のＳ１において、パケットが受信された際の受信データと、受信バッファ管理部２５により管理される、受信データ格納前の受信バッファの状態を示す。
図８のＳ１で受信されたパケット９１は、シーケンス番号２５０〜３５０が付与されたデータＡを含む。受信パケット９１のデータが格納される前の受信バッファ９２には、データ１（シーケンス番号１〜１００）、データ２（シーケンス番号１０１〜２００）、データ３（シーケンス番号２０１〜３００）が格納されている。受信バッファ９２にはさらに、データ５（シーケンス番号４０１〜５００）、およびデータ６（シーケンス番号５０１〜６００）が格納されている。図９（Ａ）において、末尾パケット記憶部２７が記憶している末尾パケットの記憶位置（ポインタ）はデータ３（シーケンス番号２０１〜３００）を示している。
【００５０】
一方、図９（Ｂ）は、図９（Ａ）の受信パケット９１および受信バッファ９２に対して、図８のＳ７、Ｓ２、Ｓ８、Ｓ９、Ｓ３、Ｓ４およびＳ６の順に処理が実行された、受信データ９１格納後の受信バッファの状態を示す。
連続性判定部２６は、受信パケット９１のデータＡのシーケンス番号が、末尾パケットのデータに後続するデータのシーケンス番号より小さく、かつ受信パケット９１のデータＡと末尾パケットのデータとが連続しないと判定する（Ｓ７およびＳ２）。
このため、Ｓ８へ進み、通信装置１の連続性判定部２６は、受信パケット９１のデータＡのシーケンス番号と、末尾パケット（データ３）のシーケンス番号とを比較し、受信データ９１のデータＡに未受信データが含まれると判定する。
【００５１】
Ｓ９で、通信装置１のＴＣＰ／ＩＰ通信制御部２４は、受信パケット９１のデータＡについて、有効データのシーケンス番号を、未受信データを除いた３０１〜３５０とし、データＡ´に更新する。
Ｓ３で、通信装置１の受信バッファ管理部２５は、Ｓ９で更新された受信パケット９１のデータＡ´を、末尾パケット記憶部２７で記憶されている末尾パケットであるデータ３に後続する位置に格納する。Ｓ４で、末尾パケット記憶部２７に記憶される末尾パケットのデータが、データ３からデータＡ´に更新され、Ｓ６で、後続のパケットが存在しないため、処理を終了する。
【００５２】
図１０は、本実施形態に係る通信装置１が、受信パケットを受信バッファに格納する他の例を概略的に示す図である。図１０は、図８のＳ８で、受信パケットのデータが未受信データを含むと判定された場合（Ｓ８：Ｙ）であって、かつ末尾パケットの後続にシーケンス番号が連続するデータが存在する場合（Ｓ６：Ｙ）の例を示す。
図１０（Ａ）は、図８のＳ１において、パケットが受信された際の受信データと、受信バッファ管理部２５により管理される、受信データ格納前の受信バッファの状態を示す。
図８のＳ１で受信されたパケット１０１は、シーケンス番号２５０〜４５０が付与されたデータＢを含む。受信パケット１０１のデータが格納される前の受信バッファ１０２には、データ１（シーケンス番号１〜１００）、データ２（シーケンス番号１０１〜２００）、データ３（シーケンス番号２０１〜３００）が格納されている。受信バッファ１０２にはさらに、データ５（シーケンス番号４０１〜５００）、およびデータ６（シーケンス番号５０１〜６００）が格納されている。図１０（Ａ）において、末尾パケット記憶部２７が記憶している末尾パケットの記憶位置（ポインタ）はデータ３（シーケンス番号２０１〜３００）を示している。
【００５３】
一方、図１０（Ｂ）は、図１０（Ａ）の受信パケット１０１および受信バッファ１０２に対して、図８の処理が実行された、受信パケット１０１のデータ格納後の受信バッファの状態を示す。図１０（Ｂ）では、図１０（Ａ）に対して、Ｓ７、Ｓ２、Ｓ８、Ｓ９、Ｓ３、Ｓ４、Ｓ６、さらにＳ４とＳ６の２回ループの順に処理が実行されている。
連続性判定部２６は、データＢのシーケンス番号（先頭データ：２５０）が、末尾パケットのデータに後続するデータのシーケンス番号より小さく、かつ受信パケット１０１のデータＢと末尾パケットのデータとが連続しないと判定する（Ｓ７、Ｓ２）。
このため、Ｓ８へ進み、通信装置１の連続性判定部２６は、受信パケット１０１のデータＢのシーケンス番号と、末尾パケットのデータ３のシーケンス番号とを比較し、受信データ１０１のデータＢに未受信データが含まれると判定する。
【００５４】
Ｓ９で、通信装置１のＴＣＰ／ＩＰ通信制御部２４は、受信パケット１０１のデータＢについて、有効データのシーケンス番号を、未受信データを除いた３０１〜４００とし、データＢ´に更新する。
Ｓ３で、通信装置１の受信バッファ管理部２５は、Ｓ９で更新された受信パケット１０１のデータＢ´を、末尾パケット記憶部２７で記憶されている末尾パケットであるデータ３に後続する位置に格納する。Ｓ４で、末尾パケット記憶部２７に記憶される末尾パケットのデータが、データ３からデータＢ´に更新される。
【００５５】
Ｓ６で、受信バッファ管理部２５は、末尾パケット記憶部２７で記憶している末尾パケットのデータＢ´に後続して、シーケンス番号が連続するデータ５が受信バッファ中に存在することを判定する。Ｓ４に戻り、末尾パケット記憶部２７で記憶している末尾パケットのデータが、データＢ´からデータ５に更新される。
同様に、Ｓ６およびＳ４の処理を経て、末尾パケット記憶部２７で記憶している末尾パケットのデータが、データ５からデータ６に更新され、次にＳ６で、さらに後続のパケットが存在しないため、処理を終了する。
【００５６】
図１１は、本実施形態に係る通信装置１が、受信パケットを受信バッファに格納する一例を概略的に示す図であり、図８のＳ８で、受信パケットのデータが未受信データを含まないと判定された場合（Ｓ８：Ｎ）の例を示す。
図１１（Ａ）は、図８のＳ１において、パケットが受信された際の受信データと、受信バッファ管理部２５により管理される、受信データ格納前の受信バッファの状態を示す。
図８のＳ１で受信されたパケット１１１は、シーケンス番号１０１〜２５０が付与されたデータＣを含む。受信データ１１１が格納される前の受信バッファ１１２には、データ１（シーケンス番号１〜１００）、データ２（シーケンス番号１０１〜２００）、データ３（シーケンス番号２０１〜３００）が格納されている。受信バッファ１１２にはさらに、データ５（シーケンス番号４０１〜５００）、およびデータ６（シーケンス番号５０１〜６００）が格納されている。図１１（Ａ）において、末尾パケット記憶部２７が記憶している末尾パケットの記憶位置（ポインタ）はデータ３（シーケンス番号２０１〜３００）を示している。
【００５７】
一方、図１１（Ｂ）は、図１１（Ａ）の受信パケット１１１および受信バッファ１１２に対して、図８のＳ７、Ｓ２、およびＳ８の順に処理が実行された後の受信バッファの状態を示す。
連続性判定部２６は、受信パケット１１１のデータＣのシーケンス番号１０１〜２５０が、末尾パケットのデータに後続するデータのシーケンス番号より小さく、かつ受信パケット１１１のデータＣと末尾パケットのデータとが連続しないと判定する。
このため、Ｓ８へ進み、通信装置１の連続性判定部２６は、受信パケット１１１のデータＣのシーケンス番号と、末尾パケット（データ３）のシーケンス番号とを比較する。比較の結果、連続性判定部２６は、受信パケット１１１のデータＣに未受信データが含まれないと判定し、受信パケット１１１のデータＣを破棄して処理を終了する。
【００５８】
以上説明したように、本実施形態によれば、通信装置は、受信されたパケットのデータに受信バッファにすでに格納済みである受信済みのデータが含まれるか否かを判定する。そして、通信装置は、受信データから未受信のデータである有効データを抽出して、受信バッファに格納すべき受信データを更新する。
受信データに受信済みのデータが含まれている場合に、受信済みのデータを除く有効データを受信バッファの連続する位置に適切に格納することができ、受信効率の低下が有効に防止される。
【００５９】
また、本発明は、上述の実施形態の一部または１以上の機能を実現するプログラムによっても実現可能である。すなわち、そのプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータ（またはＣＰＵやＭＰＵ等）における１つ以上のプロセッサがプログラムを読出し実行する処理により実現可能である。また、そのプログラムをコンピュータ可読な記録媒体に記録して提供してもよい。
また、コンピュータが読みだしたプログラムを実行することにより、実施形態の機能が実現されるものに限定されない。例えば、プログラムの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって上記した実施形態の機能が実現されてもよい。
【符号の説明】
【００６０】
１…通信装置、１１…ＲＡＭ、１２…ＲＯＭ、１３…ＣＰＵ、１４…タイマ管理部、１５…ＭＡＣ、１６…ＰＨＹ、１７…バス、１８…アンテナ、２１…制御部、２２…ＬＡＮ通信制御部、２３…記憶制御部、２４…ＴＣＰ／ＩＰ通信制御部、２５…受信バッファ管理部、２６…連続性判定部、２７…末尾パケット記憶部
【図１】
2020141188.tif 000003
【図２】
2020141188.tif 000004
【図３】
2020141188.tif 000005
【図４】
2020141188.tif 000006
【図５】
2020141188.tif 000007
【図６】
2020141188.tif 000008
【図７】
2020141188.tif 000009
【図８】
2020141188.tif 000010
【図９】
2020141188.tif 000011
【図１０】
2020141188.tif 000012
【図１１】
2020141188.tif 000013