(57)【特許請求の範囲】
【請求項１】
データ通信に関連する通信要求に応じて、通信可能な第１の通信装置と無線接続を形成する第１の接続制御部と、
周辺の通信環境の状態を測定することにより通信環境データを取得する通信環境監視部と、
前記無線接続を介して、前記通信要求に係る第２の通信装置と、前記データ通信を行うための論理コネクションを確立し、前記通信環境データに応じて、前記第２の通信装置と前記データ通信を行うよう制御する第２の接続制御部と
を備え、
前記第２の接続制御部は、前記第１の通信装置と前記無線接続が形成されたとき、前記通信環境データの値に拘わらず、前記第２の通信装置と、前記論理コネクションを確立する
通信装置。
【請求項２】
データ通信に関連する通信要求に応じて、通信可能な第１の通信装置と無線接続を形成する第１の接続制御部と、
周辺の通信環境の状態を測定することにより通信環境データを取得する通信環境監視部と、
前記無線接続を介して、前記通信要求に係る第２の通信装置と、前記データ通信を行うための論理コネクションを確立し、前記通信環境データに応じて、前記第２の通信装置と前記データ通信を行うよう制御する第２の接続制御部と
を備え、
前記第２の接続制御部は、前記通信環境データに基づき、第２の通信条件が満たされるか判断し、前記第２の通信条件が満たされる場合に、前記論理コネクションの確立を行い、前記第２の通信条件が満たされない場合に、前記論理コネクションの確立を待機し、
前記第２の通信条件は、データ通信における情報の欠落、誤りもしくは輻輳が生じにくい状態を特徴づける条件である
通信装置。
【請求項３】
前記第２の接続制御部は、前記通信環境データに基づいて、第１の通信条件が満たされるかを判断し、前記第１の通信条件が満たされるときは、前記データ通信を実行し、前記第１の通信条件が満たされないと判断したときは、前記データ通信の実行を待機し、
前記第１の通信条件は、データ通信における情報の欠落、誤りもしくは輻輳が生じにくい状態を特徴づける条件である
請求項１または２に記載の通信装置。
【請求項４】
前記通信要求が生成された後の経過時間を管理する手段を備え、
前記第２の接続制御部は、前記データ通信の実行がまだ完了していないときは、計測した経過時間に応じて、前記論理コネクションの維持または切断を制御し、
前記第１の接続制御部は、前記論理コネクションが切断された場合に、前記無線接続を切断する
請求項１ないし３のいずれか一項に記載の通信装置。
【請求項５】
前記第１の接続制御部は、前記無線接続での前記第１の通信装置との通信に基づき、前記無線接続の通信速度が前記第１の通信装置との再接続によって向上する可能性があるかを判断し、前記可能性がある場合は、前記無線接続を切断し、前記第１の通信装置と再接続する
請求項１ないし４のいずれか一項に記載の通信装置。
【請求項６】
前記第２の接続制御部は、同じ論理コネクションを利用する複数の通信要求が存在し、前記複数の通信要求の中に、閾値より小さいサイズのデータ、または予め定めた種類のデータの応答を要求する通信要求が存在するときは、当該データの通信要求を他のデータよりも先に実行する
請求項１ないし５のいずれか一項に記載の通信装置。
【請求項７】
前記第２の接続制御部は、第３の通信条件が満たされた場合に、前記閾値より小さいサイズのデータ、または前記予め定めた種類のデータの応答を要求する通信要求に基づくデータ通信を他のデータよりも先に実行し、
前記第３の通信条件は、データ通信における情報の欠落、誤りもしくは輻輳が生じにくい状態を特徴づける条件である
請求項６に記載の通信装置。
【請求項８】
アプリケーションにより生成される前記通信要求を受け取り、前記通信要求の処理応答を返すホストインタフェース部
をさらに備えた請求項１ないし７のいずれか一項に記載の通信装置。
【請求項９】
前記ホストインタフェース部で受け取った通信要求が、前記論理コネクションの確立要求、または前記論理コネクションを利用するデータの送信要求か否かを判断する判断部をさらに備え、
前記第１の接続制御部および前記第２の接続制御部は、前記判断部により前記論理コネクションの確立要求または前記データの送信要求であると判断された通信要求を対象とする
請求項８に記載の通信装置。
【請求項１０】
前記通信要求に応じて前記第２の通信装置から取得したデータを解析して、追加のデータを取得するための通信要求を生成する情報制御部をさらに備え、
前記第１の接続制御部および前記第２の接続制御部は、前記情報制御部により生成された通信要求を対象とする
請求項８または９に記載の通信装置。
【請求項１１】
前記情報制御部は、前記第２の通信装置から取得したデータから参照されているデータ所在情報を取得し、前記データ所在情報から前記追加のデータを取得するための通信要求を生成する
請求項１０に記載の通信装置。
【請求項１２】
前記情報制御部は、最初の通信要求から再帰的に生成される通信要求に応じてそれぞれデータの取得が完了したら、最初の通信要求に応じて取得されたデータを前記アプリケーションに対して応答する
請求項１０または１１に記載の通信装置。
【請求項１３】
前記情報制御部によって生成された通信要求に応じて取得されたデータを格納する記憶部を備え、
前記情報制御部は、前記アプリケーションからの前記通信要求で取得が要求されているデータが前記記憶部に存在するかを確認し、存在するときは、前記記憶部における前記データを読み出して、前記アプリケーションに対して応答し、前記第２の接続制御部は、前記通信要求を対象としない
請求項１０ないし１２のいずれか一項に記載の通信装置。
【請求項１４】
ユーザ入力用の入力インタフェースと、
前記入力インタフェースから入力された指示に応じて、前記アプリケーションを実行するアプリケーション実行部と、
前記通信要求に応じて前記第２の通信装置から取得されたデータ、および前記通信要求に応じて前記第２の通信装置に送信するデータを表示する表示装置と
を備えた請求項８ないし１３のいずれか一項に通信装置。
【請求項１５】
前記第１の通信装置は、中継装置であり、前記第２の通信装置は、前記中継装置または前記中継装置と異なる通信装置である
請求項１ないし１４のいずれか一項に記載の通信装置。
【請求項１６】
データ通信に関連する通信要求に応じて、通信可能な第１の通信装置と無線接続を形成する第１の接続制御ステップと、
周辺の通信環境の状態を測定することにより通信環境データを取得する通信環境監視ステップと、
前記無線接続を介して、前記通信要求に係る第２の通信装置と、前記データ通信を行うための論理コネクションを確立し、前記通信環境データに応じて、前記第２の通信装置と前記データ通信を行うよう制御する第２の接続制御ステップと
を備え、
前記第２の接続制御ステップにおいて、前記第１の通信装置と前記無線接続が形成されたとき、前記通信環境データの値に拘わらず、前記第２の通信装置と、前記論理コネクションを確立する
通信制御方法。
【請求項１７】
データ通信に関連する通信要求に応じて、通信可能な第１の通信装置と無線接続を形成する第１の接続制御ステップと、
周辺の通信環境の状態を測定することにより通信環境データを取得する通信環境監視ステップと、
前記無線接続を介して、前記通信要求に係る第２の通信装置と、前記データ通信を行うための論理コネクションを確立し、前記通信環境データに応じて、前記第２の通信装置と前記データ通信を行うよう制御する第２の接続制御ステップと
を備え、
前記第２の接続制御ステップにおいて、前記第１の通信装置と前記無線接続が形成されたとき、前記通信環境データの値に拘わらず、前記第２の通信装置と、前記論理コネクションを確立する通信制御方法
をコンピュータに実行させるためのコンピュータプログラム。
【請求項１８】
データ通信に関連する通信要求に応じて、通信可能な第１の通信装置と無線接続を形成する第１の接続制御ステップと、
周辺の通信環境の状態を測定することにより通信環境データを取得する通信環境監視ステップと、
前記無線接続を介して、前記通信要求に係る第２の通信装置と、前記データ通信を行うための論理コネクションを確立し、前記通信環境データに応じて、前記第２の通信装置と前記データ通信を行うよう制御する第２の接続制御ステップと
を備え、
前記第２の接続制御ステップでは、前記通信環境データに基づき、第２の通信条件が満たされるか判断され、前記第２の通信条件が満たされる場合に、前記論理コネクションの確立が行われ、前記第２の通信条件が満たされない場合に、前記論理コネクションの確立は待機され、
前記第２の通信条件は、データ通信における情報の欠落、誤りもしくは輻輳が生じにくい状態を特徴づける条件である
通信制御方法。
【請求項１９】
データ通信に関連する通信要求に応じて、通信可能な第１の通信装置と無線接続を形成する第１の接続制御ステップと、
周辺の通信環境の状態を測定することにより通信環境データを取得する通信環境監視ステップと、
前記無線接続を介して、前記通信要求に係る第２の通信装置と、前記データ通信を行うための論理コネクションを確立し、前記通信環境データに応じて、前記第２の通信装置と前記データ通信を行うよう制御する第２の接続制御ステップと
を備え、
前記第２の接続制御ステップでは、前記通信環境データに基づき、第２の通信条件が満たされるか判断され、前記第２の通信条件が満たされる場合に、前記論理コネクションの確立が行われ、前記第２の通信条件が満たされない場合に、前記論理コネクションの確立は待機され、
前記第２の通信条件は、データ通信における情報の欠落、誤りもしくは輻輳が生じにくい状態を特徴づける条件である通信制御方法を
コンピュータに実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、通信装置、通信制御方法およびコンピュータプログラムに関する。
【背景技術】
【０００２】
一般的に、インターネット通信には、論理的な通信路を用いる通信方式（プロトコル）であるTCP（Transport Control Protocol）が利用されている。TCPは、信頼性があるデータ通信を行うために、いくつかの通信制御機能を有する。相手先を確認した後にデータの送信を開始する「3ウェイハンドシェイク」、物理的な通信路上で輻輳が発生しないようにする輻輳制御機能、パケット喪失が発生した際の再送機能がある。さらには、突如として大量のトラフィックがネットワーク上に流れることを防ぐ「スロースタート」と呼ばれる仕組みもある。しかし、通信速度が速くなり、かつ通信方式が多様化した現在においては、「3ウェイハンドシェイク」および「スロースタート」といった機能が、オーバヘッドとなる状況も存在し、この場合、高速通信が阻害される可能性がある。
【０００３】
一方、近年急速に普及が進む無線LAN（Local Area Network）においては、無線LANアクセスポイントの近接地点では通信速度が高速でも、遠隔地点では通信速度が低速となることが知られている。すなわち、１つのネットワーク内においても通信速度ないしは通信品質がその位置に応じて変わることが一般的になりつつある。このような同一のネットワーク内で通信速度ないしは通信品質が変化するような環境においても、TCPを利用した通信を効率的に行うことが望まれる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開2010-35033号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の実施形態は、通信環境の変化に応じ、論理コネクションを利用した通信を、効率よく行うことを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一実施形態に係る通信装置は、第１の接続制御部と、通信環境監視部と、第２の接続制御部とを備える。
【０００７】
前記第１の接続制御部は、データ通信に関する通信要求に応じて、通信可能な第１の通信装置と無線接続を形成する。
【０００８】
前記通信環境監視部は、周辺の通信環境の状態を測定することにより通信環境データを取得する。
【０００９】
前記第２の接続制御部は、前記無線接続を介して、前記通信要求に係る第２の通信装置と、前記データ通信を行うための論理コネクションを確立し、前記通信環境データに応じて、前記第２の通信装置と前記データ通信を行うよう制御する。また、前記第２の接続制御部は、前記第１の通信装置と前記無線接続が形成されたとき、前記通信環境データの値に拘わらず、前記第２の通信装置と、前記論理コネクションを確立する。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態に係る通信装置の通信環境を示す図。
【図２】本発明の実施形態に係る通信装置のブロック図。
【図３】本発明の実施形態に係る通信開始処理を概略的に示すフローチャート。
【図４】本発明の実施形態に係る通信要求保留処理のフローチャート。
【図５】本発明の実施形態に係る、APへの接続処理のフローチャート。
【図６】本発明の実施形態に係る、コネクションの確立処理のフローチャート。
【図７】本発明の実施形態に係る通信制御処理のフローチャート。
【図８】通信環境判定のデータを示す図。
【図９】図7の通信制御処理で行われるデータ送信処理のフローチャート。
【図１０】図9のデータ送信処理に、APの再接続処理を加えたフローチャート。
【図１１】図7の通信制御処理で行われる中断処理のフローチャート。
【図１２】図7の通信制御処理で行われる待機処理のフローチャート。
【図１３】図7の通信制御処理で行われる終了処理のフローチャート。
【図１４】スロースタートを表す、送信パケット数と輻輳ウィンドウの大きさの関係図。
【図１５】輻輳が発生した場合における、送信パケット数と輻輳ウィンドウの大きさの関係図。
【図１６】図3の通信開始処理に先行送信処理を追加したフローチャート。
【図１７】先行送信処理のフローチャート。
【図１８】本発明の第３の実施形態に係る通信装置のブロック図。
【図１９】図16の通信開始処理に、情報制御部の送信処理を追加したフローチャート。
【図２０】情報制御部による送信処理の詳細なフローチャート。
【図２１】情報制御部の受信処理のフローチャート。
【図２２】本発明の第３の実施形態に係る通信装置の他の例ブロック図。
【図２３】本発明の第３の実施形態に係る通信装置のさらに他の例のブロック図。
【図２４】本発明の実施形態に係る通信装置のハードウェアブロック図。
【発明を実施するための形態】
【００１１】
以下、図面を参照しながら、本発明の実施形態について説明する。
【００１２】
（第１の実施形態）
図1に、本発明の第１の実施形態に係る通信環境の例を示す。
【００１３】
本実施形態に係る通信装置を具備する通信端末101が示される。通信端末101が、通信先装置102にデータの送信を行う場合、通信端末101は、中継装置であるアクセスポイント（AP、Access Point）103に接続し、AP103が提供する通信ネットワーク104に所属する。ここでのAPとは、無線LANなどの通信ネットワークへ接続するサービスを提供している通信機器を意味する。AP103は、電波を送出して通信エリアを形成しており、その範囲に存在する通信装置に対して無線LANによるネットワーク接続性を提供している。ここではデータの送信先がAP103よりも遠隔の通信装置であるが、データの送信先がAP103自体であってもよい。
【００１４】
通信ネットワーク104は、中継ネットワーク105を介して、通信先装置102が所属する他の通信ネットワーク106と接続されている。物理的経路107と物理的経路108は、ルータなどのネットワーク機器を、有線および無線で物理的に結んだ経路であり、各ネットワーク間の通信を可能にする経路を表している。
【００１５】
通信端末101は、TCP（Transport Control Protocol）にて通信を行うため、通信開始時に、通信先装置102との間で、TCPコネクションと呼ばれる論理的通信路（論理コネクション）109を確立する。
【００１６】
通信ネットワーク104は、AP103の近傍では電波が強く、良好な通信環境であるが、AP103の遠隔では電波が弱く、劣悪な通信環境である。本発明の一実施形態は、このような通信環境が変化する状況下において、通信端末101の動作を制御する。
【００１７】
図2に、本発明の一実施形態に係る通信装置を示す。
【００１８】
本発明の一実施形態に係る通信装置200は、アプリケーション実行部201、通信要求保留部202、接続制御部203、記憶部204、通信環境監視部205、通信部206、アンテナ210を備える。接続制御部203は、無線接続制御部（第１の接続制御部）203Aと、TCP接続制御部（第２の接続制御部）203Bとを備える。通信部206は、TCP/IP通信部207、MAC通信部208、無線部209を備える。通信環境監視部205、MAC通信部208、および無線部209は、無線LANインタフェースを形成する。
【００１９】
アプリケーション実行部201は、本通信装置上で動作するアプリケーションを実行する部分である。アプリケーションはユーザからの指示に応じて動作してもよい。このアプリケーションは、通信先装置とデータ通信する必要が発生した場合に、通信要求を生成し、通信要求を通信要求保留部202に出力する。本実施形態では、通信要求には、例えば、通信先装置とTCPコネクションを確立する要求（コネクション確立要求）、データ（HTTPリクエストなど）を送信する要求（データ送信要求）がある。その他、通信先装置から届いたデータを受信するためのデータ受信要求などもある。これらの通信要求が別個に、アプリケーション実行部201によって生成される。データ送信を行う場合、１つのコネクション確立要求に引き続いて、１つのデータ送信要求が生成されてもよいし、１つのコネクション確立要求に引き続いて、複数のデータ送信要求が生成されてもよい。なお、通信要求の構成として、１つの通信要求が、例えばコネクションの確立の命令とデータ送信の命令とを含むものであってもよい。本実施形態では、論理コネクションとしてTCPコネクションを確立する場合を想定するが、これに限定されるものではない。なお、後述するように、アプリケーション実行部201は、コネクション確立要求とデータ送信要求のみを通信要求保留部202に出力し、それ以外は、直接、TCP/IP通信部207またはMAC通信部208に出力してもよいが、ここでは、アプリケーション実行部201が生成した通信要求はいったん、通信要求保留部202に出力し、通信要求保留部202が通信要求の内容を判断する場合を想定する。
【００２０】
通信要求保留部202は、アプリケーション実行部201により生成された通信要求が即時に実行されるのを防ぐために、この通信要求を一時的に保留する部分である。保留することによって、その間に、通信ネットワーク104への無線接続（具体的にはAP103への無線接続）、通信先とのTCPコネクションの確立、TCPコネクション確立後のデータ通信の待機などの処理を行うことができる。保留された通信要求は、接続制御部203からの指示などを契機に、TCP/IP通信部207に送られて、実行される。ここでは指示は接続制御部203から受けるとしたが、別の処理部から受けるようにすることも可能である。保留の対象となる通信要求は、コネクション確立要求およびデータ送信要求を想定する。
【００２１】
接続制御部203は、無線LANの接続および認証、およびTCP/IPのコネクションおよびデータ通信に関する制御を行う。より詳細には、接続制御部203は、無線接続制御部（第１の接続制御部）203Aと、TCP接続制御部（第２の接続制御部）203Bとを備える。無線接続制御部203 Aは、MAC通信部208が備えるAP接続機能を介して、AP103との接続（開始、終了、再接続）および認証に関する制御を行う。TCP接続制御部203Bは、TCP/IP通信部２０６に対して、TCPによる論理コネクションの開始または終了、データ送信／受信の開始または一時停止または終了に関する制御を行う。接続制御部203は、記憶部204および通信環境監視部205から制御に必要な情報を取得し、通信要求保留部202および通信部206に対し、制御に関する指示を発行する。
【００２２】
記憶部204は、接続制御部203が利用する情報のデータを格納する部分である。そのデータは、電波の強度など通信環境に関わる情報や、接続可能なAPの情報、アプリケーション実行部201が実行するアプリケーションの情報などが考えられるが、その他の情報でもよい。通信先装置へ送信するデ−タ、または通信先装置から受信したデータ（送信したデータに対して通信先装置から応答として返されるデータなど）を格納してもよい。記憶部204は、RAM（Random Access Memory）、NANDフラッシュ型メモリ、ディスク装置、NAS（Network attached storage）などの任意の記憶装置で構成されることができる。記憶部204は、揮発性メモリと不揮発性メモリとの両方を含んでいてもよい。
【００２３】
通信環境監視部205は、通信装置200周辺の電波状況などの通信環境を監視する部分である。例えば、AP103から受信する電波の強度や、周辺のノイズ等を監視する。通信環境監視部205は、検知したデータ（通信環境データ）を、接続制御部203に送る。また、このデータは記憶部204などに保存されてもよい。
【００２４】
通信部206は、APや通信先装置との通信を司る部分であり、TCP/IP通信部207、MAC通信部208、無線部209を備える。
【００２５】
TCP/IP通信部207は、TCP層およびIP層などのTCP/IPに関する各種通信処理を実行する。TCP/IP通信部207は、接続制御部203からの指示を受けて動作する。TCP/IP通信部207は、通信要求保留部202から出力された要求を実行して、パケットを生成する。生成したパケットはMAC 通信部208に送る。また、MAC通信部208からパケットを受取り、パケットの受信処理を行って、アプリケーション実行部201にパケット内のデータを引き渡す。
【００２６】
MAC通信部208は、MAC層における各種通信処理を実行する。MAC通信部208は、TCP/IP通信部207からのパケットを受取り、MACヘッダ等を付加してMACフレームを生成し、MACフレームを無線部209に出力する。また、無線部209からMACフレームを受取り、MACフレームの受信処理を行った後、パケットをTCP/IP通信部207に引き渡す。その他、MAC通信部208はMAC層に関する各種の管理および制御に関する処理を行ってもよい。一例として、APとの接続を行うための処理を行うAP接続機能（APの選択、認証）を有する。AP接続機能では、接続および認証のための各種フレームの生成および送信、フレーム受信および解析等も行う。ここでは、AP接続機能はMAC通信部208が有するが、AP接続機能は、ソフト動作でアプリケーション実行部により動作することも可能である。
【００２７】
無線部209は、MAC通信部208から入力されたフレーム（MACフレーム）に物理層の処理（物理ヘッダの付加、符号化、変調など）を行ってPHYパケットを生成する。無線部209は、PHYパケットに対し、DA変換を行い、変換後のアナログ信号に周波数変換（アップコンバート）、増幅等のアナログ処理を行った後、アンテナ210を介して空間に電波として信号を放射する。また、アンテナ210を介して信号を受信した場合は、増幅、周波数変換（ダウンコンバート）等のアナログ処理を行ってPHYパケットとする。PHYパケットに物理層の処理（復調、復号、物理ヘッダ解析等）を行ってMACフレームを取得し、MACフレームをMAC通信部208に出力する。また、無線部209は、アンテナ210を介して受信した電波の信号を、周辺の通信環境の測定のため通信環境監視部205に出力する。
【００２８】
図3に、本実施形態における通信開始処理の概略フローチャートを示す。以下、通信開始処理の流れについて簡潔に説明し、その後、各ステップの詳細を説明する。
【００２９】
アプリケーション実行部201は、実行中のアプリケーションにより通信の必要が発生した場合に、通信要求を生成する（S101）。この通信要求は、通信要求保留部202に送られる。例えば通信先装置とのデータ通信の必要が発生した場合に、通信要求を生成する。一例として、コネクション確立要求（例えばconnect()）を生成し、その後に、データ送信要求(例えばsend())を１つまたは複数生成する。ネクション確立要求の処理が完了した後で、データ送信要求を生成してもよい。
【００３０】
通信要求保留部202は、その通信要求を受け取り、通信要求がコネクション確立を伴う要求、または確立したコネクションを利用したデータ送信要求（以下、これらをコネクション確立に関連する要求と総称することがある）であるかを判断し、コネクション確立に関連する要求である場合、その通信要求を保留する（S102）。接続制御部203に通信要求の保留通知を送る。
【００３１】
接続制御部203は、通信要求保留部202から通信要求の保留通知を受け付け、AP103への接続処理を行う（S103）。なお、本実施形態では、省電力等の観点から、通信ネットワークへの接続処理を、通信要求を受けた後に行うとしているが、事前に行っても、独立して行ってもよい。
【００３２】
接続制御部203は、AP103への接続が成功した後、TCP/IP通信部207を用いて、通信先装置に対しコネクション確立処理を行う（S104）。ここでコネクション確立とは、TCPにより、通信端末と通信先装置が論理的な通信路で接続されていることを意味する。コネクション確立時には、通信先装置との間で3ウェイハンドシェイクが行われる。3ウェイハンドシェイクは、通信を開始する前に相手先が応答するかを確認するための手続である。これはTCPの信頼性を保証する機能の一つである。
【００３３】
接続制御部203は、コネクション確立後、コネクションを介したデータ送信、データ送信に対する応答としてのデータ受信などを伴う、通信制御処理を行う（S105）。この通信制御処理では、通信環境監視部205からのデータ（通信環境データ）と、記憶部204に格納されたデータを判断基準として、データ送信、中断、待機、終了などの処理の制御を行う。通信の中断があるのは、接続制御部203は、通信開始後も通信環境を確認し、通信環境が悪化したと判断した場合は、通信を中断するためである。通信環境の悪化は、送信したパケットにデータ破損やロスが生ずる可能性が高まることに伴い、パケットの再送信が行われる可能性が高まる。再送信の影響は、AP103や、同じAP103を利用する他の通信装置にも及ぶため、周囲への影響を抑制するためにも、通信環境が悪化した場合は、通信を中断するほうがよい場合がある。
【００３４】
先に述べた図3の各処理について、詳しく説明する。
【００３５】
図3の通信要求保留処理（S102）について、図4に、通信要求保留処理のフローチャートを示す。ここでは、通信要求保留部202が、アプリケーション実行部201と通信部206を接続するソケットアプリケーションプログラミングインターフェイス（ソケットAPI、socket application programming interface）を利用して実現されたものとする。
【００３６】
ソケットは、アプリケーション実行部201から命令（プログラム関数）を受け取る（S201）。そのプログラム関数のうち、コネクション確立要求の関数であるconnect()、データ送信要求の関数であるsend()など、通信要求に関する関数を受けつけた場合（S202のYES）、通信要求保留部202は、その関数（通信要求）を実行せずに保留する（S203）。そして、通信要求を保留したことを、接続制御部203に通知する（S204）。それ以外の要求では（S202のNO）、保留は行わず、TCP/IP通信部207に直ちに出力するなどして、通信開始処理全体が終了となる。ここでは、通信要求保留部202が、入力された通信要求が、コネクション確立に関連する要求であるか否かを判断したが、アプリケーション実行部201がコネクション確立に関連する要求（コネクション確立要求およびデータ送信要求）のみを通信要求保留部202に入力するようにし、通信要求保留部202は、アプリケーション実行部201から入力される通信要求を常に保留してもよい。アプリケーション実行部201は、その他の通信要求（例えばPING要求、データ受信要求（recv()）など）については、直接、TCP/IP通信部207に出力するようにしてもよい。
【００３７】
図3における、APへの接続処理（S103）について、図5に、この処理のフローチャートを示す。
【００３８】
接続制御部203は、まず初めに無線LANインタフェース（通信環境監視部205、MAC通信部208、無線部209）が無効化されている場合に、無線LANインタフェースを有効にする（S301）。無効化とは、省電力などの理由により、通信を行う必要があるまで、スリープ状態など、省電力な状態にすることをいい、有効化とは、スリープ状態などから稼働できる状態に遷移させることをいう。無線LANインタフェースを無効化は、無線LANインタフェース内の各部の全部または一部を省電力な状態にすることを意味する。なお、無線LANインタフェースが最初から有効である場合は、この処理は不要である。
【００３９】
接続制御部203は、通信ネットワークの接続サービスを提供しているAPを探索する（S302）。探索方法としては、MAC通信部208のAP接続機能を介して、探索要求フレームをブロードキャスト送信し、当該フレームを受信したAPからの応答フレームを受け取る方法、APが発するビーコンフレームをMAC通信部208のAP接続機能が検知する方法などが考えられるが、ここで述べた以外の方法で探索してもよい。
【００４０】
APを検出できなかった場合には（S303のNO）、一定時間待機して再びAPの探索に戻る（S304）。APが検出できた場合には（S303のYES）、接続制御部203またはAP接続機能は、当該APが接続可能なAPかを確認する（S305）。APが接続可能かを確認する方法は、APから受け取ったビーコンフレームなどの情報により、誰でも接続可能なAPであると判断する方法、当該APがこの通信装置に事前に登録されているかを確認する方法などが考えられるが、ここで述べた以外の方法で確認してもよい。
【００４１】
APに接続できないと判断した場合は（S306のNO）、一定時間待機して再びAPの探索に戻る（S304）。APに接続できると判断した場合は（S306のYES）、接続制御部203は、AP接続機能を用いて、APに対し接続および認証を行う（S307）。認証方法は、WPA-PSK、WPA-EAPなど、どんな方法でもよい。
【００４２】
次に、図3のコネクション確立処理（S104）について説明する。図6に、コネクション確立処理のフローチャートを示す。
【００４３】
接続制御部203は、通信要求保留部202に対し、保留中の通信要求のうち、コネクション確立要求のみを解放するように指示する（S401）。解放指示を受けた通信要求保留部202は、コネクション確立要求のみを実行する（S402）。例えば、通信要求保留部202が、通信先装置とのTCPコネクションの確立を指示するconnect()、データ送信を指示するsend()を保留していた場合、保留中のconnect（）のみを実行し、send（）は実行しない。通信部206のTCP/IP通信部207は、TCPにて標準実装された方法にて、通信先装置とTCPコネクションを確立する（S403）。なお、確立するコネクションは一つの場合も、複数の場合もあり得る。
【００４４】
次に、図3の通信制御処理（S105）について説明する。図7に、この処理のフローチャートを示す。
【００４５】
接続制御部203は、通信環境監視部205が検知した情報（通信環境データ）を基に、通信環境の状況を判定し（S501）、この判定によって処理を変更する。すなわち、通信環境が、通信条件を満たすか否かを判定し、通信条件を満たす場合は、通信環境は良好、満たさない場合は良好でないと判断する。なお、この判断は、予め定められた時間または間隔ごとに、もしくは情報の検知または指示の受付などの際に行うこととしてもよい。
【００４６】
判定の具体的な方法としては、基準となるデータとの比較でもよいし、過去の監視データ（過去に測定した通信環境データ）との比較でもよいし、その他の方法でもよい。過去の監視データとの比較では、例えば、過去の監視データの平均以下の値を取った場合を劣悪と判断することが考えられる。基準となるデータとの比較の場合、当該基準となるデータは、記憶部204などに格納されていてもよいし、入力装置などからユーザが入力するようにして、これを用いてもよい。
【００４７】
判定に用いる項目は、受信信号レート、受信信号強度（RSSI、Receive Signal Strength Indicator）、信号雑音比（SNR、Signal Noise Ratio）、受信信号電力対干渉および雑音電力比（SINR、Signal to Interference Plus Noise Rate）、パケット到達率（PDR、Packet Delivery Rate）、フレーム誤り率（FER、Frame Error Rate）、符号誤り率（BER、Bit Error Rate）、クリアチャネル評価（CCA、Clear Channel Assessment）、受信できなかったビーコンの数、など検出でき、優劣の判断をすることができる情報であれば何でもよい。また、使用する情報は一つでも、複数でもよく、総合的に判断してもよい。
【００４８】
図8に、基準となるデータの例として、記憶部204に格納された通信環境の判定基準値のデータを示す。図上段のテーブル（301）では、項目NO.1に、対象情報を「RSSI」、値を「-40dBm以上」とする基準値が示されている。対象情報は、通信環境の判定に必要となる情報の識別子であり、例えば名前である。
【００４９】
図下段のテーブル（302）では、個々のアプリケーションや通信等を特定する通信情報ごとに、対象情報と基準値が示されており、より細かに条件を設定することができる。通信の特定は、例えば通信方式（プロトコル）、通信先IPアドレスおよび使用するポート番号の組によって行われる。通信先IPアドレスが「Any」は、通信先のIPアドレスは何でもよいことを意味する。また、ポート番号とは、コンピュータがデータ通信を行う際に、相手側のプログラムを特定する番号である。図示の通信の例は、「通信プロトコルにTCPを使用し、任意の通信相手に対するTCP80番ポート宛の通信」を意味する。「通信情報」の列に設定する情報は、上記のアプリケーションや通信に限定されず、接続制御部203が識別できる情報であればよい。
【００５０】
図の「動画アプリ」は、実際にはアプリケーションを一意に特定できる識別子が設定されている。実行中のアプリケーションを特定するために、「動画アプリ」が、例えばプロセスが起動された時に「プロセスID」のような識別子に書き換えられても良い。図の上段と下段の両方のテーブルを格納してもよいし、一方のみ格納してもよい。両方格納する場合、例えば下段の「通信情報」のいずれのエントリにも合致しない場合に、上段のテーブルを利用するようにしてもよいし、どちらか一方のみを利用するようにしてもよい。図8で示した条件および保存形態は一例であり、他の形式で保存されてもよい。
【００５１】
説明を図7のフローチャートに戻す。通信環境が良好である場合は（S502のYES）、データが送信中かを確認する（S503）。データが送信中であることの確認は、データの送信終了後に通信要求保留部202などに対しデータ送信要求の完了の返値が返るようにして確認する方法、TCP/IP通信部206が受信するパケットを確認する方法、アプリケーションの状態を確認する方法などが考えられるが、ここで述べた以外の方法で確認してもよい。データ送信中ならば（S504のYES）、何も行わず、データ送信が続く。データ送信中でないならば（S504のNO）、保留している要求の存在を確認し（S505）、保留されている要求がないときは（S506のNO）、すべての要求の実行が完了したため、処理は終了する。終了時には、APとの接続を切断し、無線LANインタフェースを無効にしてもよい。また、保留されている要求はないが、アプリが実行中の場合もあるため、新たな通信要求が発生するまで、そのまま待機していてもよい。また、待機している間に、コネクションを維持するためのパケット（維持パケット）を送付してもよい。保留されている要求（データ送信要求）があるときは（S506のYES）、データ送信処理を行う（S507）。
【００５２】
図9に、データ送信処理（S507）のフローチャートを示す。データ送信処理では、まず、接続制御部203（例えば接続制御部203B）が、合計待機時間を初期化する（S601）。合計待機時間とは、データ送信要求について、そのデータ送信の待機を継続している時間（すなわち、データ送信要求が発生してからの経過時間）を計るためのものである。接続制御部203（例えば接続制御部203B）は、当該経過時間を管理する手段を備える。合計待機時間の値は、接続制御部203が保持していてもよいし、記憶部204などに格納しておいてもよい。データ送信処理を行うことは、合計待機時間が制限値（上限）に達しなかったことを意味するため、この処理で合計待機時間を初期化する。
【００５３】
次に、接続制御部203は、通信要求保留部202に保留中の要求の実行を指示し（S602）、通信要求保留部202が保留している要求（send()など）を実行することで（S603）、通信部206を介して、データが送信される。この場合、データ送信の前にコネクションが確立されているため、3ウェイハンドシェイクは行われない。したがって、データを高速に送信開始することができる。
【００５４】
また、データ送信の際には、APとの再接続を実施してもよい。通信環境が劣悪な状況でAPと接続した場合、接続時に選択した符号化変調方式（伝送レート）などにより、通信環境が改善しても、適切な通信速度が出ない場合がある。このような場合、APと再接続を行うと、通信環境が良好な状況で符号化変調方式（伝送レート）などを選択でき、通信速度が向上する場合がある。
【００５５】
ゆえに、図10に示すデータ送信処理の他の例のフローチャートのように、接続制御部203が、APとの再接続により、通信速度が向上するかを判断する（S701）。例えばAPからの受信信号の強度が、前回のAP接続時よりも大きいときは、通信速度の向上が見込まれると判断できる。または、信号強度の範囲ごとに事前に符号化変調方式などが分かっている場合は、今回の受信強度の値から、伝送レートが現在のものから向上するかを判断してもよい。通信速度の向上が見込まれるならば（S702のYES）、現在の無線接続を切断し、APと接続しなおす（S703）。なお、この際、現在のコネクションは維持されたままである。以降の処理は、図9に示したデータ送信処理と同じである。通信速度が速く、接続可能なAPが他にある場合は、通信端末のIPアドレスが変わらず、コネクションを切断せずに他のAPを利用できるのであれば、他のAPに接続しなおすことも考えられる。
【００５６】
説明を図7のフローチャートに戻す。通信環境が良好でない場合（S502のNO）では、データが送信中かを確認し（S508）、送信中ならば（S509のYES）、中断処理を行う（S510）。データ送信中でない場合は（S509のNO）、待機時間内であれば（S511のYES）、待機処理を行う（S512）。ただし、前述の合計待機時間が制限値を超えている場合には（S511のNO）、終了処理が行われる（S513）。
【００５７】
中断処理（S510）について、図11にこの処理のフローを示す。
【００５８】
接続制御部203が、通信要求保留部202に通信（送信）の中断を指示する（S801）。通信要求保留部202は、データ送信をいったん停止（保留）し、接続制御部203に保留を通知する（S802）。通知を受け取った接続制御部203は、AP接続およびコネクションの切断を通信部206に指示し、各切断が行われる（S803）。TCP接続の切断方法としては、AP接続確立後、一定時間の通信がないことによる切断でもよいし、特定の指示を含むパケットを送信して強制的に通信を終了する方法でもよい。強制的な終了方法としては、TCPパケットのヘッダ部にRSTフィールドがセットされた、通信の終了を一方的に相手方に通知するRSTパケットを送信する方法などが考えられるが、ここで述べた以外の方法でもよい。なお、中断の処理の変形例として、無線接続とTCPの接続を維持したまま、データ送信だけを行わないことも可能である。
【００５９】
切断後は、通信環境が改善されることを期待し、一定時間待機する（S804）。なお、他に接続できるAPがある場合は待機せず、他のAPとの接続を試みてもよい。一定時間待機後は、APへの接続処理およびコネクション確立を実施する。APへの接続処理は、通信開始処理におけるAP接続処理と同じ処理（S103）である。なお、APへの接続処理（S103）におけるAPの探索時（S302）に複数のAPを検出していた場合は、それらのAPを次の接続候補としてもよい。この際のコネクションの確立は、最初のコネクション確立時に実行したコネクション確立要求はすでに存在しない可能性があるため、事前にこのコネクション確立要求をバックアップしておき、データ送信再開時には、このコピーしたコネクション確立要求を利用してもよい。あるいは可能ならば、データ送信要求からコネクション確立要求を生成してもよい。また、データ送信再開時には、前回まで送信したデータの続きのデータを送るようにしてもよいし、最初からデータを送りなおすようにしてもよい。
【００６０】
図7の待機処理（S512）について、図12にこの処理のフローを示す。待機処理（S512）は、接続制御部203が、TCP/IP通信部207を介して、維持パケットを送信した上で（S901）、一定時間待機を行う（S902）。コネクションは一定時間内にパケットが来ない場合は、通信先装置によって切断されるため、切断される前にパケットを送信しておく必要がある。なお、接続維持の方法は、一定間隔でパケットを送信するだけでなく、不定期もしくは切断直前時に送信するといった方法などでもよい。また、パケット上のウィンドウサイズというデータを0に設定した維持パケットを送ると、通信先装置がパケットを送信しなくなる。接続制御部203は、今回待機した時間を合計待機時間に加え、更新する（S903）。
【００６１】
図7の終了処理（S513）について、図13にこの処理のフローを示す。終了処理（S513）は、接続制御部203が、通信部206に通信接続の切断を指示し（S1001）、通信部206がコネクションおよびAP接続を切断し（S1002）、切断後、無線LANインタフェースを無効化する（S1003）。本実施形態では、省電力等の観点から、通信を行う必要があるまで、使用しない各部をスリープ状態などといった状態に遷移させる無効化を行うようにしているが、行わなくともよい。
【００６２】
以上のように、本実施形態では、APへの接続時に、通信先装置とのコネクションを確立しておき、通信環境が、データ送信を行える良好な状態になるまでデータ送信を待機し、良好な状態になったときに、データ送信（必要に応じて、その応答の受信）を行う。この制御により、パケットの再送による当該通信装置にかかる負担、受信するAPの負担および同じAPを利用する他の通信装置への影響を抑え、実際にデータを送信している時間（実質送信時間）を短くすることができる。さらに、コネクションを事前に確立することで、3ウェイハンドシェイクの制限を受けずに、データ送信を開始することができ、さらに送信時間を短縮することができる。
【００６３】
なお、本実施形態では、APへの接続時に、通信環境の状態に拘わらず、通信先装置とのコネクションを確立したが、通信環境が通信条件を満たした場合にのみ、コネクション確立をするようにしてもよい。このときの通信条件は、データ送信の際の通信条件よりも緩くしておくことで（すなわちデータ送信の通信条件を、コネクション確立の通信条件よりも厳しくすることで）、これまで述べた本実施形態と同様の効果を得ることができる。例えば、データ送信の際の通信条件が「-40dBm以上」（図8参照）の場合に、コネクション確立の通信条件を「-80dBm以上」などと、要求する値を緩くすることが考えられる。または、データ送信の際の通信条件が、複数項目の条件を満たすことを要求している場合に、コネクション確立の通信条件が当該複数項目のうちの一部の条件を満たすようにすることが考えられる。データ通信の通信条件およびコネクションの通信条件は一例として、データ通信における情報の欠落、誤りもしくは輻輳が生じにくい状態を特徴づける条件であり、データ通信の通信条件は、コネクションの通信条件よりも当該状態がより生じにくいこと（より厳しい条件）を要求する。このように、コネクション確立にも、それを実行するための通信条件を設定することで、通信環境の改善が見込まれる場合にのみ、コネクション確立することが期待できる。
【００６４】
（第２の実施形態）
通信遅延等により画像が乱れる動画閲覧アプリケーションなど、できる限り短時間で大量のデータを送受信できることを要求するアプリケーションは多々ある。しかし、TCPの機能の一つであるスロースタートは、通信の信頼性の確保のため、通信開始直後のデータ送信を制限してしまう。そこで、スロースタートによる影響をできる限り回避するための処理を追加する。
【００６５】
スロースタートとは、TCPが実装する輻輳制御機能の一つである。ある機器が通信を開始した際に、大量のデータを送信した場合、突如としてネットワーク上のトラフィックが増加し、他の機器の通信に影響を与えてしまう。そのため、通信開始時は、通信先装置が一度に送信できるパケット数を制限し、徐々に送信できるパケット数を増やしていくという処理がされる。しかし、通信環境が良好であり、できる限り短時間で大量のデータを送信する必要がある場合、スロースタートは高速送信の妨げとなる。
【００６６】
図14に、スロースタートを表す、送信パケット数と輻輳ウィンドウの大きさの関係図を示す。縦軸の輻輳ウィンドウは、送信側が一度に送信できるパケット数を表す。横軸は、受信側との間でパケットが交換された送信回数である。通信を開始していない場合は、送信側が送信できるパケット数は1である。以後、送信側がパケットを送信し、受信側から受信通知パケット（ACK、Acknowledgeパケット）を受け付けるたびに、閾値を上回るまで、輻輳ウィンドウは2倍されていく。閾値を上回った場合は、最大値になるまで、輻輳ウィンドウは１ずつ増えるが、最大値を上回ることはない。ゆえに、通信が開始した直後は、大量のパケットを送信することができない。しかし、一度に大量のパケットを送信する必要のあるデータを送信する前に、輻輳ウィンドウを大きくしておくことができれば、データ送信開始直後から、パケット数を多く送信でき、短時間で、より多くのデータが送信できるようになる。
【００６７】
そこで、保留した通信要求（データ送信要求）のなかに、テキストメッセージのような容量の小さいデータの応答を促す通信要求がある場合には、通信環境が劣悪な場合でも、他のデータに先行して、容量の小さいデータを通信先装置に送信させるという先行送信処理を行い、輻輳ウィンドウをできる限り大きくする。そして通信環境が改善した後で、大量のデータを通信先装置が送信するよう制御する。
【００６８】
ただし、通信環境が非常に劣悪な場合、この先行送信処理は行わないほうがよい。通信環境が非常に劣悪な場合は、パケットロスが生じやすい。スロースタートでは、パケットロスが生じると、再度のパケットロスを防ぐために、大きくした輻輳ウィンドウを小さくしてしまうからである。そこで例えば、容量の小さいデータを送信するための通信条件を用意し、この通信条件が満たされた場合のみ、当該データの送信を行う。この通信条件は、通常のデータ送信の通信条件よりも緩い条件とする。例えば、通常のデータ送信の際の通信条件が「-40dBm以上」（図8参照）の場合に、容量が小さいデータ送信の通信条件を「-70dBm以上」などと、緩い値にすることが考えられる。または、通常のデータ送信の通信条件が、複数項目の条件を満たすことを要求している場合に、容量の小さいデータを送信するための通信条件が当該複数項目のうちの一部の条件を満たすようにすることが考えられる。通常のデータ通信の通信条件および容量が小さいデータ通信の通信条件は、一例として、データ通信における情報の欠落、誤りもしくは輻輳が生じにくい状態を特徴づける条件であり、通常のデータ通信の通信条件は、容量が小さいデータ通信の通信条件よりも当該状態がより生じにくいこと（より厳しい条件）を要求する。なお、容量が小さいデータ通信の通信条件は、前述したコネクション確立の通信条件よりは、当該状態がより生じにくいこと（より厳しい条件）を要求するものとする。このように、必要な通信条件が満たされた場合のみ容量の小さいデータ送信を行うことで、パケットロスが生じやすい、非常に劣悪な通信環境で先行送信処理が行われることを防止できる。
【００６９】
図15に、パケットロスが発生した場合における、送信回数と輻輳ウィンドウの大きさの関係図を示す。図15のように、パケットロスが発生する度に、輻輳ウィンドウが小さくなり、容量の大きいデータの通信時間短縮に寄与しなくなる。
【００７０】
図16に、第２の実施形態の通信開始処理のフローチャートを示す。本実施形態における通信開始処理のフローは、先ほどの第１の実施形態における通信開始処理のフローのコネクション確立処理（S104）の後に、先行送信処理（S1101）を挿入したものである。
【００７１】
図17に、先行送信処理（S1101）のフローチャートを示す。接続制御部203は、通信要求保留部202の保留中の最初の処理にかかる要求に対して通信先装置が応答として返すデータの種類を確認する（S1201）。確認方法は、通信要求保留部202の保留中の要求を解析してもよい。例えば、HTTPヘッダを含むHTTP Requestが要求に含まれていればそれを解析することで、要求する情報がテキスト（例えばHTMLファイル）であることを確認できる。あるいは、その要求を呼び出したアプリケーションを識別し、アプリケーションから、要求する情報の種類が特定可能な場合は、アプリケーションから、データの種類を確認してもよい。その他の方法で確認してもよい。なお、ここでは通信要求保留部202に保持されている最初の要求を対象としたが、通信要求保留部202が複数の要求を保持でき、かつ各要求の詳細を参照できる場合には、各要求を参照してそれらを個別に処理してもよい。
【００７２】
接続制御部203は、HTML（Hyper Text Markup Language）などのテキストファイルのようにデータ容量が小さいと予想されるデータの種類でない場合は（S1202のNO）、この処理は終了し、通信開始処理の通信制御処理（S105）に移る。そのようなデータ容量が小さいと予想されるデータ種類である場合には（S1202のYES）、接続制御部203が先行送信のメリットの有無を判断する（S1203）。なお、データの種類は、記憶部204に格納されていても、接続制御部203が保持していてもよい。ここでは、データの種類で先行送信の判断を行ったが、データのサイズを実際に取得し、サイズが閾値以下の場合は、応答のデータ容量が小さいとして同様にステップS1203に進んでもよい。データのサイズは例えば実際にサーバに問い合わせて取得することが考えられる。
【００７３】
メリットの有無の判断は、通信環境、および先ほど確認したリクエスト処理がTCPコネクションを使い回すことかできるか否かで行うことができる。HTTPのバージョンによっては、１つのTCPコネクションを利用して、複数のリクエストを送出できるものもあれば、１つのTCPコネクションに対して、１つのリクエストの送出のみ可能なものもある。前者の場合、１つのTCPコネクションを使い回すことができる場合に相当する。ただし、その他の方法で判断してもよい。また、常にメリットがあるとする判断を出すようにしたり、この判断の処理を省くことにしたりして、先行送信を必ず行うようにすることもできる。
【００７４】
通信環境が非常に劣悪な場合には、パケットロスが生じる可能性が高いため、先行送信は行わない。通信環境の判断は、先に説明した実施形態における処理と同じく、接続制御部203が、通信環境監視部205が検知したSNRやSINRなどの情報を基に行えばよい。
【００７５】
また、一つのコネクションを使いまわせない通信プロトコルの場合には、先に容量の小さいデータを送信していても、別のデータを送信する際に新たなコネクションを確立する必要があり、スロースタートを回避することができないため、先行送信処理を行う必要がない。
【００７６】
上記のように、接続制御部203は、通信環境および使用するプロトコルを確認し、先行送信にメリットがあるかを判断する（S1203）。メリットがないと判断した場合（S1204のNO）は、先行送信は行われない。メリットがあると判断した場合（S1204のYES）は、接続制御部203が通信要求保留部202に保留している要求（データ送信要求）の実行を指示する（S1205）。指示を受けた通信要求保留部202は、当該要求を実行する（S1206）。
【００７７】
以上の処理により、パケットロスの発生を防ぎながら、スロースタートによって狭められている輻輳ウィンドウを大きくした上で、データ送信（HTTPリクエストなど）を開始でき、できる限り短い実質送信時間で大量のデータを受信（動画像データなど）することができる。
【００７８】
（第３の実施形態）
次に、本発明の第３の実施形態について説明する。図18に、本発明の第３の実施形態に係る通信装置を示す。本実施形態の通信装置は、アプリケーションが動作するホスト部404と、無線通信モジュール400とからなる。ホスト部404と、無線通信モジュール400ホストインタフェース部403は、例えば別々のチップ（集積回路）として構成される。I/Oインタフェース部402は、無線通信モジュール400のホストインタフェース部403と接続するためのI/Oインタフェース部である。これらのインタフェース部としては、例えばPCI Express（登録商標）、USB、SDIOなどの種々のI/Oインタフェースが想定される。また、ホスト部404は、独自の記憶部（RAMやディスク装置など）を具備していてもよい。ホストインタフェース部403とI/Oインタフェース部403との間で実行される手順や交換される情報については、個々のインタフェース仕様に従う。無線通信モジュール400は、通信カードまたはネットワークカードとして構成されてもよい。
【００７９】
また実施形態では、先述の実施形態に、情報取得部411を有する情報制御部401が追加されている。情報制御部401は無線通信モジュール400に搭載されている。先の実施形態では、アプリケーション実行部201からの要求は通信要求保留部202が受け付け、コネクション確立および送信が必要な通信要求かを判別し、コネクション確立および送信が必要な要求については、それらの要求を保留し、それ以外の要求はTCP/IP通信部207等に出力した。あるいは、アプリケーション実行部201は通信要求保留部202にコネクション確立および送信が必要な通信要求のみ出力し、それ以外はTCP/IP通信部207に出力した。コネクション確立の要求の実行はAPに接続後、送信の要求の実行は通信環境が改善してから行われた。
【００８０】
一方、本実施形態では、アプリケーション実行部201とのやりとりは、情報制御部401を介して行われる。情報取得部411は、アプリケーションからの送信要求を契機とする情報取得処理を行う部分である。アプリケーション実行部201からの要求を解析して、それが求めるデータが、記憶部204に格納されているかを検索し、求めるデータ（例えばHTTPリクエストにより通信先装置から取得しようとしているデータ）を検出すれば、通信先装置とは通信をせずに、記憶部204から要望のデータを返すことで、アプリケーションに対する返答時間を短くすることができる。求めているデータがない場合には、通信要求保留部202に通信要求を送る。情報制御部401は、コネクション確立要求およびデータ送信要求のみ通信要求保留部202に出力し、それ以外の要求はTCP/IP通信部207またはMAC通信部208に直接、出力するようにしてもよい。
【００８１】
また、情報取得部411は、通信先装置から送られてきたデータを受信する際に情報受信処理を行い、そのデータを記憶部204に保存する部分でもある。さらに、取得したデータに関連する情報（付随情報）を、アプリケーション実行部からの要求を受けることなく、自律的に取得（このことを先行取得と呼ぶ場合もある）して、記憶部204に保存することも行う。付随情報とは、取得したデータがURL等のデータ所在情報で参照しているデータなどが、考えられるが、データの内容を解析して、取得の必要な情報を特定し、それを付随情報として外部から取得するなど、情報取得部411が独自に判断し取得してもよい。また、付随情報の取得は、アプリケーション実行部からの要求の受信を契機とせずとも、定期的または不定期的に情報取得部411が記憶部204を利用して、独自に行ってもよい。
【００８２】
なお、記憶部204には、第１の実施形態で説明した通信環境の状況を判定するためのデータが保存されている部分とは別に、検索に適したデータベースなどを追加し、そのデータベースに、先行取得した情報を保存してもよい。
【００８３】
このように、情報制御部401が、アプリケーション実行部201と、要求またはデータ等の受け渡しを一括で行うことにより、通信装置は、アプリケーション実行部201を含むホスト部404と、これとは分離した一つの無線通信モジュール400との形で実現することができる。
【００８４】
図19に、本実施形態における通信開始処理のフローチャートを示す。
【００８５】
本実施形態の通信開始処理のフローは、先に説明した実施形態の通信開始処理のフローにおいて、アプリケーション実行部201が通信に関する要求を発行した（S101）後に、情報制御部401の情報送信処理が追加されたものである（S1301）。その他の処理は、先に説明した一実施形態と同じである。
【００８６】
図20に、情報制御部401のデータ送信処理のフローチャートを示す。
【００８７】
情報制御部401は、アプリケーション実行部201からの要求を受け付け、データ送信要求（例えばHTTPリクエスト）であるかを確認する（S1401）。データ送信要求の場合では（S1402のYES）、情報取得部411が、要求された情報（例えばHTTPリクエストで通信先装置からの応答として送信を希望する情報）について記憶部204を検索する（S1403）。要求された情報が検出できた場合は（S1404のYES）、検出したデータをアプリケーション実行部201に渡す（S1405）。これにより、情報処理部の送信処理のみならず、通信開始処理も終了する。要求された情報が検出できなかった場合は（S1404のNO）、要求保留部202に要求を渡し（S1406）、本処理は終了する。要求保留部202に要求が渡されることで、その後は、図19に示した通信開始処理のステップS102以降のフローに従い、通信先装置に情報を収集しに行くことになる。
【００８８】
アプリケーション実行部201からの要求が、データ送信要求でない場合（S1402のNO）も、情報制御部401は、要求保留部202に要求を渡し（S1406）、本処理は終了する。データ送信要求でない場合には、コネクション確立要求、あるいはその他の種類の要求があるが、図19に示した通信要求保留部202の処理（S102）によって、それぞれに対応した処理がなされる。なお、コネクション確立要求およびデータ送信要求のみ通信要求保留部202に出力し、それ以外の要求はTCP/IP通信部207またはMAC通信部208に直接、出力するようにしてもよい。
【００８９】
図21に、通信先装置からデータを受信した際に行う情報制御部401のデータ受信処理のフローチャートを示す。
【００９０】
情報制御部401の情報取得部411は、通信先装置からの応答データを受信し、そのデータを記憶部204に保存する（S1501）。そして、そのデータが解析可能なデータであり（S1502のYES）、かつ追加取得が必要な場合（S1503のYES）には、情報取得部411は、付随情報を取得するために、新しい通信要求（コネクション確立要求、データ送信要求）を生成し、要求保留部202に渡す（S1504）。解析可能なデータとは、HTMLやテキストファイルなどが考えられる。追加取得が必要な場合とは、HTMLファイルが画像データなどの付随情報をURL等で参照している場合などが考えられる。また、HTMLファイルからリンクされている次のHTMLファイルが付随情報であってもよい。
【００９１】
リンク先の情報を取得する場合は、辿るリンク数の限度を決める必要がある。この限度は、リンク先を取得するまでに想定される通信時間、通信装置の電源の種別（バッテリー、ACアダプタ（商用電源））、当該電源の充電状況、事前に定められた閾値などによって決めてよいし、その他の方法で決めてもよい。また、最初のデータ受信要求先のURLを、検索サーバや検索履歴評価サーバなどに送信し、取得する情報に関連した別の情報を特定してもらい、その情報に対するリストを付随情報に含めてもよい。
【００９２】
通信先装置からのデータが、解析可能なデータでない場合（S1502のNO）または追加取得が必要でない場合（S1503のNO）、情報取得部411は、アプリケーション実行部201が要求した情報を、アプリケーション実行部201に送る（S1505）。なお、要求された情報と、今まで取得した付随情報をアプリケーション実行部201に返すように構成してもよい。
【００９３】
ここでは、アプリケーション実行部201への応答は、付随情報をすべて取得してから行うと事としているが、アプリケーション実行部201から要求された情報を取得した時点でアプリケーション実行部201へ応答してもよい。すなわち、付随情報の取得よりも先にアプリケーション実行部201に応答データを渡すようにしてもよい。
【００９４】
以上のように、本実施形態では、通信環境の改善を待たずに、記憶部204に格納されたデータによって、応答することができる。また、通信環境の良好な際に、付随情報を取得していることにより、通信環境が悪化し通信が中断しても、アプリケーションが必要なデータを取得することができる場合がある。
【００９５】
また、本実施形態では、アプリケーション実行部201と接続されているのは情報制御部401だけであり、記憶部204に応答するデータが格納されていれば、情報制御部401と記憶部204のみが稼働し、通信部206、通信要求保留部202、接続制御部203、通信環境監視部205は稼働させる必要がない。ゆえに、情報制御部401と記憶部204以外は、通常、電源オフの状態か動作周波数を遅くするなどして低消費電力な状態にしておくことで、消費エネルギーを削減することができる。よって、電源制御機能を追加することで、さらなる省電力化を図ることができる。
【００９６】
情報制御部401はアプリケーション実行部201からの要求を受け付けるため、電源制御は行われないものとし、電源制御機能は、データ送信要求が通知された時に記憶部204を稼働状態に遷移させてもよい。そして、記憶部204にデータがない場合には、各部すべてを稼働状態に遷移させてもよい。このようにして、全体の省エネルギー化を実現する。
【００９７】
また、さらなる省電力を望む場合は、情報制御部401を、アプリケーション実行部201と信号を送受信する部位と、その他の部位に分け、その他の部位は、アプリケーション実行部からの指示を受け付けた後に、有効化するといったことをしてもよい。
【００９８】
本実施形態では、情報取得部411を備えた情報制御部401を、ホスト部と無線通信モジュールとからなる形態の通信装置に設けた例を示したが、図２に示したような、ホスト部と無線通信モジュールとに分かれていない、一体型の通信装置に対して設けることも可能である。この場合のブロック図を図22に示す。動作の説明は、本実施形態の説明から自明であるため省略する。
【００９９】
また、本実施形態では、ホスト部と無線通信モジュールとからなる形態の通信装置に情報取得部411を備えた情報制御部401を設けたが、情報取得部411を備えない情報制御部を設ける構成も可能である。すなわち、図2の通信装置と基本的に同様の機能を有しつつ、ホスト部と無線通信モジュールにハードを分割した構成も可能である。この場合の構成例を図23に示す。情報制御部421は、情報取得部411の機能が除かれた以外は、これまで述べた情報制御部401と同様にして動作する。なお、この構成の電源制御機能に関して、ホスト部404から要求を受信した時点で、無線LANインタフェース（通信環境監視部205、MAC通信部208、無線部209）が無効化されている場合は、無線LANインタフェースを有効にすればよい。
【０１００】
なお、上記に説明した実施形態における各処理は、ソフトウェア（プログラム）によって実現することが可能である。よって、上記に説明した実施形態における通信装置および無線通信モジュールは、例えば、汎用のコンピュータ装置を基本ハードウェアとして用い、コンピュータ装置に搭載されたプロセッサにプログラムを実行させることにより実現することが可能である。
【０１０１】
図24に本発明の一実施形態に係る通信装置を備えたハードウェア構成例を示す。
【０１０２】
通信端末は、プロセッサ501、主記憶装置502、補助記憶装置503、ネットワークインタフェース504、デバイスインタフェース505、入力装置506、出力装置507、電源制御装置511を備え、これらがバス508を介して接続された、コンピュータ装置として実現できる。電源制御装置511はここでは独立した装置として存在しているが、電源制御の機能は、プロセッサ501またはネットワークインタフェース504に搭載するようにしてもよい。図24の通信端末を通信装置と呼んでもよい。
【０１０３】
プロセッサ501が、補助記憶装置503からプログラムを読み出して、主記憶装置502に展開して、実行することで、アプリケーション実行部201、通信要求保留部202、接続制御部203、TCP/IP通信部207、情報制御部401の機能を実現することができる。
【０１０４】
本実施形態の通信装置または無線通信モジュールは、当該通信装置または無線通信モジュール上で実行されるプログラムをコンピュータ装置にあらかじめインストールすることで実現してもよいし、プログラムをCD-ROMなどの記憶媒体に記憶して、あるいはネットワークを介して配布して、コンピュータ装置に適宜インストールすることで実現してもよい。
【０１０５】
ネットワークインタフェース504は、アンテナ509などを介して、ネットワークに接続するためのインタフェースである。MAC通信部208、無線部209および通信環境監視部205の機能は、このネットワークインタフェースにて実現できる。
【０１０６】
また、デバイスインタフェース505は、外部記憶媒体510などの機器と接続するインタフェースである。また、通信装置の外部にアプリケーション実行装置がある場合は、アプリケーション実行装置にも接続されてもよい。
【０１０７】
ユーザは、入力装置506から情報を入力してもよい。入力は、アプリケーションに対する指示でもよい。また出力装置507は、画像を表示する表示装置でもよいし、外部にデータを送信する通信装置（ネットワークインタフェース504とは別の通信インタフェース）でもよい。表示装置は、主記憶装置502または補助記憶装置503内のデータを画像表示してもよい。外部記憶媒体510は、HDD、CD-R, CD-RW, DVD-RAM, DVD-R 等の任意の記録媒体でよい。
【０１０８】
主記憶装置502は、プロセッサ501が実行する命令、および各種データ等を一時的に記憶するメモリ装置であり、DRAM等の揮発性メモリでも、MRAM等の不揮発性メモリでもよい。補助記憶装置503は、プログラムやデータ等を永続的に記憶する記憶装置であり、例えば、HDDまたはSSD等がある。記憶部204の機能は、主記憶装置502、補助記憶装置503または外部記憶媒体510で実現できる。
【０１０９】
上記に、本発明の一実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１１０】
101 通信端末
102 通信先装置
103 アクセスポイント（AP、Access Point）
104 通信ネットワーク
105 中継ネットワーク
106 通信ネットワーク
107 物理的通信路1
108 物理的通信路2
109 論理的通信路（TCPコネクション）
200 通信装置
201 アプリケーション実行部
202 通信要求保留部
203 接続制御部
203A 無線接続制御部
203B TCP/IP接続制御部
204 通信環境監視部
205 記憶部
206 通信部
207 アンテナ
301 テーブル1
302 テーブル2
400 無線通信モジュール
401、421 情報制御部
411 情報取得部
500 通信装置
501 プロセッサ
502 主記憶装置
503 補助記憶装置
504 インタフェース
505 入力装置
506 出力装置
507 アンテナ
508 バス
509 外部記憶媒体
510 電源制御装置
【図１】
0006290055.tif 000002
【図２】
0006290055.tif 000003
【図３】
0006290055.tif 000004
【図４】
0006290055.tif 000005
【図５】
0006290055.tif 000006
【図６】
0006290055.tif 000007
【図７】
0006290055.tif 000008
【図８】
0006290055.tif 000009
【図９】
0006290055.tif 000010
【図１０】
0006290055.tif 000011
【図１１】
0006290055.tif 000012
【図１２】
0006290055.tif 000013
【図１３】
0006290055.tif 000014
【図１４】
0006290055.tif 000015
【図１５】
0006290055.tif 000016
【図１６】
0006290055.tif 000017
【図１７】
0006290055.tif 000018
【図１８】
0006290055.tif 000019
【図１９】
0006290055.tif 000020
【図２０】
0006290055.tif 000021
【図２１】
0006290055.tif 000022
【図２２】
0006290055.tif 000023
【図２３】
0006290055.tif 000024
【図２４】
0006290055.tif 000025