(57)【特許請求の範囲】
【請求項１】
通信装置であって、
前記通信装置と第１の他の通信装置との間の通信路を確立する確立手段と、
前記第１の他の通信装置とは異なる第２の他の通信装置と切断したことに応じて、
前記通信路の優先度が第１の優先度である場合には、前記確立手段による前記通信路の確立の際に通知するウインドウサイズとして第１の値を前記第１の他の通信装置に通知し、
前記通信路の優先度が第１の優先度よりも低い第２の優先度である場合には、前記確立手段による前記通信路の確立の際に通知するウインドウサイズとして第１の値よりも小さく、０よりも大きい第２の値を前記第１の他の通信装置に通知する第１の通知手段と、
前記第１の通知手段により通知したウインドウサイズに応じて前記第１の他の通信装置から送信されるデータを、前記通信路を介して受信する第１の受信手段と、
を有することを特徴とする通信装置。
【請求項２】
前記第１の通知手段は、前記確立手段が前記通信路を確立する際に前記第１の他の通信装置に対して送信される確認応答に前記ウインドウサイズの情報を含めることで、前記第１の他の通信装置に通知することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記第１の他の通信装置から前記通信路を介して送信されるデータの送信単位であるセグメントの最大サイズを指定する情報を、前記第１の他の通信装置に通知する第２の通知手段を更に有することを特徴とする請求項１又は２に記載の通信装置。
【請求項４】
前記第１の他の通信装置からの接続要求を受信する第２受信手段を有し、
前記確立手段は、前記第２受信手段が受信した接続要求に応じて前記通信路を確立することを特徴とする請求項１から３のいずれか１項に記載の通信装置。
【請求項５】
前記通信路の優先度は、複数の通信路のうち、当該通信路が確立された順番に基づいて定まることを特徴とする請求項１から４の何れか１項に記載の通信装置。
【請求項６】
前記第１の受信手段が受信したデータをバッファに記憶する記憶手段を有し、
前記第１の値は、前記バッファの空き容量に応じた値であることを特徴とする請求項１から５の何れか１項に記載の通信装置。
【請求項７】
前記通信装置が確立している通信路の数が閾値よりも多い場合に、前記確立手段が前記通信路を確立する場合、当該通信路の優先度は第２の優先度となることを特徴とする請求項１から６の何れか１項に記載の通信装置。
【請求項８】
前記確立手段により確立される通信路は、ＴＣＰのコネクションであることを特徴とする請求項１から７の何れか１項に記載の通信装置。
【請求項９】
前記第１の通知手段は、ＴＣＰのスリーウェイハンドシェイクにおいて送信されるパケットによりウインドウサイズを通知することを特徴とする請求項１から８の何れか１項に記載の通信装置。
【請求項１０】
通信装置と第１の他の通信装置との間の通信路を確立する確立工程と、
前記第１の他の通信装置とは異なる第２の他の通信装置と切断したことに応じて、
前記通信路の優先度が第１の優先度である場合には、前記確立工程における前記通信路の確立の際に通知するウインドウサイズとして第１の値を前記第１の他の通信装置に通知し、
前記通信路の優先度が第１の優先度よりも低い第２の優先度である場合には、前記確立工程における前記通信路の確立の際に通知するウインドウサイズとして第１の値よりも小さく、０よりも大きい第２の値を前記第１の他の通信装置に通知する通知工程と、
前記通知工程において通知したウインドウサイズに応じて前記第１の他の通信装置から送信されるデータを、前記通信路を介して受信する受信工程と、
を有することを特徴とする通信方法。
【請求項１１】
コンピュータを請求項１から９の何れか１項に記載の通信装置として動作させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置間で送受信されるデータの量を制御する技術に関する。
【背景技術】
【０００２】
通信装置間での通信方式の一つに、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）／ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）がある。ＴＣＰ／ＩＰに従った通信を行う通信装置は、通信相手となる他の通信装置との間で通信路（コネクション）を確立し、通信路ごとに受信バッファを管理する。通信装置が受信したデータは受信バッファに一時的に記憶される。受信バッファには容量が定められており、通信装置のメモリ資源が各受信バッファに割り当てられる。通信装置は受信バッファの容量を超えてデータを受信することができない。
【０００３】
通信装置に対して受信バッファの容量を超えたデータが送信されないようにするために、ＴＣＰ／ＩＰにはウインドウ制御の機能がある。ウインドウ制御において、データの受信装置は、対象の通信路における送信を許可するデータ量を示すウインドウサイズとして受信バッファの容量をデータの送信装置に通知する。送信装置は、通知されたウインドウサイズ以下の量のデータを対象の通信路を用いて受信装置に送信する。このようにして、受信装置の受信バッファの容量を超えるデータが送信装置から送信されることを防ぐことができる。
【０００４】
また、特許文献１には、受信装置がコネクションを確立するとデータを受信し、受信時の状況に応じて、小さいウインドウサイズを送信装置に通知することが記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−１１４７２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載の通信方法では、優先度の低い通信路におけるデータ受信によって優先度の高い通信路におけるデータ受信が制限される場合が考えられる。例えば、通信装置が通信路を確立する際に他の通信装置に対して送信を許可したデータ量の合計が、メモリ資源を超える場合を考える。この場合に、優先度の低いコネクションにおいて送信を許可するデータ量を変更する前に受信したデータがメモリ資源を占有してしまうと、優先度の高いコネクションにおいてデータを受信するためのメモリ資源が十分に確保できなくなる状況が発生する虞がある。
【０００７】
本発明は上記課題に鑑みてなされたものであり、通信路の優先度に応じた通信データ量で他の通信装置との通信が行われるようにするための技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記の課題を解決するため、本発明に係る通信装置は、前記通信装置と第１の他の通信装置との間の通信路を確立する確立手段と、前記第１の他の通信装置とは異なる第２の他の通信装置と切断したことに応じて、前記通信路の優先度が第１の優先度である場合には、前記確立手段による前記通信路の確立の際に通知するウインドウサイズとして第１の値を前記第１の他の通信装置に通知し、前記通信路の優先度が第１の優先度よりも低い第２の優先度である場合には、前記確立手段による前記通信路の確立の際に通知するウインドウサイズとして第１の値よりも小さく、０よりも大きい第２の値を前記第１の他の通信装置に通知する第１の通知手段と、前記第１の通知手段により通知したウインドウサイズに応じて前記第１の他の通信装置から送信されるデータを、前記通信路を介して受信する第１の受信手段と、を有する。
【発明の効果】
【０００９】
本発明によれば、通信路の優先度に応じた通信データ量で他の通信装置との通信ができるようになる。
【図面の簡単な説明】
【００１０】
【図１】実施形態に係る通信システム３０の構成を説明するための図である。
【図２】通信装置１０のハードウェア構成を示すブロック図である。
【図３】実施形態に係る通信装置１０の機能構成を示すブロック図である。
【図４】通信装置１０の動作を説明するためのフローチャートである。
【図５】実施形態に係るコネクション管理部１０６が用いる管理テーブルの例を示す図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態について、図面を参照して説明する。なお、以下の実施形態で説明する特徴の組み合わせの全てが本発明に必須のものとは限らない。
【００１２】
［システム構成］
図１は、本実施形態に係る通信システム３０の構成例を示す図である。本実施形態の通信システム３０は、通信装置１０と、通信装置１０に接続される通信装置２０−１、通信装置２０−２、・・・、通信装置２０−ｎとを備える。本実施形態において、特別な説明がない場合は、通信装置２０−１から通信装置２０−ｎまでのｎ台の通信装置を区別せず通信装置２０と記載する。通信装置１０と通信装置２０（他の通信装置）は有線及び／又は無線で接続され、相互に通信を行って静止画や動画等のコンテンツデータを送受信する。なお、本実施形態では通信装置１０に複数の通信装置２０が接続されている場合を中心に説明するが、通信装置１０に接続される通信装置２０は１台であってもよい。また、本実施形態では通信装置１０と通信装置２０とがＴＣＰ／ＩＰに基づいて通信を行う場合を中心に説明するが、通信装置１０と通信装置２０は他のプロトコルに基づく通信を行ってもよい。
【００１３】
通信装置１０及び通信装置２０の具体例としては、デジタルカメラ、デジタルビデオカメラ、ネットワークカメラ、プリンタ、デジタル複合機、デジタルテレビ、プロジェクタ、携帯電話、スマートフォン、ＰＣ、及びサーバ装置などがある。例えば、通信装置１０がプリンタであり通信装置２０がＰＣである場合に、ユーザはＰＣを操作してプリンタでの画像の印刷を指示する。指示を受けたＰＣは画像をプリンタに送信し、プリンタは受信した画像を用紙に印刷する。
【００１４】
なお、本実施形態では通信装置１０と通信装置２０との通信がネットワークスイッチやルータ等の中継装置を介する場合の例を中心に説明するが、これに限らない。例えば、通信装置１０と通信装置２０は、Ｅｔｈｅｒｎｅｔ（登録商標）などの有線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）若しくはＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ）８０２．１１シリーズに則った無線ＬＡＮにより直接接続されてもよい。また、通信装置１０と通信装置２０とが中継装置を介して接続される場合、有線ＬＡＮと無線ＬＡＮの組み合わせにより接続されてもよい。また、同一ＬＡＮ上で接続されるものに限らず、例えばＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、及び電話用の公衆回線などを経由して接続されてもよい。また、上記のＬＡＮに代えて、例えばＢｌｕｅｔｏｏｔｈ（登録商標）、ＺｉｇＢｅｅ（登録商標）、ＮＦＣ（Ｎｅａｒ  Ｆｉｅｌｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ）、及びＲＦＩＤ（Ｒａｄｉｏ  Ｆｒｅｑｕｅｎｃｙ  Ｉｄｅｎｔｉｆｉｅｒ）などの無線通信機能を利用してもよい。
【００１５】
［ハードウェア構成］
図２は、通信装置１０のハードウェア構成を示すブロック図である。なお、通信装置２０も通信装置１０と同様のハードウェア構成である。通信装置１０は、ＣＰＵ１１１、ＲＯＭ１１２、ＲＡＭ１１３、補助記憶装置１１４、表示部１１５、操作部１１６、通信部１１７、及びバス１１８を備える。
【００１６】
ＣＰＵ１１１は、ＲＯＭ１１２やＲＡＭ１１３に格納されているコンピュータプログラムやデータを用いて通信装置１０全体の制御を行う。ＲＯＭ１１２は、変更を必要としないプログラムやパラメータを格納する。ＲＡＭ１１３は、補助記憶装置１１４から供給されるプログラムやデータ、及び通信部１１７を介して外部から取得されたデータなどを一時的に記憶する。補助記憶装置１１４は、例えばハードディスクドライブ装置等で構成され、コンテンツを構成するデータ（以下コンテンツデータ）などを記憶する。
【００１７】
表示部１１５は、例えば液晶ディスプレイ等で構成され、ユーザが通信装置１０を操作するためのＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）や、通信装置２０から受信したコンテンツなどを表示する。操作部１１６は、例えばキーボードやマウス等で構成され、ユーザによる操作を受けて各種の指示をＣＰＵ１１１に入力する。通信部１１７は、通信装置２０などの外部の装置と通信を行う。例えば、通信装置１０が外部の装置と有線で接続される場合には、ＬＡＮケーブル等が通信部１１７に接続される。なお、通信装置１０が外部の装置と無線通信する機能を有する場合、通信部１１７はアンテナを更に備える。バス１１８は、通信装置１０の各部を繋いで情報を伝達する。
【００１８】
なお、本実施形態では表示部１１５と操作部１１６は通信装置１０の内部に存在するが、表示部１１５及び操作部１１６の少なくとも一方が通信装置１０の外部に別の装置として存在していてもよい。この場合、ＣＰＵ１１１が、表示部１１５を制御する表示制御部、及び操作部１１６を制御する操作制御部として動作する。
【００１９】
［機能構成］
図３は、本実施の形態に係る通信装置１０の機能構成を示すブロック図である。なお、通信装置２０も通信装置１０と同様の機能構成である。通信装置１０は、アプリケーション制御部１０１、データ通信部１０２、ネットワークバッファ管理部１０３、受信バッファ管理部１０４、送受信部１０５、コネクション管理部１０６、及び通信制御部１０７を備える。各構成要素は、ＣＰＵ１１１がＲＯＭ１１２に格納されたプログラムをＲＡＭ１１３に展開して後述のフローチャートに従った処理を実行することで実現される。また例えば、ＣＰＵ１１１を用いたソフトウェア処理の代替としてハードウェアによる処理を行う場合には、ここで説明する各構成要素に対応させた演算部や回路を構成すればよい。
アプリケーション制御部１０１は、通信装置１０のアプリケーション層における通信を制御する。具体的には、アプリケーション制御部１０１は、ユーザによる入力に基づく情報をデータ通信部１０２に受け渡す。また、アプリケーション制御部１０１は、データ通信部１０２から受け渡された情報に基づくコンテンツをユーザに対して出力する。データ通信部１０２は、プロトコルスタックに従って通信するために、上位のアプリケーション層と下位のデータリンク層及び物理層との間でのデータの中継や変換を行う。また、データ通信部１０２は、ＴＣＰコネクションを確立したり、ＴＣＰ／ＩＰが備えるウインドウ制御などの機能を実現したりする。なお、データ通信部１０２は、単一の通信装置２０との間でコネクションを確立してもよいし、複数の通信装置２０それぞれとの間でコネクションを確立してもよい。また、データ通信部１０２は、単一の通信装置２０との間で複数のコネクションを確立してもよい。ＴＣＰ／ＩＰのウインドウ制御においては、データ通信部１０２が、送信を許可するデータ量を示すウインドウサイズを、通信装置２０に通知する。通信装置２０は、通知されたウインドウサイズ以下の量のデータを通信装置１０に送信する。
【００２０】
ネットワークバッファ管理部１０３は、通信装置１０が送受信するデータを一時的に記憶する記憶領域としてのネットワークバッファを管理する。ネットワークバッファには、例えばＲＡＭ１１３の一部が使用される。受信バッファ管理部１０４は、データ通信部１０２が受信したデータをソケット毎（コネクション毎）に一時的に記憶するための受信バッファを管理する。データ通信部１０２が通信装置２０と通信を行うための論理的な通信路であるコネクションを確立すると、受信バッファ管理部１０４は、そのコネクションに対応する受信バッファとして、ネットワークバッファの少なくとも一部を割り当てる。受信バッファのサイズは例えば６４ｋｂｙｔｅ等の予め設定された値であってもよいし、コネクション毎に異なっていてもよい。通信装置１０は、受信バッファ管理部１０４が割り当てた受信バッファの容量を超えてデータを受信することができない。
【００２１】
上述したＴＣＰ／ＩＰのウインドウ制御において、通信装置１０は、ウインドウサイズに受信バッファの容量を設定して通信装置２０に通知する。これにより、通信装置１０の受信バッファの容量を超えるデータが通信装置２０から送信されることを防ぐことができる。
【００２２】
送受信部１０５は、データリンク層及び物理層における通信を制御し、通信装置２０との間でＩＰパケットの送受信を行う。コネクション管理部１０６は、データ通信部１０２が通信装置２０との間で確立したコネクションを管理する。通信制御部１０７は、各コネクションにおいて通信装置２０からの送信が許可されるデータ量を制御する情報（制御情報）を決定する。決定された制御情報はデータ通信部１０２から通信装置２０に通知される。例えば通信制御部１０７は、データ通信部が通知するウインドウサイズを、受信バッファの容量よりも小さい値に決定する。この決定の方法については後述する。
【００２３】
［動作フロー］
まず、ＴＣＰ／ＩＰプロトコルに基づく通信における基本的な動作を説明する。ＴＣＰ／ＩＰのプロトコル処理を行う通信装置１０及び通信装置２０には、通信データのパケット化や再送処理のために、ネットワークバッファが用意されている。ネットワークバッファは複数のコネクションにおいて共用され、また送信処理と受信処理でも共用される。ＴＣＰ／ＩＰに基づく送信処理を行う通信装置２０は、ソケットＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）の送信関数  ｓｅｎｄによって指定したユーザデータを通信装置２０のネットワークバッファにコピーし、ＭＴＵ（ｍａｘｉｍｕｍ  ｔｒａｎｓｍｉｓｓｉｏｎ  ｕｎｉｔ、最大伝送単位）に分割する。そして、分割データと擬似ヘッダのチェックサムを計算し、ＴＣＰヘッダとＩＰヘッダが追加されたＴＣＰ／ＩＰパケットを生成する。伝送経路がＥｔｈｅｒｎｅｔ（登録商標）の場合、さらに、Ｅｔｈｅｒｎｅｔ（登録商標）ヘッダが付加されたＥｔｈｅｒｎｅｔ（登録商標）フレームを生成して通信装置１０に送信する。
【００２４】
ＴＣＰ／ＩＰに基づく受信処理を行う通信装置１０は、通信装置２０からの接続要求を待ちうける。通信装置１０はｂａｃｋｌｏｇというキューを持ち、所定の数までの複数の接続要求をキュー内に保持することができる。通信装置１０はｂａｃｋｌｏｇキューに保持された接続要求に応じて通信装置２０との間でスリーウェイハンドシェイクを行ってコネクションを確立する。スリーウェイハンドシェイクを行う際に通信装置１０から送信されるパケットには、ウインドウサイズが設定されている。通信装置２０は、確立されたコネクションにおいて、通知されたウインドウサイズ以下のデータ量のコンテンツデータを送信することができる。通信装置１０は、ソケットＡＰＩのａｃｃｅｐｔによりｂａｃｋｌｏｇキューから接続要求を取り出し、その接続要求に対応するコネクションにおけるデータの受信処理を開始する。なお、ソケットＡＰＩのａｃｃｅｐｔは、複数の接続要求に対して行うこともできる。通信装置２０から送信されたコンテンツデータは、通信装置１０のネットワークバッファの一部が割り当てられた受信バッファに記憶され、ソケットＡＰＩの受信関数ｒｅｃｖによって指定された記憶領域へ移動される。データを受信した通信装置１０は、そのデータを受信できたことを示すＡＣＫパケットをデータ送信元の通信装置２０に送信する。ＡＣＫにはウインドウサイズが設定されており、ＡＣＫを受信した通信装置２０はウインドウサイズ以下のデータ量のデータを新たに送信することができる。
【００２５】
次に、図４を用いて、複数の通信装置２０から複数のコネクションを用いて送信されたデータを受信するために、通信装置１０が通信装置２０からの送信を許可するデータ量を制御する方法について説明する。図４の処理は、通信装置１０の送受信部１０５が通信装置２０からパケットを受信したタイミングで開始される。ただし、図４の処理の開始タイミングは上記タイミングに限定されない。図４の処理は、ＣＰＵ１１１がＲＯＭ１１２に格納されたプログラムをＲＡＭ１１３に展開して実行することで実現される。なお、図４に示す処理の少なくとも一部をハードウェアにより実現してもよい。
Ｓ４０１では、データ通信部１０２が、受信したパケットが接続要求であるか否かを判定する。受信したパケットが接続要求である場合、Ｓ４０２に進み、コネクション管理部１０６は接続要求をｂａｃｋｌｏｇキューに格納する。Ｓ４０３では、通信制御部１０７が、Ｓ４０２において格納された接続要求に対応する受信処理を開始するか否かを判定する。判定の方法については後述する。
【００２６】
Ｓ４０３において受信処理を開始する判定が行われた場合、Ｓ４０４に進み、データ通信部１０２はソケットＡＰＩのａｃｃｅｐｔによって受信処理を開始し、そのソケットに対応するコネクションの受信バッファを設定する。データ通信部１０２は、ネットワークバッファ管理部１０３が管理するネットワークバッファの一部を確保して受信バッファに割り当て、受信バッファ管理部１０４により管理する。Ｓ４０５では、通信制御部１０７が、Ｓ４０４において設定された受信バッファのサイズをウインドウサイズに設定したＳＹＮ＿ＡＣＫ（確認応答）パケットを生成する。ウインドウサイズは、通信装置１０がコネクションを使用した通信装置２０からの送信を許可するデータ量を示す情報であり、通信装置２０から送信されるデータの量を制御するために使用される。
【００２７】
Ｓ４０６では、データ通信部１０２が、Ｓ４０５において生成されたＳＹＮ＿ＡＣＫパケットを接続要求の送信元である通信装置２０に送信することで、ウインドウサイズを通信装置２０に通知する。ＳＹＮ＿ＡＣＫパケットは、通信装置１０が通信路（コネクション）を確立する際のスリーウェイハンドシェイクにおいて通信装置２０に対して送信される情報である。接続要求に応じて送信されるこのＳＹＮ＿ＡＣＫパケットに基づいて、通信装置１０と通信装置２０との間で通信を行うためのコネクションが確立される。Ｓ４０７では、コネクション管理部１０６が、ａｃｃｅｐｔ処理した接続要求をｂａｃｋｌｏｇキューから削除する。
【００２８】
Ｓ４０３において受信処理を開始しない判定が行われた場合、Ｓ４０８に進み、通信制御部１０７はウインドウサイズに０を設定したＳＹＮ＿ＡＣＫパケットを生成する。Ｓ４０９では、データ通信部１０２が、Ｓ４０８において生成されたＳＹＮ＿ＡＣＫパケットを送信する。ウインドウサイズが０に設定されたパケットを受信した通信装置２０は通信装置１０に対するデータの送信が許可されない。即ち、Ｓ４０９においてデータ通信部１０２は、通信装置２０からのデータの送信を抑制するための通知を行う。このＳＹＮ＿ＡＣＫパケットの送信に基づいて、通信装置１０と通信装置２０との間で通信を行うためのコネクションが確立される。
【００２９】
次に、Ｓ４０１において受信されたパケットが接続要求でないと判定された場合、Ｓ４１０に進み、データ通信部１０２は受信されたパケットがゼロウインドウプローブであるか否かを判定する。ゼロウインドウプローブは、通信装置１０からウインドウサイズが０に設定されたパケットを受信した通信装置２０が、ウインドウサイズの値が大きくなったかどうか確認するために通信装置１０に送信するパケットである。受信されたパケットがゼロウインドウプローブであった場合、Ｓ４０３に進み、そのパケットの送信に使用されたコネクションにおける受信処理を開始するか否かを判定する。Ｓ４０３以降のフローは、接続要求が受信された場合の動作についての上述の説明と同様である。ただし、Ｓ４０６及びＳ４０９において送信される確認応答パケットは、コネクションを確立するためのＳＹＮ＿ＡＣＫパケットではなく、ゼロウインドウプローブを受信したことを示すＡＣＫパケットとなる。
【００３０】
また、Ｓ４１０において受信されたパケットがゼロウインドウプローブでないと判定された場合、Ｓ４１１に進み、データ通信部１０２はパケットの受信処理を行う。このとき受信されたパケットは例えばコンテンツデータであり、以前に通知されたウインドウサイズに応じて通信装置２０から送信されるデータである。データ通信部１０２はコネクションを使用してそのデータを受信し、受信バッファに一時記憶する。受信バッファに記憶されたデータは、データ通信部１０２により処理されてアプリケーション制御部１０１に受け渡されると、受信バッファから取り除かれる。
【００３１】
Ｓ４１２では、コネクション管理部１０６が、パケットの受信に使用されたコネクションを切断するか否かを判定する。コネクションを切断しない場合、図４の処理を終了する。一方、例えばＳ４１１において受信処理されたパケットがコネクションにおける最終パケットである場合などであって、コネクションを切断する判定が行われた場合には、Ｓ４１３に進む。Ｓ４１３では、コネクション管理部１０６が、ｂａｃｋｌｏｇキュー内に接続要求が存在するか否かを判定する。接続要求が存在する場合、Ｓ４０３に進む。Ｓ４０３以降のフローは上述の説明と同様である。ただし、Ｓ４０６及びＳ４０９において送信される確認応答パケットは、対象のコネクションにおいて最後に受信されたパケットに対する確認応答パケットとなる。Ｓ４１３において接続要求がキュー内に存在しない場合は、図４の処理を終了する。
【００３２】
以上、図４で説明したように、通信装置１０は、通信装置２０との間で確立される各コネクションにおいて受信処理を開始するか否かを判定する。そして通信装置１０は、受信処理を開始しないコネクションに対してはウインドウサイズを０に設定したパケットを送信し、受信処理を開始するコネクションに対してはウインドウサイズに受信バッファのサイズを設定したパケットを送信する。なお、図４に示した処理において通信装置１０はパケットを受信する度に受信処理を開始するか否かを判定するが、判定のタイミングはこれに限らない。例えば通信装置１０は、Ｓ４０７において接続要求をキューから削除した場合に、Ｓ４０３の判定を行ってもよい。
【００３３】
図５は、通信装置１０のコネクション管理部１０６がコネクションの管理に用いる管理テーブルの例である。コネクション管理部１０６は、図４のＳ４０２において接続要求がキューに格納されると、格納されたキューを管理テーブルに登録する。そしてコネクション管理部１０６は、Ｓ４０３における受信処理の開始やＳ４０６及びＳ４０９における確認応答パケットの送信に応じて、管理テーブルを更新する。図５の例において、ｂａｃｋｌｏｇキューに格納可能な接続要求の数は１０である。コネクションＩＤは接続要求に応じて確立されるコネクションに割り当てられるＩＤを示す。処理状態は、各コネクションが受信開始状態であるか受信開始前の状態であるかを示す。受信開始状態は、ａｃｃｅｐｔ処理が行われ、０より大きい受信バッファのサイズがウインドウサイズとして通知された状態である。受信開始前の状態は、ウインドウサイズとして０が通知された状態である。本実施形態において、コネクション管理部１０６は、早く受信した接続要求から順に受信開始状態に遷移させる。ただし、コネクション管理部１０６が接続要求を受信開始状態に遷移される順序はこれに限らず、コネクションの優先度などに基づいて遷移させてもよい。
【００３４】
次に、Ｓ４０３における判定の方法および通知されるウインドウサイズの決定方法について説明する。本実施形態において、通信制御部１０７は、データ通信部１０２がコネクションを確立する際に通信装置２０へ通知されるウインドウサイズの値を、コネクションの優先度に基づいて決定する。コンテンツデータの受信を開始するより前に通知されるウインドウサイズとは、例えばスリーウェイハンドシェイクにおいて送信されるＳＹＮ＿ＡＣＫパケットに設定されたウインドウサイズである。
【００３５】
コネクションの優先度の決定方法としては、例えば、データ通信部１０２が複数のコネクションに対応する複数の接続要求を受信した順序に基づいて決定する方法がある。通信制御部１０７は、コネクション管理部１０６が管理する管理テーブルを参照し、Ｓ４０３における判定対象のパケットに対応するコネクションの接続要求がｂａｃｋｌｏｇキューの何番目に格納されているか確認する。本実施形態では、接続要求は受信された順序でｂａｃｋｌｏｇキューに格納され、キューから接続要求が削除されると、それ以降に格納された接続要求の順序が繰り上がる。対象のコネクションの接続要求がキューのＮ番目以内に格納されている場合、コネクションの優先度は高く設定され、Ｎ番目よりも後ろに格納されている場合、コネクションの優先度は低く設定される。本実施形態において、Ｎの値は通信装置１０のネットワークバッファのサイズ等に基づいて予め設定されている。ただしこれに限らず、通信装置１０に設定されたｂａｃｋｌｏｇキューの最大長や、対象のコネクションの受信バッファのサイズ、使用可能なネットワークバッファの残サイズ等に基づいて、Ｎの値が適宜変更されてもよい。
【００３６】
優先度が高く設定されたコネクションにおいて、通信装置１０は受信処理を開始する。即ち、通信装置１０は、ウインドウサイズに受信バッファのサイズが設定されたＳＹＮ＿ＡＣＫパケットを優先度の高いコネクションを使用して送信する。一方、通信装置１０は、ウインドウサイズが所定値以下（例えば０）に設定されたＳＹＮ＿ＡＣＫパケットを優先度の低いコネクションを使用して送信する。これにより、優先度の低いコネクションを使用して通信装置２０から送信されるデータ量を抑制することができ、優先度の低いコネクションの受信バッファのためにネットワークバッファが枯渇してしまう可能性を低減することができる。
【００３７】
なお、通信制御部１０７は、コネクションの優先度を、例えば接続要求の送信元の識別情報など、接続要求を受信した順序以外の情報に基づいて決定してもよい。また、通信制御部１０７は、各コネクションの受信バッファの空き容量とコネクションの優先度とに基づいて、ウインドウサイズの値を決定してもよい。また、通信制御部１０７は、コネクション管理部１０６を参照し、通信装置１０により確立されているコネクションの数や受信処理が行われているコネクションの数などに基づいて、ウインドウサイズの値を決定してもよい。確立されているコネクションは、ＳＹＮ＿ＡＣＫの送受信が行われたコネクションであり、受信処理が行われているコネクションは、受信バッファが設定されてコンテンツデータの送受信が開始されたコネクションである。
【００３８】
例えば、通信装置１０は、対象のコネクションに対応する接続要求よりも前に受信された接続要求に応じて確立されているコネクションの数が閾値よりも多い場合に、通信装置２０からの対象のコネクションを使用したデータの送信を抑制させる。この抑制のための通信装置１０から通信装置２０への通知は、通信装置１０が対象のコネクションを使用してコンテンツデータの受信を開始する前に行われる。これにより、通信装置２０から対象のコネクションにおいて最初に送信されるコンテンツデータがネットワークバッファを逼迫させてしまうのを防ぐことができる。その結果、通信装置１０が受信バッファをネットワークバッファから確保できずに通信装置２０から送信されるデータを受信できなくなる事態を減らすことができる。
【００３９】
以上説明したように、本実施形態に係る通信装置１０は、通信装置２０との間の通信路を確立し、通信装置２０から該通信路を使用して送信されるデータの量を制御するための情報を通信装置２０に通知する。そして通信装置１０は、通知に応じて通信装置２０から送信されるデータを、該通信路を使用して受信する。ここで通信装置１０は、該通信路を使用しての受信を開始するより前に通知する、通信装置２０から該通信路を使用して送信されるデータの量を制御するための情報を、該通信路の優先度に基づいて決定する。これにより、通信路の優先度に応じた通信データ量で通信装置２０との通信が行われ、優先度の低い通信路におけるデータ受信によって優先度の高い通信路におけるデータ受信が失敗する可能性を低減することができる。
【００４０】
なお、本実施形態では、通信装置１０がウインドウサイズを０に設定して通知することによって、通信装置２０から送信されるデータ量を制御する場合を中心に説明したが、これに限らない。例えば、通信装置１０は、ＨＴＴＰ等のプロトコルにおいて規定された所定のサイズ以下のパケット（例えばＧＥＴリクエスト等）だけが送信装置から送信されるように、ウインドウサイズを設定してもよい。また、通信装置１０は、通信装置２０から送信されるデータの量を制御するための制御情報に、ウインドウサイズ以外の情報を利用してもよい。例えば通信装置１０は、通信装置２０から送信されるデータの送信単位であるセグメントの許可される最大サイズを指定したパケットを送信することで、通信装置２０から送信されるデータ量を抑制してもよい。また、本実施形態では通信装置１０と通信装置２０とがＴＣＰ／ＩＰに基づいて通信を行う場合を中心に説明したが、使用するプロトコルはこれに限らない。例えば、通信装置１０と通信装置２０はＵＤＰに基づいた通信を行い、ＨＴＴＰなどＴＣＰよりも上位の層のプロトコルにおいて作成されたメッセージによって、本実施形態で説明した送信データ量の制御などを実現してもよい。
【００４１】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ等）によっても実現可能である。また、そのプログラムをコンピュータにより読み取り可能な記録媒体に記録して提供してもよい。
【符号の説明】
【００４２】
１０  通信装置
１０２  データ通信部
１０６  コネクション管理部
１０７  通信制御部
【図１】
0006758858.tif 000002
【図２】
0006758858.tif 000003
【図３】
0006758858.tif 000004
【図４】
0006758858.tif 000005
【図５】
0006758858.tif 000006