(57)【要約】【課題】中継装置を介して行われるデータ通信において、中継装置における輻輳の発生を回避しつつ、その通信効率を向上させること。【解決手段】中継装置４０を介して複数のデータブロックを受信装置１０へ送信する送信装置２０は、連続して送信するデータブロックに残りのデータブロックを連続して中継することを中継装置４０へ要求する旨の要求コードを分割して書き込んで送信する。中継装置４０は、送信装置２０から送信されてくるデータブロックに分割されて書き込まれている要求コードで表される要求を許容可能である場合には、その旨を送信装置２０へ通知する。一方、送信装置２０は、このような通知を受信すると、上記残りのデータブロックを連続して中継装置４０へ送信する。【選択図】        図１
2005064597.tif 000002
【特許請求の範囲】
【請求項１】
中継装置を介して受信装置へ送信するべき複数のデータブロックの先頭から、そのデータブロックに付与したシーケンス番号の順に予め決められた数のデータブロックを選択する選択手段と、
前記複数のデータブロックのうち、前記選択手段によって選択されたデータブロックを除いた残りのデータブロックのデータ量を算出する算出手段と、
前記算出手段によって算出されたデータ量を表す要求コードを複数部分に分割し、前記選択手段によって選択されたデータブロックの各々の所定領域に対して、前記分割された要求コードの各々を書き込んで前記中継装置へ送信する第１の送信手段と、
前記第１の送信手段によって送信されたデータブロックに分割されて書き込まれている要求コードで表されるデータ量のデータブロックを連続して送信することを許容する旨の通知を前記中継装置から受信した場合に、前記残りのデータブロックを連続して前記中継装置へ送信する第２の送信手段とを有する送信装置。
【請求項２】
前記第１の送信手段は、前記選択手段によって選択されたデータブロックの各々の所定領域へ前記分割された要求コードを書き込んで送信する際に、該データブロックに付与されたシーケンス番号にしたがって前記分割された要求コードをその先頭部分から順番に書き込んで前記中継装置へ送信することを特徴とする請求項１に記載の送信装置。
【請求項３】
前記要求コードは、前記残りのデータブロックのデータ量を表すとともに、前記残りのデータブロックに内包されているデータの種別を表していることを特徴とする請求項１に記載の送信装置。
【請求項４】
前記要求コードは、前記残りのデータブロックのデータ量に応じて異なるデータ長を有する
ことを特徴とする請求項１に記載の送信装置。
【請求項５】
前記要求コードは、前記残りのデータブロックのデータ量が少ないほど短いデータ長を有することを特徴とする請求項４に記載の送信装置。
【請求項６】
データブロックに付与したシーケンス番号にしたがって当該データブロックを決められた数づつ連続して送信する送信装置から連続して送信されてくるデータブロックを受信する受信手段と、
前記受信手段によって受信されたデータブロックに、該送信装置が送信するべき残りのデータブロックのデータ量を表す要求コードが分割されて書き込まれている場合には、該要求コードで表されるデータ量のデータブロックを連続して中継することが可能であるか否かを判定する判定手段と、
前記要求コードで表されるデータ量のデータブロックを連続して中継することが可能であると前記判定手段によって判定された場合に、その旨を示す通知を前記送信装置へ送信する送信手段と、
前記受信手段によって受信されたデータブロックをその宛先の受信装置へ中継する中継手段とを有する中継装置。
【請求項７】
コンピュータ装置に、
中継装置を介して受信装置へ送信するべき複数のデータブロックの先頭から、そのデータブロックに付与したシーケンス番号の順に予め決められた数のデータブロックを選択する選択機能と、
前記複数のデータブロックのうち、前記選択機能によって選択されたデータブロックを除いた残りのデータブロックのデータ量を算出する算出機能と、
前記算出機能によって算出されたデータ量を表す要求コードを複数部分に分割し、前記選択機能によって選択されたデータブロックの各々の所定領域に対して、前記分割された要求コードの各々を書き込んで前記中継装置へ送信する第１の送信機能と、
前記第１の送信機能によって送信されたデータブロックに分割されて書き込まれている要求コードで表されるデータ量のデータブロックを連続して送信することを許容する旨の通知を前記中継装置から受信した場合に、前記残りのデータブロックを連続して前記中継装置へ送信する第２の送信機能とを実現させるプログラム。
【請求項８】
コンピュータ装置に、
データブロックに付与したシーケンス番号にしたがって当該データブロックを決められた数づつ連続して送信する送信装置から連続して送信されてくるデータブロックを受信する受信機能と、
前記受信機能によって受信されたデータブロックに、該送信装置が送信するべき残りのデータブロックのデータ量を表す要求コードが分割されて書き込まれている場合には、該要求コードで表されるデータ量のデータブロックを連続して中継することが可能であるか否かを判定する判定機能と、
前記要求コードで表されるデータ量のデータブロックを連続して中継することが可能であると前記判定機能によって判定された場合に、その旨を示す通知を前記送信装置へ送信する送信機能と、
前記受信機能によって受信されたデータブロックをその宛先の受信装置へ中継する中継機能とを実現させるプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
データ通信を効率良く行うための技術に関する。
【０００２】
【従来の技術】
ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）は、ＯＳＩ（Ｏｐｅｎ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ）参照モデルのトランスポート層に相当する通信プロトコルであり、信頼性の高いデータ通信を実現することができる。具体的には、ＴＣＰにしたがって行われる通信では、送信元から送信されるデータは、所定のデータサイズを有する部分データに分割され、部分データ毎に固有のヘッダを付与されたデータブロック（以下、「セグメント」）として送信される。このヘッダには、各セグメントに内包されている部分データを一意に特定するシーケンス番号が書き込まれており、このシーケンス番号は基本的に送信装置から送信されるセグメントの順番に一致している。そして、このセグメントを受信する受信装置は、そのセグメントに内包されているシーケンス番号に基づいて、セグメントの欠落の有無を検出し、欠落したセグメントの再送信をその送信元へ要求することができる。また、ＴＣＰにしたがってセグメントを送信する送信装置は、連続して複数のセグメントを送信することができ、このように連続して送信するセグメントの数（以下、「輻輳ウィンドウサイズ」）をスロースタートアルゴリズムと呼ばれる所定のアルゴリズムにしたがって順次増加させるようにしている。これは、最初から大量のセグメントを連続して送信してしまうと、輻輳を引き起こす虞があるからである。
【０００３】
しかしながら、上述したスロースタートアルゴリズムでは、輻輳ウィンドウサイズを順次増加させて行くため、通信回線の帯域に充分な余裕がある場合であっても、その帯域を有効に利用するまで時間がかかり、効率的なデータ通信を行えないといった問題点がある。このような問題点を解決するための技術としては、特許文献１に開示された技術が挙げられる。
【０００４】
特許文献１に開示されている技術では、以下に述べるようにして、効率良くデータ通信を行うことを可能にしている。すなわち、送信装置に輻輳ウィンドウサイズの初期値と所定の閾値とを記憶させておく。そして、データ送信を開始する場合には、輻輳ウィンドウサイズに上記初期値をセットし、その輻輳ウィンドウサイズで表される数のセグメントを送信装置に送信させる。以降、この送信装置は、送信したセグメントに対する確認応答を受信した場合に、輻輳ウィンドウサイズが既定サイズよりも小さかったならば、輻輳ウィンドウサイズをその既定サイズまで増加させてセグメントを送信する。これにより、信頼性を保証されたデータリンク層を利用している通信において効率良くデータ通信を行うことが可能になる。
【０００５】
【特許文献１】
特開２００１−２９８４５８号公報
【０００６】
【発明が解決しようとする課題】
ところで、インターネットなどにおいて行われている通信では、送信装置と受信装置とが同一の通信網に接続され、直接通信することは稀である。一般的には、図７に示すように、受信装置２１０を接続している通信網２３０Ａと送信装置２２０を接続している通信網２３０Ｂとがルータなどの中継装置２４０によって接続されており、送信装置２２０と受信装置２１０とは、この中継装置２４０を介して通信を行うようになっている。このように、中継装置２４０を介して通信が行われる状況下で、特許文献１に開示された技術を適用してしまうと、中継装置２４０の処理能力を超えた数のセグメントが中継装置に送信されてしまい、輻輳が発生する虞がある。
【０００７】
本発明は、上記課題に鑑みて為されたものであり、中継装置における輻輳の発生を回避しつつ、データ通信を効率的に行う技術を提供することを目的としている。
【０００８】
【課題を解決するための手段】
本発明は、上記課題を解決するために、中継装置を介して受信装置へ送信するべき複数のデータブロックの先頭から、そのデータブロックに付与したシーケンス番号の順に予め決められた数のデータブロックを選択する選択手段と、前記複数のデータブロックのうち、前記選択手段によって選択されたデータブロックを除いた残りのデータブロックのデータ量を算出する算出手段と、前記算出手段によって算出されたデータ量を表す要求コードを複数部分に分割し、前記選択手段によって選択されたデータブロックの各々の所定領域に対して、前記分割された要求コードの各々を書き込んで前記中継装置へ送信する第１の送信手段と、前記第１の送信手段によって送信されたデータブロックに分割されて書き込まれている要求コードで表されるデータ量のデータブロックを連続して送信することを許容する旨の通知を前記中継装置から受信した場合に、前記残りのデータブロックを連続して前記中継装置へ送信する第２の送信手段とを有する送信装置を提供する。
【０００９】
このような送信装置によれば、受信装置へ送信するべきデータブロックのうち、上記残りのデータブロックを連続して送信することを要求する旨の要求コードが中継装置へ送信され、その要求を許可する旨の通知が中継装置から送信されてきた場合に、上記残りのデータブロックが連続して送信される。
【００１０】
また、本発明は、上記課題を解決するために、コンピュータ装置に、コンピュータ装置に、中継装置を介して受信装置へ送信するべき複数のデータブロックの先頭から、そのデータブロックに付与したシーケンス番号の順に予め決められた数のデータブロックを選択する選択機能と、前記複数のデータブロックのうち、前記選択機能によって選択されたデータブロックを除いた残りのデータブロックのデータ量を算出する算出機能と、前記算出機能によって算出されたデータ量を表す要求コードを複数部分に分割し、前記選択機能によって選択されたデータブロックの各々の所定領域に対して、前記分割された要求コードの各々を書き込んで前記中継装置へ送信する第１の送信機能と、前記第１の送信機能によって送信されたデータブロックに分割されて書き込まれている要求コードで表されるデータ量のデータブロックを連続して送信することを許容する旨の通知を前記中継装置から受信した場合に、前記残りのデータブロックを連続して前記中継装置へ送信する第２の送信機能とを実現させるプログラムと、コンピュータ装置読み取り可能な記録媒体であって、当該プログラムを記録した記録媒体と、を提供する。
【００１１】
このようなプログラムおよび記録媒体によれば、コンピュータ装置に、受信装置へ送信するべきデータブロックのうち、上記残りのデータブロックを連続して送信することを要求する旨の要求コードを中継装置へ送信させ、その要求を許可する旨の通知が中継装置から送信されてきた場合に、上記残りのデータブロックが連続して送信させる。
【００１２】
また、上記課題を解決するために、本発明は、データブロックに付与したシーケンス番号にしたがって当該データブロックを決められた数づつ連続して送信する送信装置から連続して送信されてくるデータブロックを受信する受信手段と、前記受信手段によって受信されたデータブロックに、該送信装置が送信するべき残りのデータブロックのデータ量を表す要求コードが分割されて書き込まれている場合には、該要求コードで表されるデータ量のデータブロックを連続して中継することが可能であるか否かを判定する判定手段と、前記要求コードで表されるデータ量のデータブロックを連続して中継することが可能であると前記判定手段によって判定された場合に、その旨を示す通知を前記送信装置へ送信する送信手段と、前記受信手段によって受信されたデータブロックをその宛先の受信装置へ中継する中継手段とを有する中継装置を提供する。
【００１３】
また、上記課題を解決するために、本発明は、コンピュータ装置に、データブロックに付与したシーケンス番号にしたがって当該データブロックを決められた数づつ連続して送信する送信装置から連続して送信されてくるデータブロックを受信する受信機能と、前記受信機能によって受信されたデータブロックに、該送信装置が送信するべき残りのデータブロックのデータ量を表す要求コードが分割されて書き込まれている場合には、該要求コードで表されるデータ量のデータブロックを連続して中継することが可能であるか否かを判定する判定機能と、前記要求コードで表されるデータ量のデータブロックを連続して中継することが可能であると前記判定機能によって判定された場合に、その旨を示す通知を前記送信装置へ送信する送信機能と、前記受信機能によって受信されたデータブロックをその宛先の受信装置へ中継する中継機能とを実現させるプログラムと、コンピュータ装置読み取り可能な記録媒体であって、当該プログラムを記録した記録媒体とを提供する。
【００１４】
このような、中継装置、プログラムおよび記録媒体によれば、上記送信装置から送信されたデータブロックに分割して書き込まれている要求コードで表されるデータ量のデータブロックを中継可能であると判定した場合に、その旨が前記送信装置へ通知される。
【００１５】
【発明の実施の形態】
以下、図面を参照しつつ本発明の実施形態について説明する。
【００１６】
［Ａ：構成］
（１：システム構成）
図１は、本発明の実施形態に係る通信システムの全体構成の一例を示す図である。受信装置１０は、無線通信機能を備えたコンピュータ装置であり、自装置を収容している無線アクセスポイント装置との間で、ＴＣＰにしたがった通信を無線で行うことができる。送信装置２０は、インターネットなどの通信網３０に接続されたコンピュータ装置であり、ＴＣＰにしたがってデータを送信する機能を備えている。
【００１７】
送信装置２０は、受信装置１０へデータを送信する際に複数のセグメントに分割し、基本的に、スロースタートアルゴリズムにしたがって送信する。具体的には、送信装置２０は、輻輳ウィンドウサイズを、２個、４個、８個と順次増加させてセグメントの送信を行う。加えて、送信装置２０は、連続して送信するセグメントに、以下に述べる要求コードを分割して書き込んで送信する。この要求コードは、受信装置１０へ送信するべきセグメントのうち、既に送信済みのセグメントと正に送信しようとしているセグメントとを除いたセグメント（以下、「残りのセグメント」）を連続して中継することを後述する中継装置４０へ要求することを表すデータである。そして、送信装置２０は、このようにして送信した要求コードで表される要求を許容する旨の通知を中継装置４０から受信すると、輻輳ウィンドウサイズを上記残りのセグメントのデータ量で書換え、上記残りのセグメントを連続して送信するようにしている。
【００１８】
より詳細に説明すると、送信装置２０は、図２に示す要求コードテーブルを格納しており、この要求コードテーブルの格納内容と、上記残りのセグメントのデータ量とに基づいて、中継装置４０へ送信するべき要求コードを特定する。そして、送信装置２０は、特定した要求コードを所定のデータサイズ（本実施形態では、１ビット）に分割し、受信装置１０へ送信するセグメントの所定領域へ書き込んで送信する。なお、本実施形態では、上記所定領域としてＣＥビットに該当する領域を用いる場合について説明する。ここで、ＣＥビットとは、ＥＣＮ（Ｅｘｐｌｉｃｉｔ  Ｃｏｎｇｅｓｉｔｉｏｎ  Ｎｏｔｉｆｉｃａｔｉｏｎ）にしたがって輻輳制御を行う場合に用いられるビットである。しかしながら、係る所定領域はＣＥビットに該当する領域に限定されるものではなく、例えば、予備領域であっても良い。予備領域とは、ＴＣＰの仕様において用途が特に定められていない領域であり、ユーザがその用途を自由に定義し使用することができる。このような予備領域やＣＥビットに書き込まれているデータを解釈することができない受信装置や中継装置は、それらの領域に書き込まれているデータを無視するので、上記要求コードを上記予備領域やＣＥビットに該当する領域に書き込んだとしても問題は発生しない。また、送信装置２０は、上記要求コードを所定のデータサイズに分割して上記所定領域へ書き込むため、上記要求コードのデータ長が上記所定領域の領域サイズよりも大きい場合であっても、上記要求コードを中継装置４０へ送信することができる。
【００１９】
図２は、要求コードテーブルの一例を示す図である。図２に例示されている要求コードテーブルには、“０１”、“１０”および“１１”の３種類の要求コードが格納されており、各要求コードには、その要求コードを送信することによって、中継装置４０へ通知するべき残りのセグメントのデータ量が対応付けられている。すなわち、図２に示す要求コードテーブルの格納内容は、以下に述べる３つのことを例示している。第１に、上記残りのセグメントのデータ量が１０Ｋバイト（１Ｋバイト＝１０２４バイト）未満である場合には、要求コード“０１”を送信するべきことである。第２に、上記残りのセグメントのデータ量が１０Ｋバイト以上１Ｍバイト未満（１Ｍ＝１０２４Ｋバイト）である場合には、要求コード“１０”を送信するべきことである。そして、第３に、上記残りのセグメントのデータ量が１Ｍバイト以上である場合には、要求コード“１１”を送信するべきことである。
【００２０】
中継装置４０は、通信網３０に接続された無線アクセスポイント装置であり、自装置の形成する無線エリアに在圏している受信装置１０と、上記送信装置２０との間の通信を中継する機能を備えている。より詳細に説明すると、中継装置４０は、受信装置１０との間に無線通信コネクションを確立するとともに、送信装置２０との間に通信コネクションを確立する。この中継装置４０は、所定の記憶容量を有するキューを備えており、上記通信コネクションを介して送信装置２０から送信されてくるセグメントをこのキューへ書き込み、このキューに書き込まれたセグメントを上記無線通信コネクションを介して受信装置１０へ順次送信する。また、中継装置４０は、受信装置１０から送信されてくる確認応答を上記無線通信コネクションを介して受信し、受信した確認応答を上記通信コネクションを介して送信装置２０へ送信する。このようにして、中継装置４０は、受信装置１０と送信装置２０との間のデータ通信を中継している。
【００２１】
加えて、中継装置４０は、送信装置２０から送信されてくるセグメントに分割して書き込まれている要求コードを取得し、その要求コードで表される要求を許容可能であるか否か判定し、その判定結果を送信装置２０へ通知する機能を備えている。より詳細に説明すると、中継装置４０も図２に示す要求コードテーブルを格納しており、この要求コードテーブルの格納内容と送信装置２０から送信されてきたセグメントに分割して書き込まれている要求コードとに基づいて、その要求コードが表している残りのセグメントのデータ量を特定する。そして、中継装置４０は、例えば、上述したキューの空き容量に基づいて、その要求コードで表されるデータ量のセグメントを連続して受信し中継可能であるか否かを判定し、その判定結果を送信装置２０へ通知する。
【００２２】
このように、図１に示す通信システムにおいては、上記残りのセグメントのデータ量を中継装置４０へ通知し、そのデータ量のセグメントを連続して中継可能であることを中継装置４０から通知された場合に、残りのセグメントを連続して送信装置２０に送信させている。これにより、中継装置４０での輻輳の発生を回避しつつ、効率的にデータ通信を行うことが可能になっている。
【００２３】
（２：送信装置２０の構成）
まず、送信装置２０の構成について図３を参照しつつ説明する。図３は送信装置２０の構成例を示す図であり、この図に示されているように、送信装置２０は、制御部１００と、通信インターフェイス（以下、「ＩＦ」）部１１０ａと、記憶部１２０と、これら各構成要素間のデータ授受を仲介するバス１３０と、を有している。
【００２４】
制御部１００は、例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）であり、記憶部１２０に格納されているソフトウェアを実行することにより、送信装置２０の各部を制御するものである。通信ＩＦ部１１０ａは、通信網３０に接続されており、通信網３０を介して送信されてくるデータを受信し、受信したデータを制御部１００へ引渡すとともに、制御部１００から引渡されたデータを通信網３０へ送出する機能を備えている。
【００２５】
記憶部１２０は、図３に示されるように、揮発性記憶部１２０ａと不揮発性記憶部１２０ｂとを含んでいる。揮発性記憶部１２０ａは、例えばＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であり、ソフトウェアを実行中の制御部１００によりワークエリアとして利用される。
【００２６】
不揮発性記憶部１２０ｂは、例えばハードディスクであり、受信装置１０からの要求に応じてその受信装置１０へ送信するデータと、前述した要求コードテーブル（図２参照）と、各種ソフトウェアとを格納している。不揮発性記憶部１２０ｂに格納されているソフトウェアの一例としては、オペレーティングシステム（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ：以下、「ＯＳ」）を制御部１００に実現させるためのＯＳソフトウェアや、上記データを受信装置１０へ送信する動作を制御部１００に実行させるための送信ソフトウェアなどが挙げられる。以下では、これらソフトウェアを実行することにより制御部１００に付与される機能について説明する。
【００２７】
送信装置２０の電源（図示省略）が投入されると、制御部１００は、まず、ＯＳソフトウェアを不揮発性記憶部１２０ｂから読み出し実行する。ＯＳソフトウェアにしたがって作動している制御部１００には、送信装置２０の各部を制御する機能、他のソフトウェアを不揮発性記憶部１２０ｂから読み出し実行する機能が付与される。そして、ＯＳソフトウェアの実行を完了し、ＯＳを実現している状態の制御部１００は、受信装置１０から上記データの送信を要求されると、上記送信ソフトウェアを不揮発性記憶部１２０ｂから読み出し実行する。
【００２８】
図４は、上記送信ソフトウェアにしたがって作動している制御部１００が実行するセグメント送信動作の流れを示すフローチャートである。図４に示されているように、上記送信ソフトウェアにしたがって作動している制御部１００には、以下に述べる５つの機能が付与される。
【００２９】
第１に、上記データを複数のセグメントに分割し、これら複数のセグメントのうち連続して送信するべきセグメントをスロースタートアルゴリズムにしたがって選択する選択機能である。つまり、制御部１００は、スロースタートアルゴリズムにしたがって、輻輳ウィンドウサイズを２、４、８と順次増加させて行くとともに、上記複数のセグメントのうちで、若いシーケンス番号を内包しているものから順に、その輻輳ウィンドウサイズで表される個数のセグメントを選択する。
【００３０】
第２に、上記複数のセグメントのうち、残りのセグメントのデータ量を算出する算出機能である。これら複数のセグメントの各々は、同一のデータ長を有しているため、そのデータ長に残りのセグメントの個数を乗算することにより、残りのセグメントのデータ量を算出することができる。
【００３１】
第３に、上記算出機能により算出したデータ量と要求コードテーブルの格納内容とに基づいて、中継装置４０へ送信するべき要求コードを特定する特定機能である。
【００３２】
第４に、上記特定機能により特定された要求コードを分割して上記選択機能により選択されたセグメントの所定領域へ書き込み、そのセグメントを通信ＩＦ部１１０ａを介して中継装置４０へ送信する第１の送信機能である。より詳細に説明すると、制御部１００は、上記要求コードを１ビット単位で分割し、若いセグメント番号を有しているセグメントほど上記要求コードの先頭に近い部分を書き込み送信する。
【００３３】
そして、第５に、上記要求コードで表される数のセグメントを連続して中継することを許容する旨の通知を中継装置４０から受信した場合に、上記残りのセグメントを連続して送信する第２の送信機能である。
【００３４】
以上に説明したように、送信装置２０のハードウェア構成は一般的なコンピュータ装置のハードウェア構成と同一であり、記憶部に格納されている各種ソフトウェアを制御部１００に実行させることにより、本発明に係る送信装置に特有な機能が付与される。
【００３５】
（３：中継装置４０の構成）
次いで、中継装置４０の構成について図５を参照しつつ説明する。中継装置４０の構成が、上述した送信装置２０の構成と異なっている点は、以下に述べる３つの点のみである。第１に、受信装置１０と無線通信するための無線通信ＩＦ部１１０ｂを有している点である。第２に、揮発性記憶部１２０ａが前述したキューとして用いられる点である。そして、第３に、上述した送信ソフトウェアに替えて本発明に係る中継装置に特徴的な機能を制御部１００に実現させるための中継ソフトウェアが不揮発性記憶部１２０ｂに格納されている点である。以下、不揮発性記憶部１２０ｂに格納されているソフトウェアを実行することにより、中継装置４０の制御部１００に付与される機能について説明する。
【００３６】
中継装置４０の電源（図示省略）が投入されると、制御部１００は、まず、ＯＳソフトウェアを不揮発性記憶部１２０ｂから読み出し実行する。ＯＳソフトウェアにしたがって作動している制御部１００には、中継装置４０の各部を制御する機能、他のソフトウェアを不揮発性記憶部１２０ｂから読み出し実行する機能が付与される。そして、ＯＳソフトウェアの実行を完了し、ＯＳを実現している状態の制御部１００は、即座に、上記中継ソフトウェアを不揮発性記憶部１２０ｂから読み出し実行する。
【００３７】
図６は、上記中継ソフトウェアにしたがって作動している制御部１００が実行するセグメント中継動作の流れを示すフローチャートである。図６に示されているように、上記中継ソフトウェアにしたがって作動している制御部１００には、上述したキューを用いて送信装置２０から送信されてくるセグメントを受信装置１０へ中継したり、受信装置１０から送信されてくる確認応答を送信装置２０へ中継するなど一般的な中継装置が有する機能の他に、本発明に係る中継装置に特徴的な２つの機能が付与される。
【００３８】
第１に、送信装置２０から受信したセグメントに分割されて書き込まれている要求コードを取得し、取得した要求コードと上記要求コードテーブルの格納内容とに基づいて、その要求コードの表すデータ量を特定する機能である。具体的には、制御部１００は、受信したセグメントの所定領域に書き込まれているデータをそのセグメントに内包されているシーケンス番号の順に連結して上記要求コードを取得し、この要求コードと上記要求コードテーブルの格納内容とに基づいて、その要求コードの表すデータ量を特定する。
【００３９】
第２に、上記キューの空き容量を検出し、その検出結果と上記特定機能により特定したデータ量とに基づいて、そのデータ量で表される数のセグメントを連続して中継可能であるか否かを判定し、その判定結果を送信装置２０へ通知する機能である。
【００４０】
以上に説明したように、中継装置４０のハードウェア構成も一般的なコンピュータ装置のハードウェア構成と同一であり、記憶部に格納されている各種ソフトウェアを制御部に実行させることにより、本発明に係る中継装置に特有な機能が付与される。
【００４１】
［Ｂ：動作］
次いで、図１に示される通信システムに含まれている送信装置２０と中継装置４０とが行う動作のうち、本発明に係る送信装置および中継装置の特徴を顕著に示す動作についてのみ、図面を参照しつつ説明する。なお、以下に説明する動作例の前提として、送信装置２０は、不揮発性記憶部１２０ｂに格納しているデータの送信を要求されると、このデータを５００バイトのデータ長を有する１５個のセグメントに分割して送信するものとする。そして、これら１５個のセグメントの各々には、内包している部分データに応じて５００刻みのシーケンス番号が書き込まれているものとする。また、以下では、中継装置４０に設けられているキューの記憶容量は２Ｍバイトであるものとし、本動作例の開始時点ではその１００％が空いているものとする。
【００４２】
まず、受信装置１０からデータの送信を要求された場合に、送信装置２０の制御部１００が行う動作について図４を参照しつつ説明する。図４に示されているように、制御部１００は、まず、受信装置１０へ宛てて送信するべき１５個のセグメントのうち、連続して送信するセグメントを選択する（ステップＳＡ１）。
具体的には、制御部１００は、内包しているシーケンス番号が若い順に、輻輳ウィンドウサイズで示される個数のセグメントを選択する。前述したように、本動作の開始時点では、輻輳ウィンドウサイズは２であり、各セグメントには５００刻みのシーケンス番号が書き込まれているから、制御部１００は、シーケンス番号が５００であるセグメントとシーケンス番号が１０００であるセグメントとを上記ステップＳＡ１にて選択する。
【００４３】
次いで、制御部１００は、受信装置１０へ送信するべき１５個のセグメントのうち、送信済みのセグメントと、ステップＳＡ１にて選択されたセグメントとを除いた残りのセグメントのデータ量を算出する（ステップＳＡ２）。本動作例では、受信装置１０へ送信するべき１５個のセグメントは何れも未送信であり、２個のセグメントが上記ステップＳＡ１にて選択されているので、制御部１００は、残りのセグメントのデータ量を６５００バイト（１３×５００バイト）と算出する。
【００４４】
次いで、制御部１００は、ステップＳＡ２にて算出したデータ量と要求コードテーブル（図２参照）の格納内容とに基づいて、中継装置４０へ送信すべき要求コードを特定する（ステップＳＡ３）。本動作例では、ステップＳＡ２にて算出されたデータ量は６５００バイトであり、図２に示す要求コードテーブルの格納内容は、残りのセグメントのデータ量が１０Ｋバイト未満である場合には、要求コード“０１”を送信するべきことを表している。よって、制御部１００は、中継装置４０へ送信するべき要求コードとして“０１”を特定する。
【００４５】
そして、制御部１００は、ステップＳＡ３にて特定した要求コードをステップＳＡ１にて特定した２つのセグメントに分割して書き込み、これらセグメントを通信ＩＦ部１１０ａを介して送信する（ステップＳＡ４）。具体的には、制御部１００は、シーケンス番号が５００であるセグメントの所定領域には“０”を書き込み、シーケンス番号が１０００であるセグメントの所定領域には“１”を書き込んで送信する。以降、制御部１００は、ステップＳＡ４にて送信したセグメントに対する確認応答が送信されてくることを待ち受けるとともに、これらセグメントに分割して書き込んだ要求コードで表される要求を許容するか否かを示す通知が中継装置４０から送信されてくることを待ち受ける。
【００４６】
このようにして送信装置２０から送信された２つのセグメントは、通信網３０を介して中継装置４０へ到達する。次いで、このようなセグメントを受信した場合に中継装置４０の制御部１００が行う動作について図６を参照しつつ説明する。
【００４７】
図６に示されているように、中継装置４０の制御部１００は、送信装置２０から送信されてきたセグメントを通信ＩＦ部１１０ａを介して受信すると、これらセグメントを揮発性記憶部１２０ａに設けられているキューへ書き込む（ステップＳＢ１）。
【００４８】
次いで、制御部１００は、ステップＳＢ１にて受信したセグメントに分割されて書き込まれている要求コードを取得し、取得した要求コードと要求コードテーブル（図２参照）の格納内容とに基づいて、残りのセグメントのデータ量を特定する（ステップＳＢ２）。本動作例では、ステップＳＢ１にて受信されたセグメントに書き込まれている要求コードは“０１”であるから、制御部１００は、残りのセグメントのデータ量が１０Ｋバイト未満であることを特定する。
【００４９】
次いで、制御部１００は、上記キューの空き容量を検出し、ステップＳＢ２にて特定したデータ量のセグメントを上記キューに格納可能であるか否かを判定し、その判定結果を表す通知を通信ＩＦ部１１０ａを介して送信装置２０へ送信する（ステップＳＢ３）。本動作例では、上記キューの記憶容量は２Ｍバイトであり、本動作の開始時点では、上記記憶容量の１００％が空いているから、制御部１００は、上記残りのセグメントを格納可能であると判定し、その判定結果を通知する。
【００５０】
そして、制御部１００は、ステップＳＢ１にてキューに書き込んだセグメントを無線通信ＩＦ部１１０ｂを介して受信装置１０へ送信し（ステップＳＢ４）。
以降、ＴＣＰにしたがってセグメントを中継する一般的な中継装置と同一の動作を行う。具体的には、受信装置１０から送信されてくる確認応答を無線通信ＩＦ部１１０ｂを介して受信し、受信した確認応答を通信ＩＦ部１１０ａを介して送信装置２０へ送信する。なお、制御部１００にステップＳＢ４を先に実行させた後に、上記ステップＳＢ３を制御部１００に実行させるとしても良いことは勿論である。
【００５１】
このようにして中継装置４０から送信された通知は、通信網３０を介して送信装置２０へ到達する。以下、図４に戻って、この通知を受信した場合に送信装置２０の制御部１００が行う動作について説明する。
【００５２】
図４に示されているように、送信装置２０の制御部１００は、上記通知を受信（ステップＳＡ５）すると、その通知の内容に基づいて輻輳ウィンドウサイズを書き換える（ステップＳＡ６）。具体的には、制御部１００は、ステップＳＡ５にて受信した通知の内容が、前述したステップＳＡ４にて送信した要求コードで表される要求を許容する旨の内容である場合には、輻輳ウィンドウサイズを前述したステップＳＡ２にて算出したデータ量で更新する。逆に、ステップＳＡ５にて受信した通知の内容が、前述したステップＳＡ４にて送信した要求コードで表される要求を許容しない旨の内容である場合には、制御部１００は、スロースタートアルゴリズムにしたがって輻輳ウィンドウサイズを更新する。本動作例では、中継装置４０から送信されてくる通知は、残りのセグメントを連続して中継するすることを許容する旨の通知であるから、制御部１００は、ステップＳＡ２にて算出したデータ量で輻輳ウィンドウサイズを更新する。
【００５３】
以降、制御部１００は、ステップＳＡ４にて送信したセグメントに対する確認応答を受信（ステップＳＡ７）すると、受信装置１０へ送信するべきセグメントのうち、残りのセグメントがあるか否かを判定し（ステップＳＡ８）、その判定結果が“Ｎｏ”になるまで、ステップＳＡ１以降の処理を繰り返し実行する。これにより、残りの１３個のセグメントが連続して送信装置２０から受信装置１０へ送信され、受信装置１０へ送信するべきセグメントの送信が完了する。
【００５４】
以上に説明したように、本実施形態に係る通信システムにおいては、送信装置２０から受信装置１０へ送信されるべき１５個のセグメントのうち、まず、２個のセグメントが連続して送信され、その後に、残りの１３個のセグメントが連続して送信される。つまり、本実施形態に係る通信システムにおいては、２回のセグメント送信動作で、上記１５個のセグメントの送信が完了する。これに対して、従来のスロースタートアルゴリズムにしたがって上記１５個のセグメントを送信する場合には、２個、４個、８個および１個のセグメントを順次送信することになり、４回のセグメント送信動作が行われる。このように、本実施形態に係る通信システムにおいては、従来のスロースタートアルゴリズムにしたがってセグメントの送信を行う場合に比較して、セグメントの送信効率を向上させることができるといった効果を奏する。
【００５５】
［Ｃ：変形例］
以上、本発明の実施形態について説明したが、本発明は係る実施形態に限定されるものではなく、例えば、以下のように変形することが考えられる。
【００５６】
（１：変形例１）
上述した実施形態では、中継装置４０が通信網３０に接続されている無線アクセスポイント装置であり、自装置の形成する無線エリアに在圏している受信装置１０と通信網３０に接続された送信装置２０との間の通信を中継する場合について説明した。しかしながら、本発明に係る中継装置は、係る無線アクセスポイント装置に限定されるものではない。例えば、送信装置から無線で送信されてくるセグメントを受信し、このセグメントを無線で受信装置へ送出する中継装置であっても良く、また、第１の通信網と第２の通信網とに有線接続され、第１の通信網を介して送信されてくるセグメントを第２の通信網へ送出する中継装置であっても良い。要は、送信装置と受信装置との間の通信を中継する中継装置であればよく、送信装置或いは受信装置との通信の態様が無線通信であるか有線通信であるかは問わない。
【００５７】
（２：変形例２）
上述した実施形態では、要求コードを１ビット単位で分割し、若いシーケンス番号を内包しているセグメントほど、そのＥＣＮビット格納領域に分割された要求コードの先頭に近い部分が書き込まれるようにする場合について説明した。これは、セグメントのＥＣＮビット格納領域に書き込まれているデータをそのセグメントに内包されているシーケンス番号の順に連結することによって、送信装置２０から送信された要求コードを中継装置４０に復元させるためである。しかしながら、送信装置２０から分割して送信された要求コードを復元することなく、その要求コードの表すデータ量を中継装置４０に検出させることが可能である場合には、各セグメントに内包されているシーケンス番号の順とは無関係に分割された要求コードを各セグメントの所定領域に書き込むとしても良い。その一例としては、要求コードを構成するビットのうち、１がセットされているビットの個数により残りのセグメントのデータ量を表す場合が挙げられる。例えば、要求コードを３ビットで構成し、１がセットされているビットの個数が１つである場合には、残りのセグメントのデータ量が１０Ｋバイト未満であることを表すとする。そして、１がセットされているビットの数が２である場合には、残りのセグメントのデータ量が１０Ｋバイト以上１Ｍバイト未満であることを表すとし、１がセットされているビットの数が３である場合には、残りのセグメントのデータ量が１Ｍバイト以上であることを表すとする。このような要求コードであれば、各セグメントに内包されているシーケンス番号の順とは無関係に、そのセグメントの所定領域にその要求コードを分割して書き込んだとしても、各セグメントの所定領域に書き込まれているビットのうち、１がセットされているビットの数を集計させることによって、残りのセグメントのデータ量を中継装置に検出させることが可能になる。
【００５８】
（３：変形例３）
上述した実施形態では、送信装置、中継装置および受信装置がＴＣＰにしたがって通信を行う場合について説明したが、本発明に係る送信装置と中継装置との間で行われる通信が準拠すべき通信プロトコルは、ＴＣＰに限定されるものではないことは言うまでもない。また、上述した実施形態では、中継装置４０は、送信装置２０と受信装置１０との間のデータ通信の中継とは独立に、送信装置２０からの要求を許容可能であるか否かの判定結果を送信装置２０に通知する場合について説明した。しかしながら、両者を一括して行うことも可能である。具体的には、送信装置２０から送信されたセグメントに対して受信装置１０から送信されてくる確認応答を中継する際に、その確認応答に上記判定結果を表すデータを中継装置４０が書き込むようにすることにより実現される。また、受信装置１０が、受信したセグメントの所定領域に書き込まれているデータをそのまま書き込んだ確認応答を返信する機能を有している場合には、送信装置２０から送信されたセグメントを中継装置４０に中継させる際に、上記判定結果を表すデータをそのセグメントの上記所定領域に書き込んで中継させることによっても実現される。
【００５９】
（４：変形例４）
上述した実施形態では、キューの空き容量に基づいて、送信装置から通知された要求コードで表されるデータ量のセグメントを中継可能であるか否かを中継装置に判定させる場合について説明した。しかしながら、このような判定を中継装置に行わせるための指標となるデータは、係るキューの空き容量に限定されるものではない。例えば、図１に示す通信システムにおいて、中継装置４０と受信装置１０との間で確立される無線通信コネクションを介して行われる無線通信の通信品質を表すデータ（例えば、データ誤り率や電界強度など）や、その無線通信コネクションにおける通信帯域を表すデータなどであっても良いことは勿論である。一般に無線通信の通信品質やその通信帯域は、有線通信の通信品質や通信帯域などと異なり、時々刻々変化し得るものである。このような無線通信を行う中継装置に本発明を適用することにより、その通信品質や通信帯域が時々刻々変化する場合であっても、効率的にデータ通信を行うことが可能になるといった効果を奏する。
【００６０】
（５：変形例５）
上述した実施形態では、残りのセグメントのデータ量を表す要求コードを送信装置から中継装置へ送信し、その要求コードで表されるデータ量のセグメントを受信可能であるか否かを中継装置に判定させる場合について説明した。しかしながら、上記データ量に加え、上記セグメントに内包されているデータの種別を表すような要求コードを送信装置に送信させ、その要求コードの表す種別とデータ量に基づいて、残りのセグメントを連続して送信することを中継装置に許容させるようにしても良い。このようにすると、同一のデータ量であっても、例えば、リアルタイム性を要求されるデータ（例えば、ストリーミングデータ）については、残りのセグメントを連続して送信することを許容し、リアルタイム性を要求されないデータ（例えば、メールデータなど）については、同一のデータ量であっても、残りのセグメントを連続して送信することを許容しないようにすることができるといった効果を奏する。
【００６１】
（６：変形例６）
上述した実施形態では、固定長の要求コードを用いる場合について説明したが、例えば、ハフマン符号のように可変長の要求コードを用いるとしても勿論良い。具体的には、受信装置へ送信するべき残りのセグメントのデータ量が少ないほど、短いデータ長を有する要求コードを割り当てるとしても良。このようにすると、残りのセグメントのデータ量が少ないほど、セグメントの送信を開始してから早い時点で、そのデータ量を表す要求コードが通知され、残りのセグメントの送信を効率的に完了することができるといった効果を奏する。また、送信装置から受信装置へ送信されるべきセグメントの数は、そのセグメントに内包されているデータ毎に異なり一定ではないが、一般には、あるセグメント数においてピークとなる分布（例えば、正規分布）にしたがう。そこで、その分布における発生頻度が高いセグメント数の場合ほど、データ長が短い要求コードを割り当てるとしても良い。このようにすると、上記送信装置において要求コードをデータブロックへ書き込む際の処理負荷を低減させたり、上記送信装置において要求コードを読み取る際の処理負荷を低減させることができるといった効果を奏する。
【００６２】
（７：変形例７）
上述した実施形態では、送信装置２０は、中継装置４０へ通知するべき要求コードを残りセグメントのデータ量と図２に示す要求コードテーブルの格納内容とに基づいて特定する場合について説明した。しかしながら、係る要求コードテーブルを用いなくとも、通知するべき要求コードを送信装置２０に特定させることは可能である。例えば、以下に述べるような処理を送信装置２０の制御部１００に実行させるプログラムを用いることにより実現される。すなわち、残りのセグメントのデータ量が１０Ｋバイト未満である場合には、要求コードに“０１”を設定させる。残りのセグメントのデータ量が１０Ｋバイト以上１Ｍバイト未満である場合には、要求コードに“１０”を設定させる。そして、残りのセグメントのデータ量が１Ｍバイト以上である場合には、要求コードに“１１”を設定させる。
【００６３】
（８：変形例８）
上述した実施形態では、前述した送信ソフトウェアを送信装置２０に予め記憶させておくとともに、前述した中継ソフトウェアを中継装置４０に予め記憶させておく場合について説明した。しかしながら、これらのソフトウェアを、例えばＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などのコンピュータ装置読み取り可能な記録媒体に書き込んでおき、このような記録媒体を用いて上記ソフトウェアを一般的なコンピュータ装置にインストールするとしても勿論良い。このようにすると、一般的なコンピュータ装置に本発明に係る送信装置や中継装置と同一の機能を付与することが可能になるといった効果を奏する。
【００６４】
【発明の効果】
本発明によれば、中継装置における輻輳の発生を回避しつつ、データ通信を効率的に行うことが可能になるといった効果を奏する。
【図面の簡単な説明】
【図１】本発明の実施形態に係る通信システムの全体構成の一例を示す図である。
【図２】同送信装置２０および中継装置４０に記憶されている要求コードテーブルの一例を示す図である。
【図３】送信装置２０の構成例を示す図である。
【図４】同送信装置２０の制御部１００が実行するセグメント送信動作の流れを示すフローチャートである。
【図５】同中継装置４０の構成例を示す図である。
【図６】同中継装置４０の制御部１００が実行するセグメント中継動作の流れを示すフローチャートである。
【図７】一般的な通信システムの構成を示す図である。
【符号の説明】
１０、２１０…受信装置、２０、２２０…送信装置、３０、２３０Ａ、２３０Ｂ…通信網、４０、２４０…中継装置、１００…制御部、１１０ａ…通信ＩＦ部、１１０ｂ…無線通信ＩＦ部、１２０…記憶部、１２０ａ…揮発性記憶部、１２０ｂ…不揮発性記憶部、１３０…バス。
【図１】
2005064597.tif 000003
【図２】
2005064597.tif 000004
【図３】
2005064597.tif 000005
【図４】
2005064597.tif 000006
【図５】
2005064597.tif 000007
【図６】
2005064597.tif 000008
【図７】
2005064597.tif 000009