(57)【特許請求の範囲】
【請求項１】
送信データに応じて受信側から送信されてくるACKパケットを受信する受信手段と、
受信した前記ACKパケットのうち、最後に受信した最新のACKパケットを保持するACK保持手段と、
前記ACK保持手段から所定のタイミングで渡される前記最新のACKパケットに応じて、ACKパケットの受信処理を行うTCP/IP処理手段と
を備え、
前記ACK保持手段は、
受信した前記ACKパケットが、TCP/IP通信を行っている相手からのACKパケットであって、ACKパケットを保持していない場合、受信した前記ACKパケットを、前記最新のACKパケットとして保持し、
受信した前記ACKパケットが、TCP/IP通信を行っている相手からのACKパケットであって、既に保持している前記最新のACKパケットに連続するACKパケットである場合、前記最新のACKパケットを保持している時間があらかじめ定められた所定の時間を経過しておらず、かつ、保持しているACKパケットの保持数があらかじめ定められた最大値に達していないとき、受信した前記ACKパケットを、前記最新のACKパケットとして保持し、
保持している前記最新のACKパケットに連続しないACKパケットを受信した場合、前記最新のACKパケットを保持している時間が所定の時間を経過した場合、または、ACKパケットの保持数が最大値に達した場合には、保持している前記最新のACKパケットを、前記TCP/IP処理手段に渡す
送信装置。
【請求項２】
送信データに応じて受信側から送信されてくるACKパケットのうち、最後に受信した最新のACKパケットを保持するACK保持ステップと、
前記ACK保持ステップの処理によって所定のタイミングで渡される前記最新のACKパケットに応じて、ACKパケットの受信処理を行うTCP/IP処理ステップと
を含み、
前記ACK保持ステップの処理によって、
受信した前記ACKパケットが、TCP/IP通信を行っている相手からのACKパケットであって、ACKパケットを保持していない場合、受信した前記ACKパケットを、前記最新のACKパケットとして保持し、
受信した前記ACKパケットが、TCP/IP通信を行っている相手からのACKパケットであって、既に保持している前記最新のACKパケットに連続するACKパケットである場合、前記最新のACKパケットを保持している時間があらかじめ定められた所定の時間を経過しておらず、かつ、保持しているACKパケットの保持数があらかじめ定められた最大値に達していないとき、受信した前記ACKパケットを、前記最新のACKパケットとして保持し、
保持している前記最新のACKパケットに連続しないACKパケットを受信した場合、前記最新のACKパケットを保持している時間が所定の時間を経過した場合、または、ACKパケットの保持数が最大値に達した場合には、保持している前記最新のACKパケットを、前記TCP/IP処理ステップの処理に渡す
送信方法。
【請求項３】
送信データに応じて受信側から送信されてくるACKパケットのうち、最後に受信した最新のACKパケットを保持するACK保持ステップと、
前記ACK保持ステップの処理によって所定のタイミングで渡される前記最新のACKパケットに応じて、ACKパケットの受信処理を行うTCP/IP処理ステップと
を含み、
前記ACK保持ステップの処理によって、
受信した前記ACKパケットが、TCP/IP通信を行っている相手からのACKパケットであって、ACKパケットを保持していない場合、受信した前記ACKパケットを、前記最新のACKパケットとして保持し、
受信した前記ACKパケットが、TCP/IP通信を行っている相手からのACKパケットであって、既に保持している前記最新のACKパケットに連続するACKパケットである場合、前記最新のACKパケットを保持している時間があらかじめ定められた所定の時間を経過しておらず、かつ、保持しているACKパケットの保持数があらかじめ定められた最大値に達していないとき、受信した前記ACKパケットを、前記最新のACKパケットとして保持し、
保持している前記最新のACKパケットに連続しないACKパケットを受信した場合、前記最新のACKパケットを保持している時間が所定の時間を経過した場合、または、ACKパケットの保持数が最大値に達した場合には、保持している前記最新のACKパケットを、前記TCP/IP処理ステップの処理に渡す
処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、送信装置および方法、並びにプログラムに関し、特に、TCP/IP通信速度を向上させることができるようにした送信装置および方法、並びにプログラムに関する。
【背景技術】
【０００２】
インターネットに代表されるネットワークで使われる標準的な通信プロトコルとして、TCP/IP（Transmission Control Protocol/Internet Protocol）が広く用いられている。
【０００３】
通常のTCP/IP通信において、データの送信側は、データ受信側のTCP/IPプロトコルスタックからのデータ受信確認応答として、ACKパケットを受信する。ACKパケット内の応答確認番号（ACK番号）は、シーケンス番号と受信したデータサイズからなり、データ送信側においては、ACKパケットの応答がない場合には、応答がなかったデータの再送が行われる。
【０００４】
本出願人は、パケットの再送に関することを先に提案している（例えば、特許文献１参照）。
【０００５】
先の提案においては、データを再生する時刻までに、相手が再送パケットを受信できる場合、要求された再送パケットの再送が制御される。
【特許文献１】特開２００５−１３６５４７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１を含む従来技術においては、送信側のホストの処理能力に余裕がない場合や、データ受信側のTCP/IPプロトコルスタックが非常に多くのACKパケットを送信する実装であった場合、データ送信側のホストでのACKパケット受信処理がTCP/IP通信速度を低下させる要因となる恐れがある。
【０００７】
本発明はこのような状況に鑑みてなされたものであり、TCP/IP通信時に行われる処理を軽減し、TCP/IP通信速度を向上させることができるようにするものである。
【課題を解決するための手段】
【０００８】
本発明の一側面の送信装置は、送信データに応じて受信側から送信されてくるACKパケットを受信する受信手段と、受信した前記ACKパケットのうち、最後に受信した最新のACKパケットを保持するACK保持手段と、前記ACK保持手段から所定のタイミングで渡される前記最新のACKパケットに応じて、ACKパケットの受信処理を行うTCP/IP処理手段とを備え、前記ACK保持手段は、受信した前記ACKパケットが、TCP/IP通信を行っている相手からのACKパケットであって、ACKパケットを保持していない場合、受信した前記ACKパケットを、前記最新のACKパケットとして保持し、受信した前記ACKパケットが、TCP/IP通信を行っている相手からのACKパケットであって、既に保持している前記最新のACKパケットに連続するACKパケットである場合、前記最新のACKパケットを保持している時間があらかじめ定められた所定の時間を経過しておらず、かつ、保持しているACKパケットの保持数があらかじめ定められた最大値に達していないとき、受信した前記ACKパケットを、前記最新のACKパケットとして保持し、保持している前記最新のACKパケットに連続しないACKパケットを受信した場合、前記最新のACKパケットを保持している時間が所定の時間を経過した場合、または、ACKパケットの保持数が最大値に達した場合には、保持している前記最新のACKパケットを、前記TCP/IP処理手段に渡す。
【００１３】
本発明の一側面の送信方法は、送信データに応じて受信側から送信されてくるACKパケットのうち、最後に受信した最新のACKパケットを保持するACK保持ステップと、所定のタイミングで渡される前記最新のACKパケットに応じて、ACKパケットの受信処理を行うTCP/IP処理ステップとを含み、前記ACK保持ステップの処理によって、受信した前記ACKパケットが、TCP/IP通信を行っている相手からのACKパケットであって、ACKパケットを保持していない場合、受信した前記ACKパケットを、前記最新のACKパケットとして保持し、受信した前記ACKパケットが、TCP/IP通信を行っている相手からのACKパケットであって、既に保持している前記最新のACKパケットに連続するACKパケットである場合、前記最新のACKパケットを保持している時間があらかじめ定められた所定の時間を経過しておらず、かつ、保持しているACKパケットの保持数があらかじめ定められた最大値に達していないとき、受信した前記ACKパケットを、前記最新のACKパケットとして保持し、保持している前記最新のACKパケットに連続しないACKパケットを受信した場合、前記最新のACKパケットを保持している時間が所定の時間を経過した場合、または、ACKパケットの保持数が最大値に達した場合には、保持している前記最新のACKパケットを、前記TCP/IP処理ステップの処理に渡す。
【００１４】
本発明の一側面のプログラムは、上述した本発明の一側面の送信方法に対応するプログラムである。
【００１５】
本発明の一側面の送信装置および方法、並びにプログラムにおいては、送信データに応じて受信側から送信されてくるACKパケットのうち、最後に受信した最新のACKパケットが保持され、所定のタイミングで渡される最新のACKパケットに応じて、ACKパケットの受信処理が行われ、受信した前記ACKパケットが、TCP/IP通信を行っている相手からのACKパケットであって、ACKパケットを保持していない場合、受信した前記ACKパケットが、前記最新のACKパケットとして保持され、受信した前記ACKパケットが、TCP/IP通信を行っている相手からのACKパケットであって、既に保持している前記最新のACKパケットに連続するACKパケットである場合、前記最新のACKパケットを保持している時間があらかじめ定められた所定の時間を経過しておらず、かつ、保持しているACKパケットの保持数があらかじめ定められた最大値に達していないとき、受信した前記ACKパケットが、前記最新のACKパケットとして保持され、保持している前記最新のACKパケットに連続しないACKパケットを受信した場合、前記最新のACKパケットを保持している時間が所定の時間を経過した場合、または、ACKパケットの保持数が最大値に達した場合には、保持している前記最新のACKパケットが、前記TCP/IP処理手段に渡される。
【発明の効果】
【００１６】
以上のように、本発明の一側面によれば、TCP/IP通信速度を向上させることができる。
【発明を実施するための最良の形態】
【００１７】
以下、図面を参照しながら本発明の実施の形態について説明する。
【００１８】
図１は、本発明を適用した通信システムの一実施の形態の構成を示すブロック図である。この通信システムにおいては、ネットワーク１３に、送信装置１１および受信装置１２が接続され、相互に通信可能な状態となっている。
【００１９】
なお、ネットワーク１３は、有線または無線の、通信回線、ネットワーク、またはインターネットなどからなる伝送路であり、所定の遅延時間で、送信装置１１から送信されるパケットを受信装置１２まで伝送する。
【００２０】
送信装置１１は、受信装置１２からの要求に応じた送信データを格納したパケットを、ネットワーク１３を介して受信装置１２に送信する。また、送信装置１１は、TCP/IP通信中に受信した、送信データの受信確認応答としてのACKパケットを一定時間保持して、その後のACK受信処理を行うか否かを判定する。そして、送信装置１１は、かかる判定結果に応じてACK受信処理を行う。
【００２１】
具体的には、図１に示すように、送信装置１１は、ネットワークアプリケーション２１、TCP/IP処理部２２、送受信部２３、およびACK保持部２４を含むようにして構成される。
【００２２】
ネットワークアプリケーション２１は、受信装置１２等のネットワーク１３に接続された機器に送信するための送信データを生成し、TCP/IP処理部２２に供給する。
【００２３】
TCP/IP処理部２２は、ネットワークアプリケーション２１から供給される送信データを分割してパケットに格納するなどのプロトコル処理を行う。TCP/IP処理部２２は、送信データを格納したパケットを、送受信部２３に供給する。
【００２４】
送受信部２３は、TCP/IP処理部２２から供給されるパケットを、ネットワーク１３を介して受信装置１２に送信する。
【００２５】
また、送受信部２３は、受信装置１２から送信されてくる、送信データの受信確認応答としてのACKパケットを適宜受信し、ACK保持部２４に供給する。
【００２６】
ACK保持部２４は、送受信部２３から供給されるACKパケットを、所定の時間保持するか、あるいはTCP/IP処理部２２に渡すかを判定する。ACK保持部２４は、ACKパケットを所定の時間保持すると判定した場合には、そのACKパケットを保持し、一方、ACKパケットをTCP/IP処理部２２に渡すと判定した場合には、そのACKパケットをTCP/IP処理部２２に渡す。
【００２７】
かかる判定の条件は、例えば、ACKパケットの保持数の最大数を定める最大ACK保持数、ACKパケットを保持する時間を定めるACK保持タイマ（ACK保持時間）、および、ACKパケットを保持する機能の有効・無効を定めるACK保持機能を設定することで、決定される。すなわち、ACK保持数、ACK保持タイマ、および、ACK保持機能の３つのパラメータを設定することで、ACKパケットが、所定の時間保持されるか、あるいは、TCP/IP処理部２２に渡されるかが判定される。
【００２８】
例えば、ACK保持部２４は、ACKパケットを保持している間に、連続する次のパケットを受信した場合、次のACKパケットを、最新のACKパケットとして保持して、ACK保持数をカウントするとともに、ACK保持タイマをセットする。そして、ACK保持部２４においては、例えば、保持しているACKパケットに連続しない次のACKパケットを受信した場合、最新のACKパケットのACK保持タイマによるカウントが一定の時間を経過した場合、または、ACK保持数が最大ACK保持数に達した場合には、保持している最新のACKパケットが、TCP/IP処理部２２に渡される。
【００２９】
なお、ACK保持数と、ACK保持タイマのパラメータであるが、送信データを受信する相手側のACKパケットの送信頻度や送信間隔を考慮した値が、相手側へのデータ転送が止まらない範囲内で設定される。また、ACK保持数およびACK保持タイマには、パラメータとして、静的な値を設定しもよいし、その値を動的に変化させてもよい。
【００３０】
また、ACK保持機能は、そのパラメータとして、有効が設定されている場合だけ、ACK保持部２４によってACK保持処理が行われる。
【００３１】
TCP/IP処理部２２には、ACK保持部２４によって、ACKパケットをTCP/IP処理部２２に渡すと判定された場合に、ACKパケットが供給され、TCP/IP処理部２２は、ACKパケットの受信処理を行う。すなわち、TCP/IP処理部２２は、ACK保持部２４から供給されるACKパケットに格納された情報から、送信が完了したデータの範囲を認識し、送信済みとなった送信データを破棄する（通常のTCP/IP送信処理）。
【００３２】
また、TCP/IP処理部２２は、必要に応じて、全送信データのACKパケットの確認が終了した後、ネットワークアプリケーション２１に対して送信完了通知を行う。これにより、ネットワークアプリケーション２１は、送信データの送信が完了したことを認識する。
【００３３】
以上のようにして、送信装置１１は構成される。
【００３４】
一方、受信装置１２は、ネットワーク１３を介して送信装置１１から送信されてきたパケットを受信する。受信装置１２は、受信したパケットから送信データを抽出し、抽出した送信データを出力する。
【００３５】
図１に示すように、受信装置１２は、TCP/IP処理部３１および送受信部３２を含むようにして構成される。
【００３６】
送受信部３２は、ネットワーク１３を介して、送信装置１１から送信されてくる、送信データを格納したパケットを受信し、TCP/IP処理部３１に供給する。
【００３７】
TCP/IP処理部３１は、送受信部３２から供給されるパケットを受け取って、そのパケットから送信データを抽出する。また、TCP/IP処理部３１は、送信データの受信確認応答としてのACKパケットを送受信部３２に供給する。
【００３８】
送受信部３２は、TCP/IP処理部３１から供給されるACKパケットを、ネットワーク１３を介して、送信装置１１に送信する。
【００３９】
以上のようにして、受信装置１２は構成される。
【００４０】
以上のように構成される通信システムにおいては、送信データを格納したパケットを送信した送信装置１１によって、受信確認応答としてのACKパケットが受信され、受信されたACKパケットのうち、最後に受信したACKパケットが保持され、所定のタイミングとなったとき、保持されていたACKパケットを用いたACKパケットの受信処理が行われる。
【００４１】
次に、図２のフローチャートを参照して、かかる送信装置１１で行われる送信処理について説明する。
【００４２】
なお、図２の説明においては、説明を簡略化するために、送信データを格納したパケットを送信する場合において、TCPコネクションが確立される前の処理についての説明は省略し、送信装置１１と受信装置１２と間でのTCPコネクションが確立された後の処理について説明する。
【００４３】
ステップＳ１において、ネットワークアプリケーション２１は、受信装置１２に送信するための送信データを生成し、TCP/IP処理部２２に供給する。
【００４４】
ステップＳ２において、TCP/IP処理部２２は、ネットワークアプリケーション２１から供給される送信データに対して、プロトコル処理を行う。TCP/IP処理部２２は、送信データにプロトコル処理を施すことで得られる、送信データを格納したパケットを、送受信部２３に供給する。
【００４５】
ステップＳ３において、送受信部２３は、TCP/IP処理部２２から供給されるパケットを、ネットワーク１３を介して受信装置１２に送信する。
【００４６】
すると、送信データを受信した受信装置１２から受信確認応答としてのACKパケットが送信されてくるので、ステップＳ４において、送受信部２３は、ネットワーク１３を介して受信装置１２から送信されてくるACKパケットを受信し、ACK保持部２４に供給する。また、送受信部２３は、ネットワーク１３を介してパケットを受信すると、パケットの内容に関わらず、ACK保持部２４に供給する。従って、ACK保持部２４には、ACKパケットの他に、ネットワーク１３を介して受信した他のパケットも入力される。
【００４７】
ステップＳ５において、ACK保持部２４は、送受信部２３から供給される各種のパケットのうちのACKパケットを、所定の時間保持するか、あるいはTCP/IP処理部２２に渡すかを選択するACK保持処理を行う。
【００４８】
ここで、図３のフローチャートを参照して、ステップＳ５の処理に対応する、図１のACK保持部２４によって実行されるACK保持処理の詳細について説明する。
【００４９】
ステップＳ１１において、ACK保持部２４は、送受信部２３から供給されるパケットを取得する。ACK保持部２４は、ステップＳ１２において、ACK保持機能が有効であるか否かを判定し、ACK保持機能が無効であると判定された場合、ステップＳ１９において、受信したパケットを保持せずに、TCP/IP処理部２２に渡し、処理はステップＳ１１に戻る。すなわち、ACK保持機能が無効に設定されている場合、ACKパケットは保持されずに、そのまま、TCP/IP処理部２２に渡される。
【００５０】
一方、ステップＳ１２において、ACK保持機能が有効であると判定された場合、ステップＳ１３において、ACK保持部２４は、取得したパケットが、TCP/IP通信を行っている通信相手からのACKパケットであるか否かを判定する。
【００５１】
ステップＳ１３において、TCP/IP通信を行っている通信相手、すなわち、受信装置１２からのACKパケットではないと判定された場合、ステップＳ１９において、ACK保持部２４は、受信したパケットを保持せずに、TCP/IP処理部２２に渡し、処理はステップＳ１１に戻る。一方、ACK保持部２４は、ステップＳ１３において、TCP/IP通信を行っている通信相手、すなわち、受信装置１２からのACKパケットであると判定された場合、ステップＳ１４において、既にACKパケットを保持しているか否かを判定する。
【００５２】
ステップＳ１４において、まだACKパケットを保持していないと判定された場合、ステップＳ２０において、ACK保持部２４は、TCPオプション、ACKフラグ以外のTCPコントロールフラグが付いているか否かを判定する。
【００５３】
ステップＳ２０において、TCPオプション、ACKフラグ以外のTCPコントロールフラグが付いていないと判定された場合、ステップＳ２１において、ACK保持部２４は、取得した最新のACKパケットを保持するとともに、ACK保持タイマをセットする。すなわち、この場合、ACK保持部２４においては、受信した最新のACKパケットがACK保持部２４によって保持されるとともに、ACK保持タイマのカウントが開始される。その後、処理は、ステップＳ１１に戻る。
【００５４】
一方、ステップＳ２０において、TCPオプション、ACKフラグ以外のTCPコントロールフラグが付いていると判定された場合、ステップＳ１９において、ACK保持部２４は、受信したパケットを保持せずに、そのまま、TCP/IP処理部２２に渡し、処理はステップＳ１１に戻る。なお、TCPオプション、ACKフラグ以外のTCPコントロールフラグとしては、例えば、PSHフラグやURGフラグなどがあり、それらのフラグが立っているときには、特殊な処理が要求されている場合であるので、ACKパケットは、ACK保持部２４によって保持されずに、直ちに、TCP/IP処理部２２に渡されることになる。
【００５５】
そして、ステップＳ１４において、既にACKパケットを保持していると判定された場合、ステップＳ１５において、ACK保持部２４は、取得した最新のACKパケットが、保持しているACKパケットに連続するACKパケットであるか否かを判定する。
【００５６】
ステップＳ１５において、取得した最新のACKパケットが、保持しているACKパケットには連続しないACKパケットであると判定された場合、ステップＳ２２において、ACK保持部２４は、保持しているACKパケットと、取得した最新のACKパケットをTCP/IP処理部２２に渡し、処理はステップＳ１１に戻る。すなわち、この場合、パケットロスが発生しているため、保持しているACKパケットと、最新のACKパケットの両方が、TCP/IP処理部２２に渡される。
【００５７】
ステップＳ１５において、取得した最新のACKパケットが、保持しているACKパケットに連続するACKパケットであると判定された場合、ステップＳ１６において、ACK保持部２４は、取得したACKパケットに、TCPオプション、ACKフラグ以外のTCPコントロールフラグが付いているか否かを判定する。
【００５８】
ステップＳ１６において、TCPオプション、ACKフラグ以外のTCPコントロールフラグが付いていると判定された場合、ステップＳ２２において、ACK保持部２４は、保持しているACKパケットと、最新のACKパケットをTCP/IP処理部２２に渡し、処理はステップＳ１１に戻る。一方、ステップＳ１６において、TCPオプション、ACKフラグ以外のTCPコントロールフラグが付いていないと判定された場合、ステップＳ１７において、ACK保持部２４は、ACKパケットの最大保持数に達しているか否かを判定する。
【００５９】
ステップＳ１７において、ACKパケットの最大保持数に達していないと判定された場合、ステップＳ１８において、ACK保持部２４は、取得したACKパケットを、最新のACKパケットとして保持するとともに、ACK保持タイマをリセットして、ACK保持数をカウントする。すなわち、この場合、ACK保持数が最大ACK保持数には達していないので、取得したACKパケットが保持される。また、取得したACKパケットが、最新のACKパケットとして保持されるので、ACK保持部２４によって、ACK保持タイマが再度セットされ、ACK保持数がインクリメントされる。
【００６０】
一方、ステップＳ１７において、ACKパケットの最大保持数に達したと判定された場合、ステップＳ２３において、ACK保持部２４は、最新のACKパケットを、TCP/IP処理部２２に渡すとともに、ACK保持タイマをリセットする。すなわち、この場合、ACK保持数が最大ACK保持数に達したので、取得した最新のACKパケットが、TCP/IP処理部２２に渡される。また、最新のACKパケットがTCP/IP処理部２２に渡されたので、ACK保持タイマが再度セットされる。ステップＳ１８またはステップＳ２３の処理が終了すると、処理は、ステップＳ１１に戻る。
【００６１】
そして、ステップＳ１８、ステップＳ１９、ステップＳ２１ないしステップＳ２３の処理のいずれかが終了すると、処理は、ステップＳ１１に戻り、上述した処理が繰り返される。すなわち、ステップＳ１１ないしステップＳ２３の処理が繰り返されることで、送信データの受信確認応答としてのACKパケットは、ACK保持部２４に保持されるか、あるいはTCP/IP処理部２２に渡されることになる。
【００６２】
なお、図３には図示していないが、ACK保持部２４においては、最後にACKパケットを保持してから、ACK保持タイマで設定されたACKパケットの結合待ち時間が経過した場合には、保持しているACKパケットが、TCP/IP処理部２２に渡される。
【００６３】
このように、ACK保持部２４においては、ACKパケットを保持している間に、連続する次のACKパケットを取得した場合には、最新のACKパケットが保持され、ACK保持数がカウントされる。そして、連続しないACKパケットを取得した場合や、ACK保持タイマによるカウントが一定の時間を経過した場合、あるいは、ACK保持数が最大ACK保持数に達した場合には、ACK保持部２４に保持されていた最新のACKパケットが、TCP/IP処理部２２に渡される。
【００６４】
図２のフローチャートに戻り、ステップＳ６において、TCP/IP処理部２２は、ACK保持部２４からACKパケットが渡される任意のタイミングで、そのACKパケットに格納された情報から送信が完了したデータの範囲を認識して、送信済みのデータの破棄を行い、送信処理は終了する。
【００６５】
これにより、送信装置１１においては、TCP/IP処理部２２によるTCP/IP送信処理を行いながら、ACK保持部２４によって、データ受信側から受け取るACKパケットのTCP/IP処理部２２への供給を制限することが可能となるので、TCP/IP処理部２２において行われるACKパケットの受信処理の処理量を軽減させることができる。このことは、特に、組み込みCPU（Central Processing Unit）等の非力なCPUを用いる場合において、顕著な効果として現れる。
【００６６】
ところで、図１に示した構成においては、ACK保持部２４によって、ACKパケットを渡すか否かの判定処理が行われるとして説明したが、ACK保持部２４は、TCP/IP処理部２２からの要求に応じて、かかる判定処理を行ってもよい。そこで、次に、最新のACKパケットを保持する手段を有する送信装置１１において、任意のタイミングで保持している最新のACKパケットの受信処理を行う構成について説明する。
【００６７】
図４は、本発明を適用した通信システムの一実施の形態の他の構成を示すブロック図である。
【００６８】
なお、図４では、図１と同様の箇所には、同一の符号が付してあり、処理が同じ部分に関しては、その説明は繰り返しになるので省略する。この例においては、図１と比較すると、TCP/IP処理部２２およびACK保持部２４の代わりに、TCP/IP処理部４１およびACK保持部４２がそれぞれ設けられている。
【００６９】
TCP/IP処理部４１は、図１のTCP/IP処理部２２と基本的に同様の機能を有しているが、任意のタイミングで、ACK保持部４２に対してACK処理要求を通知する機能をさらに有している点が異なっている。
【００７０】
ここに、ACK処理要求とは、ACK保持部４２に保持されている最新のACKパケットを取得する際に、TCP/IP処理部４１からACK保持部４２に通知される要求である。従って、TCP/IP処理部４１は、ACK処理要求をACK保持部４２に通知することで、ACK保持部４２に保持されている最新のACKパケットを取得できる。
【００７１】
なお、このACK処理要求であるが、例えば、送信パフォーマンスを上げたい場合には、要求の頻度をまばらにする必要があり、また、通信のロバスト性を上げたい場合には、要求の頻度を密にする必要があるなど、それらはトレードオフの関係にある。また、送信側または受信側のハードウェアの性能や、ネットワークのスループットなどにも影響を受ける。従って、かかる要求頻度は、設計者により最適な値が適宜設定される。
【００７２】
ACK保持部４２は、送受信部２３から供給されるACKパケットを保持し、TCP/IP処理部４１からのACK処理要求に応じて、保持している最新のACKパケットをTCP/IP処理部４１に渡す。
【００７３】
なお、図４の送信装置１１においては、ACK処理要求に応じてACKパケットがTCP/IP処理部４１に渡されるため、最大ACK保持数およびACK保持タイマを設定する必要はないが、図１の送信装置１１と同様に、それらのパラメータを設定する構成としても勿論よい。その場合、ACK保持部４２においては、ACK処理要求が通知された場合と、保持しているACKパケットに連続しない次のACKパケットを受信した場合の他に、最新のACKパケットのACK保持タイマによるカウントが一定の時間を経過した場合、または、ACK保持数が最大ACK保持数に達した場合には、保持している最新のACKパケットがTCP/IP処理部４１に渡される。
【００７４】
また、図４の通信システムにおいて、その他の構成は、図１に示した通信システムと同様である。
【００７５】
次に、図４の送信装置１１で行われる送信処理について説明する。
【００７６】
かかる送信処理は、上述した、図２のフローチャートで説明した、図１の送信装置１１による送信処理と比べると、ステップＳ５およびステップＳ６の処理が異なっている。従って、以下、図４のACK保持部４２によって行われる、図２のステップＳ５に対応する処理と、図４のTCP/IP処理部４１によって行われる、図２のステップＳ６に対応する処理について説明する。
【００７７】
すなわち、図２のステップＳ１乃至ステップＳ４の処理によって、図１の送信装置１１と同様に、図４の送信装置１１によって送信されたパケットが受信装置１２に受信されると、受信確認応答としてのACKパケットが送信される。そして、ACKパケットは、送信装置１１によって受信される。
【００７８】
すると、図２のステップＳ５に対応するACK保持処理として、図４のACK保持部４２によって、図５のフローチャートに示す処理が実行される。すなわち、図５のフローチャートに示す処理は、図２のステップＳ５に対応する処理となる。
【００７９】
ステップＳ４１ないしステップＳ４４、ステップＳ４８、およびステップＳ４９においては、図３のステップＳ１１ないしステップＳ１４、ステップＳ１９、およびステップＳ２０と同様に、ACK保持部４２によって、ACK保持機能が無効となっている場合、取得したパケットが通信相手からのACKパケットでない場合、および、通信相手からのACKパケットであって、TCPオプション、ACKフラグ以外のTCPコントロールフラグが付いている場合には、受信したACKパケットが、保持されずに、そのまま、TCP/IP処理部４１に渡される。
【００８０】
一方、ステップＳ４９において、まだACKパケットを保持していない場合であって、そのACKパケットに、TCPオプション、ACKフラグ以外のTCPコントロールフラグが付いていないと判定された場合、ステップＳ５０において、ACK保持部４２は、受信したACKパケットを最新のACKパケットとして保持する。なお、ステップＳ５０においては、図３のステップＳ２１とは異なり、ACK保持タイマをセットする必要はないので、かかる処理は行われない。
【００８１】
ステップＳ４５、ステップＳ４６、およびステップＳ５１においては、図３のステップＳ１５、ステップＳ１６、およびステップＳ２２と同様に、ACK保持部４２によって、取得したACKパケットが保持しているACKパケットに連続するACKパケットではない場合、保持しているACKパケットと、最新のACKパケットがTCP/IP処理部４１に渡され、保持しているACKパケットに連続するACKパケットである場合、TCPオプション、ACKフラグ以外のTCPコントロールフラグが付いているか否かが判定される。そして、TCPオプション、ACKフラグ以外のTCPコントロールフラグが付いていると判定された場合、ステップＳ５１において、ACK保持部４２は、保持しているACKパケットと、最新のACKパケットをTCP/IP処理部４１に渡す。
【００８２】
一方、TCPオプション、ACKフラグ以外のTCPコントロールフラグが付いていないと判定された場合、ステップＳ４７において、ACK保持部４２は、受信したACKパケットを、最新のACKパケットとして保持する。なお、ステップＳ４７においては、図３のステップＳ１８の処理とは異なり、ACK保持タイマをセットしたり、ACK保持数をカウントする必要がないので、かかる処理は行われない。
【００８３】
このように、図４のACK保持部４２においては、図１のACK保持部２４と同様に、取得したACKパケットを保持する処理が行われるが、自ら保持しているACKパケットを渡す必要がないので、ACK保持タイマやACK保持数を制御する処理は行われないことになる。
【００８４】
図２のフローチャートに戻り、ステップＳ６において、図４のTCP/IP処理部４１によって、ACKパケットの受信処理が行われるが、かかる処理としては、図６のフローチャートに示す処理が行われる。すなわち、図６のフローチャートに示す処理は、図２のステップＳ６に対応する処理となる。
【００８５】
ステップＳ６１において、TCP/IP処理部４１は、例えば、TCP/IP処理部４１内で行われる一送信単位の処理が終了したときなどの任意のタイミングで、ACK処理要求をACK保持部４２に通知する。すると、かかる要求に応じてACK保持部４２からACKパケットが渡されるので、TCP/IP処理部４１は、ACK保持部４２に保持されていたACKパケットを取得する。
【００８６】
ステップＳ６２において、TCP/IP処理部４１は、ACK保持部４２から渡されたACKパケットに格納された情報から送信が完了したデータの範囲を認識し、送信済みのデータを破棄するなどのACKパケットの受信処理を行う。その後、処理は、ステップＳ６１に戻り、ステップＳ６１およびステップＳ６２の処理が繰り返される。
【００８７】
このように、ACKパケットの受信処理を行うTCP/IP処理部４１からのACK処理要求に応じて、ACK保持部４２がACKパケットをTCP/IP処理部４１に渡すことで、ACKパケットの受信処理が行われる。
【００８８】
以上のように、本発明によれば、データ受信側から受け取るACKパケットのACKパケットの受信処理を行うブロックへの供給を制限することができるので、かかる処理の処理量を軽減させることが可能となり、結果として、TCP/IP通信速度を向上させることができる。このことは、特に、組み込みCPU等の非力なCPUを備えた機器において、より顕著な効果として現れる。
【００８９】
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータ等に、プログラム記録媒体からインストールされる。
【００９０】
図７は、上述した一連の処理をプログラムにより実行するパーソナルコンピュータの構成の例を示すブロック図である。CPU１１１は、ROM（Read Only Memory）１１２、または記録部１１８に記録されているプログラムに従って各種の処理を実行する。RAM（Random Access Memory）１１３には、CPU１１１が実行するプログラムやデータ等が適宜記憶される。これらのCPU１１１、ROM１１２、およびRAM１１３は、バス１１４により相互に接続されている。
【００９１】
CPU１１１にはまた、バス１１４を介して入出力インターフェース１１５が接続されている。入出力インターフェース１１５には、マイクロホン等よりなる入力部１１６、ディスプレイ、スピーカ等よりなる出力部１１７が接続されている。CPU１１１は、入力部１１６から入力される指令に対応して各種の処理を実行する。そして、CPU１１１は、処理の結果を出力部１１７に出力する。
【００９２】
入出力インターフェース１１５に接続されている記録部１１８は、例えばハードディスクからなり、CPU１１１が実行するプログラムや各種のデータを記録する。通信部１１９は、インターネットやローカルエリアネットワーク等のネットワークを介して外部の装置と通信する。
【００９３】
また、通信部１１９を介してプログラムを取得し、記録部１１８に記録してもよい。
【００９４】
入出力インターフェース１１５に接続されているドライブ１２０は、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリ等のリムーバブルメディア１２１が装着されたとき、それらを駆動し、そこに記録されているプログラムやデータ等を取得する。取得されたプログラムやデータは、必要に応じて記録部１１８に転送され、記録される。
【００９５】
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを格納するプログラム記録媒体は、図７に示すように、磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)を含む）、光磁気ディスク、もしくは半導体メモリ等よりなるパッケージメディアであるリムーバブルメディア１２１、または、プログラムが一時的もしくは永続的に格納されるROM１１２や、記録部１１８を構成するハードディスク等により構成される。プログラム記録媒体へのプログラムの格納は、必要に応じてルータ、モデム等のインターフェースである通信部１１９を介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を利用して行われる。
【００９６】
なお、本明細書において、記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【００９７】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【００９８】
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【００９９】
【図１】本発明を適用した通信システムの一実施の形態を示すブロック図である。
【図２】送信処理を説明するフローチャートである。
【図３】ACK保持処理を説明するフローチャートである。
【図４】本発明を適用した通信システムの一実施の形態を示すブロック図である。
【図５】ACK保持処理を説明するフローチャートである。
【図６】ACKパケットの受信処理を説明するフローチャートである。
【図７】コンピュータの構成例を示すブロック図である。
【符号の説明】
【０１００】
１１  送信装置，  １２  受信装置，  １３  ネットワーク，  ２１  ネットワークアプリケーション，  ２２  TCP/IP処理部，  ２３  送受信部，  ２４  ACK保持部，  ３１  TCP/IP処理部，  ３２  送受信部，  ４１  TCP/IP処理部，  ４２  ACK保持部
【図１】
0004513036.tif 000002
【図２】
0004513036.tif 000003
【図３】
0004513036.tif 000004
【図４】
0004513036.tif 000005
【図５】
0004513036.tif 000006
【図６】
0004513036.tif 000007
【図７】
0004513036.tif 000008