(57)【要約】【課題】パケットのヘッダに、任意の情報を追加する。【解決手段】クライアント１３の追加情報添加部４０は、TCPバッファ３３の空き容量に基づいて、ACKパケットのTCPヘッダに、追加情報を追加するか否かを判定する。TCP処理部３２は、追加情報添加部４０の判定結果に従って、追加情報が追加されたTCPヘッダを生成し、そのTCPヘッダを含むACKパケットを送信する。サーバ１２のTCP処理部２４は、ACKパケットを受信し、ACKパケットのTCPヘッダを追加情報抽出部２７に供給する。追加情報抽出部２７は、TCPヘッダのTCPヘッダに記述される情報に基づいて、追加情報が追加されているか否かを判定し、追加情報が追加されていると判定した場合、TCPヘッダから追加情報を抽出する。本発明は、例えば、TCPを用いて通信を行う通信装置に適用できる。【選択図】図１
2008278240.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して、第１の通信装置と第２の通信装置とが通信する通信システムにおいて、
前記第１の通信装置は、
前記第２の通信装置から送信されてくるデータを、一時的に蓄積するバッファの空き容量を求める空き容量算出手段と、
前記空き容量算出手段が求めた空き容量に基づいて、前記データを受け取った旨の情報を前記第２の通信装置に送信するためのパケットのヘッダに、所定の追加情報を追加するか否かを判定する第１の判定手段と、
前記第１の判定手段により、前記パケットのヘッダに前記所定の追加情報を追加すると判定された場合、前記所定の追加情報が追加された前記ヘッダを生成する生成手段と、
前記生成手段が生成したヘッダを含む前記パケットを、前記第２の通信装置に送信する送信手段と
を備え、
前記第２の通信装置は、
前記データを受け取った旨の情報を送信するために、前記第１の通信装置から送信されてくるパケットを受信する受信手段と、
前記受信手段が受信したパケットのヘッダに記述されている前記第１の通信装置のバッファの空き容量を表す情報に基づいて、前記ヘッダに前記所定の追加情報が追加されているか否かを判定する第２の判定手段と、
前記第２の判定手段により、前記ヘッダに前記所定の追加情報が追加されていると判定された場合、前記ヘッダから前記所定の追加情報を抽出する抽出手段と
を備える
通信システム。
【請求項２】
ネットワークを介して、他の装置と通信する通信装置において、
前記他の装置から送信されてくるデータを、一時的に蓄積するバッファの空き容量を求める空き容量算出手段と、
前記空き容量算出手段が求めた前記空き容量に基づいて、前記データを受け取った旨の情報を前記他の装置に送信するためのパケットのヘッダに、所定の追加情報を追加するか否かを判定する判定手段と、
前記判定手段により、前記パケットのヘッダに前記所定の追加情報を追加すると判定された場合、前記所定の追加情報が追加されたヘッダを生成する生成手段と、
前記生成手段が生成したヘッダを含む前記パケットを、前記他の装置に送信する送信手段と
を備える通信装置。
【請求項３】
前記生成手段は、前記パケットのヘッダに配置される前記バッファの空き容量を表す情報を記述すべき領域に、前記バッファの空き容量を表す情報の一部を、前記所定の追加情報に置き換えた情報を記述することにより、前記所定の追加情報が追加された前記ヘッダを生成する
請求項２に記載の通信装置。
【請求項４】
前記判定手段により、前記パケットのヘッダに前記所定の追加情報を追加すると判定された場合、前記空き容量算出手段が求めた前記空き容量に基づいて、前記ヘッダに追加される前記所定の追加情報のサイズを決定する決定手段
をさらに備え、
前記生成手段は、前記決定手段により決定されたサイズに分割された前記所定の追加情報が追加されたヘッダを生成する
請求項２に記載の通信装置。
【請求項５】
前記他の装置から送信されてくるデータの到着時刻に基づいて、前記ネットワークの混雑状況を監視する受信状況監視手段
をさらに備え、
前記生成手段は、前記受信状況監視手段が前記ネットワークの混雑状況を監視した結果得られる前記ネットワークの混雑状況を表す情報が、前記所定の追加情報として追加されたヘッダを生成する
請求項２に記載の通信装置。
【請求項６】
前記通信装置が備えるCPU（Central Processing Unit）が処理を実行するにあたり、前記CPUに発生する負荷を監視する負荷監視手段
をさらに備え、
前記生成手段は、前記負荷監視手段が前記CPUに発生する負荷を監視した結果得られる前記CPUの負荷を表す情報が、前記所定の追加情報として追加されたヘッダを生成する
請求項２に記載の通信装置。
【請求項７】
前記所定の追加情報の送信に対応した装置であることを示す認証パターンを記憶する認証パターン記憶手段
をさらに備え、
前記生成手段は、前記認証パターン記憶手段に記憶されている前記認証パターンが、前記所定の追加情報として追加されたヘッダを生成する
請求項２に記載の通信装置。
【請求項８】
ネットワークを介して、他の装置と通信する通信方法において、
前記他の装置から送信されてくるデータを、一時的に蓄積するバッファの空き容量を求め、
前記空き容量に基づいて、前記データを受け取った旨の情報を前記他の装置に送信するためのパケットのヘッダに、所定の追加情報を追加するか否かを判定し、
前記パケットのヘッダに前記所定の追加情報を追加すると判定された場合、前記所定の追加情報が追加されたヘッダを生成し、
前記所定の追加情報が追加されたヘッダを含む前記パケットを、前記他の装置に送信する
ステップを含む通信方法。
【請求項９】
ネットワークを介して、他の装置と通信する処理をコンピュータに実行させるプログラムにおいて、
前記他の装置から送信されてくるデータを、一時的に蓄積するバッファの空き容量を求め、
前記空き容量に基づいて、前記データを受け取った旨の情報を前記他の装置に送信するためのパケットのヘッダに、所定の追加情報を追加するか否かを判定し、
前記パケットのヘッダに前記所定の追加情報を追加すると判定された場合、前記所定の追加情報が追加されたヘッダを生成し、
前記所定の追加情報が追加されたヘッダを含む前記パケットを、前記他の装置に送信する
ステップを含む処理をコンピュータに実行させるプログラム。
【請求項１０】
ネットワークを介して、他の装置と通信する通信装置において、
前記他の装置に対して送信したデータを受け取った旨の情報を送信するために、前記他の装置から送信されてくるパケットを受信する受信手段と、
前記受信手段が受信したパケットのヘッダに記述されている前記他の装置のバッファの空き容量を表す情報に基づいて、前記ヘッダに所定の追加情報が追加されているか否かを判定する判定手段と、
前記判定手段により、前記ヘッダに前記所定の追加情報が追加されていると判定された場合、前記ヘッダから前記所定の追加情報を抽出する抽出手段と
を備える通信装置。
【請求項１１】
前記パケットのヘッダに配置される前記バッファの空き容量を表す情報を記述すべき領域には、前記バッファの空き容量を表す情報の一部が、前記バッファの空き容量に応じて求められたサイズに分割された前記所定の追加情報に置き換えられて得られる情報が記述されており、
前記抽出手段は、前記バッファの空き容量を表す情報を記述すべき領域に記述されている情報に基づいて求められる前記所定の追加情報のサイズに応じて、前記ヘッダから前記所定の追加情報を抽出する
請求項１０に記載の通信装置。
【請求項１２】
前記所定の追加情報は、前記ネットワークの混雑状況を表す情報、または、前記他の装置が備えるCPUの負荷を表す情報であり、
前記所定の追加情報に基づいて、前記他の装置に送信するデータの転送レートを変更する変更手段
をさらに備える請求項１０に記載の通信装置。
【請求項１３】
前記所定の追加情報の送信に対応した装置であることを示す認証パターンを記憶する認証パターン記憶手段と、
前記抽出手段が前記ヘッダから抽出した追加情報が、前記認証パターンと一致するか否かを判定する認証パターン判定手段と
をさらに備え、
前記変更手段は、前記認証パターン判定手段が、前記追加情報が前記認証パターンと一致すると判定した場合、前記他の装置から以降に送信されてくる前記パケットのヘッダに追加されている前記追加情報としての前記ネットワークの混雑状況を表す情報、または、前記他の装置が備えるCPUの負荷を表す情報に基づいて、前記転送レートを変更する
請求項１２に記載の通信装置。
【請求項１４】
ネットワークを介して、他の装置と通信する通信方法において、
前記他の装置に対して送信したデータを受け取った旨の情報を送信するために、前記他の装置から送信されてくるパケットを受信し、
前記パケットのヘッダに記述されている前記他の装置のバッファの空き容量を表す情報に基づいて、前記ヘッダに所定の追加情報が追加されているか否かを判定し、
前記ヘッダに前記所定の追加情報が追加されていると判定された場合、前記ヘッダから前記所定の追加情報を抽出する
ステップを含む通信方法。
【請求項１５】
ネットワークを介して、他の装置と通信する処理をコンピュータに実行させるプログラムにおいて、
前記他の装置に対して送信したデータを受け取った旨の情報を送信するために、前記他の装置から送信されてくるパケットを受信し、
前記パケットのヘッダに記述されている前記他の装置のバッファの空き容量を表す情報に基づいて、前記ヘッダに所定の追加情報が追加されているか否かを判定し、
前記ヘッダに前記所定の追加情報が追加されていると判定された場合、前記ヘッダから前記所定の追加情報を抽出する
ステップを含む処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システム、通信装置、および通信方法、並びにプログラムに関し、特に、パケットのヘッダに、任意の情報を追加することができるようにした通信システム、通信装置、および通信方法、並びにプログラムに関する。
【背景技術】
【０００２】
従来、インターネットにおけるデータの転送を制御するプロトコルとして、TCP（Transmission Control Protocol）が、標準的に利用されている。
【０００３】
TCPは、例えば、転送中に欠損したパケットの再送を行うためのエラー訂正機能などを備え、通信品質の保証が必要となる用途で主に用いられるが、その反面、通信速度が比較に低速となる。従って、TCPは、リアルタイム性が要求されるデータストリームを転送するリアルタイム転送など、速度が重要となる用途には不向きであり、そのような用途には、UDP（User Datagram Protocol）などのプロトコルが用いられている。
【０００４】
ところで、ネットワークで輻輳が起こりにくいことが、ある程度保証されている環境では、パケットが欠落することは少ないので、TCPを用いて、リアルタイム転送を行うことも、十分に可能である。ところが、リアルタイム転送では、ネットワークの混雑状況などを監視し、その混雑状況などの情報をフィードバックする制御が行われる。即ち、サーバからクライアントへ、データストリームが転送されるのと並行して、クライアントからサーバへ、混雑状況などの情報が転送される必要がある。
【０００５】
例えば、リアルタイム転送に用いられるプロトコルであるRTP（Real-time Transport Protocol）は、RTPによるデータストリームの転送を制御するプロトコルであるRTCP（RTP Control Protocol）と組み合わされて用いられ、RTCPを用いて混雑状況などの情報が転送される。
【０００６】
また、TCPでも、クライアントからサーバへ、正常に受信したパケットのシーケンス番号などを通知するACK（Acknowledgement）パケットが送信される。このACKパケットのデータ部分に、混雑状況などの情報を記載すれば、クライアントからサーバへ混雑状況を転送することができるが、ACKパケットのデータ部分のデータは、TCPより上位層のアプリケーション層で処理されるため、アプリケーション層で混雑状況に対応することが必要となる。
【０００７】
ところで、例えば、ACKパケットのTCPヘッダに、混雑状況などの情報を追加することができれば、TCPで混雑状況に対応した制御を行うことができると考えられるが、TCPヘッダは、フォーマットが決まっているため、自由に変更することができない。
【０００８】
ここで、特許文献１には、RTPおよびRTCPを用いたデータパケット伝送方法において、伝送効率を向上させる技術が開示されている。
【０００９】
また、特許文献２には、ネットワークの状況に基づいて、符号化のパラメータを最適に設定し、データの伝送効率を向上させる技術が開示されている。
【００１０】
【特許文献１】特開２００３−２４４２２９号公報
【特許文献２】特開２００５−１５１６００号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
上述したように、TCPヘッダは、フォーマットが決まっているため、自由に変更することができず、TCPヘッダに混雑状況などの情報を追加した場合には、既存のTCPとの互換性を保持することが、困難であった。
【００１２】
本発明は、このような状況に鑑みてなされたものであり、既存のTCPとの互換性を保持したまま、パケットのTCPヘッダに、任意の情報を追加することができるようにするものである。
【課題を解決するための手段】
【００１３】
本発明の第１の側面の通信システムは、ネットワークを介して、第１の通信装置と第２の通信装置とが通信する通信システムであって、前記第１の通信装置は、前記第２の通信装置から送信されてくるデータを、一時的に蓄積するバッファの空き容量を求める空き容量算出手段と、前記空き容量算出手段が求めた空き容量に基づいて、前記データを受け取った旨の情報を前記第２の通信装置に送信するためのパケットのヘッダに、所定の追加情報を追加するか否かを判定する第１の判定手段と、前記第１の判定手段により、前記パケットのヘッダに前記所定の追加情報を追加すると判定された場合、前記所定の追加情報が追加された前記ヘッダを生成する生成手段と、前記生成手段が生成したヘッダを含む前記パケットを、前記第２の通信装置に送信する送信手段とを備え、前記第２の通信装置は、前記データを受け取った旨の情報を送信するために、前記第１の通信装置から送信されてくるパケットを受信する受信手段と、前記受信手段が受信したパケットのヘッダに記述されている前記第１の通信装置のバッファの空き容量を表す情報に基づいて、前記ヘッダに前記所定の追加情報が追加されているか否かを判定する第２の判定手段と、前記第２の判定手段により、前記ヘッダに前記所定の追加情報が追加されていると判定された場合、前記ヘッダから前記所定の追加情報を抽出する抽出手段とを備える。
【００１４】
本発明の第１の側面においては、第１の通信装置では、第２の通信装置から送信されてくるデータを、一時的に蓄積するバッファの空き容量が求められ、その空き容量に基づいて、データを受け取った旨の情報を第２の通信装置に送信するためのパケットのヘッダに、所定の追加情報を追加するか否かが判定される。そして、パケットのヘッダに所定の追加情報を追加すると判定された場合、所定の追加情報が追加されたヘッダが生成され、そのヘッダを含むパケットが、第２の通信装置に送信される。一方、第２の通信装置では、データを受け取った旨の情報を送信するために、第１の通信装置から送信されてくるパケットが受信され、そのパケットのヘッダに記述されている第１の通信装置のバッファの空き容量を表す情報に基づいて、ヘッダに所定の追加情報が追加されているか否かが判定される。そして、ヘッダに所定の追加情報が追加されていると判定された場合、ヘッダから所定の追加情報が抽出される。
【００１５】
本発明の第２の側面の通信装置は、ネットワークを介して、他の装置と通信する通信装置であって、前記他の装置から送信されてくるデータを、一時的に蓄積するバッファの空き容量を求める空き容量算出手段と、前記空き容量算出手段が求めた前記空き容量に基づいて、前記データを受け取った旨の情報を前記他の装置に送信するためのパケットのヘッダに、所定の追加情報を追加するか否かを判定する判定手段と、前記判定手段により、前記パケットのヘッダに前記所定の追加情報を追加すると判定された場合、前記所定の追加情報が追加されたヘッダを生成する生成手段と、前記生成手段が生成したヘッダを含む前記パケットを、前記他の装置に送信する送信手段とを備える。
【００１６】
本発明の第２の側面の通信方法またはプログラムは、ネットワークを介して、他の装置と通信する通信方法、または、他の装置と通信する処理をコンピュータに実行させるプログラムであって、前記他の装置から送信されてくるデータを、一時的に蓄積するバッファの空き容量を求め、前記空き容量に基づいて、前記データを受け取った旨の情報を前記他の装置に送信するためのパケットのヘッダに、所定の追加情報を追加するか否かを判定し、前記パケットのヘッダに前記所定の追加情報を追加すると判定された場合、前記所定の追加情報が追加されたヘッダを生成し、前記所定の追加情報が追加されたヘッダを含む前記パケットを、前記他の装置に送信するステップを含む。
【００１７】
本発明の第２の側面においては、他の装置から送信されてくるデータを、一時的に蓄積するバッファの空き容量が求められ、その空き容量に基づいて、データを受け取った旨の情報を他の装置に送信するためのパケットのヘッダに、所定の追加情報を追加するか否かが判定される。そして、パケットのヘッダに所定の追加情報を追加すると判定された場合、所定の追加情報が追加されたヘッダが生成され、所定の追加情報が追加されたヘッダを含むパケットが、他の装置に送信される。
【００１８】
本発明の第３の側面の通信装置は、ネットワークを介して、他の装置と通信する通信装置であって、前記他の装置に対して送信したデータを受け取った旨の情報を送信するために、前記他の装置から送信されてくるパケットを受信する受信手段と、前記受信手段が受信したパケットのヘッダに記述されている前記他の装置のバッファの空き容量を表す情報に基づいて、前記ヘッダに所定の追加情報が追加されているか否かを判定する判定手段と、前記判定手段により、前記ヘッダに前記所定の追加情報が追加されていると判定された場合、前記ヘッダから前記所定の追加情報を抽出する抽出手段とを備える。
【００１９】
本発明の第３の側面の通信方法またはプログラムは、ネットワークを介して、他の装置と通信する通信方法、または、他の装置と通信する処理をコンピュータに実行させるプログラムであって、前記他の装置に対して送信したデータを受け取った旨の情報を送信するために、前記他の装置から送信されてくるパケットを受信し、前記受信手段が受信したパケットのヘッダに記述されている前記他の装置のバッファの空き容量を表す情報に基づいて、前記ヘッダに所定の追加情報が追加されているか否かを判定し、前記判定手段により、前記ヘッダに前記所定の追加情報が追加されていると判定された場合、前記ヘッダから前記所定の追加情報を抽出するステップを含む。
【００２０】
本発明の第３の側面においては、他の装置に対して送信したデータを受け取った旨の情報を送信するために、他の装置から送信されてくるパケットが受信され、そのパケットのヘッダに記述されている他の装置のバッファの空き容量を表す情報に基づいて、ヘッダに所定の追加情報が追加されているか否かが判定される。そして、ヘッダに所定の追加情報が追加されていると判定された場合、ヘッダから所定の追加情報が抽出される。
【発明の効果】
【００２１】
本発明の第１乃至第３の側面によれば、パケットのヘッダに、任意の情報を追加することができる。
【発明を実施するための最良の形態】
【００２２】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書又は図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書又は図面に記載されていることを確認するためのものである。従って、明細書又は図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００２３】
本発明の第１の側面の通信システムは、ネットワークを介して、第１の通信装置と第２の通信装置とが通信する通信システムであって、
前記第１の通信装置（例えば、図１のクライアント１３）は、
前記第２の通信装置から送信されてくるデータを、一時的に蓄積するバッファの空き容量を求める空き容量算出手段（例えば、図５のステップＳ４１の処理を実行する図１のTCP処理部３２）と、
前記空き容量算出手段が求めた空き容量に基づいて、前記データを受け取った旨の情報を前記第２の通信装置に送信するためのパケットのヘッダに、所定の追加情報を追加するか否かを判定する第１の判定手段（例えば、図５のステップＳ４２の処理を実行する図１の追加情報添加部４０）と、
前記第１の判定手段により、前記パケットのヘッダに前記所定の追加情報を追加すると判定された場合、前記所定の追加情報が追加された前記ヘッダを生成する生成手段（例えば、図５のステップＳ４４の処理を実行する図１のTCP処理部３２）と、
前記生成手段が生成したヘッダを含む前記パケットを、前記第２の通信装置に送信する送信手段（例えば、図５のステップＳ４５の処理を実行する図１のIP処理部３１）と
を備え、
前記第２の通信装置（例えば、図１のサーバ１２）は、
前記データを受け取った旨の情報を送信するために、前記第１の通信装置から送信されてくるパケットを受信する受信手段（例えば、図６のステップＳ５１の処理を実行する図１のIP処理部２６）と、
前記受信手段が受信したパケットのヘッダに記述されている前記第１の通信装置のバッファの空き容量を表す情報に基づいて、前記ヘッダに前記所定の追加情報が追加されているか否かを判定する第２の判定手段（例えば、図６のステップＳ５３の処理を実行する図１の追加情報抽出部２７）と、
前記第２の判定手段により、前記ヘッダに前記所定の追加情報が追加されていると判定された場合、前記ヘッダから前記所定の追加情報を抽出する抽出手段（例えば、図６のステップＳ５４の処理を実行する図１の追加情報抽出部２７）と
を備える。
【００２４】
本発明の第２の側面の通信装置は、ネットワークを介して、他の装置と通信する通信装置であって、
前記他の装置から送信されてくるデータを、一時的に蓄積するバッファの空き容量を求める空き容量算出手段（例えば、図５のステップＳ４１の処理を実行する図１のTCP処理部３２）と、
前記空き容量算出手段が求めた前記空き容量に基づいて、前記データを受け取った旨の情報を前記他の装置に送信するためのパケットのヘッダに、所定の追加情報を追加するか否かを判定する判定手段（例えば、図５のステップＳ４２の処理を実行する図１の追加情報添加部４０）と、
前記判定手段により、前記パケットのヘッダに前記所定の追加情報を追加すると判定された場合、前記所定の追加情報が追加されたヘッダを生成する生成手段（例えば、図５のステップＳ４４の処理を実行する図１のTCP処理部３２）と、
前記生成手段が生成したヘッダを含む前記パケットを、前記他の装置に送信する送信手段（例えば、図５のステップＳ４５の処理を実行する図１のIP処理部３１）と
を備える。
【００２５】
また、本発明の第２の側面の通信装置は、
前記判定手段により、前記パケットのヘッダに前記所定の追加情報を追加すると判定された場合、前記空き容量算出手段が求めた前記空き容量に基づいて、前記ヘッダに追加される前記所定の追加情報のサイズを決定する決定手段（例えば、図５のステップＳ４３の処理を実行する図１の追加情報添加部４０）
をさらに備えることができ、
前記生成手段は、前記決定手段により決定されたサイズに分割された前記所定の追加情報が追加されたヘッダを生成する。
【００２６】
また、本発明の第２の側面の通信装置は、
前記他の装置から送信されてくるデータの到着時刻に基づいて、前記ネットワークの混雑状況を監視する受信状況監視手段（例えば、図１の受信状況監視部３９）
をさらに備えることができ、
前記生成手段は、前記受信状況監視手段が前記ネットワークの混雑状況を監視した結果得られる前記ネットワークの混雑状況を表す情報が、前記所定の追加情報として追加されたヘッダを生成する。
【００２７】
また、本発明の第２の側面の通信装置は、
前記通信装置が備えるCPUが処理を実行するにあたり、前記CPUに発生する負荷を監視する負荷監視手段（例えば、図１のCPU負荷監視部３８）
をさらに備えることができ、
前記生成手段は、前記負荷監視手段が前記CPUに発生する負荷を監視した結果得られる前記CPUの負荷を表す情報が、前記所定の追加情報として追加されたヘッダを生成する。
【００２８】
また、本発明の第２の側面の通信装置は、
前記所定の追加情報の送信に対応した装置であることを示す認証パターンを記憶する認証パターン記憶手段（例えば、図７の認証パターン記憶部５１）
をさらに備えることができ、
前記生成手段は、前記認証パターン記憶手段に記憶されている前記認証パターンが、前記所定の追加情報として追加されたヘッダを生成する。
【００２９】
本発明の第２の側面の通信方法またはプログラムは、ネットワークを介して、他の装置と通信する通信方法、または、他の装置と通信する処理をコンピュータに実行させるプログラムであって、
前記他の装置から送信されてくるデータを、一時的に蓄積するバッファの空き容量を求め（例えば、図５のステップＳ４１）、
前記空き容量に基づいて、前記データを受け取った旨の情報を前記他の装置に送信するためのパケットのヘッダに、所定の追加情報を追加するか否かを判定し（例えば、図５のステップＳ４２）、
前記パケットのヘッダに前記所定の追加情報を追加すると判定された場合、前記所定の追加情報が追加されたヘッダを生成し（例えば、図５のステップＳ４４）、
前記所定の追加情報が追加されたヘッダを含む前記パケットを、前記他の装置に送信する（例えば、図５のステップＳ４５）
ステップを含む。
【００３０】
本発明の第３の側面の通信装置は、ネットワークを介して、他の装置と通信する通信装置であって、
前記他の装置に対して送信したデータを受け取った旨の情報を送信するために、前記他の装置から送信されてくるパケットを受信する受信手段（例えば、図６のステップＳ５１の処理を実行する図１のIP処理部２６）と、
前記受信手段が受信したパケットのヘッダに記述されている前記他の装置のバッファの空き容量を表す情報に基づいて、前記ヘッダに所定の追加情報が追加されているか否かを判定する判定手段（例えば、図６のステップＳ５３の処理を実行する図１の追加情報抽出部２７）と、
前記判定手段により、前記ヘッダに前記所定の追加情報が追加されていると判定された場合、前記ヘッダから前記所定の追加情報を抽出する抽出手段（例えば、図６のステップＳ５４の処理を実行する図１の追加情報抽出部２７）と
を備える。
【００３１】
また、本発明の第３の側面の通信装置は、
前記所定の追加情報は、前記ネットワークの混雑状況を表す情報、または、前記他の装置が備えるCPUの負荷を表す情報であり、
前記所定の追加情報に基づいて、前記他の装置に送信するデータの転送レートを変更する変更手段（例えば、図１の転送レート演算部２８）
をさらに備えることができる。
【００３２】
また、本発明の第３の側面の通信装置は、
前記所定の追加情報の送信に対応した装置であることを示す認証パターンを記憶する認証パターン記憶手段（例えば、図７の認証パターン記憶部５２）と、
前記抽出手段が前記ヘッダから抽出した追加情報が、前記認証パターンと一致するか否かを判定する認証パターン判定手段（例えば、図７の受信ビット列復元部５３）と
をさらに備えることができ、
前記変更手段は、前記認証パターン判定手段が、前記追加情報が前記認証パターンと一致すると判定した場合、前記他の装置から以降に送信されてくる前記パケットのヘッダに追加されている前記追加情報としての前記ネットワークの混雑状況を表す情報、または、前記他の装置が備えるCPUの負荷を表す情報に基づいて、前記転送レートを変更する。
【００３３】
本発明の第３の側面の通信方法またはプログラムは、ネットワークを介して、他の装置と通信する通信方法、または、他の装置と通信する処理をコンピュータに実行させるプログラムであって、
前記他の装置に対して送信したデータを受け取った旨の情報を送信するために、前記他の装置から送信されてくるパケットを受信し（例えば、図６のステップＳ５１）、
前記パケットのヘッダに記述されている前記他の装置のバッファの空き容量を表す情報に基づいて、前記ヘッダに所定の追加情報が追加されているか否かを判定し（例えば、図６のステップＳ５３）、
前記ヘッダに前記所定の追加情報が追加されていると判定された場合、前記ヘッダから前記所定の追加情報を抽出する（例えば、図６のステップＳ５４）
ステップを含む。
【００３４】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
【００３５】
図１は、本発明を適用した通信システム（システムとは、複数の装置が論理的に集合した物をいい、各構成の装置が同一筐体中にあるか否かは問わない）の一実施の形態の構成例を示すブロック図である。
【００３６】
図１において、通信システム１１は、サーバ１２、クライアント１３、およびネットワーク１４から構成される。
【００３７】
サーバ１２は、クライアント１３からの要求に応じて、画像や音声などのコンテンツを、ネットワーク１４を介して、クライアント１３に配信（提供）する。
【００３８】
クライアント１３は、サーバ１２から配信されるコンテンツを受信して、例えば、画像をディスプレイに表示し、音声をスピーカから出力する。また、サーバ１２は、コンテンツを複数のパケットに分割して送信しており、クライアント１３は、それらのパケットを正常に受信すると、パケットを正常に受信したことをクライアント１３に応答するために、正常に受信したパケットのシーケンス番号などを含むACKパケットを、サーバ１２に送信する。
【００３９】
ネットワーク１４は、Internetや、LAN（Local Area Network）、電話回線、CATV（cable television）などを含む各種のネットワークであり、サーバ１２とクライアント１３を接続する。
【００４０】
図１に示すように、サーバ１２は、コンテンツバッファ２１、転送レート変動圧縮部２２、HTTP（Hypertext Transfer Protocol）サーバ２３、TCP処理部２４、TCPバッファ２５、IP（Internet Protocol）処理部２６、追加情報抽出部２７、および転送レート演算部２８から構成される。
【００４１】
コンテンツバッファ２１には、サーバ１２が配信するコンテンツが蓄積されている。
【００４２】
転送レート変動圧縮部２２は、コンテンツバッファ２１からコンテンツを読み出し、転送レート演算部２８により算出された転送レートに応じて、そのコンテンツを圧縮し、HTTPサーバ２３に供給する。
【００４３】
HTTPサーバ２３は、WWW（World Wide Web）上でデータを送受信するのに用いられるプロトコルであるHTTPに従って、コンテンツを配信する処理を行う。HTTPサーバ２３は、転送レート変動圧縮部２２から供給されたコンテンツを、TCP処理部２４に供給する。
【００４４】
TCP処理部２４は、データを転送する手順を制御するプロトコルであるTCPに従って、HTTPサーバ２３から供給されたコンテンツを、所定のセグメントで分割し、分割されたコンテンツにTCPヘッダを付加してパケットを生成して、IP処理部２６に供給する。また、TCP処理部２４は、クライアント１３から送信されてくるACKパケットが、IP処理部２６から供給されると、ACKパケットのTCPヘッダを追加情報抽出部２７に供給する。
【００４５】
TCPバッファ２５は、TCP処理部２４がパケットを生成する処理などにおいて、一時的に蓄積する必要があるデータを蓄積する。
【００４６】
IP処理部２６は、データを転送する経路を制御するプロトコルであるIPに従って、TCP処理部２４から供給されたパケットに、宛先であるクライアント１３のアドレスを付加し、ネットワーク１４を介してクライアント１３に送信する。また、IP処理部２６は、サーバ１２のアドレスを宛先としたパケットがネットワーク１４を介して送信されてくると、そのパケットを受信して、TCP処理部２４に供給する。
【００４７】
追加情報抽出部２７には、ACKパケットのTCPヘッダが、TCP処理部２４から供給され、追加情報抽出部２７は、そのTCPヘッダから、クライアント１３がTCPヘッダに付加した付加情報を抽出し、転送レート演算部２８に供給する。TCPヘッダには、例えば、ネットワーク１４の混雑状況を表す情報などが、付加情報として付加されている。
【００４８】
転送レート演算部２８は、追加情報抽出部２７から供給される付加情報、例えば、ネットワーク１４の混雑状況を表す情報などに基づいて、コンテンツのリアルタイム転送に適正な転送レートを算出する。即ち、転送レート演算部２８は、ネットワーク１４が混雑していれば、転送レートを低くし、ネットワーク１４が混雑していなければ、転送レートを高くする。そして、転送レート演算部２８は、算出した結果得られる転送レートを、転送レート変動圧縮部２２に供給する。
【００４９】
クライアント１３は、IP処理部３１、TCP処理部３２、TCPバッファ３３、HTTPクライアント３４、バッファ３５、伸張部３６、出力部３７、CPU（Central Processing Unit）負荷監視部３８、受信状況監視部３９、および追加情報添加部４０から構成される。
【００５０】
IP処理部３１は、クライアント１３のアドレスを宛先としたパケットが、ネットワーク１４を介して送信されてくると、そのパケットを受信して、TCP処理部３２に供給する。また、IP処理部３１は、サーバ１２に送信すべきパケットがTCP処理部３２から供給されると、そのパケットにサーバ１２のアドレスを付加して送信する。
【００５１】
TCP処理部３２は、IP処理部３１から供給されたパケットに含まれているデータ、即ち、サーバ１２のTCP処理部２４により分割されたコンテンツを、順次、HTTPクライアント３４に供給する。また、TCP処理部３２は、正常に受信したパケットのシーケンス番号などを含むACKパケットを生成し、IP処理部３１を介してサーバ１２に送信する。
【００５２】
また、TCP処理部３２は、パケットがIP処理部３１から供給される速度と、そのパケットを処理してHTTPクライアント３４に供給する速度との間に差が生じているときなど、必要に応じて、IP処理部３１からのパケットを、一時的に、TCPバッファ３３に蓄積させる。
【００５３】
TCPバッファ３３は、TCP処理部３２から供給されるパケットを一時的に蓄積する。
【００５４】
HTTPクライアント３４は、HTTPに従って、TCP処理部３２から供給されるコンテンツ、即ち、サーバ１２から配信されてくるコンテンツを受け取る処理を行い、そのコンテンツを、バッファ３５に供給する。
【００５５】
バッファ３５は、HTTPクライアント３４から供給されたコンテンツを、一時的に蓄積する。
【００５６】
伸張部３６は、バッファ３５に蓄積されているコンテンツを、逐次読み出して伸張し、出力部３７に供給する。即ち、サーバ１２が配信するコンテンツは、転送レート変動圧縮部２２により圧縮されており、伸張部３６は、転送レート変動圧縮部２２により圧縮されたコンテンツを伸張する。
【００５７】
出力部３７は、ディスプレイやスピーカなどからなり、伸張部３６から供給されたコンテンツの画像を表示したり、そのコンテンツの音声を出力したりする。
【００５８】
CPU負荷監視部３８は、クライアント１３が備える図示しないCPUが、各種の処理を実行するにあたり発生する負荷を監視し、その負荷の大きさを表す情報を、受信状況監視部３９を介して追加情報添加部４０に供給する。
【００５９】
受信状況監視部３９は、例えば、TCP処理部３２が、ネットワーク１４を介して受信したパケットの到着時刻を記録し、その到着時刻のばらつきや、パケットの再送状況などに基づいて、ネットワーク１４の混雑状況を推定する。そして、受信状況監視部３９は、ネットワーク１４の混雑状況を表す情報、例えば、ネットワーク１４の混雑状況に応じて設定されている数値などを、追加情報添加部４０に供給する。
【００６０】
追加情報添加部４０は、TCP処理部３２が生成するACKパケットを参照し、そのACKパケットのTCPヘッダに配置されるウィンドウに記述されるウィンドウサイズに基づいて、TCPヘッダに追加情報を追加するか否かを判定する。ここで、ウィンドウサイズとは、TCPバッファ３３の空き容量を表す情報である。
【００６１】
即ち、追加情報添加部４０は、TCPバッファ３３の空き容量に基づいて、TCPヘッダに追加情報を追加するか否かを判定する。例えば、追加情報添加部４０は、TCPバッファ３３の空き容量が、所定の設定値以上であれば、TCPヘッダに追加情報を追加すると判定し、一方、TCPバッファ３３の空き容量が、所定の設定値以上でなければ、TCPヘッダに追加情報を追加しないと判定する。
【００６２】
そして、追加情報添加部４０は、TCPヘッダに配置されるウィンドウに、追加情報を記述すると判定した場合、後述の図４を参照して説明するように、ウィンドウサイズに応じて追加情報を分割し、その追加情報をTCP処理部３２に供給する。また、TCPヘッダに追加される追加情報は、受信状況監視部３９から追加情報添加部４０に供給されるネットワーク１４の混雑状況を表す情報、または、CPU負荷監視部３８から追加情報添加部４０に供給されるCPUの負荷の大きさを表す情報である。
【００６３】
これにより、TCP処理部３２は、追加情報添加部４０から供給された追加情報をTCPヘッダに追加する。具体的には、TCP処理部３２は、TCPバッファ３３の空き容量を表す情報の一部を追加情報に置き換えた情報を、TCPヘッダのウィンドウに記述することにより、追加情報をTCPヘッダに追加する。
【００６４】
以上のように構成される通信システム１１では、ネットワーク１４の混雑状況を表す情報などが追加情報として追加されたTCPヘッダを含むACKパケットが、クライアント１３からサーバ１２に転送され、サーバ１２は、その追加情報に基づいて、コンテンツの転送を制御する。
【００６５】
次に、図２は、図１の通信システム１１においてデータが転送される処理を説明するフローチャートである。
【００６６】
サーバ１２からクライアント１３へのコンテンツのリアルタイム転送が開始されるにあたり、ステップＳ１１において、サーバ１２の転送レート演算部２８は、初期値として設定されている転送レートを、転送レート変動圧縮部２２に供給し、処理はステップＳ１１からステップＳ１２に進む。
【００６７】
ステップＳ１２において、転送レート変動圧縮部２２は、コンテンツバッファ２１から、転送対象のコンテンツを読み出す。
【００６８】
ステップＳ１２の処理後、処理はステップＳ１３に進み、転送レート変動圧縮部２２は、ステップＳ１１で転送レート変動圧縮部２２から供給された初期値の転送レートに基づいた圧縮率で、そのコンテンツを圧縮する。転送レート変動圧縮部２２は、そのコンテンツをHTTPサーバ２３を介して、TCP処理部２４に供給し、処理はステップＳ１４に進む。
【００６９】
ステップＳ１４において、TCP処理部２４は、ステップＳ１３で転送レート変動圧縮部２２からHTTPサーバ２３を介して供給されたコンテンツを、所定のセグメントで分割し、分割されたコンテンツにTCPヘッダを付加してパケットを生成する。そして、TCP処理部２４は、そのパケットを、IP処理部２６に供給し、ネットワーク１４を介して、クライアント１３に送信させる。
【００７０】
ステップＳ１５において、クライアント１３のTCP処理部３２は、ステップＳ１４でサーバ１２から送信されてくるパケットを受信し、そのパケットに含まれているコンテンツを、HTTPクライアント３４およびバッファ３５を介して、伸張部３６に供給する。
【００７１】
ステップＳ１５の処理後、処理はステップＳ１６に進み、追加情報添加部４０は、クライアント１３が、ACKパケットのTCPヘッダに追加情報を追加して送信することに対応した装置であることを示す認証パターン（後述の図７で説明する認証パターン）を、TCP処理部３２に供給し、処理はステップＳ１７に進む。
【００７２】
ステップＳ１７において、TCP処理部３２は、クライアント１３に送信するACKパケットのTCPヘッダに、追加情報として、ステップＳ１６で追加情報添加部４０から供給された認証パターンを追加する。そして、TCP処理部３２は、そのACKパケットをIP処理部３１に供給し、ネットワーク１４を介して、サーバ１２に送信させる。
【００７３】
ステップＳ１８において、サーバ１２のTCP処理部２４は、ステップＳ１７でクライアント１３から送信されてくるACKパケットを、ネットワーク１４およびIP処理部２６を介して受信し、そのACKパケットのTCPヘッダを、追加情報抽出部２７に供給する。追加情報抽出部２７は、クライアント１３のTCP処理部３２がTCPヘッダに追加した追加情報を抽出する。
【００７４】
ここで、ステップＳ１７において、クライアント１３のTCP処理部３２は、認証パターンを追加情報として追加しており、サーバ１２では、TCPヘッダから抽出された認証パターンに基づいて、後述の図７を参照して説明するように、クライアント１３が、ACKパケットのTCPヘッダに追加情報を追加して送信することに対応した装置であることを認識する。
【００７５】
ステップＳ１８の処理後、処理はステップＳ１９に進む。ステップＳ１９乃至２２において、ステップＳ１２乃至１５での処理と同様に、パケットがサーバ１２からクライアント１３に転送される。また、ステップＳ２２の処理後、パケットがサーバ１２からクライアント１３に転送される同様の処理が、複数回行われ、処理はステップＳ２３に進む。
【００７６】
ステップＳ２３において、受信状況監視部３９は、ステップＳ２２からステップＳ２３までの間に、TCP処理部３２が受信した複数のパケットの到着時刻に基づき、ネットワーク１４の混雑状況を推定する。
【００７７】
ステップＳ２３の処理後、処理はステップＳ２４に進み、受信状況監視部３９は、ネットワーク１４の混雑状況を表す情報を追加情報添加部４０に供給し、処理はステップＳ２５に進む。
【００７８】
ステップＳ２５において、追加情報添加部４０は、ステップＳ２４で受信状況監視部３９から供給されるネットワーク１４の混雑状況を表す情報を、TCP処理部３２に供給する。
【００７９】
ステップＳ２５の処理後、処理はステップＳ２６に進み、TCP処理部３２は、クライアント１３に送信するACKパケットのTCPヘッダに、追加情報として、ステップＳ２５で追加情報添加部４０から供給されるネットワーク１４の混雑状況を表す情報を追加する。そして、TCP処理部３２は、そのACKパケットをIP処理部３１に供給し、ネットワーク１４を介して、サーバ１２に送信させる。
【００８０】
ステップＳ２７において、サーバ１２のTCP処理部２４は、ステップＳ２６でクライアント１３から送信されてくるACKパケットを、ネットワーク１４およびIP処理部２６を介して受信し、そのACKパケットのTCPヘッダを、追加情報抽出部２７に供給する。
【００８１】
ステップＳ２７の処理後、処理はステップＳ２８に進み、追加情報抽出部２７は、ステップＳ２７でTCP処理部２４から供給されたTCPヘッダから、追加情報を抽出する。即ち、追加情報抽出部２７は、ステップＳ２６でTCP処理部３２がTCPヘッダに追加したネットワーク１４の混雑状況を表す情報を、TCPヘッダから抽出する。追加情報抽出部２７は、TCPヘッダから抽出したネットワーク１４の混雑状況を表す情報を、転送レート演算部２８に供給し、処理はステップＳ２９に進む。
【００８２】
ステップＳ２９において、転送レート演算部２８は、ステップＳ２８で追加情報抽出部２７から供給されるネットワーク１４の混雑状況を表す情報に基づいて、コンテンツのリアルタイム転送を行うのに適正な転送レートを算出し、その結果得られる転送レートを、転送レート変動圧縮部２２に供給する。
【００８３】
ステップＳ２９の処理後、処理はステップＳ３０に進み、転送レート変動圧縮部２２は、コンテンツバッファ２１からコンテンツを読み出し、処理はステップＳ３１に進む。
【００８４】
ステップＳ３１において、転送レート変動圧縮部２２は、コンテンツを圧縮する圧縮率を、ステップＳ２９で転送レート演算部２８から供給された転送レートに基づいて変更し、コンテンツを圧縮する。転送レート演算部２８は、変更後の圧縮率で圧縮したコンテンツを、HTTPサーバ２３を介して、TCP処理部２４に供給し、処理はステップＳ３２に進む。
【００８５】
ステップＳ３２において、TCP処理部２４は、ステップＳ１４での処理と同様に、転送レート変動圧縮部２２から供給されたコンテンツを含むパケットを、IP処理部２６に供給し、ネットワーク１４を介して、クライアント１３に送信させる。
【００８６】
ステップＳ３３において、クライアント１３のTCP処理部３２は、ステップＳ３２でサーバ１２から送信されてくるパケットを受信し、ステップＳ１５での処理と同様に、そのパケットに含まれているコンテンツを、伸張部３６に供給する。
【００８７】
以上のように、サーバ１２では、クライアント１３から送信されてくるACKパケットのTCPヘッダに追加情報として追加されているネットワーク１４の混雑状況を表す情報に基づいて、コンテンツを転送する転送レートが算出され、その転送レートに応じた圧縮率でコンテンツが圧縮される。従って、例えば、ネットワーク１４が混雑しているときには、高い圧縮率でコンテンツを圧縮して送信することで、ネットワーク１４の混雑によりパケットの到着が遅れることを回避することができ、リアルタイム性を確保することができる。
【００８８】
次に、図３は、サーバ１２とクライアント１３との間で転送されるパケットのTCPヘッダのフォーマットを示す図である。
【００８９】
TCPヘッダの先頭には、１６ビットの送信元ポート番号（Source port）、および１６ビットの宛先ポート番号（Destination port）が配置される。送信元ポート番号には、パケットの送信元のポート番号を指定する値が記述され、宛先ポート番号には、パケットの宛先のポート番号を指定する値が記述される。
【００９０】
送信元ポート番号および宛先ポート番号に続いて、３２ビットのシーケンス番号（Sequence Number）が配置される。シーケンス番号には、パケットの順番を管理したり、パケットの抜けがないかを確認するための値が記述される。
【００９１】
シーケンス番号に続いて、３２ビットの確認応答番号（Acknowledgment Number）が配置される。確認応答番号には、受信側が正常に受信したパケットのシーケンス番号や、受信したデータのサイズなどからなる値が記述される。
【００９２】
確認応答番号に続いて、４ビットのデータオフセット（Data Offset）、６ビットの予約（Reserved）、１ビットのURG、１ビットのACK、１ビットのPSH、１ビットのRST、１ビットのSYN、１ビットのFIN、および１６ビットのウィンドウ（Window）が配置される。
【００９３】
データオフセットには、TCPヘッダの長さを示す値が記述され、予約は、用途の拡張のために確保された領域である。また、URG(Urgent Pointer：緊急ポインタ)には、緊急に処理されるべきデータが入っているか否かを表すフラグが入り、ACKには、ACKパケットであるか否かを表すフラグが入り、PSH（PUSH：プッシュ）には、データを最終的に受け取る装置にパケットを早急に送信させなければならないことを表すフラグが入る。また、RST（RESET：リセット）には、TCPコネクションを強制的に切断することを表すフラグが入り、SYN（Synchronize sequence numbers：同期シーケンスナンバー）には、TCPコネクションの確立を要求するときに用いられるフラグが入り、FINには、送信側が送信するデータがないことを表すフラグが入る。
【００９４】
そして、ウィンドウには、受け取り可能なデータの量を通知するための情報が記述される。具体的には、クライアント１３は、サーバ１２に送信するACKパケットのTCPヘッダに配置されるウィンドウに、TCPバッファ３３の空き容量を表す情報であるウィンドウサイズを記述する。
【００９５】
さらに、続いて、１６ビットのチェックサム（Checksum）、および１６ビットの緊急ポインタ（Urgent Pointer）が配置される。チェックサムには、パケット全体のデータの誤りの訂正に用いられる値が記述され、緊急ポインタには、緊急に処理すべきデータの位置を指定する情報が記述される。
【００９６】
チェックサムおよび緊急ポインタに続いて、オプション（Options）およびパディング（Padding）が配置される。オプションには、必要に応じて用いられるオプションのデータが記述され、パディングは、TCPヘッダが３２ビットで終わるようにするための詰め物が記述される。
【００９７】
そして、これらのTCPヘッダに続いて、データ（data）、例えば、サーバ１２がクライアント１３に送信するコンテンツが配置される。
【００９８】
次に、図４を参照して、TCPヘッダに追加される追加情報のサイズについて説明する。
【００９９】
上述したように、ACKパケットに含まれるTCPヘッダのウィンドウには、TCPバッファ３３の空き容量を表すウィンドウサイズが記述される。
【０１００】
図４の左側には、TCPバッファ３３の空き容量を表すウィンドウサイズであって、TCP処理部３２が、本来、ウィンドウに記述すべきウィンドウサイズ（以下、適宜、本来のウィンドウサイズと称する）が示されている。
【０１０１】
ところで、ウィンドウサイズが大きな値であるとき、即ち、TCPバッファ３３の空き容量が多いとき、その下位の値は、全体の値に比べて有用性が低くなる。
【０１０２】
即ち、サーバ１２のTCP処理部２４は、クライアント１３からのTCPヘッダのウィンドウに記述されているウィンドウサイズに基づいて、TCPバッファ３３の空き容量が少ないときには、TCPバッファ３３がオーバーフローしないように、パケットの転送を少なくするような制御を行う。一方、TCP処理部２４は、TCPバッファ３３の空き容量が多いときには、TCPバッファ３３のオーバーフローを考慮する必要はなく、そのような制御を行わない。
【０１０３】
つまり、TCPバッファ３３の空き容量が多いときには、TCPバッファ３３の空き容量が多いということがサーバ１２に伝わればよいので、ウィンドウサイズの上位の値が有用であり、その下位の値が正確に通知されなくても、サーバ１２のTCP処理部２４は、パケットの転送の制御を正常に行うことができる。
【０１０４】
従って、本来のウィンドウサイズに基づいて、追加情報のサイズを設定することができる。具体的には、図４に示すように、本来のウィンドウサイズと、追加情報のサイズとの対応関係が設定される。
【０１０５】
即ち、本来のウィンドウサイズが、8000乃至FFFFであるときには、追加情報のサイズは８ビットとされ、本来のウィンドウサイズが、4000乃至7FFFであるときには、追加情報のサイズは７ビットとされる。また、本来のウィンドウサイズが、2000乃至3FFFであるときには、追加情報のサイズは６ビットとされ、本来のウィンドウサイズが、1000乃至1FFFであるときには、追加情報のサイズは５ビットとされ、本来のウィンドウサイズが、0800乃至0FFFであるときには、追加情報のサイズは４ビットとされる。また、本来のウィンドウサイズが、0000乃至07FFであるときには、追加情報のサイズは０ビットされ、即ち、追加情報は追加されない。
【０１０６】
そして、追加情報添加部４０は、本来のウィンドウサイズと、追加情報のサイズとの対応関係に基づいて、ウィンドウに記述される追加情報を分割して、TCP処理部３２に供給し、TCP処理部３２は、本来のウィンドウサイズの下位の値を、追加情報添加部４０からの分割された追加情報に置き換えた情報を、TCPヘッダのウィンドウに記述する。
【０１０７】
また、本来のウィンドウサイズと、追加情報のサイズとの対応関係は、サーバ１２の追加情報抽出部２７にも記憶されている。TCP処理部２４は、クライアント１３から送信されてくるACKパケットのTCPヘッダを追加情報抽出部２７に供給し、追加情報抽出部２７は、そのTCPヘッダのウィンドウに記述されている情報の上位のビットに基づいて、TCPヘッダに追加情報が追加されているか否かを判定する。そして、追加情報抽出部２７は、TCPヘッダに追加情報が追加されていると判定した場合、本来のウィンドウサイズと追加情報のサイズとの対応関係を参照して、追加情報のサイズを求め、TCPヘッダから追加情報を抽出する。
【０１０８】
このようにして、クライアント１３は、ACKパケットのTCPヘッダに適切なサイズの追加情報を追加し、そのACKパケットをサーバ１２に送信する。そして、サーバ１２は、クライアント１３からのACKパケットに含まれるTCPヘッダのウィンドウに記述されている情報に基づいて、追加情報を抽出する。
【０１０９】
次に、図５は、図１のクライアント１３が、TCPヘッダに追加情報を追加する処理を説明するフローチャートである。
【０１１０】
クライアント１３が、サーバ１２にACKパケットを送信するタイミングに応じて処理が開始され、ステップＳ４１において、TCP処理部３２は、TCPバッファ３３の空き容量に基づいて、本来のウィンドウサイズを算出し、処理はステップＳ４２に進む。
【０１１１】
ステップＳ４２において、追加情報添加部４０は、ステップＳ４１でTCP処理部３２が算出した本来のウィンドウサイズに基づいて、ACKパケットに含まれるTCPヘッダに、追加情報を追加するか否かを判定する。例えば、図４を参照して説明したように、追加情報添加部４０は、本来のウィンドウサイズが、0800乃至FFFFの範囲内であれば、TCPヘッダに追加情報を追加すると判定し、本来のウィンドウサイズが、0000乃至07FFの範囲内であれば、TCPヘッダに追加情報を追加しないと判定する。
【０１１２】
ステップＳ４２において、追加情報添加部４０が、TCPヘッダのウィンドウに追加情報を追加すると判定した場合、処理はステップＳ４３に進み、一方、TCPヘッダのウィンドウに追加情報を追加しないと判定した場合、処理はステップＳ４１に戻り、以下、同様の処理が繰り返される。
【０１１３】
ステップＳ４３において、追加情報添加部４０は、本来のウィンドウサイズと追加情報のサイズとの対応関係（図４）を参照し、ステップＳ４１でTCP処理部３２が算出した本来のウィンドウサイズに基づいて、TCPヘッダに追加する追加情報のサイズを決定する。そして、追加情報添加部４０は、追加情報を、そのサイズに分割して、TCP処理部３２に供給し、処理はステップＳ４４に進む。
【０１１４】
ステップＳ４４において、TCP処理部３２は、ステップＳ４３で追加情報添加部４０から供給された追加情報を、TCPヘッダに追加し、そのTCPヘッダを含むACKパケットを生成する。即ち、TCP処理部３２は、ステップＳ４１で算出した本来のウィンドウサイズの下位の値を、追加情報添加部４０から供給された追加情報に置き換えた情報を、TCPヘッダのウィンドウに記述する。
【０１１５】
ステップＳ４４の処理後、処理はステップＳ４５に進み、TCP処理部３２は、ステップＳ４４で生成したACKパケットをIP処理部３１に供給する。IP処理部３１は、TCP処理部３２から供給されたACKパケットを、ネットワーク１４を介して、サーバ１２に送信し、処理はステップＳ４１に戻り、以下、同様の処理が繰り返される。
【０１１６】
次に、図６は、図１のサーバ１２が、TCPヘッダに追加されている追加情報を抽出する処理を説明するフローチャートである。
【０１１７】
クライアント１３が、図５のステップＳ４５でACKパケットを送信すると、ステップＳ５１において、IP処理部２６は、クライアント１３からネットワーク１４を介して送信されてくるACKパケットを受信し、TCP処理部２４に供給する。
【０１１８】
ステップＳ５１の処理後、処理はステップＳ５２に進み、TCP処理部２４は、ステップＳ５１でIP処理部２６から供給されたACKパケットのTCPヘッダを、追加情報抽出部２７に供給し、処理はステップＳ５３に進む。
【０１１９】
ステップＳ５３において、追加情報抽出部２７は、ステップＳ５２でTCP処理部２４から供給されたTCPヘッダに、追加情報が追加されているか否かを判定する。例えば、追加情報抽出部２７は、TCPヘッダのウィンドウに記述されている情報が、0800乃至FFFFの範囲内であれば、TCPヘッダに追加情報が追加されていると判定し、TCPヘッダのウィンドウに記述されている情報が、0000乃至07FFの範囲内であれば、TCPヘッダに追加情報が追加されていないと判定する。
【０１２０】
ステップＳ５３において、追加情報抽出部２７が、TCPヘッダに追加情報が追加されていると判定した場合、処理はステップＳ５４に進み、一方、TCPヘッダに追加情報が追加されていないと判定した場合、処理はステップＳ５１に戻り、以下、同様の処理が繰り返される。
【０１２１】
ステップＳ５４において、追加情報抽出部２７は、TCPヘッダのウィンドウに記述されている情報と追加情報のサイズとの対応関係（図４）を参照し、TCPヘッダに記述されている情報に基づいて、抽出すべき追加情報のサイズを決定する。そして、追加情報抽出部２７は、TCPヘッダから追加情報を抽出して、転送レート演算部２８に供給する。
【０１２２】
ステップＳ５４の処理後、処理はステップＳ５５に進み、転送レート演算部２８は、ステップＳ５４で追加情報抽出部２７から供給された追加情報に基づいて、例えば、ネットワーク１４の混雑状況を表す情報などに基づいて、コンテンツのリアルタイム転送に適正な転送レートを算出する。なお、TCPヘッダに追加されている追加情報は、サイズに応じて分割されており、転送レート演算部２８は、分割された追加情報を復元することにより、ネットワーク１４の混雑状況を表す情報などを取得する。
【０１２３】
そして、転送レート演算部２８は、その転送レートを転送レート変動圧縮部２２に供給し、これにより、転送レート変動圧縮部２２では転送レートが変更される。ステップＳ５５の処理後、処理はステップＳ５１に戻り、以下、同様の処理が繰り返される。
【０１２４】
以上のように、クライアント１３では、TCPヘッダに追加情報を追加することができ、サーバ１２では、TCPヘッダに追加されている追加情報を抽出することができる。また、TCPヘッダに配置されるウィンドウに記述されるウィンドウサイズの下位の一部を、追加情報に置き換えることにより、TCPヘッダに追加情報が追加されるので、TCPヘッダのフォーマットが変更されることはなく、従来の通信装置とのTCPを用いた通信の互換性は保持されている。
【０１２５】
即ち、追加情報が置き換えられるウィンドウサイズの下位の値は、上述したように、ウィンドウサイズの値が大きな値の時には、有用性が低くなるので、その下位の値を、追加情報に置き換えても、従来の通信装置とのTCPを用いた通信において、問題が生じることはない。
【０１２６】
そして、サーバ１２は、クライアント１３から送信されてくる追加情報、即ち、ネットワーク１４の混雑状況を表す情報などに基づいて、例えば、コンテンツのリアルタイム転送を行うのに適正な転送レートを求めることができる。即ち、サーバ１２は、TCPだけで、つまり、アプリケーションの変更を行うことなく、ネットワーク１４の混雑状況をフィードバックした通信の制御を行うことができる。
【０１２７】
ところで、サーバ１２は、例えば、クライアント１３がACKパケットのTCPヘッダに追加情報を追加して送信することに対応した装置でない場合、TCPヘッダのウィンドウに記述されたウィンドウサイズの下位の値は、本来のウィンドウサイズ、即ち、TCPバッファ３３の空き容量を表すウィンドウサイズであり、TCPヘッダから抽出した情報は、追加情報としての意味を持たないものである。
【０１２８】
即ち、クライアント１３がACKパケットのTCPヘッダに追加情報を追加して送信することに対応した装置である場合にのみ、TCPヘッダから抽出される情報は、追加情報としての意味を持つものであるので、サーバ１２は、TCPヘッダから抽出される情報に基づいて、転送レートの制御などを行う前に、クライアント１３が、ACKパケットのTCPヘッダに追加情報を追加して送信することに対応した装置であることを認識する必要がある。
【０１２９】
そこで、サーバ１２とクライアント１３とが、あらかじめ設定された認証パターンを記憶しておき、クライアント１３が、ネットワーク１４の混雑状況を表す情報などを追加情報として送信する前に、認証パターンを送信する（上述の図２のステップＳ１７の処理）ことで、サーバ１２は、TCPヘッダから抽出された情報が、認証パターンに一致したときに、それ以降に送信されてくる情報が、ネットワーク１４の混雑状況を表す情報などの追加情報であるとして転送レートの制御に用いることができる。
【０１３０】
次に、図７を参照して、クライアント１３が、サーバ１２に認証パターンを送信する処理について説明する。
【０１３１】
図７には、サーバ１２およびクライアント１３を構成するブロックのうちの、クライアント１３が認証パターンをサーバ１２に送信する処理の説明に必要なブロックが示されている。
【０１３２】
即ち、図７において、クライアント１３は、TCP処理部３２、TCPバッファ３３、追加情報添加部４０、および認証パターン記憶部５１から構成されており、サーバ１２は、TCP処理部２４、追加情報抽出部２７、認証パターン記憶部５２、および受信ビット列復元部５３から構成されている。
【０１３３】
認証パターン記憶部５１および５２には、あらかじめ設定された認証パターンがそれぞれ記憶されており、図７の例では、認証パターン「123456789ABC」が記憶されている。認証パターン記憶部５１に記憶されている認証パターンは、追加情報添加部４０により、追加情報のサイズに応じて分割され、サーバ１２に送信される。
【０１３４】
受信ビット列復元部５３には、追加情報抽出部２７がTCPヘッダから抽出した追加情報が供給され、受信ビット列復元部５３は、その追加情報、即ち、追加情報添加部４０により分割された追加情報を復元する。
【０１３５】
ここで、図７には、追加情報添加部４０により分割された認証パターンである追加情報が追加された４つのACKパケットＰ０乃至Ｐ３が示されている。図７において、TCP処理部３２内にあり、送信される前のACKパケットＰ０のウィンドウには、本来のウィンドウサイズ「F253」の下位のビットが、認証パターン「123456789ABC」のうちの一部である追加情報「9A」に置き換えられた情報が記述される。
【０１３６】
また、ACKパケットＰ０の１つ前に送信され、ネットワーク１４上にあるACKパケットＰ１のウィンドウには、認証パターン「123456789ABC」のうちの一部である追加情報「78」を含む情報が記述されている。また、ACKパケットＰ０の２つ前に送信され、TCP処理部２４にあるACKパケットＰ２のウィンドウには、認証パターン「123456789ABC」のうちの一部である追加情報「56」を含む情報が記述されており、ACKパケットＰ０の３つ前に送信され、追加情報抽出部２７にあるACKパケットＰ３のウィンドウには、認証パターン「123456789ABC」のうちの一部である追加情報「34」を含む情報が記述されている。
【０１３７】
追加情報抽出部２７は、ACKパケットから抽出した追加情報を受信ビット列復元部５３に供給し、受信ビット列復元部５３は、追加情報抽出部２７から供給される追加情報を順次記憶して、クライアント１３から分割されて送信されてくる認証パターンを復元する。
【０１３８】
図７において、受信ビット列復元部５３に記憶されている追加情報「12」および「34」が、左側から順に示されており、追加情報「34」に続いて追加情報抽出部２７から供給される追加情報、即ち、ACKパケットＰ０乃至Ｐ２から抽出される追加情報が、追加情報「34」の右側に配置されている破線の四角により示されている。
【０１３９】
そして、受信ビット列復元部５３は、追加情報を復元したビット列が、認証パターン記憶部５２に記憶されている認証パターンと一致するか否かを判定する。受信ビット列復元部５３が、追加情報を復元したビット列は、認証パターン記憶部５２に記憶されている認証パターンと一致すると判定した場合、サーバ１２は、クライアント１３が追加情報を送信することができる装置であると認識する。
【０１４０】
これにより、サーバ１２は、例えば、認証パターンの後に、クライアント１３から送信されてくる追加情報は、ネットワーク１４の混雑状況を表す情報などであるとして、ネットワーク１４の混雑状況に基づいた制御を行うことができる。
【０１４１】
また、図８を参照して、複数のACKパケットに含まれるTCPヘッダのウィンドウに、分割されて記述される認証パターンについて説明する。
【０１４２】
図８には、７つのACKパケットに含まれるTCPヘッダのウィンドウＷ１乃至Ｗ７についての、TCPバッファ３３の空き容量に基づいて求めた本来のウィンドウサイズと、その本来のウィンドウサイズの下位の値が、分割された認証パターンに置き換えられた情報（送信されるウィンドウサイズ）とが示されている。
【０１４３】
即ち、図８には、ウィンドウＷ１の本来のウィンドウサイズ「0xF685」、ウィンドウＷ２の本来のウィンドウサイズ「0xF663」、ウィンドウＷ３の本来のウィンドウサイズ「0xF656」、ウィンドウＷ４の本来のウィンドウサイズ「0xF436」、ウィンドウＷ５の本来のウィンドウサイズ「0xF253」、ウィンドウＷ６の本来のウィンドウサイズ「0xF052」、ウィンドウＷ７の本来のウィンドウサイズ「0xEF36」が記述されている。
【０１４４】
そして、ウィンドウＷ１乃至Ｗ７の本来のウィンドウサイズは、ぞれぞれ、図４に示される本来のウィンドウサイズ「8000〜FFFF」の範囲内であるので、下位の８ビットに、追加情報を追加することができる。
【０１４５】
即ち、ウィンドウＷ１には、認証パターン「123456789ABC」の先頭の一部「12」が追加されたウィンドウサイズ「0xF612」が記述され、ウィンドウＷ２には、認証パターン「123456789ABC」の次の一部「34」が追加されたウィンドウサイズ「0xF634」が記述される。以下、同様に、ウィンドウＷ３には、ウィンドウサイズ「0xF656」が記述され、ウィンドウＷ４には、ウィンドウサイズ「0xF478」が記述され、ウィンドウＷ５には、ウィンドウサイズ「0xF69A」が記述され、ウィンドウＷ６には、ウィンドウサイズ「0xF6BC」が記述される。
【０１４６】
これらのウィンドウＷ１乃至Ｗ７が、クライアント１３からサーバ１２に送信され、サーバ１２の追加情報抽出部２７において、ウィンドウＷ１乃至Ｗ７から追加情報が抽出される。そして、受信ビット列復元部５３において、ウィンドウＷ１乃至Ｗ６から抽出されて復元された値が、認証パターン記憶部５２に記憶されている認証パターン「123456789ABC」と一致するので、サーバ１２は、クライアント１３が、TCPヘッダに追加情報を追加して送信することに対応（サポート）した装置であることを認識することができる。
【０１４７】
なお、転送レート演算部２８は、ネットワーク１４の混雑状況に基づいて、コンテンツを転送する転送レートを算出する他、クライアント１３のCPUの負荷の大きさを表す情報に基づいて、CPUの負荷が、一定の値以上とならないように、コンテンツを転送する転送レートを算出することができる。
【０１４８】
また、クライアント１３は、CPU負荷監視部３８が出力するCPU負荷の大きさを表す情報を、付加情報としてサーバ１２に送信する他、例えば、クライアント１３が、CPU負荷の大きさを表す情報に基づいて転送レートを求め、その転送レートを、付加情報としてサーバ１２に送信するようにしてもよい。この場合、サーバ１２では、追加情報抽出部２７は、TCPヘッダから転送レートを抽出し、転送レート変動圧縮部２２に直接供給することができる。
【０１４９】
さらに、追加情報として送信される情報は、ネットワーク１４の混雑状況を表す情報、およびCPUの負荷の大きさを表す情報以外の情報でもよい。例えば、TCPヘッダに付加された付加情報は、TCPヘッダに追加情報を追加して送信することに対応していない他の装置では、単に、ウィンドウサイズの下位の値に過ぎず、他の装置は、追加情報を抽出し、その追加情報に基づいた処理を行うことはできない。即ち、TCPヘッダに追加情報を追加して送信することに対応している装置同士だけが、追加情報の送受信を行うことができる。
【０１５０】
そこで、追加情報として、サーバ１２とクライアント１３との間でのみ送受信したい情報を用いることができ、例えば、ネットワークが監視されているようなときでも、サーバ１２とクライアント１３との間で、秘密裏に情報を送受信することができる。また、例えば、追加情報を、電子透かしとして使用することもできる。
【０１５１】
上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
【０１５２】
図９は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
【０１５３】
コンピュータにおいて、CPU（Central Processing Unit）１０１，ROM（Read Only Memory）１０２，RAM（Random Access Memory）１０３は、バス１０４により相互に接続されている。
【０１５４】
バス１０４には、さらに、入出力インタフェース１０５が接続されている。入出力インタフェース１０５には、キーボード、マウス、マイクロホンなどよりなる入力部１０６、ディスプレイ、スピーカなどよりなる出力部１０７、ハードディスクや不揮発性のメモリなどよりなる記憶部１０８、ネットワークインタフェースなどよりなる通信部１０９、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア１１１を駆動するドライブ１１０が接続されている。
【０１５５】
以上のように構成されるコンピュータでは、CPU１０１が、例えば、記憶部１０８に記憶されているプログラムを、入出力インタフェース１０５及びバス１０４を介して、RAM１０３にロードして実行することにより、上述した一連の処理が行われる。
【０１５６】
コンピュータ（CPU１０１）が実行するプログラムは、例えば、磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)等）、光磁気ディスク、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア１１１に記録して、あるいは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供される。
【０１５７】
そして、プログラムは、リムーバブルメディア１１１をドライブ１１０に装着することにより、入出力インタフェース１０５を介して、記憶部１０８にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部１０９で受信し、記憶部１０８にインストールすることができる。その他、プログラムは、ROM１０２や記憶部１０８に、あらかじめインストールしておくことができる。
【０１５８】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０１５９】
また、上述のフローチャートを参照して説明した各処理は、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいは個別に実行される処理（例えば、並列処理あるいはオブジェクトによる処理）も含むものである。また、プログラムは、１のCPUにより処理されるものであっても良いし、複数のCPUによって分散処理されるものであっても良い。
【０１６０】
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【０１６１】
【図１】本発明を適用した通信システムの一実施の形態の構成例を示すブロック図である。
【図２】通信システム１１においてデータが転送される処理を説明するフローチャートである。
【図３】TCPヘッダのフォーマットを示す図である。
【図４】TCPヘッダのウィンドウに追加される追加情報のサイズを説明する図である。
【図５】クライアント１３が、TCPヘッダに追加情報を追加する処理を説明するフローチャートである。
【図６】サーバ１２が、TCPヘッダに追加されている追加情報を抽出する処理を説明するフローチャートである。
【図７】クライアント１３が、認証パターンをサーバ１２に送信する処理について説明する図である。
【図８】複数のACKパケットに含まれるTCPヘッダのウィンドウに、分割されて記述される認証パターンについて説明する図である。
【図９】本発明を適用したコンピュータの一実施の形態の構成例を示すブロック図である。
【符号の説明】
【０１６２】
１１  通信システム，  １２  サーバ，  １３  クライアント，  １４  ネットワーク，  ２１  コンテンツバッファ，  ２２  転送レート変動圧縮部，  ２３  HTTPサーバ，  ２４  TCP処理部，  ２５  TCPバッファ，  ２６  IP処理部，  ２７  追加情報抽出部，  ２８  転送レート演算部，  ３１  IP処理部，  ３２  TCP処理部，  ３３  TCPバッファ，  ３４  HTTPクライアント，  ３５  バッファ，  ３６  伸張部，  ３７  出力部，  ３８  CPU負荷監視部，  ３９  受信状況監視部，  ４０  追加情報添加部，  ５１および５２  認証パターン記憶部，  ５３  受信ビット列復元部
【図１】
2008278240.tif 000003
【図２】
2008278240.tif 000004
【図３】
2008278240.tif 000005
【図４】
2008278240.tif 000006
【図５】
2008278240.tif 000007
【図６】
2008278240.tif 000008
【図７】
2008278240.tif 000009
【図８】
2008278240.tif 000010
【図９】
2008278240.tif 000011