(57)【要約】【課題】スループットの低下を防止すること。【解決手段】送信バッファ１４は、パケット処理部１５から出力された送信パケットを溜めて、バッファ制御部１６の制御に従って、送信パケットを通信部１１に出力し、バッファ監視部１３は、送信バッファ１４の空き容量を常時監視し、監視結果をウィンドウサイズ変更部１２に出力し、ウィンドウサイズ変更部１２は、ＡＣＫパケットを用いて他の通信装置から通知されたウィンドウサイズを、送信バッファ１４の空き容量に基づいて変更し、パケット処理部１５は、変更後のウィンドウサイズを上限として新規の送信パケットを生成して送信バッファ１４に出力する。【選択図】図３
2015095780.tif 000002
【特許請求の範囲】
【請求項１】
送信パケットを溜めるバッファと、
前記バッファの空き容量を監視するバッファ監視部と、
他の通信装置から通知された第１のウィンドウサイズを前記空き容量に基づいて第２のウィンドウサイズに変更する変更部と、
前記バッファへの前記送信パケットの流入量を前記第２のウィンドウサイズに従って制御するパケット処理部と、
を具備する通信装置。
【請求項２】
前記他の通信装置との通信の状態を監視し、前記通信の遮断及び前記通信の前記遮断からの回復を検出する通信状態監視部、をさらに具備し、
前記変更部は、前記回復が検出されたときに、前記第１のウィンドウサイズを前記第２のウィンドウサイズに変更する、
請求項１に記載の通信装置。
【請求項３】
前記変更部は、前記空き容量を前記第２のウィンドウサイズとする、
請求項１または２に記載の通信装置。
【請求項４】
前記変更部は、前記空き容量と、前記遮断前の直近における自装置からの送信済みデータ量と、前記遮断前の直近における前記他の通信装置での受信済みデータ量とに基づいて、前記第２のウィドウサイズを算出する、
請求項２に記載の通信装置。
【請求項５】
前記バッファのオーバフローが発生するか否かを判定する判定部、をさらに具備し、
前記変更部は、前記オーバフローが発生すると判定されたときに、前記第１のウィンドウサイズを前記第２のウィンドウサイズに変更する、
請求項２に記載の通信装置。
【請求項６】
前記判定部は、前記空き容量と、前記送信パケットの送信レートと、自装置が受信した確認応答番号の増加速度とに基づいて、前記オーバフローが発生するか否かを判定する、
請求項５に記載の通信装置。
【請求項７】
前記判定部は、前記空き容量と、前記遮断前の直近における自装置からの送信済みデータ量と、前記遮断前の直近における前記他の通信装置での受信済みデータ量とに基づいて、前記オーバフローが発生するか否かを判定する、
請求項５に記載の通信装置。
【請求項８】
前記遮断がなされている遮断時間を測定する測定部、をさらに具備し、
前記判定部は、前記遮断時間に基づいて、前記オーバフローが発生するか否かを判定する、
請求項５に記載の通信装置。
【請求項９】
前記遮断がなされている遮断時間を測定する第１測定部と、
ラウンドトリップタイムを測定する第２測定部と、をさらに具備し、
前記判定部は、
前記遮断時間が前記ラウンドトリップタイム以上のときは、前記空き容量と、前記遮断前の直近における自装置からの送信済みデータ量と、前記遮断前の直近における前記他の通信装置での受信済みデータ量とに基づいて、前記オーバフローが発生するか否かを判定し、
前記遮断時間が前記ラウンドトリップタイム未満のときは、前記遮断時間に基づいて、前記オーバフローが発生するか否かを判定する、
請求項５に記載の通信装置。
【請求項１０】
送信パケットを溜めるバッファの空き容量を監視し、
他の通信装置から通知された第１のウィンドウサイズを前記空き容量に基づいて第２のウィンドウサイズに変更し、
前記バッファへの前記送信パケットの流入量を前記第２のウィンドウサイズに従って制御する、
パケット制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置及びパケット制御方法に関する。
【背景技術】
【０００２】
インターネットにおいて標準的に利用されているプロトコルの１つとしてＴＣＰ（Transmission  Control  Protocol）がある。ＴＣＰは、確認応答（Acknowledgement；ＡＣＫ）によって通信の信頼性を確保しているため、ＵＤＰ（User  Datagram  Protocol）に比べ、通信の信頼性が高いとう長所をもつ一方で、転送速度が低いという短所をもつ。この短所を補うために、ＴＣＰでは、「ウィンドウサイズ」を用いたフロー制御が行われる。「ウィンドウサイズ」とは、確認応答を待たずに一度に送信できるデータ量である。ウィンドウサイズは受信装置から送信装置へと通知され、送信装置は、確認応答を待つことなく、ウィンドウサイズを上限にして一度に複数のデータパケットを送信できる。このため、ウィンドウサイズを用いることにより、確認応答の導入による転送速度の低下を抑えることができる。また、ウィンドウサイズは、受信装置の受信バッファの空き容量に基づいて決定され、受信バッファの空き容量が小さくなるほど、ウィンドウサイズも小さくなる。これにより、受信バッファのオーバフローを防ぎつつ、転送速度の低下を抑えることができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−２７７７０４号公報
【特許文献２】特開２００６−１０１３３９号公報
【特許文献３】特開２００６−２１１０１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ここで、送信装置は、データパケットを送信する際に、生成したデータパケットを送信バッファに一端溜めてからネットワークに送出する。このため、送信バッファへ一度に大量のデータパケットが流入した場合に、ネットワークへのデータパケットの送出が遅れると、送信バッファがオーバフローしてしまうことがある。また、データパケットの生成量は、受信装置から送信装置へ通知されるウィンドウサイズを上限とする。このウィンドウサイズは、受信装置の受信バッファの空き容量に基づいて決定されたものである。つまり、データパケットの生成量が、受信装置から通知されるウィンドウサイズ以下に保たれていても、送信バッファがオーバフローしてしまうことがある。
【０００５】
ＴＣＰを用いた通信では、例えば、以下のような場合に、送信バッファがオーバフローする。図１Ａ，１Ｂ，１Ｃは、従来の通信システムの課題の説明に供する図である。ここでは、データパケットの送信側が通信端末であり、データパケットに対するＡＣＫパケットの送信側が基地局である場合を一例にして説明する。通信端末と基地局とは無線ネットワークで繋がっている。
【０００６】
例えば通信端末がビル陰等に一時的に入る等して、図１Ａのように、通信端末と基地局との間のネットワークが瞬間的に途絶えると、通信端末に届くはずのＡＣＫパケットが基地局の送信バッファＢに滞留する。また、通信端末はデータパケットをネットワークに送出できなくなるため、データパケットが通信端末の送信バッファＡに滞留する。
【０００７】
次いで、図１Ｂのように、ネットワークが回復すると、その回復に伴って、送信バッファＢに滞留していた多数のＡＣＫパケットが通信端末へバースト的に一気に送信される。
【０００８】
通信端末はＡＣＫパケットを受信する度に新規のデータパケットを生成するので、通信端末では、図１Ｃのように、多数のＡＣＫパケットがバースト的に受信されると、多数のデータパケットがバースト的に生成されて送信バッファＡに一気に流入する。このため、多数のデータパケットのバースト的な生成に対して、データパケットのネットワークへの送出が間に合わなくなると、送信バッファＡにおいてオーバフローが発生する。
【０００９】
このように、特に無線通信では、通信環境が変化しやすいため、データパケットのネットワークへの送出機会が減少して、送信バッファのオーバフローが発生しやすい。送信バッファのオーバフローが発生すると、スループットが低下してしまう。例えばLinux（登録商標）では、送信バッファのオーバフローを通信装置の内部的な輻輳とみなして輻輳制御が行われて、スループットが低下する。
【００１０】
開示の技術は、上記に鑑みてなされたものであって、スループットの低下を防止できる通信装置及びパケット制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
開示の態様では、送信パケットを溜めるバッファの空き容量を監視する。また、他の通信装置から通知された第１のウィンドウサイズを前記空き容量に基づいて第２のウィンドウサイズに変更し、前記バッファへの前記送信パケットの流入量を前記第２のウィンドウサイズに従って制御する。
【００１２】
開示の態様によれば、スループットの低下を防止できる。
【図面の簡単な説明】
【００１３】
【図１Ａ】図１Ａは、従来の通信システムの課題の説明に供する図である。
【図１Ｂ】図１Ｂは、従来の通信システムの課題の説明に供する図である。
【図１Ｃ】図１Ｃは、従来の通信システムの課題の説明に供する図である。
【図２】図２は、実施例１の通信システムの構成の一例を示す図である。
【図３】図３は、実施例１の通信装置の一例を示す機能ブロック図である。
【図４】図４は、ＴＣＰヘッダのフォーマットの一例を示す図である。
【図５】図５は、実施例１の通信装置の処理の説明に供するフローチャートである。
【図６】図６は、実施例２の通信装置の一例を示す機能ブロック図である。
【図７】図７は、実施例２の通信装置の処理の説明に供するフローチャートである。
【図８】図８は、実施例３の通信装置の一例を示す機能ブロック図である。
【図９】図９は、実施例３の通信装置の処理の説明に供するフローチャートである。
【図１０】図１０は、実施例４の通信装置の一例を示す機能ブロック図である。
【図１１】図１１は、実施例４の通信装置の処理の説明に供するフローチャートである。
【図１２】図１２は、実施例５の通信装置の一例を示す機能ブロック図である。
【図１３】図１３は、実施例５の通信装置の処理の説明に供するフローチャートである。
【図１４】図１４は、実施例６の通信装置の一例を示す機能ブロック図である。
【図１５】図１５は、実施例６の通信装置の処理の説明に供するフローチャートである。
【図１６】図１６は、実施例７の通信装置の一例を示す機能ブロック図である。
【図１７】図１７は、実施例７の通信装置の処理の説明に供するフローチャートである。
【図１８】図１８は、通信装置のハードウェア構成例を示す図である。
【発明を実施するための形態】
【００１４】
以下に、本願の開示する通信装置及びパケット制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例により本願の開示する通信装置及びパケット制御方法が限定されるものではない。また、各実施例において同一の機能を有する構成、及び、同一の処理を行うステップには同一の符号を付し、重複する説明を省略する。
【００１５】
また、以下では、利用されるプロトコルがＴＣＰであることを前提に説明する。
【００１６】
［実施例１］
＜通信システムの構成＞
図２は、実施例１の通信システムの構成の一例を示す図である。図２において通信システム１は、通信装置２，３と、ネットワーク４とを有する。例えば、通信装置２は通信端末、通信装置３は基地局、ネットワーク４は無線ネットワークである。
【００１７】
通信装置２は、データパケットを通信装置３に送信し、通信装置３は、ＡＣＫパケットを通信装置２に送信する。また、通信装置３は、通信装置３の受信バッファの空き容量に基づいて決定したウィンドウサイズを通信装置２に通知する。
【００１８】
通信装置２は、データパケットを送信する際に、生成したデータパケットを送信バッファに一端溜めてからネットワーク４に送出する。通信装置２は、通信装置３からＡＣＫパケットを受信する度に新規のデータパケットを生成する。ここで、通信装置２は、通信装置３から通知されたウィンドウサイズを、送信バッファの空き容量に基づいて変更する。そして、通信装置２は、変更後のウィンドウサイズを上限として新規のデータパケットを生成する。
【００１９】
＜通信装置の構成＞
図３は、実施例１の通信装置の一例を示す機能ブロック図である。図３に示す通信装置１０は、図２に示す通信装置２に相当する。通信装置１０は、通信部１１と、ウィンドウサイズ変更部１２と、バッファ監視部１３と、送信バッファ１４と、パケット処理部１５と、バッファ制御部１６とを有する。
【００２０】
通信部１１は、ネットワーク４を介して、通信装置３へ送信パケットを送信し、通信装置３から受信パケットを受信する。送信パケットにはデータパケットが含まれ、受信パケットにはＡＣＫパケットが含まれる。通信部１１は、受信したＡＣＫパケットをウィンドウサイズ変更部１２に出力する。通信装置３で決定されたウィンドウサイズは、通信装置３から通信装置１０へ送信されるＡＣＫパケットに含まれて通知される。図４は、ＴＣＰヘッダのフォーマットの一例を示す図である。ＡＣＫパケットのＴＣＰヘッダでは、「ＡＣＫフラグ」がオンになっているとともに、通信装置３によって決定されたウィンドウサイズが「ウィンドウサイズ」フィールドに含まれている。
【００２１】
ウィンドウサイズ変更部１２は、ＡＣＫパケットを用いて通信装置３から通知されたウィンドウサイズ、つまり、ＡＣＫパケットのＴＣＰヘッダのウィンドウサイズフィールドの値を、送信バッファ１４の空き容量に基づいて書き換える。すなわち、ウィンドウサイズ変更部１２は、通信装置３から通知された第１のウィンドウサイズを、送信バッファ１４の空き容量に基づいて第２のウィンドウサイズに変更する。例えば、ウィンドウサイズ変更部１２は、ウィンドウサイズフィールドの値を、送信バッファ１４の空き容量に書き換える。
【００２２】
例えば、ウィンドウサイズフィールドの値が６５５３５バイトであったときの送信バッファ１４の空き容量が２０４８バイトであった場合、ウィンドウサイズ変更部１２は、ウィンドウサイズフィールドの値を６５５３５バイトから２０４８バイトに書き換える。そして、ウィンドウサイズ変更部１２は、ウィンドウサイズフィールドの値が２０４８バイトのＡＣＫパケットをパケット処理部１５に出力する。なお、ウィンドウサイズ変更部１２は、ＡＣＫパケットのウィンドウサイズフィールドの値を書き換えたことに伴って、「チェックサム」フィールドを再計算して適切な値に書き換える。
【００２３】
バッファ監視部１３は、送信バッファ１４の空き容量を常時監視し、監視結果をウィンドウサイズ変更部１２に出力する。
【００２４】
パケット処理部１５は、ＡＣＫパケットを解析し、ＡＣＫ及びウィンドウサイズを取得する。パケット処理部１５は、ＡＣＫを取得する度に、送信データをパケット化して新規の送信パケットを生成し、生成した送信パケットを送信バッファ１４に出力する。このとき、パケット処理部１５は、ウィンドウサイズ変更部１２での変更後のウィンドウサイズを上限として新規の送信パケットを生成する。例えば、パケット処理部１５は、通信装置３からＡＣＫを受けてない送信パケットのデータ量が変更後のウィンドウサイズと一致するまで新規の送信パケットを生成して送信バッファ１４に出力する。つまり、パケット処理部１５は、送信バッファ１４への送信パケットの流入量を変更後のウィンドウサイズに従って制御する。
【００２５】
送信バッファ１４は、パケット処理部１５から出力された送信パケットを溜めて、バッファ制御部１６の制御に従って、送信パケットを通信部１１に出力する。
【００２６】
バッファ制御部１６は、通信部１１の送信状態を監視し、通信部１１が送信パケットを送信する度に、送信バッファ１４から送信パケットを通信部１１に出力させる。
【００２７】
＜通信装置の処理＞
図５は、実施例１の通信装置の処理の説明に供するフローチャートである。図５に示すフローチャートは、通信装置１０の電源がオンにされたときに開始され、オフにされたときに停止される。
【００２８】
ウィンドウサイズ変更部１２は、通信部１１によるＡＣＫパケットの受信、つまり、通信部１１からのＡＣＫパケットの入力を待つ（ステップＳ１０１：Ｎｏ）。
【００２９】
ウィンドウサイズ変更部１２は、通信部１１がＡＣＫパケットを受信して、通信部１１からＡＣＫパケットを入力されると（ステップＳ１０１：Ｙｅｓ）、送信バッファ１４の空き容量をバッファ監視部１３から取得する（ステップＳ１０２）。
【００３０】
次いで、ウィンドウサイズ変更部１０３は、通信装置３から通知されたウィンドウサイズを送信バッファ１４の空き容量に変更する、すなわち、ＡＣＫパケットのウィンドウフィールドの値を送信バッファ１４の空き容量に書き換える（ステップＳ１０３）。
【００３１】
そして、ウィンドウサイズ変更部１２は、ウィンドウサイズ変更後のＡＣＫパケットをパケット処理部１５に転送する（ステップＳ１０４）。ステップＳ１０４の処理後、処理はステップＳ１０１に戻る。
【００３２】
以上のように、本実施例によれば、通信装置１０は、送信バッファ１４と、バッファ監視部１３と、ウィンドウサイズ変更部１２と、パケット処理部１５とを有する。送信バッファ１４は、送信パケットを溜める。バッファ監視部１３は、送信バッファ１４の空き容量を監視する。ウィンドウサイズ変更部１２は、通信装置３から通知された第１のウィンドウサイズを、送信バッファ１４の空き容量に基づいて第２のウィンドウサイズに変更する。パケット処理部１５は、送信バッファ１４への送信パケットの流入量を変更後の第２のウィンドウサイズに従って制御する。
【００３３】
こうすることで、ウィンドウサイズが送信バッファ１４の空き容量に基づいて制御され、制御されたウィンドウサイズに従って送信パケットのバッファ１４への流入量が制御されるため、送信バッファ１４でのオーバフローの発生を防止できる。よって、送信バッファ１４のオーバフローに起因するスループットの低下を防止できる。
【００３４】
また、ウィンドウサイズ変更部１２は、送信バッファ１４の空き容量を、変更後の第２のウィンドウサイズとする。
【００３５】
このように、送信バッファ１４の空き容量をそのままウィンドウサイズとして用いるため、比較的簡単な制御によって送信バッファ１４のオーバフローを未然に防ぐことができる。
【００３６】
[実施例２]
＜通信装置の構成＞
図６は、実施例２の通信装置の一例を示す機能ブロック図である。図６に示す通信装置２０は、図２に示す通信装置２に相当する。通信装置２０は、通信状態監視部２１と、ウィンドウサイズ変更部２２とを有する。
【００３７】
通信状態監視部２１は、通信部１１が行っている通信装置３との通信を監視し、通信の遮断と、遮断からの通信の回復とを検出する。例えば、通信状態監視部２１は、通信部１１が通信装置３に送信したメッセージに対する応答が一定時間内に通信部１１により受信できないときに通信が遮断したと判断する。また、通信状態監視部２１は、通信が遮断した状態において通信部１１が通信装置３から応答を受信できるようになったときに通信が回復したと判断する。通信状態監視部２１は、検出結果をウィンドウサイズ変更部２２に出力する。
【００３８】
ウィンドウサイズ変更部２２は、実施例１のウィンドウサイズ変更部１２が行う処理に加えて、さらに以下の処理を行う。すなわち、ウィンドウサイズ変更部２２は、通信装置３との通信が回復したとの検出結果が通信状態監視部２１から入力されたときに、実施例１のウィンドウサイズ変更部１２と同様の処理を行う。つまり、ウィンドウサイズ変更部２２は、通信装置３との通信の回復が検出されたときに、通信装置３から通知されたウィンドウサイズを変更する。これは、上記図１Ａ〜１Ｃで説明したように、通信が遮断されている状態から回復したときに、送信バッファ１４のオーバフローが発生する可能性が高いからである。
【００３９】
＜通信装置の処理＞
図７は、実施例２の通信装置の処理の説明に供するフローチャートである。図７に示すフローチャートは、通信装置２０の電源がオンにされたときに開始され、オフにされたときに停止される。図７のフローチャートが開始されるとき、通信状態フラグは‘０’の初期値にセットされている。
【００４０】
通信状態監視部２１は、通信部１１が行っている通信装置３との通信を監視し、通信が遮断したか否かを判断する（ステップＳ２０１）。通信状態監視部２１は、通信が遮断したと判断したとき、つまり、通信の遮断を検出したときは（ステップＳ２０１：Ｙｅｓ）、検出結果をウィンドウサイズ変更部２２に出力するとともに、通信状態フラグを‘１’にセットする（ステップＳ２０２）。ステップＳ２０２の処理後、処理はステップＳ２０１に戻る。
【００４１】
一方で、通信状態監視部２１は、通信が遮断していないと判断したときは（ステップＳ２０１：Ｎｏ）、通信状態フラグが‘１’か否か判断する（ステップＳ２０３）。通信が遮断していないにもかかわらず通信状態フラグが‘１’であるということは、通信が遮断状態から回復したことを示す。このため、通信状態監視部２１は、ステップＳ２０３で通信状態フラグが‘１’であるときは（ステップＳ２０３：Ｙｅｓ）、通信が回復したと判定する、つまり、通信の回復を検出し、検出結果をウィンドウサイズ変更部２２に出力する（ステップＳ２０４）。そして、通信状態監視部２１は、通信状態フラグを‘０’にセットする（ステップＳ２０５）。ステップＳ２０５の処理後、実施例１と同様に、ステップＳ１０１〜Ｓ１０４の処理がウィンドウサイズ変更部２２によって行われる。ステップＳ１０４の処理後、処理はステップＳ２０１に戻る。
【００４２】
ステップＳ２０３において通信状態フラグが‘０’であるときは（ステップＳ２０３：Ｎｏ）、通信状態監視部２１は、通信が継続していると判定し、判定結果をウィンドウサイズ変更部２２に出力する（ステップＳ２０６）。ウィンドウサイズ変更部２２は、通信の継続中は、通信部１１によるＡＣＫパケットの受信、つまり、通信部１１からのＡＣＫパケットの入力を待つ（ステップＳ２０７：Ｎｏ）。そして、ウィンドウサイズ変更部２２は、通信部１１がＡＣＫパケットを受信して、通信部１１からＡＣＫパケットを入力されると（ステップＳ２０７：Ｙｅｓ）、入力されたＡＣＫパケットをそのままパケット処理部１５に転送する（ステップＳ２０８）。
【００４３】
以上のように、本実施例によれば、通信状態監視部２１は、通信装置３との通信の状態を監視し、通信の遮断、及び、通信の遮断からの回復を検出する。ウィンドウサイズ変更部２２は、通信の回復が検出されたときに、通信装置３から通知された第１のウィンドウサイズを第２のウィンドウサイズに変更する。
【００４４】
こうすることで、送信バッファ１４のオーバフローが発生する可能性が高いときに、ウィンドウサイズを変更して送信バッファ１４のオーバフローを防止できる。
【００４５】
[実施例３]
＜通信装置の構成＞
図８は、実施例３の通信装置の一例を示す機能ブロック図である。図８に示す通信装置３０は、図２に示す通信装置２に相当する。通信装置３０は、番号管理部３１と、ウィンドウサイズ変更部３２とを有する。
【００４６】
番号管理部３１には、送信バッファ１４から出力される送信パケットが入力される。また、番号管理部３１には、通信部１１から出力されるＡＣＫパケットが入力される。番号管理部３１は、送信パケットのシーケンス番号（図２）を送信パケットから取得して管理する。また、番号管理部３１は、ＡＣＫパケットの確認応答番号（図２）をＡＣＫパケットから取得して管理する。番号管理部３１は、最新のシーケンス番号及び最新の確認応答番号だけを管理する。
【００４７】
ここで、ＴＣＰでは、送信パケットのシーケンス番号として、通信装置３０と通信装置３との間のＴＣＰのコネクションが確立してからの、通信装置２０からの送信済みのデータ量［byte］（以下では単に「送信済みデータ量」と呼ぶことがある）が用いられる。また、ＴＣＰでは、ＡＣＫパケットの確認応答番号として、通信装置３０と通信装置３との間のＴＣＰのコネクションが確立してからの、通信装置３における受信済みのデータ量［byte］（以下では単に「受信済みデータ量」と呼ぶことがある）が用いられる。送信済みデータ量及び受信済みデータ量は、通信装置３０と通信装置３との間のＴＣＰのコネクションが確立してからの累積値である。
【００４８】
ウィンドウサイズ変更部３２は、実施例２のウィンドウサイズ変更部２２が行う処理に加えて、さらに以下の処理を行う。すなわち、ウィンドウサイズ変更部３２は、通信状態監視部２１から、通信装置３との通信が遮断したとの検出結果が入力されたときに、番号管理部３１に管理されているシーケンス番号及び確認応答番号を番号管理部３１から取得する。番号管理部３１は最新のシーケンス番号及び最新の確認応答番号だけを管理しているので、このときウィンドウサイズ変更部３２が取得するシーケンス番号及び確認応答番号は、通信遮断前の直近の送信済みデータ量、及び、通信遮断前の直近の受信済みデータ量である。
【００４９】
そして、ウィンドウサイズ変更部３２は、通信状態監視部２１から、通信装置３との通信が回復したとの検出結果が入力されたときに、以下の式（１）に従って、変更後のウィンドウサイズを算出する。式（１）において、‘シーケンス番号−確認応答番号’は、通信装置３０から通信装置３へ向かう方向のネットワーク４上を流れているパケットのデータ量、つまり、通信装置３０から送信済みだが通信装置３に届いていないデータ量に相当する。
【００５０】
ウィンドウサイズ
＝送信バッファ１４の空き容量＋（シーケンス番号−確認応答番号）  …式（１）
【００５１】
例えば、通信装置３から通知されたウィンドウサイズが６５５３５バイト、送信バッファ１４の空き容量が２０４８バイト、シーケンス番号が１１５０、確認応答番号が１１００であった場合、ウィンドウサイズ変更部３２は、ウィンドウサイズを６５５３５バイトから２０９８バイトに変更する。
【００５２】
＜通信装置の処理＞
図９は、実施例３の通信装置の処理の説明に供するフローチャートである。図９に示すフローチャートは、通信装置３０の電源がオンにされたときに開始され、オフにされたときに停止される。図９のフローチャートが開始されるとき、通信状態フラグは‘０’の初期値にセットされている。
【００５３】
通信状態監視部２１は、通信が遮断したと判断したとき、つまり、通信の遮断を検出したときは（ステップＳ２０１：Ｙｅｓ）、検出結果をウィンドウサイズ変更部３２に出力するとともに、通信状態フラグを‘１’にセットする（ステップＳ２０２）。
【００５４】
通信状態監視部２１により通信の遮断が検出されたとき（ステップＳ２０１：Ｙｅｓ）、ウィンドウサイズ変更部３２は、ＡＣＫパケットの確認応答番号及び送信パケットのシーケンス番号を番号管理部３１から取得する（ステップＳ３０１，Ｓ３０２）。ステップＳ３０２の処理後、処理はステップＳ２０１に戻る。
【００５５】
ステップＳ２０５での通信状態監視部２１の処理後、ウィンドウサイズ変更部３２は、通信部１１からＡＣＫパケットを入力されると（ステップＳ１０１：Ｙｅｓ）、送信バッファ１４の空き容量をバッファ監視部１３から取得する（ステップＳ１０２）。
【００５６】
次いで、ウィンドウサイズ変更部３２は、式（１）に従って、変更後のウィンドウサイズを算出する（ステップＳ３０３）。
【００５７】
そして、ウィンドウサイズ変更部３２は、通信装置３から通知されたウィンドウサイズをステップＳ３０３で算出したウィンドウサイズに変更する。すなわち、ウィンドウサイズ変更部３２は、ＡＣＫパケットのウィンドウフィールドの値をステップＳ３０３で算出した値に変更する（ステップＳ３０４）。ステップＳ３０４の処理後、処理はステップＳ１０４に進む。
【００５８】
以上のように、本実施例によれば、ウィンドウサイズ変更部３２は、送信バッファ１４の空き容量と、通信装置３との通信の遮断前の直近における通信装置３０からの送信済みデータ量と、通信装置３との通信の遮断前の直近における通信装置３での受信済みデータ量とに基づいて、変更後のウィンドウサイズを算出する。
【００５９】
こうすることで、通信装置３０から送信済みだが通信装置３に届いていないデータ量を考慮して変更後のウィンドウサイズを算出するため、送信バッファ１４のオーバフローが発生する間際の値にウィンドウサイズを設定することができる。よって、送信バッファ１４の利用効率及びネットワーク４の通信帯域の利用効率を向上できる。
【００６０】
[実施例４]
＜通信装置の構成＞
図１０は、実施例４の通信装置の一例を示す機能ブロック図である。図１０に示す通信装置４０は、図２に示す通信装置２に相当する。通信装置４０は、通信状態監視部４１と、オーバフロー判定部４２と、ウィンドウサイズ変更部４３とを有する。
【００６１】
通信状態監視部４１は、実施例２の通信状態監視部２１が行う処理に加えて、さらに以下の処理を行う。すなわち、通信状態監視部４１は、通信部１１が行っている通信装置３との通信を監視し、送信パケットの送信レートを測定する。また、通信状態監視部４１は、通信の遮断と、遮断からの通信の回復とを検出し、検出結果をオーバフロー判定部４２及びウィンドウサイズ変更部４３に出力する。
【００６２】
オーバフロー判定部４２には、通信部１１から出力されるＡＣＫパケットが入力される。オーバフロー判定部４２は、通信状態監視部４１から、通信装置３との通信が回復したとの検出結果が入力されたときに、以下の処理を行う。すなわち、オーバフロー判定部４２は、通信状態監視部４１から送信レートを取得する。また、オーバフロー判定部４２は、特定の監視時間における確認応答番号の増加量を測定する。この「特定の監視時間」は、通信の回復時を起点として、オーバフロー判定部４２へのＡＣＫパケットの入力間隔（つまり、通信装置４０でのＡＣＫパケットの受信間隔）が、送信パケットの送信間隔以上となるまでの時間と規定されるのが好ましい。ＡＣＫパケットの受信間隔が送信パケットの送信間隔以上となっているときは、ＡＣＫパケットが送信装置３からバースト的に送信されていないと判断可能であるからである。また、オーバフロー判定部４２は、送信パケットのパケットサイズを送信パケットの送信レートで除することによって送信パケットの送信間隔を算出する。そして、オーバフロー判定部４２は、特定の監視時間と、その特定の監視時間における確認応答番号の増加量とから、確認応答番号の増加速度を算出する。また、オーバフロー判定部４２は、バッファ監視部１３から、送信バッファ１４の空き容量を取得する。そして、オーバフロー判定部４２は、式（２）の条件を満たすときに、送信バッファ１４のオーバフローが発生すると判定し、式（２）の条件を満たさないときに、送信バッファ１４のオーバフローが発生しないと判定し、判定結果をウィンドウサイズ変更部４３に出力する。
【００６３】
送信バッファ１４の空き容量[byte]＜特定の監視時間[sec]×（確認応答番号の増加速度[byte/sec]−送信レート[byte/sec]）  …式（２）
【００６４】
ウィンドウサイズ変更部４３は、実施例２のウィンドウサイズ変更部２２が行う処理に加えて、さらに以下の処理を行う。すなわち、ウィンドウサイズ変更部４３は、送信バッファ１４のオーバフローが発生するとの判定結果が入力されたときに、通信装置３から通知されたウィンドウサイズを変更する。一方で、ウィンドウサイズ変更部４３は、送信バッファ１４のオーバフローが発生しないとの判定結果が入力されたときは、通信装置３から通知されたウィンドウサイズを変更せずに、通信部１１から入力されたＡＣＫパケットをそのままパケット処理部１５に出力する。
【００６５】
ここで、具体的な数値例を用いて、オーバフロー判定部４２で行われる上記の算出につて説明する。例えば、送信パケットの送信レートが６.２５×１０６[byte/sec]で、送信パケットのパケットサイズが１５１４[byte]であったとき、オーバフロー判定部４２は、送信パケットのパケットサイズを送信パケットの送信レートで除することにより、２４２.２４×１０−６[sec]≒２４０[μsec]を送信パケットの送信間隔として算出する。また、オーバフロー判定部４２は、１ＡＣＫパケット当たりの確認応答番号の増加量が１５１４[byte]で、特定の監視時間が４８[msec]（４８[msec]は２００パケット分の時間に相当）であったとき、１５１４[byte]×２００＝３０２８００[byte]を、特定の監視時間における確認応答番号の増加量として算出する。そして、オーバフロー判定部４２は、３０２８００[byte]÷４８[msec]＝６３０８３３３[byte/sec]を、確認応答番号の増加速度として算出する。
【００６６】
＜通信装置の処理＞
図１１は、実施例４の通信装置の処理の説明に供するフローチャートである。図１１に示すフローチャートは、通信装置４０の電源がオンにされたときに開始され、オフにされたときに停止される。図１１のフローチャートが開始されるとき、通信状態フラグは‘０’の初期値にセットされている。
【００６７】
ステップＳ２０５での通信状態監視部４１の処理後、オーバフロー判定部４２は、通信部１１からＡＣＫパケットを入力されると（ステップＳ１０１：Ｙｅｓ）、ＡＣＫパケットの確認応答番号をＡＣＫパケットから取得する（ステップＳ４０１）。また、オーバフロー判定部４２は、送信レートを通信状態監視部４１から取得し（ステップＳ４０２）、送信バッファ１４の空き容量をバッファ監視部１３から取得する（ステップＳ１０２）。
【００６８】
次いで、オーバフロー判定部４２は、上記のようにして、確認応答番号の増加速度を算出する（ステップＳ４０３）。
【００６９】
次いで、オーバフロー判定部４２は、送信バッファ１４のオーバフローが発生するか否かを判定する（ステップＳ４０４）。すなわち、オーバフロー判定部４２は、式（２）に示す条件が満たされるときは、送信バッファ１４のオーバフローが発生すると判定し、式（２）に示す条件が満たされないときは、送信バッファ１４のオーバフローが発生しないと判定する。
【００７０】
送信バッファ１４のオーバフローが発生すると判定されたときは（ステップＳ４０４：Ｙｅｓ）、ウィンドウサイズ変更部４３は、通信装置３から通知されたウィンドウサイズを送信バッファ１４の空き容量に変更する（ステップＳ１０３）。そして、ウィンドウサイズ変更部４３は、ウィンドウサイズ変更後のＡＣＫパケットをパケット処理部１５に転送する（ステップＳ１０４）。
【００７１】
一方、送信バッファ１４のオーバフローが発生しないと判定されたときは（ステップＳ４０４：Ｎｏ）、ウィンドウサイズ変更部４３は、通信部１１から入力されたＡＣＫパケットをそのままパケット処理部１５に転送する（ステップＳ１０４）。
【００７２】
ステップＳ１０４の処理後、処理はステップＳ２０１に戻る。
【００７３】
以上のように、本実施例によれば、オーバフロー判定部４２は、送信バッファ１４のオーバフローが発生するか否かを判定する。ウィンドウサイズ変更部４３は、送信バッファ１４のオーバフローが発生すると判定されたときに、ウィンドウサイズを変更する。
【００７４】
こうすることで、送信バッファ１４がオーバフローする可能性が低いときには、ウィンドウサイズが変更されないので、ウィンドウサイズの不必要な変更を省くことができる。このため、送信バッファ１４のオーバフローを防止しつつ、ウィンドウサイズの変更頻度を減少させることができる。よって、通信装置４０の処理負荷を軽減することができる。
【００７５】
また、オーバフロー判定部４２は、送信バッファ１４の空き容量と、送信パケットの送信レートと、通信部１１が受信した確認応答番号の増加速度とに基づいて、送信バッファ１４のオーバフローが発生するか否かを判定する。
【００７６】
こうすることで、送信バッファ１４のオーバフローが発生するか否かを正確に判定することができる。
【００７７】
［実施例５］
＜通信装置の構成＞
図１２は、実施例５の通信装置の一例を示す機能ブロック図である。図１２に示す通信装置５０は、図２に示す通信装置２に相当する。通信装置５０は、通信状態監視部５１と、オーバフロー判定部５２と、ウィンドウサイズ変更部５３とを有する。
【００７８】
通信状態監視部５１は、実施例２の通信状態監視部２１が行う処理に加えて、さらに以下の処理を行う。すなわち、通信状態監視部５１は、通信の遮断と、遮断からの通信の回復とを検出し、検出結果をオーバフロー判定部５２及びウィンドウサイズ変更部５３に出力する。
【００７９】
オーバフロー判定部５２は、通信状態監視部５１から、通信装置３との通信が遮断したとの検出結果が入力されたときに、番号管理部３１に管理されているシーケンス番号及び確認応答番号を番号管理部３１から取得する。番号管理部３１は最新のシーケンス番号及び最新の確認応答番号だけを管理しているので、このときオーバフロー判定部５２が取得するシーケンス番号及び確認応答番号は、通信遮断前の直近の送信済みデータ量、及び、通信遮断前の直近の受信済みデータ量である。また、このとき、オーバフロー判定部５２は、送信バッファ１４の空き容量をバッファ監視部１３から取得する。そして、オーバフロー判定部５２は、通信遮断時に、式（３）の条件を満たすときに、送信バッファ１４のオーバフローが発生すると判定し、式（３）の条件を満たさないときに、送信バッファ１４のオーバフローが発生しないと判定する。また、オーバフロー判定部５２は、送信バッファ１４のオーバフローが発生すると判定したときは、オーバフローフラグを‘１’にセットした後、ウィンドウサイズ変更部５３に出力する。オーバフローフラグは‘０’または‘１’の何れかの状態を採る。
【００８０】
送信バッファ１４の空き容量[byte]
＜シーケンス番号[byte]−確認応答番号[byte]  …式（３）
【００８１】
ウィンドウサイズ変更部５３は、実施例２のウィンドウサイズ変更部２２が行う処理に加えて、さらに以下の処理を行う。すなわち、ウィンドウサイズ変更部５３は、通信装置３との通信が回復したとの検出結果が通信状態監視部２１から入力されたときに、通信遮断時にオーバフロー判定部５２から入力されたオーバフローフラグの状態を確認する。そして、オーバフローフラグが‘１’であるときは、ウィンドウサイズ変更部５３は、通信装置３から通知されたウィンドウサイズを変更する。一方で、ウィンドウサイズ変更部５３は、オーバフローフラグが‘０’であるときは、通信装置３から通知されたウィンドウサイズを変更せずに、通信部１１から入力されたＡＣＫパケットをそのままパケット処理部１５に出力する。
【００８２】
＜通信装置の処理＞
図１３は、実施例５の通信装置の処理の説明に供するフローチャートである。図１３に示すフローチャートは、通信装置５０の電源がオンにされたときに開始され、オフにされたときに停止される。図１３のフローチャートが開始されるとき、通信状態フラグ及びオーバフローフラグは‘０’の初期値にセットされている。
【００８３】
通信状態監視部５１により通信の遮断が検出されたとき（ステップＳ２０１：Ｙｅｓ）、オーバフロー判定部５２は、ＡＣＫパケットの確認応答番号及び送信パケットのシーケンス番号を番号管理部３１から取得する（ステップＳ５０１，Ｓ５０２）。また、オーバフロー判定部５２は、送信バッファ１４の空き容量をバッファ監視部１３から取得する（ステップＳ１０２）。
【００８４】
次いで、オーバフロー判定部５２は、送信バッファ１４のオーバフローが発生するか否かを判定する（ステップＳ５０３）。すなわち、オーバフロー判定部５２は、式（３）に示す条件が満たされるときは、送信バッファ１４のオーバフローが発生すると判定し、式（３）に示す条件が満たされないときは、送信バッファ１４のオーバフローが発生しないと判定する。
【００８５】
送信バッファ１４のオーバフローが発生すると判定されたときは（ステップＳ５０３：Ｙｅｓ）、オーバフロー判定部５２は、オーバフローフラグを‘１’にセットする（ステップＳ５０４）。一方で、送信バッファ１４のオーバフローが発生しない判定されたときは（ステップＳ５０３：Ｎｏ）、ステップＳ５０４の処理を行わない。その後、処理はステップＳ２０１に戻る。
【００８６】
ステップＳ２０５での通信状態監視部５１の処理後、ウィンドウサイズ変更部５３は、通信部１１からＡＣＫパケットを入力されると（ステップＳ１０１：Ｙｅｓ）、オーバフローフラグの状態を確認する（ステップＳ５０５）。
【００８７】
オーバフローフラグが‘１’であるときは（ステップＳ５０５：Ｙｅｓ）、ウィンドウサイズ変更部５３は、通信装置３から通知されたウィンドウサイズを送信バッファ１４の空き容量に変更し（ステップＳ１０３）、オーバフローフラグを‘０’にセットする（ステップＳ５０６）。そして、ウィンドウサイズ変更部５３は、ウィンドウサイズ変更後のＡＣＫパケットをパケット処理部１５に転送する（ステップＳ１０４）。
【００８８】
一方で、オーバフローフラグが‘０’であるときは（ステップＳ５０５：Ｎｏ）、ウィンドウサイズ変更部５３は、通信部１１から入力されたＡＣＫパケットをそのままパケット処理部１５に転送する（ステップＳ１０４）。
【００８９】
ステップＳ１０４の処理後、処理はステップＳ２０１に戻る。
【００９０】
以上のように、本実施例によれば、オーバフロー判定部５２は、送信バッファ１４の空き容量と、通信装置３との通信の遮断前の直近における通信装置５０からの送信済みデータ量と、通信装置３との通信の遮断前の直近における通信装置３での受信済みデータ量とに基づいて、送信バッファ１４のオーバフローが発生するか否かを判定する。
【００９１】
こうすることで、通信装置３との通信が遮断後、回復前に、送信バッファ１４のオーバフローの発生を予測できるため、通信が回復したときの処理負荷を軽減することができる。
【００９２】
［実施例６］
＜通信装置の構成＞
図１４は、実施例６の通信装置の一例を示す機能ブロック図である。図１４に示す通信装置６０は、図２に示す通信装置２に相当する。通信装置６０は、通信状態監視部６１と、遮断時間測定部６２と、オーバフロー判定部６３とを有する。
【００９３】
通信状態監視部６１は、実施例２の通信状態監視部２１が行う処理に加えて、さらに以下の処理を行う。すなわち、通信状態監視部６１は、通信部１１が行っている通信装置３との通信を監視し、送信パケットの送信レートを測定する。また、通信状態監視部６１は、通信の遮断と、遮断からの通信の回復とを検出し、検出結果を遮断時間測定部６２及びオーバフロー判定部６３に出力する。
【００９４】
遮断時間測定部６２は、通信が遮断してから回復するまでの時間（つまり、通信遮断時間）を測定する。
【００９５】
オーバフロー判定部６３は、通信状態監視部６１から、通信装置３との通信が遮断したとの検出結果が入力されたときに、通信遮断の直前に測定された送信レートを通信状態監視部６１から取得する。また、オーバフロー判定部６３は、通信状態監視部６１から、通信装置３との通信が回復したとの検出結果が入力されたときに、通信遮断時間を遮断時間測定部６２から取得し、送信バッファ１４の空き容量をバッファ監視部１３から取得する。そして、オーバフロー判定部６３は、式（４）の条件を満たすときに、送信バッファ１４のオーバフローが発生すると判定し、式（４）の条件を満たさないときに、送信バッファ１４のオーバフローが発生しないと判定し、判定結果をウィンドウサイズ変更部４３に出力する。
【００９６】
送信バッファ１４の空き容量[byte]
＜送信レート[byte/sec]×通信遮断時間[sec]  …式（４）
【００９７】
＜通信装置の処理＞
図１５は、実施例６の通信装置の処理の説明に供するフローチャートである。図１５に示すフローチャートは、通信装置６０の電源がオンにされたときに開始され、オフにされたときに停止される。図１５のフローチャートが開始されるとき、通信状態フラグは‘０’の初期値にセットされている。
【００９８】
通信状態監視部６１により通信の遮断が検出されたとき（ステップＳ２０１：Ｙｅｓ）、オーバフロー判定部６３は、通信遮断の直前に測定された送信レートを通信状態監視部６１から取得する（ステップＳ６０１）。ステップＳ６０１の処理後、処理はステップＳ２０１に戻る。
【００９９】
通信状態監視部６１によって通信の回復が検出されると（ステップＳ２０４）、オーバフロー判定部６３は、遮断時間測定部６２から通信遮断時間を取得し（ステップＳ６０２）、バッファ監視部１３から送信バッファ１４の空き容量を取得する（ステップＳ１０２）。
【０１００】
次いで、オーバフロー判定部６３は、送信バッファ１４のオーバフローが発生するか否かを判定する（ステップＳ６０３）。すなわち、オーバフロー判定部６３は、式（４）に示す条件が満たされるときは、送信バッファ１４のオーバフローが発生すると判定し、式（４）に示す条件が満たされないときは、送信バッファ１４のオーバフローが発生しないと判定する。
【０１０１】
送信バッファ１４のオーバフローが発生すると判定されたときは（ステップＳ６０３：Ｙｅｓ）、ウィンドウサイズ変更部４３は、通信装置３から通知されたウィンドウサイズを送信バッファ１４の空き容量に変更する（ステップＳ１０３）。そして、ウィンドウサイズ変更部４３は、ウィンドウサイズ変更後のＡＣＫパケットをパケット処理部１５に転送する（ステップＳ１０４）。
【０１０２】
一方、送信バッファ１４のオーバフローが発生しないと判定されたときは（ステップＳ６０３：Ｎｏ）、ウィンドウサイズ変更部４３は、通信部１１から入力されたＡＣＫパケットをそのままパケット処理部１５に転送する（ステップＳ１０４）。
【０１０３】
ステップＳ１０４の処理後、処理はステップＳ２０１に戻る。
【０１０４】
以上のように、本実施例によれば、遮断時間測定部６２は、通信装置３との通信における通信遮断時間を測定する。オーバフロー判定部６３は、通信遮断時間に基づいて、送信バッファ１４のオーバフローが発生するか否かを判定する。
【０１０５】
通信遮断時間が長くなるほど、通信の回復時に送信装置３からバースト的に送信されるＡＣＫパケットの数が多くなる。バースト的に送信されるＡＣＫパケットの数が多くなるほど、送信バッファ１４のオーバフローが発生する可能性が高くなる。よって、通信遮断時間に基づいて送信バッファ１４のオーバフローが発生するか否かを判定することで、比較的簡単な処理によって取得できる情報のみで、送信バッファ１４のオーバフローが発生するか否かを判定することができる。
【０１０６】
［実施例７］
＜通信装置の構成＞
図１６は、実施例７の通信装置の一例を示す機能ブロック図である。図１６に示す通信装置７０は、図２に示す通信装置２に相当する。通信装置７０は、ＲＴＴ（Round-Trip  Time）測定部７１と、オーバフロー判定部７２とを有する。
【０１０７】
ＲＴＴ測定部７１には、ＲＴＴを測定する。例えば、ＲＴＴ測定部７１には、送信バッファ１４から出力される送信パケットが入力され、通信部１１から出力されるＡＣＫパケットが入力される。そして、ＲＴＴ測定部７１は、送信パケットのシーケンス番号と、ＡＣＫパケットの確認応答番号とから、その送信パケットに対応するＡＣＫパケットを特定し、その送信パケットが送信されてから、対応するＡＣＫパケットが受信されるまでの時間をＲＴＴとして測定してもよい。
【０１０８】
オーバフロー判定部７２は、実施例５のオーバフロー判定部５２及び実施例６のオーバフロー判定部６３が行う処理に加えて、さらに以下の処理を行う。すなわち、オーバフロー判定部７２は、通信状態監視部６１から、通信装置３との通信が回復したとの検出結果が入力されたときに、ＲＴＴをＲＴＴ測定部７１から取得する。そして、オーバフロー判定部７２は、通信遮断時間がＲＴＴ以上のときは、実施例５の式（３）に従って、送信バッファ１４のオーバフローが発生するか否かを判定する。一方で、オーバフロー判定部７２は、通信遮断時間がＲＴＴ未満のときは、実施例６の式（４）に従って、送信バッファ１４のオーバフローが発生するか否かを判定する。そして、オーバフロー判定部７２は、判定結果をウィンドウサイズ変更部５３に出力する。
【０１０９】
＜通信装置の処理＞
図１７は、実施例７の通信装置の処理の説明に供するフローチャートである。図１７に示すフローチャートは、通信装置７０の電源がオンにされたときに開始され、オフにされたときに停止される。図１７のフローチャートが開始されるとき、通信状態フラグ及びオーバフローフラグは‘０’の初期値にセットされている。
【０１１０】
ステップＳ７０１で、オーバフロー判定部７２は、ＲＴＴ測定部７１からＲＴＴを取得する。
【０１１１】
ステップＳ７０２で、オーバフロー判定部７２は、ＲＴＴが通信遮断時間以上であるか否かを判断する。通信遮断時間がＲＴＴ以上のときは（ステップＳ７０２：Ｙｅｓ）、オーバフロー判定部７２は、オーバフローの判定方法を「判定方法１」、つまり、実施例５の式（３）に従って判定する方法に決定する（ステップＳ７０３）。一方で、通信遮断時間がＲＴＴ未満のときは（ステップＳ７０２：Ｎｏ）、オーバフロー判定部７２は、オーバフローの判定方法を「判定方法２」、つまり、実施例６の式（４）に従って判定する方法に決定する（ステップＳ７０４）。
【０１１２】
そして、ステップＳ７０５で、オーバフロー判定部７２は、判定方法１または判定方法２を用いて、送信バッファ１４のオーバフローが発生するか否かを判定する。
【０１１３】
以上のように、本実施例によれば、ＲＴＴ測定部７１はＲＴＴを測定する。オーバフロー判定部７２は、通信遮断時間がＲＴＴ以上のときは、実施例５の式（３）に従って、送信バッファ１４のオーバフローが発生するか否かを判定する。また、オーバフロー判定部７２は、通信遮断時間がＲＴＴ未満のときは、実施例６の式（４）に従って、送信バッファ１４のオーバフローが発生するか否かを判定する。
【０１１４】
実施例５の式（３）に従って行う判定では、通信遮断時間がＲＴＴ未満だと判定の正確性が低下する一方で、実施例６の式（４）に従って行う判定では、通信遮断時間がＲＴＴ以上だと判定の正確性が低下する。よって、上記のようにして、実施例５の式（３）に従って行う判定と、実施例６の式（４）に従って行う判定とをＲＴＴを閾値として使い分けることにより、判定の正確性を維持することができる。
【０１１５】
[他の実施例]
[１]上記実施例の通信装置１０，２０，３０，４０，５０，６０，７０は、次のようなハードウェア構成により実現することができる。図１８は、通信装置のハードウェア構成例を示す図である。図１８に示すように、通信装置１０，２０，３０，４０，５０，６０，７０は、ハードウェアの構成要素として、バス１０ａと、プロセッサ１０ｂと、メモリ１０ｃと、通信モジュール１０ｄとを有する。プロセッサ１０ｂの一例として、ＣＰＵ（Central  Processing  Unit），ＤＳＰ（Digital  Signal  Processor），ＦＰＧＡ（Field  Programmable  Gate  Array）等が挙げられる。また、通信装置１０，２０，３０，４０，５０，６０，７０は、プロセッサ１０ｂと周辺回路とを含むＬＳＩ（Large  Scale  Integrated  circuit）を有してもよい。メモリ１０ｃの一例として、ＳＤＲＡＭ等のＲＡＭ，ＲＯＭ，フラッシュメモリ等が挙げられる。通信部１１は、通信モジュール１０ｄにより実現される。送信バッファ１４は、メモリ１０ｃにより実現される。ウィンドウサイズ変更部１２，２２，３２，４３，５３と、バッファ監視部１３と、パケット処理部１５と、バッファ制御部１６と、通信状態監視部２１，４１，５１，６１と、オーバフロー判定部４２，５２，６３，７２と、遮断時間測定部６２と、ＲＴＴ測定部７１とは、プロセッサ１０ｂにより実現される。番号管理部３１は、プロセッサ１０ｂとメモリ１０ｃとにより実現される。
【０１１６】
［２］ウィンドウサイズ変更部１２，２２，３２，４３，５３、バッファ監視部１３、パケット処理部１５、バッファ制御部１６、通信状態監視部２１，４１，５１，６１、オーバフロー判定部４２，５２，６３，７２、遮断時間測定部６２、ＲＴＴ測定部７１、番号管理部３１での上記説明における各処理は、各処理に対応するプログラムをプロセッサ１０ｂに実行させることによって実現してもよい。例えば、ウィンドウサイズ変更部１２，２２，３２，４３，５３、バッファ監視部１３、パケット処理部１５、バッファ制御部１６、通信状態監視部２１，４１，５１，６１、オーバフロー判定部４２，５２，６３，７２、遮断時間測定部６２、ＲＴＴ測定部７１、番号管理部３１での上記説明における各処理に対応するプログラムがメモリ１０ｃに記憶され、そのプログラムがプロセッサ１０ｂによってメモリ１０ｃから読み出されて実行されてもよい。
【符号の説明】
【０１１７】
１０，２０，３０，４０，５０，６０，７０  通信装置
１１  通信部
１２，２２，３２，４３，５３  ウィンドウサイズ変更部
１３  バッファ監視部
１４  送信バッファ
１５  パケット処理部
１６  バッファ制御部
２１，４１，５１，６１  通信状態監視部
３１  番号管理部
４２，５２，６３，７２  オーバフロー判定部
６２  遮断時間測定部
７１  ＲＴＴ測定部
【図１Ａ】
2015095780.tif 000003
【図１Ｂ】
2015095780.tif 000004
【図１Ｃ】
2015095780.tif 000005
【図２】
2015095780.tif 000006
【図３】
2015095780.tif 000007
【図４】
2015095780.tif 000008
【図５】
2015095780.tif 000009
【図６】
2015095780.tif 000010
【図７】
2015095780.tif 000011
【図８】
2015095780.tif 000012
【図９】
2015095780.tif 000013
【図１０】
2015095780.tif 000014
【図１１】
2015095780.tif 000015
【図１２】
2015095780.tif 000016
【図１３】
2015095780.tif 000017
【図１４】
2015095780.tif 000018
【図１５】
2015095780.tif 000019
【図１６】
2015095780.tif 000020
【図１７】
2015095780.tif 000021
【図１８】
2015095780.tif 000022