(57)【要約】【課題】遅延ＡＣＫの使用に起因して通信性能が低下することのない通信方法を提供する。【解決手段】通信装置は、待ち数を保持する待ち数保持手段と、受信したデータパケット数を計数する受信数計数手段と、前記受信数計数手段の計数値が初期値である状態でのデータパケット受信から所定時間内に前記受信数計数手段の示す計数値が前記待ち数保持手段の保持する前記待ち数に到達すると、前記受信数計数手段の計数値を前記初期値にリセットするとともに、前記待ち数分のデータパケット受信を示す確認応答の送信を指示する判断手段とを含み、前記判断手段は、前記待ち数保持手段が保持する前記待ち数をデータパケット受信状況に応じて動的に増減させる。【選択図】図２
2010141769.tif 000002
【特許請求の範囲】
【請求項１】
待ち数を保持する待ち数保持手段と、
受信したデータパケット数を計数する受信数計数手段と、
前記受信数計数手段の計数値が初期値である状態でのデータパケット受信から所定時間内に前記受信数計数手段の示す計数値が前記待ち数保持手段の保持する前記待ち数に到達すると、前記受信数計数手段の計数値を前記初期値にリセットするとともに、前記待ち数分のデータパケット受信を示す確認応答の送信を指示する判断手段と
を含み、前記判断手段は、前記待ち数保持手段が保持する前記待ち数をデータパケット受信状況に応じて動的に増減させることを特徴とする通信装置。
【請求項２】
前記受信数計数手段の計数値が前記初期値である状態でのデータパケット受信から前記所定時間内に前記受信数計数手段の示す計数値が前記待ち数保持手段の保持する前記待ち数に到達しない場合、前記判断手段は、受信した分のデータパケット受信を示す確認応答の送信を指示するとともに、前記待ち数保持手段が保持する前記待ち数を減少させることを特徴とする請求項１記載の通信装置。
【請求項３】
あるデータパケット受信から一定時間内に次のデータパケットを受信しない場合、前記判断手段は、前記待ち数保持手段が保持する前記待ち数を増加させることを特徴とする請求項１又は２に記載の通信装置。
【請求項４】
前記所定時間内に前記受信数計数手段の示す計数値が前記待ち数保持手段の保持する前記待ち数に到達するという事象を第１の事象とし、前記所定時間内に前記受信数計数手段の示す計数値が前記待ち数保持手段の保持する前記待ち数に到達しないという事象を第２の事象とし、前記判断手段は、前記第２の事象が起こることなく前記第１の事象が連続して所定回数生起した場合に、前記待ち数保持手段が保持する前記待ち数を増加させることを特徴とする請求項１乃至３何れか一項記載の通信装置。
【請求項５】
前記判断手段は、ある受信したデータパケットのデータ長と比較して、次に受信したデータパケットのデータ長が短い場合、前記待ち数保持手段が保持する前記待ち数を増加させることを特徴とする請求項１乃至４何れか一項記載の通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本願開示は、一般に通信装置に関し、詳しくは受信に対する確認応答を行なう通信装置に関する。
【背景技術】
【０００２】
インターネットで標準的に利用されるＴＣＰ（Transmission Control Protocol）は、ＩＰ（Internet Protocol）の機能を拡張し、信頼性のある通信を提供するプロトコルである。ＴＣＰ／ＩＰに関する具体的な仕様は、インターネット技術の標準を定める団体ＩＥＴＦ（Internet Engineering Task Force）により、ＲＦＣ７９３として管理されている。
【０００３】
ＴＣＰを利用したデータ通信では、送信機器からデータパケットを受信するたびに受信機器が確認応答を送信機器へと返信することにより、通信の信頼性を確保している。具体的には、送信機器から送信するデータパケットは、シーケンス番号ＳＥＱ及びデータ長ＬＥＮを含む。シーケンス番号ＳＥＱの初期値は、ＴＣＰの通信開始時において、ランダムに決定される。ここでは説明を簡単にするために、シーケンス番号ＳＥＱの初期値が例えば１であるとする。このとき、あるデータパケットのシーケンス番号ＳＥＱが例えば１０００であれば、当該送信機器が送信するデータ全体のうち、当該データパケットで送信するデータの先頭位置がデータ全体の先頭から１０００バイト目であることになる。またデータ長ＬＥＮが例えば１００であれば、当該データパケットで送信するデータの長さが１００バイトである。このデータパケットを正常に受信した場合、受信機器が送信する確認応答において、確認応答番号ＡＣＫの値は１１００である。この確認応答番号ＡＣＫ＝１１００は、データ位置１０００から１００バイトを受信したことを示すとともに、データの受信側がデータの送信側に対して要求する次のデータ位置を示す。即ち送信機器は、確認応答番号ＡＣＫが１１００の確認応答を受信すると、シーケンス番号ＳＥＱが１１００のデータパケットを、次のデータパケットとして送信することになる。
【０００４】
しかし１つのデータパケットに対して１つの確認応答を返信する構成では、短時間に大量のデータパケットが送信された場合に同数の確認応答が返信され、トラフィックの増大を招くことになる。そこでＲＦＣ１１２２には、遅延ＡＣＫが規定されている。この遅延ＡＣＫ方式では、受信機器は受信した最初のデータパケットへの確認応答をすぐには送信せず、所定の待機時間内に次のデータパケットを受信して初めて確認応答を送信する。この確認応答には、上記２つのデータパケットを受信したことを示す確認応答番号が含まれている。このような構成とすることにより、複数の送信データパケットに対して１つの確認応答を返信することになり、トラフィックの増大を避けることができる。
【０００５】
しかし、遅延ＡＣＫを採用することにより、通信状況によっては通信性能の低下を招く場合がある。これについて以下に説明する。受信機器がデータパケットＤ１を受信した後、一定の待機時間の間次のデータパケットＤ２の受信を待つ状況において、このデータパケットＤ２が通信経路途中で喪失したとする。待機時間内にデータパケットＤ２を受信しないので、受信機器は、待機時間経過後に直ちに確認応答Ａ１を送信する。この確認応答Ａ１は、データパケットＤ１を受信したことを示す確認応答番号を含むものである。送信機器は、この確認応答Ａ１を受信することによりデータパケットＤ２が受信されていないことを知り、再度データパケットＤ２を送信することができる。
【０００６】
送信機器の仕様として、データパケットＤ１を送信すると、それに対する確認応答Ａ１を受信して初めて次のデータパケットＤ２を送信するように送信手順が構成されている場合もあり得る。このような場合、一連のデータパケットを送信する際、各データパケットの受信に対して毎回待機時間経過してから確認応答を返信することになり、データ送信に要する時間が非常に長くなってしまう。
【特許文献１】特開２００４−７２３７２号公報
【特許文献２】特開２００７−１８０６８７号公報
【特許文献３】特開２００４−３６４２１７号公報
【特許文献４】特開２００３−２６４６０５号公報
【特許文献５】特開２００２−２１７９６３号公報
【特許文献６】特開２００５−１４３０７６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
以上を鑑みると、遅延ＡＣＫの使用に起因して通信性能が低下することのない通信方法が望まれる。
【課題を解決するための手段】
【０００８】
通信装置は、待ち数を保持する待ち数保持手段と、受信したデータパケット数を計数する受信数計数手段と、前記受信数計数手段の計数値が初期値である状態でのデータパケット受信から所定時間内に前記受信数計数手段の示す計数値が前記待ち数保持手段の保持する前記待ち数に到達すると、前記受信数計数手段の計数値を前記初期値にリセットするとともに、前記待ち数分のデータパケット受信を示す確認応答の送信を指示する判断手段と
を含み、前記判断手段は、前記待ち数保持手段が保持する前記待ち数をデータパケット受信状況に応じて動的に増減させることを特徴とする。
【発明の効果】
【０００９】
本願開示の少なくとも１つの実施例によれば、確認応答を送信するまでのデータパケットの待ち数を、データパケット受信状況に応じて動的に増減させる。これにより、遅延ＡＣＫの使用に起因して通信性能が低下することを避けることができる。
【発明を実施するための最良の形態】
【００１０】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【００１１】
図１は、通信装置の全体構成の一例を示す図である。通信装置１０は、物理部１１、ＭＡＣ部１２、ＩＰ部１３、及びＴＣＰ部１４を含む。物理部１１は、ケーブル、光ファイバ、無線ＬＡＮ等の所定の物理層の規格に基づいてネットワーク１６に接続される。ＭＡＣ部１２は、ＯＳＩ（Open Systems Interconnection）参照モデルのデータリンク層に対応し、ＭＡＣ（Media Access Control）アドレスに基づいて、イーサネット等を用いたパケットの送受信を行なう。ＭＡＣアドレスは、物理的インターフェースであるネットワークカードに生産時に割り振られ、ネットワークカードのＲＯＭに焼き付けられている４８ビットのシリアル番号である。ＭＡＣアドレスは、全世界の各ネットワークカード毎に異なるものであり、一意に当該カードを特定できる。ＩＰ部１３は、ＯＳＩ参照モデルのネットワーク層に対応し、３２ビットの論理的なＩＰアドレスに基づいて、パケットの送受信を行なう。ＭＡＣアドレスに基づいてデータを送受信するためには、データリンク層において送信側と受信側とが直接に接続されている必要がある。そこで、間接的につながっている機器間で通信をする際には、上位の階層であるネットワーク層を用いて、複数の中継機器（ルータ）を経由してデータ送受信を行なう。ＴＣＰ部１４は、ＯＳＩ参照モデルのトランスポート層に対応し、ＴＣＰプロトコルに基づいて、パケットの送受信を行なう。データの正しさはデータリンク層においてチェックサムにより確認しているが、データパケットが喪失することなく、正しいパケット順序で、正しいプログラム間で送受信されることを確実にする必要がある。ＴＣＰ部１４では、送信元ポート番号、宛先ポート番号、シーケンス番号、確認応答番号等を用いて、信頼性のあるデータ送受信を実現する。
【００１２】
図２は、ＴＣＰ部１４の構成の一例を示す図である。ＴＣＰ部１４は、ＴＣＰ送信部２１、ＴＣＰ受信部２２、判断部２３、タイマ部２４、及び計算部２５を含む。ＴＣＰ送信部２１は、送信元ポート番号、宛先ポート番号、シーケンス番号、確認応答番号等を含むＴＣＰヘッダを、送信すべきデータに付加し、ＴＣＰパケットデータとして送信する。ＴＣＰ送信部２１は更に、判断部２３からの確認応答送信通知を受け取ると、確認応答のための確認応答パケットを送信する。ＴＣＰ受信部２２は、受信したＴＣＰデータパケットに対して、ＴＣＰプロトコルに従った所定の処理を実行する。ＴＣＰ受信部２２は、データパケットを受信すると、判断部２３に対してデータパケットの受信を通知する。ＴＣＰ受信部２２は更に、データパケットを受信すると、タイマ部２４に対してタイマ起動通知を供給する。
【００１３】
判断部２３は、待ち数保持領域３１、受信数カウンタ３２、データ長保持領域３３、成功数カウンタ３４、データ長判断部３５、及びタイマ要因判断部３６を含む。待ち数保持領域３１、受信数カウンタ３２、データ長保持領域３３、及び成功数カウンタ３４は、判断部２３の内部レジスタや内部カウンタであってもよいし、或いは外部に設けたレジスタやカウンタであってもよい。待ち数保持領域３１は、確認応答を送信するまでのデータパケットの待ち数を保持する。受信数カウンタ３２は、受信したデータパケット数を計数する。判断部２３は、受信数カウンタ３２の計数値が初期値である状態でのデータパケット受信から所定時間内に、受信数カウンタ３２の示す計数値が待ち数保持領域３１の保持する待ち数に到達したか否かを判断する。所定時間内に計数値が待ち数に到達した場合、判断部２３は、受信数カウンタ３２の計数値を初期値にリセットするとともに、待ち数分のデータパケット受信を示す確認応答の送信をＴＣＰ送信部２１に指示する。この判断部２３は、待ち数保持領域３１が保持する待ち数をデータパケット受信状況に応じて動的に増減させることを特徴とする。
【００１４】
例えば、受信数カウンタ３２の計数値が初期値である状態でのデータパケット受信から所定時間内に受信数カウンタ３２の示す計数値が待ち数保持領域３１の保持する待ち数に到達しない場合、待ち数保持領域３１が保持する待ち数を減少させてよい。具体的には、判断部２３が、受信した分のデータパケット受信を示す確認応答の送信を指示するとともに、待ち数保持領域３１が保持する待ち数を減少させるように、計算部２５に指示してよい。判断部２３の動作については、後程詳細に説明する。
【００１５】
タイマ部２４は、受信間隔監視タイマ４１、遅延ＡＣＫタイマ４２、及び再送タイマ４３を含む。受信間隔監視タイマ４１は、データパケット受信により計時動作を開始するタイマであり、一定時間内に次のデータパケットを受信するか否かを判断するために用いられる。受信間隔監視タイマ４１は、計時動作開始から次のデータパケットの受信なく所定長の時間が経過すると、タイムアウト通知を判断部２３に供給する。遅延ＡＣＫタイマ４２は、受信数カウンタ３２の計数値が初期値である状態でのデータパケット受信により計時動作を開始する。遅延ＡＣＫタイマ４２は、その計時動作の開始から所定時間内に受信数カウンタ３２の示す計数値が待ち数保持領域３１の保持する待ち数に到達したか否かを判断するために用いられる。遅延ＡＣＫタイマ４２は、計時動作の開始から上記計数値が上記待ち数に到達することなく所定長の時間が経過すると、タイムアウト通知を判断部２３に供給する。再送タイマ４３は、データパケットを再送するまでの待ち時間を計時するためのタイマである。ＴＣＰでは、データパケットを送信してから一定時間の間応答確認パケットの返信が無い場合、応答が無かったデータパケットを再送する。再送タイマ４３は、再送の要否を判断するための上記の一定時間を計時するために用いられる。タイマ部２４の動作については、後程詳細に説明する。
【００１６】
計算部２５は、待ち数増加計算部５１と待ち数減少計算部５２とを含む。待ち数増加計算部５１は、判断部２３からの待ち数増加指示に応じて、データ長保持領域３３が保持する待ち数を増加させる計算を実行し、増加後の待ち数をデータ長保持領域３３に格納させる。例えば、バイナリ表現されている待ち数を２倍にする演算により、容易に待ち数を増加させることができる。また待ち数減少計算部５２は、判断部２３からの待ち数減少指示に応じて、データ長保持領域３３が保持する待ち数を減少させる計算を実行し、減少後の待ち数をデータ長保持領域３３に格納させる。例えば、バイナリ表現されている待ち数を１／２倍にする演算により、容易に待ち数を減少させることができる。
【００１７】
図３は、待ち数を減少させる手順の実施形態の一例を示す図である。送信機器Ｓ１から受信機器Ｒ１にデータパケットＤ１乃至Ｄ６を送信する際に、待ち数Ｗを減少させる手順が示されている。初期状態において待ち数Ｗは８に設定されている。この待ち数Ｗが、データパケットの受信状況に応じて、順次８から４、４から２に減少されている。
【００１８】
図４は、図３に示す待ち数を減少させる手順を示すフローチャートである。図３及び図４を用いて、待ち数を減少させる手順について説明する。
【００１９】
図３に示すように、まず送信機器Ｓ１から受信機器Ｒ１にデータパケットＤ１を送信する。受信機器Ｒ１がデータパケットＤ１を受信すると、図４（ａ）において、ステップＳ１のパケット受信が発生し、ステップＳ２に進む。なおこの時、図２のＴＣＰ受信部２２から判断部２３に受信通知が供給される。ステップＳ２で、判断部２３により、データパケットの受信を待機中であるか否かが判断される。これは、例えば受信数カウンタ３２の計数値が初期値であるか否かで判断することができる。データパケットＤ１は最初のデータパケットであるので、データパケットＤ１受信の場合には、データパケットの受信を待機中ではない（即ち計数値は初期値である）。従ってステップＳ３に進み、遅延ＡＣＫタイマ４２を起動する。具体的には、判断部２３からタイマ部２４を制御することにより、遅延ＡＣＫタイマ４２を起動する。次にステップＳ４で、受信数を１増加させる。即ち、受信数カウンタ３２の計数値（受信数）を１だけカウントアップする。ステップＳ５で、受信数が待ち数（Ｗ＝８）に達したか否かを判断する。即ち、受信数カウンタ３２の計数値が待ち数保持領域３１の待ち数に達したか否かを、判断部２３により判断する。この例では、まだ最初のデータパケットＤ１であるので、ステップＳ６に進み次のパケットの受信を待機する。
【００２０】
次に、図３に示すように、送信機器Ｓ１から受信機器Ｒ１にデータパケットＤ２を送信する。受信機器Ｒ１がデータパケットＤ２を受信すると、図４（ａ）において、ステップＳ１のパケット受信が発生し、ステップＳ２に進む。なおこの時、図２のＴＣＰ受信部２２から判断部２３に受信通知が供給される。ステップＳ２で、判断部２３により、データパケットの受信を待機中であるか否かが判断される。データパケットＤ２受信の場合には、データパケットの受信を待機中である（即ち計数値は初期値ではない）。従ってステップＳ４に進み、受信数を１増加させる。即ち、受信数カウンタ３２の計数値（受信数）を１だけカウントアップする。ステップＳ５で、受信数が待ち数（Ｗ＝８）に達したか否かを判断する。即ち、受信数カウンタ３２の計数値が待ち数保持領域３１の待ち数に達したか否かを、判断部２３により判断する。この例では、まだ２番目のデータパケットＤ２であるので、ステップＳ６に進み次のパケットの受信を待機する。
【００２１】
ここで、図３に示すように、送信機器Ｓ１は次のデータパケットＤ３を送信することなく時間が経過する。遅延ＡＣＫタイマ４２のタイムアウト時間ｔが経過すると、タイマ部２４は判断部２３にタイムアウトを通知する。この時、判断部２３のタイマ要因判断部３６は、タイムアウト通知の要因が遅延ＡＣＫタイマ４２のタイムアウトであることを認識する。判断部２３は、図４（ｂ）のステップＳ１１に示すようにタイムアウトを監視しており、タイムアウトが発生すると、ステップＳ１２に進む。ステップＳ１２で、判断部２３は待ち数を１／２に減少させる。具体的には、判断部２３が計算部２５に待ち数減少指示を出すことにより、データ長保持領域３３の保持する待ち数Ｗが８から４になる。その後、ステップＳ１３で、判断部２３の指示により確認応答を送信する。即ち、図３に示すように、Ｄ１及びＤ２の受信を示す確認応答Ａ１，２を送信する。またこのとき、判断部２３は、受信数カウンタ３２の計数値を初期値にリセットする。これにより、次のデータパケットＤ３の受信時には、データパケットＤ１の受信時と同様の処理が実行される。
【００２２】
以上の動作により、確認応答Ａ１，２の送信と共に、待ち数Ｗが初期値８から４に減少される。以降同様にして、確認応答Ａ３，４の送信と共に待ち数Ｗが４から２に減少され、更に確認応答Ａ５，６の送信と共に待ち数Ｗが２から１に減少される。なお待ち数保持領域３１が保持する待ち数Ｗの下限が１となるように判断部２３は構成されており、待ち数Ｗが１以下に減少することはない。
【００２３】
なおステップＳ５で、受信数が待ち数に達したと判断された場合には、ステップＳ７に進み、待ち数分のデータパケットを受信した旨を示す確認応答を送信する。これは、遅延ＡＣＫタイマ４２がタイムアウトすることなく、待ち数Ｗに等しい数のデータパケットを受信し、待ち数を減少させることのなかった場合に相当する。なお判断部２３は、上記の確認応答送信を指示すると共に、受信数カウンタ３２の計数値を初期値にリセットし、更にタイマ部２４を制御して遅延ＡＣＫタイマ４２をリセットする。
【００２４】
図５は、待ち数を増加させる手順の第１の実施例を示す図である。送信機器Ｓ１から受信機器Ｒ１にデータパケットＤ１乃至Ｄ６を送信する際に、待ち数Ｗを増加させる手順が示されている。初期状態において待ち数Ｗは２に設定されている。この待ち数Ｗが、データパケットの受信状況に応じて、２から４に増加されている。なお待ち数Ｗの上限は例えば８としてよい。
【００２５】
図６は、図５に示す待ち数を増加させる手順を示すフローチャートである。図５及び図６を用いて、待ち数を増加させる手順について説明する。なお図４に示すフローチャートの処理も並行して実行されていると考えてよい。即ち、データパケット受信の状況に応じて、適宜待ち数を減少させたり増加させたりする構成であってよい。
【００２６】
図５に示すように、まず送信機器Ｓ１から受信機器Ｒ１にデータパケットＤ１を送信する。受信機器Ｒ１がデータパケットＤ１を受信すると、図６（ａ）において、ステップＳ１のパケット受信が発生し、ステップＳ２に進む。なおこの時、図２のＴＣＰ受信部２２から判断部２３に受信通知が供給されとともに、タイマ部２４にタイマ起動通知が供給される。ステップＳ２では、このタイマ起動通知に応答して、受信間隔監視タイマ４１が起動される。ステップＳ３で、判断部２３は次のパケットを待機する状態となる。
【００２７】
次に、図５に示すように、送信機器Ｓ１から受信機器Ｒ１にデータパケットＤ２を送信する。受信機器Ｒ１がデータパケットＤ２を受信すると、上記のデータパケットＤ１受信の場合と同様の処理が実行される。但し、まずデータパケットＤ２の受信に応答して、図６（ｂ）のステップＳ１１のパケット受信の有無の判断からステップＳ１４に進み、受信間隔監視タイマ４１が停止する（リセットされる）。その後、図６（ａ）のステップＳ２で、タイマ起動通知に応答して、受信間隔監視タイマ４１が再起動される。即ち、ＴＣＰ受信部２２からの各タイマ起動通知に応答して、受信間隔監視タイマ４１が毎回リセットされ０からの計時動作を毎回開始するように構成される。なお送信機器Ｓ１から受信機器Ｒ１への一連のデータ送信の最後には、データ送信の終了を示すデータＦＩＮが付加されている。このようなデータＦＩＮが付加されている場合には、受信間隔監視タイマ４１を起動させることはない。
【００２８】
なお図５において、待ち数Ｗは初期状態で２に設定されている。従って、受信機器Ｒ１がデータパケットＤ２を受信すると、データパケットＤ１及びＤ２の受信を示す確認応答Ａ１，２が、受信機器Ｒ１から送信機器Ｓ１に送信される。
【００２９】
データパケットＤ２を送信後、図５に示すように、送信機器Ｓ１は次のデータパケットＤ３を送信することなく時間が経過する。受信間隔監視タイマ４１のタイムアウト時間（＝２ｔｍ）が経過すると、タイマ部２４は判断部２３にタイムアウトを通知する。この時、判断部２３のタイマ要因判断部３６は、タイムアウト通知の要因が受信間隔監視タイマ４１のタイムアウトであることを認識する。判断部２３は、図６（ｂ）のステップＳ１２に示すようにタイムアウトを監視しており、受信間隔監視タイマ４１のタイムアウトが発生すると、ステップＳ１３に進む。ステップＳ１３で、判断部２３は待ち数を２倍に増加させる。具体的には、判断部２３が計算部２５に待ち数増加指示を出すことにより、データ長保持領域３３の保持する待ち数Ｗが２から４になる。待ち数Ｗが４となったので、その後受信機器Ｒ１は、図５に示すように４つのデータパケットＤ３乃至Ｄ６を受信してから、データパケットＤ３乃至Ｄ６の受信を示す確認応答Ａ３，４，５，６を送信機器Ｓ１に送信する。
【００３０】
このようにして、あるデータパケット受信から一定時間内に次のデータパケットを受信しない場合には、待ち数を増加するように判断部２３が動作する。図５及び図６に示す例では、受信間隔監視タイマ４１のタイムアウト時間は、再送タイマ４３の再送タイムアウト時間の２倍に設定されている。これは一例であり、受信間隔監視タイマ４１のタイムアウト時間は適宜他の時間長に設定されてよい。
【００３１】
図７は、待ち数を増加させる手順の第２の実施例を示す図である。送信機器Ｓ１から受信機器Ｒ１にデータパケットＤ１乃至Ｄ１０を送信する際に、待ち数Ｗを増加させる手順が示されている。初期状態において待ち数Ｗは２に設定されている。この待ち数Ｗが、データパケットの受信状況に応じて、２から４に増加されている。
【００３２】
図８は、図７に示す待ち数を増加させる手順を示すフローチャートである。図７及び図８を用いて、待ち数を増加させる手順について説明する。なお図４に示すフローチャートの処理も並行して実行されていると考えてよい。即ち、データパケット受信の状況に応じて、適宜待ち数を減少させたり増加させたりする構成であってよい。
【００３３】
図７に示すように、まず送信機器Ｓ１から受信機器Ｒ１にデータパケットＤ１を送信する。受信機器Ｒ１がデータパケットＤ１を受信すると、図８において、ステップＳ１のパケット受信が発生し、ステップＳ２に進む。なおこの時、図２のＴＣＰ受信部２２から判断部２３に受信通知が供給される。ステップＳ２で、受信数を１増加させる。即ち、受信数カウンタ３２の計数値（受信数）を１だけカウントアップする。ステップＳ３で、受信数が待ち数（Ｗ＝２）に達したか否かを判断する。即ち、受信数カウンタ３２の計数値が待ち数保持領域３１の待ち数に達したか否かを、判断部２３により判断する。この例では、まだ最初のデータパケットＤ１であるので、ステップＳ４に進み次のパケットの受信を待機する。
【００３４】
次に、図７に示すように、送信機器Ｓ１から受信機器Ｒ１にデータパケットＤ２を送信する。受信機器Ｒ１がデータパケットＤ２を受信すると、図８において、ステップＳ１のパケット受信が発生し、ステップＳ２に進む。なおこの時、図２のＴＣＰ受信部２２から判断部２３に受信通知が供給される。ステップＳ２で、受信数を１増加させる。即ち、受信数カウンタ３２の計数値（受信数）を１だけカウントアップする。ステップＳ３で、受信数が待ち数（Ｗ＝２）に達したか否かを判断する。即ち、受信数カウンタ３２の計数値が待ち数保持領域３１の待ち数に達したか否かを、判断部２３により判断する。この例では、２番目のデータパケットＤ２を受信したので、受信数が待ち数（Ｗ＝２）に到達したと判断され、ステップＳ５に進む。ステップＳ５で、待機成功数を１増加させる。即ち、成功数カウンタ３４の計数値（受信数）を１だけカウントアップする。なお成功数カウンタ３４の計数値は初期状態でゼロに設定されている。ゼロから１に増加された待機成功数がＣ＝１として図７に示されている。
【００３５】
次にステップＳ６で、待機成功数が連続３回以上であるか否かを判断する。即ち、判断部２３が、成功数カウンタ３４の計数値（受信数）が３に到達したか否かを判断する。なお並行して実行されている図４のフローチャートの手順において、判断部２３は、図４（ｂ）のステップＳ１１に示すようにタイムアウトを監視している。タイムアウトが発生すると、その時点までの受信データパケットを示す確認応答を送信するとともに、受信数カウンタ３２の計数値を初期値にリセットし、更に成功数カウンタ３４を初期値にリセットする。従って、成功数カウンタ３４の計数値（受信数）が３に到達する場合というのは、タイムアウトが発生することなく受信数カウンタ３２の示す計数値が待ち数に到達するという受信成功事象が連続して３回生起したことを意味する。即ち、所定時間内に受信数カウンタ３２の示す計数値が待ち数に到達しないという失敗事象が起こることなく、上記受信成功事象が連続して３回生起したことを意味する。このデータパケットＤ２を受信した時点では、ステップＳ６での判断において、待機成功数は３に到達していない。従ってステップＳ８に進み、判断部２３の指示により確認応答を送信する。即ち、図７に示すように、Ｄ１及びＤ２の受信を示す確認応答Ａ１，２を送信する。
【００３６】
次に、図７に示すように、送信機器Ｓ１から受信機器Ｒ１にデータパケットＤ３を送信し、更にその後データパケットＤ４を送信する。これにより、上記説明したデータパケットＤ１の送信及びデータパケットＤ２の送信の場合と同様の処理が、受信機器Ｒ１において実行される。但しこのとき、成功数カウンタ３４の待機成功数Ｃは初期値に戻されることなく、増加した値をそのまま維持している。従って、データパケットＤ４の受信に応答して、図８のステップＳ５で待機成功数が１増加されて、Ｃ＝２となる。
【００３７】
次に、図７に示すように、送信機器Ｓ１から受信機器Ｒ１にデータパケットＤ５を送信し、更にその後データパケットＤ６を送信する。これにより、上記説明したデータパケットＤ１の送信及びデータパケットＤ２の送信の場合と同様の処理が、受信機器Ｒ１において実行される。但しこのとき、成功数カウンタ３４の待機成功数Ｃは初期値に戻されることなく、増加した値をそのまま維持している。従って、データパケットＤ６の受信に応答して、図８のステップＳ５で待機成功数が１増加されて、Ｃ＝３となる。次にステップＳ６で、待機成功数が連続３回以上であるか否かを判断する。即ち、判断部２３が、成功数カウンタ３４の計数値（受信数）が３に到達したか否かを判断する。この時点で待機成功数Ｃは３に到達しているので、ステップＳ７に進み、判断部２３は待ち数を２倍に増加させる。具体的には、判断部２３が計算部２５に待ち数増加指示を出すことにより、データ長保持領域３３の保持する待ち数Ｗが２から４になる。次のステップＳ８で、判断部２３の指示により確認応答を送信する。即ち、図７に示すように、Ｄ５及びＤ６の受信を示す確認応答Ａ５，６を送信する。
【００３８】
上記の処理により待ち数Ｗが４となったので、その後受信機器Ｒ１は、図７に示すように４つのデータパケットＤ７乃至Ｄ１０を受信してから、データパケットＤ７乃至Ｄ１０の受信を示す確認応答Ａ７，８，９，１０を送信機器Ｓ１に送信する。このようにして、タイムアウトが発生することなく受信数カウンタ３２の示す計数値が待ち数に到達するという受信成功事象が連続して所定回数生起した場合には、待ち数を増加するように判断部２３が動作する。図７及び図８に示す例では、受信成功事象が３回連続して生起した場合に待ち数を増加させているが、この判断に用いる連続生起の回数は３回に限定されるものではなく、想定される通信状況や要求性能等に応じて適宜設定すればよい。
【００３９】
図９は、待ち数を増加させる手順の第３の実施例を示す図である。送信機器Ｓ１から受信機器Ｒ１にデータパケットＤ１乃至Ｄ４を送信する際に、待ち数Ｗを増加させる手順が示されている。初期状態において待ち数Ｗは２に設定されている。この待ち数Ｗが、データパケットの受信状況に応じて、２から４に増加されている。
【００４０】
図９に示すように、送信機器Ｓ１から受信機器Ｒ１にデータ長が１０００バイトのデータパケットＤ１、Ｄ２、Ｄ３を送信し、その後、データ長が１００バイトのデータパケットＤ４を送信している。即ち、データ長が長い（例えば１０００バイト）データパケットの後にデータ長が短い（例えば１００バイト）データパケットが送信されている。このような場合には、最後のデータパケットＤ４は、ひとまとまりのデータ（例えば３１００バイトのデータ）の最後の余りの部分である可能性が高く、また同様の長さのデータ（３１００バイトのデータ）が更に複数回連続して送られてくる可能性が高い。第３の実施例では、データ長が長いデータパケットの後にデータ長が短いデータパケットが送信された場合に、待ち数Ｗを長くして、連続したデータパケット転送に備える構成となっている。
【００４１】
図１０は、図９に示す待ち数を増加させる手順を示すフローチャートである。図９及び図１０を用いて、待ち数を増加させる手順について説明する。なお図４に示すフローチャートの処理も並行して実行されていると考えてよい。即ち、データパケット受信の状況に応じて、適宜待ち数を減少させたり増加させたりする構成であってよい。
【００４２】
図９に示すように、まず送信機器Ｓ１から受信機器Ｒ１にデータパケットＤ１を送信する。受信機器Ｒ１がデータパケットＤ１を受信すると、図１０において、ステップＳ１のパケット受信が発生し、ステップＳ２に進む。なおこの時、図２のＴＣＰ受信部２２から判断部２３に受信通知が供給される。ステップＳ２で、今回受信したデータパケットのデータ長が前回受信したデータパケットのデータ長よりも短いか否かを判断する。具体的には、判断部２３がデータ長判断部３５を用いて、データ長保持領域３３に保持される前回のデータパケットのデータ長と今回受信したデータパケットのデータ長とを比較する。データパケットＤ１の受信時には、データ長保持領域３３には初期値（例えばゼロ）が設定されており、ステップＳ２の判断結果はＮｏとなる。判断結果はＮｏに応じてステップＳ３に進み、今回受信したデータパケットのデータ長がデータ長保持領域３３に保存される。その後ステップＳ４に進み次のパケットの受信を待機する。
【００４３】
次に図９に示すように、送信機器Ｓ１から受信機器Ｒ１にデータパケットＤ２を送信する。受信機器Ｒ１がデータパケットＤ２を受信すると、データパケットＤ１の受信時と同様の処理が実行される。この場合、データ長保持領域３３にはデータパケットＤ１のデータ長１０００が保持されており、今回のデータパケットＤ２のデータ長１０００と前回のデータパケットＤ１のデータ長１０００は等しいので、ステップＳ２の判断結果はＮｏとなる。判断結果Ｎｏに応じてステップＳ３に進み、今回受信したデータパケットのデータ長がデータ長保持領域３３に保存される。その後ステップＳ４に進み次のパケットの受信を待機する。
【００４４】
次に図９に示すように、送信機器Ｓ１から受信機器Ｒ１にデータパケットＤ３を送信する。受信機器Ｒ１がデータパケットＤ３を受信すると、データパケットＤ２の受信時と同様の処理が実行される。
【００４５】
次に図９に示すように、送信機器Ｓ１から受信機器Ｒ１にデータパケットＤ４を送信する。受信機器Ｒ１がデータパケットＤ４を受信すると、図１０において、ステップＳ１のパケット受信が発生し、ステップＳ２に進む。ステップＳ２で、今回受信したデータパケットのデータ長が前回受信したデータパケットのデータ長よりも短いか否かを判断する。この場合、データ長保持領域３３にはデータパケットＤ３のデータ長１０００が保持されており、今回のデータパケットＤ４のデータ長１００は前回のデータパケットＤ１のデータ長よりも短いので、ステップＳ２の判断結果はＹｅｓとなる。判断結果Ｙｅｓに応じてステップＳ５に進み、判断部２３は待ち数を２倍に増加させる。具体的には、判断部２３が計算部２５に待ち数増加指示を出すことにより、データ長保持領域３３の保持する待ち数Ｗが２から４になる。その後、ステップＳ３で、今回受信したデータパケットのデータ長がデータ長保持領域３３に保存される。その後ステップＳ４に進み次のパケットの受信を待機する。
【００４６】
このようにして、ある受信したデータパケットのデータ長と比較して、次に受信したデータパケットのデータ長が短い場合、待ち数を増加させるように判断部２３が動作する。なお今回受信したデータパケットのデータ長が前回受信したデータパケットのデータ長よりも短いか否かを判断する際には、１バイトでも短い場合に短いと判断するのではなく、所定のバイト数以上短い又は所定の比率よりも短い場合に短いと判断してよい。例えば、今回受信したデータパケットのデータ長が、前回より５００バイト以上短い場合であるとか、前回の１／２以下の長さであるといった場合に、短いと判断するようにしてよい。
【００４７】
なおデータパケット受信の状況に応じて待ち数を増加させる手順の第１乃至第３の実施例は、適宜組み合わせて使用してよい。即ち例えば、図６、図８、図１０に示す３つのフローチャートの処理を並行して実行し、何れかの待ち数増加条件が満たされると随時待ち数を増加させるような構成としてよい。
【００４８】
図１１は、上記実施例で説明した待ち数制御処理（待ち数の増減処理）に用いるデータ構造の一例を示す図である。上記実施例において特に明示的には説明しなかったが、待ち数制御処理は、通信先相手の区別無く全ての受信するデータパケットに対して適用される分けではない。当然ながら、受信機器Ｒ１がある送信機器Ｓ１と通信しているときには、その送信機器Ｓ１から受信するデータパケットの状況に応じてその送信機器Ｓ１との通信に関する待ち数制御をするのであり、他の送信機器から受信するデータパケットは関係がない。また更に言えば、受信機器Ｒ１が送信機器Ｓ１のあるアプリケーションプログラムと通信しているときには、そのプログラムから受信するデータパケットの状況に応じてそのプログラムとの通信に関する待ち数制御をする。この場合に、送信機器Ｓ１の他のプログラムから受信するデータパケットは、前者のプログラムとの通信に関する待ち数制御とは関係がない。即ち、受信側からすれば、通信相手（送信機器のアプリケーションプログラム）毎に待ち数制御を実現する必要がある。この目的のために、図１１に示すデータ構造７０が用いられる。
【００４９】
データ構造７０は、宛先ＭＡＣアドレス７１、自ＭＡＣアドレス７２、宛先ＩＰアドレス７３、自ＩＰアドレス７４、宛先ポート番号７５、自ポート番号７６、及びデータ及びタイマ部７７を含む。データ及びタイマ部７７は、データ長８１、待ち数８２、成功数８３、受信数８４、受信間隔監視タイマ８５、遅延ＡＣＫタイマ８６、及び再送タイマ８７を含む。データ長８１は、データ長保持領域３３に保持する受信データパケットのデータ長である。待ち数８２は、待ち数保持領域３１に保持する待ち数である。成功数８３は、成功数カウンタ３４の計数する受信成功事象の回数である。受信数８４は、受信数カウンタ３２の計数する受信データパケット数である。受信間隔監視タイマ８５は、受信間隔監視タイマ４１の計時データ及びタイムアウト値に相当する。遅延ＡＣＫタイマ８６は、遅延ＡＣＫタイマ４２の計時データ及びタイムアウト値に相当する。また再送タイマ８７は、再送タイマ４３の計時データ及びタイムアウト値に相当する。このようなデータ構造７０により、データ及びタイマ部７７を、宛先ＭＡＣアドレス７１、自ＭＡＣアドレス７２、宛先ＩＰアドレス７３、自ＩＰアドレス７４、宛先ポート番号７５、及び自ポート番号７６の組み合わせ毎に管理する。これにより、特定の通信相手毎に待ち数制御を実現することができる。なおポート番号は、各プログラムに割り当てられる番号であり、データ通信においてサービスを提供する側のプログラムは、サービスを特定するために各プログラム固有のポート番号となる。またサービスを受ける側（クライアント側）においては、ポート番号は、利用可能な番号を適当に割り当てればよい。
【００５０】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【００５１】
なお本発明は、以下の内容を含むものである。
（付記１）
待ち数を保持する待ち数保持手段と、
受信したデータパケット数を計数する受信数計数手段と、
前記受信数計数手段の計数値が初期値である状態でのデータパケット受信から所定時間内に前記受信数計数手段の示す計数値が前記待ち数保持手段の保持する前記待ち数に到達すると、前記受信数計数手段の計数値を前記初期値にリセットするとともに、前記待ち数分のデータパケット受信を示す確認応答の送信を指示する判断手段と
を含み、前記判断手段は、前記待ち数保持手段が保持する前記待ち数をデータパケット受信状況に応じて動的に増減させることを特徴とする通信装置。
（付記２）
前記受信数計数手段の計数値が前記初期値である状態でのデータパケット受信から前記所定時間内に前記受信数計数手段の示す計数値が前記待ち数保持手段の保持する前記待ち数に到達しない場合、前記判断手段は、受信した分のデータパケット受信を示す確認応答の送信を指示するとともに、前記待ち数保持手段が保持する前記待ち数を減少させることを特徴とする付記１記載の通信装置。
（付記３）
あるデータパケット受信から一定時間内に次のデータパケットを受信しない場合、前記判断手段は、前記待ち数保持手段が保持する前記待ち数を増加させることを特徴とする付記１又は２に記載の通信装置。
（付記４）
前記一定時間は、データ再送までの待ち時間である再送タイムアウト時間の２倍であることを特徴とする付記３記載の通信装置。
（付記５）
前記所定時間内に前記受信数計数手段の示す計数値が前記待ち数保持手段の保持する前記待ち数に到達するという事象を第１の事象とし、前記所定時間内に前記受信数計数手段の示す計数値が前記待ち数保持手段の保持する前記待ち数に到達しないという事象を第２の事象とし、前記判断手段は、前記第２の事象が起こることなく前記第１の事象が連続して所定回数生起した場合に、前記待ち数保持手段が保持する前記待ち数を増加させることを特徴とする付記１乃至４何れか一項記載の通信装置。
（付記６）
前記判断手段は、ある受信したデータパケットのデータ長と比較して、次に受信したデータパケットのデータ長が短い場合、前記待ち数保持手段が保持する前記待ち数を増加させることを特徴とする付記１乃至５何れか一項記載の通信装置。
（付記７）
前記待ち数保持手段が保持する前記待ち数の下限は１であることを特徴とする付記１乃至６何れか一項記載の通信装置。
（付記８）
前記待ち数保持手段が保持する前記待ち数の増減は、待ち数を２倍にする演算又は１／２にする演算により実行されることを特徴とする付記１乃至７何れか一項記載の通信装置。
（付記９）
受信したデータパケット数を計数し、
前記計数値が初期値である状態でのデータパケット受信から所定時間内に前記計数値が所定の待ち数に到達すると、前記計数値を前記初期値にリセットするとともに、前記待ち数分のデータパケット受信を示す確認応答を送信し、
前記待ち数をデータパケット受信状況に応じて動的に増減させる
各段階を含むことを特徴とする通信方法。
【図面の簡単な説明】
【００５２】
【図１】通信装置の全体構成の一例を示す図である。
【図２】ＴＣＰ部の構成の一例を示す図である。
【図３】待ち数を減少させる手順の実施形態の一例を示す図である。
【図４】図３に示す待ち数を減少させる手順を示すフローチャートである。
【図５】待ち数を増加させる手順の第１の実施例を示す図である。
【図６】図５に示す待ち数を増加させる手順を示すフローチャートである。
【図７】待ち数を増加させる手順の第２の実施例を示す図である。
【図８】図７に示す待ち数を増加させる手順を示すフローチャートである。
【図９】待ち数を増加させる手順の第３の実施例を示す図である。
【図１０】図９に示す待ち数を増加させる手順を示すフローチャートである。
【図１１】待ち数制御処理に用いるデータ構造の一例を示す図である。
【符号の説明】
【００５３】
１０  通信装置
１１  物理部
１２  ＭＡＣ部
１３  ＩＰ部
１４  ＴＣＰ部
２１  ＴＣＰ送信部
２２  ＴＣＰ受信部
２３  判断部
２４  タイマ部
２５  計算部
【図１】
2010141769.tif 000003
【図２】
2010141769.tif 000004
【図３】
2010141769.tif 000005
【図４】
2010141769.tif 000006
【図５】
2010141769.tif 000007
【図６】
2010141769.tif 000008
【図７】
2010141769.tif 000009
【図８】
2010141769.tif 000010
【図９】
2010141769.tif 000011
【図１０】
2010141769.tif 000012
【図１１】
2010141769.tif 000013