(57)【要約】【課題】受信プロトコル処理及び送信プロトコル処理を独立に動作させることが可能な通信技術を提供する。【解決手段】ネットワークインタフェース部５１は、ネットワークを介して他の通信装置との間でフレームを送受信する。受信プロトコル処理部５２は、ネットワークインタフェース部５１が受信した受信フレームに対して受信プロトコル処理を行い、制御情報を取得しこれを少なくとも含む制御情報を制御情報キュー５５に記憶させ、受信フレームにデータが含まれていればこれを受信バッファ５４に記憶させる。送信プロトコル処理部５３は、制御情報キュー５５から制御情報を取得し、当該制御情報に従って送信プロトコル処理を行って、確認応答を含むフレームやデータを含むフレームを生成してこれを、ネットワークインタフェース部５１を介して送信する。【選択図】        図１
2010206304.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して他の通信装置とフレームの送受信を行なうネットワークインタフェース手段と、
受信したフレームに含まれる制御情報を用い、フレームの送信制御を行うプロトコルにより規定されたプロトコル処理であって受信に係る当該プロトコル処理を行って、受信したフレームから前記制御情報を取得すると共に、当該フレームにデータが含まれる場合当該データを取得する受信プロトコル処理手段と、
前記他の通信装置の有する受信バッファのデータ容量を示す受信ウィンドウサイズ、前記他の通信装置が受信したデータの領域を示す領域情報、当該通信装置の前記受信ウィンドウサイズ及び当該通信装置が受信したデータの領域を示す領域情報のうち少なくとも１つを含む制御情報を記憶する制御情報キューと、
受信した前記フレームに含まれるデータを記憶する受信バッファと、
前記制御情報キューに記憶された前記制御情報を用いて、送信に係る前記プロトコル処理を行って、送信対象のフレームを生成し、前記ネットワークインタフェース手段を介して当該フレームを送信する送信プロトコル処理手段とを備える
ことを特徴とする通信装置。
【請求項２】
前記受信プロトコル処理手段は、受信したフレームに対して確認応答が要求されている場合、当該確認要求のためのフレームの送信要求を前記制御情報に含ませ、
前記制御情報キューは、前記フレームの送信要求を更に含む前記制御情報を記憶する
ことを特徴とする請求項１に記載の通信装置。
【請求項３】
当該通信装置の前記受信ウィンドウサイズの変化を検出する検出手段を更に備え、
前記制御情報キューは、前記受信ウィンドウサイズの変化が検出された場合に、当該受信ウィンドウサイズを含む前記制御情報を記憶する
ことを特徴とする請求項１又は２に記載の通信装置。
【請求項４】
前記領域情報は、前記他の通信装置が付与したシーケンス番号であり、
前記制御情報は、前記シーケンス番号を少なくとも含み、
前記送信プロトコル処理手段が前記プロトコル処理に用いた前記制御情報のうち、最大の前記シーケンス番号を含む前記制御情報を記憶する送信制御情報記憶手段と、
送信対象のデータを指定する送信データ指定手段とを更に備え、
前記送信プロトコル処理手段は、前記送信制御情報記憶手段に記憶された前記制御情報を用いて、指定された前記データに対して前記プロトコル処理を行って、当該データを含むフレームを生成し、前記ネットワークインタフェース手段を介して当該フレームを送信する
ことを特徴とする請求項１乃至３のいずれか一項に記載の通信装置。
【請求項５】
前記送信データ指定手段は、前記送信対象のデータのアドレスとデータ長とを指定し、
前記送信プロトコル処理手段は、指定された前記アドレスから指定された前記データ長のデータを取得して、前記送信制御情報記憶手段に記憶された前記制御情報を用いて、当該データに対して前記プロトコル処理を行って、当該データを含むフレームを生成し、前記ネットワークインタフェース手段を介して当該フレームを送信する
ことを特徴とする請求項４に記載の通信装置。
【請求項６】
前記受信プロトコル処理手段が取得した前記制御情報を前記制御情報キューに記憶させるか否かを判定する判定手段と、
前記判定手段の判定結果に応じて、前記制御情報を記憶する受信制御情報記憶手段とを更に備え、
前記判定手段は、前記受信制御情報記憶手段に記憶されている制御情報と、前記受信プロトコル処理手段が取得した前記制御情報とを比較することにより、前記受信プロトコル処理手段が取得した前記制御情報を前記制御情報キューに記憶させるか否かを判定し、
前記制御情報キューは、前記制御情報を前記制御情報キューに記憶させると判定された場合に、当該制御情報を記憶する
ことを特徴とする請求項１乃至３のいずれか一項に記載の通信装置。
【請求項７】
前記判定手段は、前記受信制御情報記憶手段に記憶されている制御情報と、前記受信プロトコル処理手段が取得した前記制御情報とが異なる場合に、前記受信プロトコル処理手段が取得した前記制御情報を前記制御情報キューに記憶させると判定し、
前記受信制御情報記憶手段は、前記制御情報を前記制御情報キューに記憶させると判定された場合に、当該制御情報を記憶する
ことを特徴とする請求請６に記載の通信装置。
【請求項８】
前記制御情報は、前記他の通信装置の前記受信ウィンドウサイズ及び当該他の通信装置の前記領域情報のうち少なくとも一方を含み、
前記判定手段は、前記受信制御情報記憶手段に記憶されている制御情報に含まれる前記他の通信装置の前記受信ウィンドウサイズと、前記受信プロトコル処理手段が取得した前記制御情報に含まれる前記他の通信装置の前記受信ウィンドウサイズとが異なる場合及び前記受信制御情報記憶手段に記憶されている制御情報に含まれる前記他の通信装置の前記領域情報と、前記受信プロトコル処理手段が取得した前記制御情報に含まれる前記他の通信装置の前記領域情報とが異なる場合のうち少なくとも一方の場合、前記受信プロトコル処理手段が取得した前記制御情報を前記制御情報キューに記憶させると判定する
ことを特徴とする請求項６又は７に記載の通信装置。
【請求項９】
前記受信プロトコル処理手段が取得した前記制御情報を前記制御情報キュー手段に記憶させるか否かを判定する判定手段と、
前記判定手段の判定結果に応じて、前記制御情報を記憶する受信制御情報記憶手段と、
前記判定手段に対して送信に係る前記プロトコル処理の完了を伝達する伝達手段と、
送信に係る前記プロトコル処理の処理状態を記憶する送信処理状態記憶手段と、
前記受信プロトコル処理手段が前記プロトコル処理を行う場合及び前記プロトコル処理の完了が伝達された場合のうち少なくとも一方の場合に、前記処理状態を適宜変更する変更手段とを更に備え、
前記判定手段は、適宜変更された前記処理状態に応じて、前記受信プロトコル処理手段が取得した前記制御情報を前記制御情報キューに記憶させるか否かを判定し、
前記制御情報キューは、前記制御情報を前記制御情報キューに記憶させると判定された場合に、当該制御情報を記憶する
ことを特徴とする請求項１乃至３のいずれか一項に記載の通信装置。
【請求項１０】
前記処理状態は、処理中を示す第１状態、未処理を示す第２状態及び予約済を示す第３状態のいずれかであり、
前記変更手段は、前記受信プロトコル処理手段が前記プロトコル処理を行う場合且つ前記処理状態が第１状態である場合、前記処理状態を第３状態に変更し、前記受信プロトコル処理手段が前記プロトコル処理を行う場合且つ前記処理状態が第２状態である場合、前記処理状態を第１状態に変更し、前記プロトコル処理の完了が伝達された場合且つ前記処理状態が第１状態である場合、前記処理状態を第２状態に変更し、前記プロトコル処理の完了が伝達された場合且つ前記処理状態が第３状態である場合、前記処理状態を第１状態に変更し、
前記判定手段は、適宜変更された前記処理状態が第１状態である場合、前記制御情報を前記制御情報キューに記憶させると判定し、当該処理状態が第３状態である場合、前記制御情報を前記受信制御情報記憶手段に記憶させると判定し、
前記受信制御情報記憶手段は、前記制御情報を前記受信制御情報記憶手段に記憶させると判定された場合に、当該制御情報を記憶する
ことを特徴とする請求請９に記載の通信装置。
【請求項１１】
前記制御情報は、当該通信装置の前記領域情報、当該通信装置の前記受信ウィンドウサイズ及び受信したフレームに対する確認要求のためのフレームの送信要求の少なくとも１つを含む
ことを特徴とする請求項９又は１０に記載の通信装置。
【請求項１２】
ネットワークインタフェース手段と、受信プロトコル処理手段と、制御情報記憶制御手段と、データ記憶制御手段と、送信プロトコル処理手段とを備える通信装置で実行される通信方法であって、
前記ネットワークインタフェース手段が、ネットワークを介して他の通信装置とフレームの送受信を行なうネットワークインタフェースステップと、
前記受信プロトコル処理手段が、受信したフレームに含まれる制御情報を用い、フレームの送信制御を行うプロトコルにより規定されたプロトコル処理であって受信に係る当該プロトコル処理を行って、受信したフレームから前記制御情報を取得すると共に、当該フレームにデータが含まれる場合当該データを取得する受信プロトコル処理ステップと、
前記制御情報記憶制御手段が、前記他の通信装置の有する受信バッファのデータ容量を示す受信ウィンドウサイズ、前記他の通信装置が受信したデータの領域を示す領域情報、当該通信装置の前記受信ウィンドウサイズ及び当該通信装置が受信したデータの領域を示す領域情報のうち少なくとも１つを含む制御情報を制御情報キューに記憶させる制御情報記憶制御ステップと、
前記データ記憶制御手段が、受信した前記フレームに含まれるデータを前記受信バッファに記憶させるデータ記憶制御ステップと、
前記送信プロトコル処理手段が、前記制御情報キューに記憶された前記制御情報を用いて、送信に係る前記プロトコル処理を行って、送信対象のフレームを生成し、前記ネットワークインタフェース手段を介して当該フレームを送信する送信プロトコル処理ステップとを含む
ことを特徴とする通信方法。
【請求項１３】
通信をコンピュータに実行させるためのプログラムであって、
ネットワークインタフェース手段が、ネットワークを介して他の通信装置とフレームの送受信を行なうネットワークインタフェース機能と、
受信プロトコル処理手段が、受信したフレームに含まれる制御情報を用い、フレームの送信制御を行うプロトコルにより規定されたプロトコル処理であって受信に係る当該プロトコル処理を行って、受信したフレームから前記制御情報を取得すると共に、当該フレームにデータが含まれる場合当該データを取得する受信プロトコル処理機能と、
制御情報記憶制御手段が、前記他の通信装置の有する受信バッファのデータ容量を示す受信ウィンドウサイズ、前記他の通信装置が受信したデータの領域を示す領域情報、当該通信装置の前記受信ウィンドウサイズ及び当該通信装置が受信したデータの領域を示す領域情報のうち少なくとも１つを含む制御情報を制御情報キューに記憶させる制御情報記憶機能と、
データ記憶制御手段が、受信した前記フレームに含まれるデータを前記受信バッファに記憶させるデータ記憶機能と、
送信プロトコル処理手段が、前記制御情報キューに記憶された前記制御情報を用い、送信に係る前記プロトコル処理を行って、送信対象のフレームを生成し、前記ネットワークインタフェース手段を介して当該フレームを送信する送信プロトコル処理機能とを含むことを特徴とする通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置、方法及びプログラムに関する。
【背景技術】
【０００２】
従来より、通信相手から受信したフレームの情報を用いてフレームの送信制御を行うプロトコルを用いてネットワークを介してデータの送受信を行う通信装置がある。このような通信装置の中には、例えば、特許文献１に開示されているように、汎用プロセッサを用いて受信に係るプロトコル処理（受信プロトコル処理という）と送信に係るプロトコル処理（送信プロトコル処理という）とを一連の動作で行なうものがあった。プロトコル処理とは、通信に用いられる各プロトコルによって規定される処理のことである。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−７２３７２公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、高速化などを目的として複数のプロセッサを用いてデータの送受信を実現する場合には、受信プロトコル処理及び送信プロトコル処理が独立に動作する。しかし、特許文献１の技術では、受信プロトコル処理及び送信プロトコル処理の同期を実現することができず、受信プロトコル処理及び送信プロトコル処理を独立に動作させることが困難であった。
【０００５】
本発明は、上記に鑑みてなされたものであって、受信プロトコル処理及び送信プロトコル処理を独立に動作させることが可能な通信装置、方法及びプログラムを提供することを目的とする。 
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明は、通信装置であって、ネットワークを介して他の通信装置とフレームの送受信を行なうネットワークインタフェース手段と、受信したフレームに含まれる制御情報を用い、フレームの送信制御を行うプロトコルにより規定されたプロトコル処理であって受信に係る当該プロトコル処理を行って、受信したフレームから前記制御情報を取得すると共に、当該フレームにデータが含まれる場合当該データを取得する受信プロトコル処理手段と、前記他の通信装置の有する受信バッファのデータ容量を示す受信ウィンドウサイズ、前記他の通信装置が受信したデータの領域を示す領域情報、当該通信装置の前記受信ウィンドウサイズ及び当該通信装置が受信したデータの領域を示す領域情報のうち少なくとも１つを含む制御情報を記憶する制御情報キューと、受信した前記フレームに含まれるデータを記憶する受信バッファと、前記制御情報キューに記憶された前記制御情報を用いて、送信に係る前記プロトコル処理を行って、送信対象のフレームを生成し、前記ネットワークインタフェース手段を介して当該フレームを送信する送信プロトコル処理手段とを備えることを特徴とする。
【０００７】
また、本発明は、ネットワークインタフェース手段と、受信プロトコル処理手段と、制御情報記憶制御手段と、データ記憶制御手段と、送信プロトコル処理手段とを備える通信装置で実行される通信方法であって、前記ネットワークインタフェース手段が、ネットワークを介して他の通信装置とフレームの送受信を行なうネットワークインタフェースステップと、前記受信プロトコル処理手段が、受信したフレームに含まれる制御情報を用い、フレームの送信制御を行うプロトコルにより規定されたプロトコル処理であって受信に係る当該プロトコル処理を行って、受信したフレームから前記制御情報を取得すると共に、当該フレームにデータが含まれる場合当該データを取得する受信プロトコルステップと、前記制御情報記憶制御手段が、前記他の通信装置の有する受信バッファのデータ容量を示す受信ウィンドウサイズ、前記他の通信装置が受信したデータの領域を示す領域情報、当該通信装置の前記受信ウィンドウサイズ及び当該通信装置が受信したデータの領域を示す領域情報のうち少なくとも１つを含む制御情報を制御情報キューに記憶させる制御情報記憶制御ステップと、前記データ記憶制御手段が、受信した前記フレームに含まれるデータを前記受信バッファに記憶させるデータ記憶制御ステップと、前記送信プロトコル処理手段が、前記制御情報キューに記憶された前記制御情報を用いて、送信に係る前記プロトコル処理を行って、送信対象のフレームを生成し、前記ネットワークインタフェース手段を介して当該フレームを送信する送信プロトコルステップとを含むことを特徴とする。
【０００８】
また、本発明は、通信をコンピュータに実行させるためのプログラムであって、ネットワークインタフェース手段が、ネットワークを介して他の通信装置とフレームの送受信を行なうネットワークインタフェース機能と、受信プロトコル処理手段が、受信したフレームに含まれる制御情報を用い、フレームの送信制御を行うプロトコルにより規定されたプロトコル処理であって受信に係る当該プロトコル処理を行って、受信したフレームから前記制御情報を取得すると共に、当該フレームにデータが含まれる場合当該データを取得する受信プロトコル処理機能と、制御情報記憶制御手段が、前記他の通信装置の有する受信バッファのデータ容量を示す受信ウィンドウサイズ、前記他の通信装置が受信したデータの領域を示す領域情報、当該通信装置の前記受信ウィンドウサイズ及び当該通信装置が受信したデータの領域を示す領域情報のうち少なくとも１つを含む制御情報を制御情報キューに記憶させる制御情報記憶機能と、データ記憶制御手段が、受信した前記フレームに含まれるデータを前記受信バッファに記憶させるデータ記憶機能と、送信プロトコル処理手段が、前記制御情報キューに記憶された前記制御情報を用い、送信に係る前記プロトコル処理を行って、送信対象のフレームを生成し、前記ネットワークインタフェース手段を介して当該フレームを送信する送信プロトコル処理機能とを含むことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、受信プロトコル処理及び送信プロトコル処理を独立に動作させることが可能になる。
【図面の簡単な説明】
【００１０】
【図１】図１は、第１の実施の形態にかかる通信装置５０の機能的構成を例示する図である。
【図２】図２は、同実施の形態にかかる受信プロトコル処理部５２の内部構成を例示する図である。
【図３】図３は、同実施の形態にかかる送信プロトコル処理部５３の内部構成を例示する図である。
【図４】図４は、同実施の形態にかかる受信処理の手順を示すフローチャートである。
【図５】図５は、同実施の形態にかかる送信処理の手順を示すフローチャートである。
【図６】図６は、第２の実施の形態にかかる通信装置５０の機能的構成を例示する図である。
【図７】図７は、同実施の形態にかかる制御情報処理の手順を示すフローチャートである。
【図８】図８は、同実施の形態にかかるデータ送信処理を示すフローチャートである。
【図９】図９は、第３の実施の形態にかかる通信装置５０の機能的構成を例示する図である。
【図１０】図１０は、同実施の形態にかかる受信処理の手順を示すフローチャートである。
【図１１】図１１は、第４の実施の形態にかかる通信装置５０の機能的構成を例示する図である。
【図１２】図１２は、同実施の形態にかかる受信処理の手順を示すフローチャートである。
【図１３】図１３は、同実施の形態にかかる送信処理の手順を示すフローチャートである。
【図１４】図１４は、一変形例にかかる通信装置５０の機能的構成を例示する図である。
【図１５】図１５は、一変形例にかかる通信装置５０の機能的構成を例示する図である。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して、この発明にかかる通信装置、方法及びプログラムの最良な実施の形態を詳細に説明する。
【００１２】
（１）構成
以下に添付図面を参照して、この発明にかかる通信装置の最良な実施の形態を詳細に説明する。ここで、通信装置のハードウェア構成について説明する。本実施の形態の通信装置は、装置全体を制御するＣＰＵ（Central Processing Unit）等の制御部と、各種データや各種プログラムを記憶するＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）等の記憶部と、各種データや各種プログラムを記憶するＨＤＤ（Hard Disk Drive）やＣＤ（Compact Disk）ドライブ装置等の外部記憶部と、外部装置の通信を制御する通信Ｉ／Ｆ（Interface）と、これらを接続するバスとを備えており、通常のコンピュータを利用したハードウェア構成となっている。
【００１３】
次に、このようなハードウェア構成において、通信装置のＣＰＵが記憶装置や外部記憶部に記憶された各種プログラムを実行することにより実現される各種機能について説明する。図１は、通信装置５０の機能的構成を例示する図である。通信装置５０は、ネットワークインタフェース部５１と、受信プロトコル処理部５２と、送信プロトコル処理部５３と、受信バッファ５４と、制御情報キュー５５とを有する。ネットワークインタフェース部５１と、受信プロトコル処理部５２と、送信プロトコル処理部５３とは、ＣＰＵのプログラム実行時にＲＡＭなどの記憶部上に生成されるものである。受信バッファ５４と、制御情報キュー５５とは、ＲＡＭなどの記憶部に確保される記憶領域である。また、通信装置５０は、図示しない送信バッファを有する。送信バッファは例えばＲＡＭなどの記憶部に確保される記憶領域であり、送信対象のデータを記憶する。
【００１４】
ネットワークインタフェース部５１は、物理層およびデータリンク層の処理を行うデバイスであり、例えばIEEE802.3やIEEE802.11規格に従ったネットワークを介して他の通信装置との間でフレームを送受信する。受信プロトコル処理部５２は、ネットワークインタフェース部５１が受信したフレーム（受信フレームという）に対して受信に係るプロトコル処理（受信プロトコル処理）を行い、受信フレームに含まれる制御情報を取得しこれを少なくとも含む制御情報を制御情報キュー５５に記憶させ、受信フレームにデータが含まれていればこれを受信バッファ５４に記憶させる。制御情報の詳細については後述する。受信バッファ５４は、受信プロトコル処理部５２の制御の下、受信フレームに含まれるデータを記憶する。制御情報キュー５５は、受信プロトコル処理部５２の制御の下、制御情報を記憶する。送信プロトコル処理部５３は、制御情報キュー５５から制御情報を取得し、当該制御情報に従って、送信に係るプロトコル処理（送信プロトコル処理）を行って、受信フレームの受信確認のための確認応答(ACK)を含むフレームや送信対象のデータを含むフレームを生成し、生成したフレームを、ネットワークインタフェース部５１を介して送信する。
【００１５】
図２は、受信プロトコル処理部５２の内部構成を例示する図である。受信プロトコル処理部５２は、データリンク層プロトコル処理部５２２と、ネットワーク層プロトコル処理部５２１と、トランスポート層プロトコル処理部５２０とを有し、データリンク層、ネットワーク層及びトランスポート層の順に受信プロトコル処理を行う。データリンク層プロトコル処理部５２２は、ネットワークインタフェース部５１を介してフレーム（受信フレーム）を受信して、当該受信フレームに対してデータリンク層における受信プロトコル処理を行う。ネットワーク層プロトコル処理部５２１は、データリンク層プロトコル処理部５２２が受信プロトコル処理を行った後に、当該受信フレームに対してネットワーク層における受信プロトコル処理を行う。トランスポート層プロトコル処理部５２０は、ネットワーク層プロトコル処理部５２１が受信プロトコル処理を行った後に、当該受信フレームに対してトランスポート層における受信プロトコル処理を行い、制御情報を取得しこれを少なくとも含む制御情報を制御情報キュー５５に記憶させる。また、トランスポート層プロトコル処理部５２０は、当該受信フレームにデータが含まれていればこれを受信バッファ５４に記憶させる。
【００１６】
図３は、送信プロトコル処理部５３の内部構成を例示する図である。送信プロトコル処理部５３は、データリンク層プロトコル処理部５３２と、ネットワーク層プロトコル処理部５３１と、トランスポート層プロトコル処理部５３０とを有し、トランスポート層、ネットワーク層及びデータリンク層、の順に送信プロトコル処理を行う。トランスポート層プロトコル処理部５３０は、制御情報キュー５５から制御情報を取得し、制御情報に応じて、トランスポート層における送信プロトコル処理を行って、送信対象のフレームを生成する。ネットワーク層プロトコル処理部５３１は、トランスポート層プロトコル処理部５３０が送信プロトコル処理を行った後に、送信対象のフレームに対してネットワーク層における送信プロトコル処理を行う。データリンク層プロトコル処理部５３２は、ネットワーク層プロトコル処理部５３１が送信プロトコル処理を行った後に、送信対象のフレームをネットワークインタフェース部５１に出力する。送信対象のフレームはネットワークインタフェース部５１を介して相手装置に送信される。
【００１７】
尚、トランスポート層プロトコル処理部５２０、５３０は、トランスポート層のプロトコルとして、例えばTCP(Transmission Control Protocol)、SCTP(Stream Control Transmission Protocol)、DCCP(Datagram Congestion Control Protocol)、ICMP(Internet Control Message Protocol)、ICMPv6などのプロトコルに規定された処理（プロトコル処理）を行なう。また、ネットワーク層プロトコル処理部５２１、５３１は、ネットワーク層のプロトコルとして、例えばIPv4(Internet Protocol version 4)、IPv6(Internet Protocol version 6)、ARP(Address Resolution Protocol) などのプロトコルに規定された処理（プロトコル処理）を行なう。データリンク層プロトコル処理部５２２、５３２は、データリンク層のプロトコルとして、IEEE802.3やIEEE802.11などのプロトコルに規定された処理（プロトコル処理）を行なう。
【００１８】
以下では、トランスポート層のプロトコルとしてTCP(Transmission Control Protocol)を用いる場合について説明する。この場合、受信プロトコル処理部５２は、受信プロトコル処理では、受信フレームを用いて、RFC 793で規定されるシーケンス番号のチェック、チェックサム照合による受信フレームの破損検出、通信相手である他の通信装置（相手装置という）の受信ウィンドウサイズの取得、相手装置の確認応答シーケンス番号の取得、確認応答(ACK)フラグのチェック等を行なう。尚、シーケンス番号は、相手装置が付与するものであり、当該通信装置５０が受信したデータの領域を示すものとなる。相手装置の受信ウィンドウサイズとは、当該相手装置の有する受信バッファのデータ容量を示す。相手装置の確認応答シーケンス番号とは、相手装置が次に受信すべきデータの領域を示すものである。確認応答(ACK)フラグとは、確認応答番号が有効であるか否かを示すものである。また、送信プロトコル処理部５３は、送信プロトコル処理では、シーケンス番号の付与、チェックサムの付与、当該通信装置５０の受信ウィンドウサイズの付与、当該通信装置５０の確認応答シーケンス番号の付与、確認応答(ACK)フラグの設定等を行なう。尚、ここで付与するシーケンス番号は、相手装置が受信したデータの領域を示すものとなる。また、当該通信装置５０の受信ウィンドウサイズは、受信バッファ５４のデータ容量を示す。また、ここで付与する確認応答シーケンス番号は、当該通信装置５０が次に受信すべきデータの領域を示すものであり、相手装置が付与したシーケンス番号を用いて表される。
【００１９】
制御情報は、相手装置の受信ウィンドウサイズと、相手装置の確認応答シーケンス番号や選択的確認応答(Selective ACK)ブロックのシーケンス番号と、当該通信装置５０の受信ウィンドウサイズと、当該通信装置５０の確認応答シーケンス番号や選択的確認応答ブロックのシーケンス番号と、確認応答を含むフレームの送信要求との少なくとも１つを含む。特に、確認応答を含むフレームを送信する必要があるフレームを受信した場合、受信プロトコル処理部５２は、確認応答を含むフレームの送信要求を制御情報に含ませて制御情報キュー５５に記憶させる。
【００２０】
（２）動作
次に、本実施の形態にかかる通信装置５０の行う受信処理及び送信処理の手順について説明する。通信装置５０は、これらの受信処理及び送信処理を独立して行う。まず、受信処理の手順について図４を用いて説明する。通信装置５０は、ネットワークインタフェース部５１の機能により、ネットワークを介して他の通信装置からフレーム（受信フレーム）を受信する（ステップＳ１）。次に、通信装置５０は、受信プロトコル処理部５２の機能により、ステップＳ１で受信した受信フレームに対して受信プロトコル処理を行い、当該受信フレームから制御情報を取得し、当該受信フレームにデータが含まれていればこれを受信バッファ５４に記憶させる（ステップＳ２）。尚、通信装置５０は、受信プロトコル処理において、RFC793に規定される処理に従い、フレームのデータ長、フレームのシーケンス番号、セッションの状態、などから確認応答を含むフレームの送信を行うかを判断し、送信すると判断した場合には、制御情報には相手装置のシーケンス番号及び受信ウィンドウサイズが含まれているから、これらと共に確認応答を含むフレームの送信要求を含ませた制御情報を制御情報キュー５５に記憶させる（ステップＳ３）。一方、例えばデータを含まない確認応答を含むフレームの場合など、確認応答を含むフレームの送信を行わないと判断した場合には、制御情報には相手装置の受信ウィンドウサイズ及び確認応答シーケンス番号が含まれているから、通信装置５０は、これらを含む制御情報を制御情報キュー５５に記憶させる（ステップＳ３）。
【００２１】
次に、送信処理の手順について図５を用いて説明する。通信装置５０は、送信プロトコル処理部５３の機能により、制御情報キュー５５から制御情報を取得する（ステップＳ１０）。次に、通信装置５０は、制御情報を用いて送信プロトコル処理を行う（ステップＳ１１）。具体的には、制御情報が確認応答を含むフレームの送信要求を含んでいる場合、通信装置５０は、トランスポート層における送信プロトコル処理を行い、当該確認応答を含むフレームの送信要求に従って、当該制御情報に含まれる相手装置のシーケンス番号及び受信ウィンドウサイズを用いて確認応答シーケンス番号を付与して確認応答を含むフレームを生成し、ネットワーク層におけるプロトコル処理及びデータリンク層におけるプロトコル処理を行った後、ネットワークを介して当該確認応答を含むフレームを送信する（ステップＳ１２）。尚、制御情報が確認応答を含むフレームの送信要求を含んでいない場合、通信装置５０は、相手装置の受信ウィンドウサイズを用いてフロー制御を行い、またデータの再送に備えて送信バッファに記憶していた相手装置の確認応答シーケンス番号の値より小さいシーケンス番号のデータの解放を行う。
【００２２】
以上のようにして、受信フレームを用いてフレームの送信制御を行うプロトコルを用いてネットワークを介して通信を行う通信装置において、制御情報キュー５５を用いて受信プロトコル処理部５２から送信プロトコル処理部５３に制御情報を伝達することにより、受信プロトコル処理及び送信プロトコル処理の同期を実現させることができる。この結果、受信プロトコル処理部５２と送信プロトコル処理部５３とを独立に動作させることが可能となる。
【００２３】
[第２の実施の形態]
次に、通信装置、方法及びプログラムの第２の実施の形態について説明する。なお、上述の第１の実施の形態と共通する部分については、同一の符号を使用して説明したり、説明を省略したりする。
【００２４】
（１）構成
本実施の形態においては、２つの異なる送信処理について区別して説明する。１つは第１の実施の形態で説明した制御情報に従ってフレームを送信する処理（制御情報処理という）であり、もう１つは、例えばアプリケーションプログラムにより指定されたデータを含むフレームを送信する処理（データ送信処理）である。図６は、本実施の形態にかかる通信装置５０の機能的構成を例示する図である。本実施の形態にかかる通信装置５０は、上述の第１の実施の形態にかかる通信装置５０の構成に加え、送信制御情報記憶部５６と、送信データ指定部５７とを更に有する。送信制御情報記憶部５６は、送信プロトコル処理部５３の制御の下、制御情報を記憶する。送信データ指定部５７は、ＣＰＵがアプリケーションプログラムを実行することによりＲＡＭなどの記憶部上に生成されるものであり、送信対象のデータのアドレスとデータ長とを指定する。
【００２５】
（２）動作
次に本実施の形態にかかる通信装置５０の行なう送信処理の手順について説明する。尚、受信処理については上述の第１の実施の形態と同様であるためその説明を省略する。まず、制御情報処理の手順について図７を用いて説明する。通信装置５０は、送信プロトコル処理部５３の機能により、制御情報を制御情報キュー５５から取得する（ステップＳ２０）。この制御情報には相手装置のシーケンス番号が含まれているとする。通信装置５０は、当該制御情報に含まれる相手装置のシーケンス番号と、送信制御情報記憶部５６に記憶されている制御情報に含まれる相手装置のシーケンス番号とを比較し、前者のシーケンス番号が後者のシーケンス番号より大きいか否かを判定する（ステップＳ２１）。前者のシーケンス番号が後者のシーケンス番号より大きい場合（ステップＳ２１：ＹＥＳ）、通信装置５０は、送信制御情報記憶部５６に記憶された制御情報を、制御情報キュー５５から取得した制御情報に更新する（ステップＳ２２）。この結果、送信制御情報記憶部５６には、最大のシーケンス番号を含む制御情報が記憶される。このような構成により、通信装置５０は、例えば、通信上でなんらかの障害の発生により、小さいシーケンス番号のフレームより大きいシーケンス番号のフレームを先に受信した場合であっても、相手装置から送信された最新のフレームのシーケンス番号として最大のシーケンス番号を正しく判別することができる。尚、ステップＳ２１の判定結果が否定的である場合には通信装置５０は送信制御情報記憶部５６に記憶された制御情報を更新しない。また、通信装置５０は、制御情報に確認応答を含むフレームの送信要求が含まれているか否かを判定し（ステップＳ２３）、確認応答を含むフレームの送信要求が含まれている場合（ステップＳ２３：ＹＥＳ）、上述の第１の実施の形態で説明した通り、確認応答を含むフレームを生成してこれを、ネットワークを介して送信する（ステップＳ２４）。
【００２６】
次に、データ送信処理の手順について図８を用いて説明する。通信装置５０は、送信データ指定部５７の機能により、送信対象のデータのアドレスとデータ長とを指定する。そして、通信装置５０は、送信プロトコル処理部５３の機能により、指定されたアドレスから指定されたデータ長のデータを取得し、送信制御情報記憶部５６に記憶された制御情報を用いて、当該データを含むフレームを生成して送信プロトコル処理を行い、これを、ネットワークを介して送信する（ステップＳ３０）。
【００２７】
以上のように、最大のシーケンス番号を含む制御情報を記憶する送信制御情報記憶部５６を送信側に設けることで、制御情報を用いてフレームを送信する制御情報処理と独立に動作するデータ送信処理においても、最新の制御情報を用いて送信プロトコル処理を行うことが可能となる。
【００２８】
[第３の実施の形態]
次に、通信装置、方法及びプログラムの第３の実施の形態について説明する。なお、上述の第１の実施の形態又は第２の実施の形態と共通する部分については、同一の符号を使用して説明したり、説明を省略したりする。
【００２９】
（１）構成
図９は、本実施の形態にかかる通信装置５０の機能的構成を例示する図である。本実施の形態にかかる通信装置５０は、上述の第１の実施の形態にかかる通信装置５０の構成に加え、制御情報伝達判定部５８と、受信制御情報記憶部５９とを更に有する。制御情報伝達判定部５８は、受信プロトコル処理部５２の制御の下、受信フレームに含まれる制御情報を少なくとも含む制御情報を制御情報キュー５５に記憶させるか否かを判定する。受信制御情報記憶部５９は、制御情報伝達判定部５８の制御の下、制御情報を記憶する。
【００３０】
（２）動作
次に本実施の形態にかかる通信装置５０の行なう受信処理の手順について図１０を用いて説明する。尚、送信処理については上述の第１の実施の形態と同様であるためその説明を省略する。ステップＳ１〜Ｓ２は上述の第１の実施の形態と同様である。尚、ステップＳ２で通信装置５０が取得した制御情報には、相手装置の確認応答シーケンス番号と、相手装置の受信ウィンドウサイズとのうち少なくとも一方が含まれているとする。ステップＳ４０では、通信装置５０は、制御情報伝達判定部５８の機能により、ステップＳ２で取得した制御情報に含まれる相手装置の確認応答シーケンス番号が、受信制御情報記憶部５９に記憶されている制御情報に含まれる相手装置の確認応答シーケンス番号と同じか否かを判定する。これらが異なる場合（ステップＳ４０：ＮＯ）、通信装置５０は、ステップＳ２で取得した制御情報を制御情報キュー５５に記憶させると共に（ステップＳ４２）、確認応答シーケンス番号及び受信ウィンドウサイズのうち少なくとも一方が更新されている当該制御情報を受信制御情報記憶部５９に記憶させる（ステップＳ４３）。一方、ステップＳ２で取得した制御情報に含まれる相手装置の確認応答シーケンス番号が、受信制御情報記憶部５９に記憶されている制御情報に含まれる相手装置の確認応答シーケンス番号と同じである場合（ステップＳ４０：ＹＥＳ）、次いで、通信装置５０は、ステップＳ２で取得した制御情報に含まれる相手装置の受信ウィンドウサイズが、受信制御情報記憶部５９に記憶されている制御情報に含まれる相手装置の受信ウィンドウサイズと同じか否かを判定する（ステップＳ４１）。これらが異なる場合（ステップＳ４１：ＮＯ）、通信装置５０は上述と同様にステップＳ４２〜Ｓ４３の処理を行う。
【００３１】
以上のように、受信フレームの制御情報に含まれる相手装置の確認応答シーケンス番号及び受信ウィンドウサイズのうち少なくとも一方が更新されている場合にのみ、当該制御情報を送信プロトコル処理部５３に伝達することで、送信プロトコル処理部５３の処理負荷を軽減することが可能となる。
【００３２】
[第４の実施の形態]
次に、通信装置、方法及びプログラムの第４の実施の形態について説明する。なお、上述の第１の実施の形態乃至第３の実施の形態と共通する部分については、同一の符号を使用して説明したり、説明を省略したりする。
【００３３】
（１）構成
本実施の形態においては、通信装置５０は、累積確認応答を行うプロトコルを用いて通信を行なう。累積確認応答とは、１つ又は複数の受信フレームの確認応答を１つの確認応答を含むフレームの送信により行なうものである。図１１は、本実施の形態にかかる通信装置５０の機能的構成を例示する図である。本実施の形態にかかる通信装置５０は、上述の第３の実施の形態にかかる通信装置５０の構成に加え、送信プロトコル処理完了伝達部６０と、送信処理状態記憶部６１とを更に有する。送信プロトコル処理部５３は、上述した送信プロトコル処理を行って確認応答を含むフレームを生成し、送信プロトコル処理の完了後にその旨を送信プロトコル処理完了伝達部６０に通知する。送信プロトコル処理完了伝達部６０は、送信プロトコル処理の完了を制御情報伝達判定部５８に通知する。送信処理状態記憶部６１は、制御情報伝達判定部５８の制御の下、確認応答を含むフレームの送信の処理状態（送信処理状態という）を記憶する。送信処理状態には、「未処理」と「処理中」と「予約済」との３つの状態がある。なお、送信処理状態の初期状態は「未処理」である。制御情報伝達判定部５８は、上述の第３の実施の形態にかかる機能に加え、送信プロトコル処理の完了が送信プロトコル処理完了伝達部６０から通知されると、送信処理状態記憶部６１に記憶された送信処理状態を状態に応じて更新する。
【００３４】
（２）動作
次に、本実施の形態にかかる通信装置５０の行う受信処理及び送信処理の手順について説明する。まず、受信処理の手順について図１２を用いて説明する。ステップＳ１〜Ｓ２は上述の第１の実施の形態と同様である。尚、ステップＳ２で通信装置５０が取得した制御情報には、相手装置が付与したシーケンス番号が含まれているとする。ステップＳ５０では、通信装置５０は、送信処理状態記憶部６１に記憶されている送信処理状態を参照して、当該送信処理状態が「未処理」である場合、当該送信処理状態を「処理中」に変更して（ステップＳ５１）、受信制御情報記憶部５９に記憶されている制御情報に従って、当該通信装置５０の受信ウィンドウサイズ及びステップＳ２で受信プロトコル処理を行った受信フレームの制御情報に含まれるシーケンス番号のうち最大のシーケンス番号と共に確認応答を含むフレームの送信要求を含む制御情報を制御情報キュー５５に記憶させる（ステップＳ５２）。また、送信処理状態が「処理中」である場合、通信装置５０は、当該送信処理状態を「予約済」に変更し（ステップＳ５３）、受信制御情報記憶部５９に記憶されている制御情報について、当該通信装置５０の受信ウィンドウサイズ及びステップＳ２で受信プロトコル処理を行った受信フレームの制御情報に含まれるシーケンス番号のうち最大のシーケンス番号を含む制御情報に更新する（ステップＳ５４）。また、送信処理状態が「予約済」である場合、通信装置５０は、受信制御情報記憶部５９に記憶されている制御情報について、当該通信装置５０の受信ウィンドウサイズ及びステップＳ２で受信プロトコル処理を行った受信フレームの制御情報に含まれるシーケンス番号のうち最大のシーケンス番号を含む制御情報に更新する（ステップＳ５５）。
【００３５】
次に、送信処理の手順について図１３を用いて説明する。ステップＳ１０〜Ｓ１２は上述の第１の実施の形態と同様である。ステップＳ６０では、通信装置５０は、ステップＳ１１で送信プロトコル処理部５３の機能により送信プロトコル処理を行った後、送信プロトコル処理完了伝達部６０の機能により、送信プロトコル処理の完了を検出すると、制御情報伝達判定部５８の機能により、送信処理状態記憶部６１に記憶されている送信処理状態を更新する。具体的には、通信装置５０は、送信処理状態が「処理中」である場合、当該送信処理状態を「未処理」に変更する（ステップＳ６１）。また、当該送信処理状態が「予約済」である場合、当該送信処理状態を「処理中」に変更する（ステップＳ６２）。そして、通信装置５０は、受信制御情報記憶部５９に記憶している制御情報に含まれるシーケンス番号及び受信ウィンドウサイズと共に確認応答を含むフレームの送信要求を制御情報に含ませて当該制御情報を制御情報キュー５５に記憶させる。この制御情報がステップＳ１０で取得された場合、当該制御情報に従ってステップＳ１１で生成された確認応答を含むフレームがステップＳ１２で送信されることになる。
【００３６】
以上のようにして、送信プロトコル処理の完了に応じて、送信プロトコル処理の処理状態（送信処理状態）を更新し、受信フレームを受信した際に、当該送信処理状態を参照することで、送信プロトコル処理を行っているか否かを判定することができる。そして、受信フレームを受信した際に送信プロトコル処理を行っている場合、当該受信フレームの制御情報を用いて、受信制御情報記憶部５９に記憶している制御情報に含まれる受信ウィンドウサイズ及びシーケンス番号を更新する。これにより、受信フレームに対して送信すべき確認応答を含むフレームにおいて、確認応答を含むフレームをまだ送信していない受信フレームの最大のシーケンス番号を用いて確認応答シーケンス番号を付与することができ、累積確認応答を行なうことができる。即ち、本実施の形態によれば、送信プロトコル処理の処理速度に応じて確認応答を含むフレームを生成して送信することができるため、当該処理速度に応じて確認応答を含むフレームを送信する回数を低減することができる。
【００３７】
[変形例]
なお、本発明は前記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、前記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。また、以下に例示するような種々の変形が可能である。
【００３８】
＜変形例１＞
上述した各実施の形態において、通信装置５０で実行される各種プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また当該各種プログラムを、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital Versatile Disk）等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成しても良い。
【００３９】
また、上述した各実施の形態において、受信プロトコル処理部５２及び送信プロトコル処理部５３は、通信装置５０を構成する同一のコンピュータ上で独立に動作するプログラムのタスクであっても良いし、ハードウェアにより各々異なるプロセッサで構成するようにしても良い。また、ネットワークインタフェース部５１についても同様に、通信装置５０を構成する同一のコンピュータ上で独立に動作するプログラムのタスクであっても良いし、受信プロトコル処理部５２及び送信プロトコル処理部５３とは異なるプロセッサで構成するようにしても良い。
【００４０】
＜変形例２＞
上述した各実施の形態において、トランスポート層のプロトコルとしてTCPを用いる場合について説明したが、TCPに代えてSCTPやDCCPなどのプロトコルを用いる場合であっても、データリンク層やネットワーク層などのプロトコルを用いる場合であっても、各実施の形態に係る構成を適用可能である。
【００４１】
＜変形例３＞
上述した各実施の形態においては、受信プロトコル処理部５２は、フレームの受信以外にも、受信ウィンドウサイズの変化を契機として、制御情報を送信プロトコル処理部５３に伝達するようにしても良い。例えば、通信装置５０のＣＰＵがアプリケーションプログラムを実行しており、当該アプリケーションプログラムがデータを処理することに伴って受信バッファ５４のデータ容量、即ち、受信ウィンドウサイズが変化し得る。変化した受信ウィンドウサイズをアプリケーションプログラムが受信プロトコル処理部５２に通知することにより、受信プロトコル処理部５２は、受信ウィンドウサイズの変化を検出する。この場合、受信プロトコル処理部５２は、当該受信ウィンドウサイズを含む制御情報を制御情報キュー５５に記憶させる。そして、送信プロトコル処理部５３が、当該制御情報を制御情報キュー５５から取得することで、受信ウィンドウサイズの変化を契機として更新された制御情報が当該送信プロトコル処理部５３に伝達されることになる。送信プロトコル処理部５３は、このように取得した制御情報を用いて上述の各実施の形態と同様にして送信プロトコル処理を行い、フレームを送信すれば良い。
【００４２】
このような構成によれば、受信ウィンドウサイズが変化した場合に制御情報を更新することができ、最新の制御情報を用いて送信プロトコル処理を行うことができる。
【００４３】
＜変形例４＞
上述した第２の実施の形態においては、制御情報として送信対象のデータのアドレスとデータ長とを指定できるようにし、図１４に示されるように、送信データ指定部５７が、送信対象のデータのアドレスとデータ長と当該データの送信要求とを制御情報に含ませて制御情報キュー５５に記憶させるようにしても良い。送信プロトコル処理部５３は、当該制御情報を制御情報キュー５５から取得した場合、送信プロトコル処理を行い、当該制御情報に従って、送信対象のデータを含むフレームを生成してこれを、ネットワークインタフェース部５１を介して送信すれば良い。
【００４４】
また、図１５に示されるように、送信プロトコル処理部５３と送信データ指定部５７とに接続される送信データキュー６２を別途設けるようにしても良い。この場合、送信データ指定部５７は、送信対象のデータのアドレスとデータ長とを含むデータ情報を送信データキュー６２に記憶させ、送信プロトコル処理部５３は、当該データ情報を送信データキュー６２から取得することで、上述のデータ送信処理を行うようにしても良い。
【００４５】
＜変形例５＞
上述の第２の実施の形態においては、送信制御情報記憶部５６はコネクション毎に制御情報を記憶するようにしても良い。
【００４６】
また、上述の第４の実施の形態においては、受信制御情報記憶部５９はコネクション毎に制御情報を記憶するようにしても良く、送信処理状態記憶部６１はコネクション毎に送信処理状態を記憶するようにしても良い。この場合、送信プロトコル処理部５３は、送信プロトコル処理の完了の通知を、確認応答を含むフレームに対する送信プロトコル処理の完了時に行うようにしても良い。
【符号の説明】
【００４７】
５０  通信装置
５１  ネットワークインタフェース部
５２  受信プロトコル処理部
５３  送信プロトコル処理部
５４  受信バッファ
５５  制御情報キュー
５６  送信制御情報記憶部
５７  送信データ指定部
５８  制御情報伝達判定部
５９  受信制御情報記憶部
６０  送信プロトコル処理完了伝達部
６１  送信処理状態記憶部
６２  送信データキュー
５２０  トランスポート層プロトコル処理部
５２１  ネットワーク層プロトコル処理部
５２２  データリンク層プロトコル処理部
５３０  トランスポート層プロトコル処理部
５３１  ネットワーク層プロトコル処理部
５３２  データリンク層プロトコル処理部
【図１】
2010206304.tif 000003
【図２】
2010206304.tif 000004
【図３】
2010206304.tif 000005
【図４】
2010206304.tif 000006
【図５】
2010206304.tif 000007
【図６】
2010206304.tif 000008
【図７】
2010206304.tif 000009
【図８】
2010206304.tif 000010
【図９】
2010206304.tif 000011
【図１０】
2010206304.tif 000012
【図１１】
2010206304.tif 000013
【図１２】
2010206304.tif 000014
【図１３】
2010206304.tif 000015
【図１４】
2010206304.tif 000016
【図１５】
2010206304.tif 000017