(57)【特許請求の範囲】
【請求項１】
バイトストリームでデータ通信を行うプロトコルにしたがって動作する通信装置であって、
他の通信装置との間でセッションを確立する際に取得されるプロトコル情報を保持する１または複数の第１のプロトコル情報保持部と、
他の通信装置との間でセッションを確立する際に取得されるプロトコル情報を一時的に保持する第２のプロトコル情報保持部と、
該第２のプロトコル情報保持部に保持された前記プロトコル情報を格納するデータ格納部と、
他の通信装置によって送信されたセッション確立要求に応じて該他の通信装置との間でセッションを確立する処理を行う際に、前記１または複数の第１のプロトコル情報保持部のいずれかが使用されていない場合には、使用されていない第１のプロトコル情報保持部に該セッションを確立する際に取得するプロトコル情報を保持させるとともに該プロトコル情報を使用して前記他の通信装置との間で通信を行い、前記１または複数の第１のプロトコル情報保持部が使用されている場合には前記第２のプロトコル情報保持部に該プロトコル情報を保持させるエンジン部と、
前記第２のプロトコル情報保持部に保持した前記プロトコル情報を前記データ格納部に転送する転送処理部と、
該転送処理部によって前記プロトコル情報を転送した後に、前記１または複数の第１のプロトコル情報保持部のいずれかが使用されなくなった場合に、前記データ格納部に格納した前記プロトコル情報を前記１または複数の第１のプロトコル情報保持部のうち使用されなくなったものに入力するプロトコル制御部と、
他の通信装置との間でセッションを確立する際に取得されるプロトコル情報のうち、該セッションを確立した前記他の通信装置を特定する特定情報を保持するバックログ格納部
を有し、
前記エンジン部は、前記プロトコル制御部によって前記１または複数の第１のプロトコル情報保持部のいずれかに入力された前記プロトコル情報を使用して前記他の通信装置と通信を行い、
他の通信装置によって送信されるパケットを受信した際に、前記エンジン部は、該バックログ格納部に格納される特定情報に基づいて、該他の通信装置がセッションを確立したものであると判断できる場合に、該パケットに対して応答する、通信装置。
【請求項２】
前記１または複数の第１のプロトコル情報保持部のそれぞれにはポート番号が設定されており、
前記エンジン部は、前記セッション確立要求に含まれるポート番号に基づいて前記１または複数の第１のプロトコル保持部から使用するものを選択する、請求項１に記載の通信装置。
【請求項３】
前記転送処理部は、前記第２のプロトコル情報保持部に保持した前記プロトコル情報をダイレクトメモリアクセスによって前記データ格納部に格納し、
前記プロトコル制御部は、前記１または複数の第１のプロトコル情報保持部のいずれかが使用されなくなった場合に、前記データ格納部に格納した前記プロトコル情報をダイレクトメモリアクセスによって前記１または複数の第１のプロトコル情報保持部のうち使用されなくなったものに入力する、請求項１又は２に記載の通信装置。
【請求項４】
前記エンジン部は、ＴＣＰにしたがって、３ウェイハンドシェイクを行うことによってセッションを確立する、請求項１ないし３のいずれか１項に記載の通信装置。
【請求項５】
他の通信装置との間でセッションを確立する際に取得されるプロトコル情報を保持する１または複数の第１のプロトコル情報保持部と、他の通信装置との間でセッションを確立する際に取得されるプロトコル情報を一時的に保持する第２のプロトコル情報保持部と、該第２のプロトコル情報保持部に保持された前記プロトコル情報を格納するデータ格納部と、他の通信装置との間でセッションを確立する際に取得されるプロトコル情報のうち、該セッションを確立した前記他の通信装置を特定する特定情報を保持するバックログ格納部と、を有し、且つバイトストリームでデータ通信を行うプロトコルにしたがって動作する通信装置に、
他の通信装置によって送信されたセッション確立要求に応じて該他の通信装置との間でセッションを確立する処理を行わせる際に、前記１または複数の第１のプロトコル情報保持部のいずれかが使用されていない場合には、使用されていない第１のプロトコル情報保持部に該セッションを確立する際に取得されるプロトコル情報を保持させるとともに該プロトコル情報を使用して前記他の通信装置との間で通信を行わせ、前記１または複数の第１のプロトコル情報保持部が使用されている場合には前記第２のプロトコル情報保持部に該プロトコル情報を保持させ、
前記第２のプロトコル情報保持部に保持した前記プロトコル情報を前記データ格納部に格納させるとともに、前記１または複数の第１のプロトコル情報保持部のいずれかが使用されなくなった場合に、前記データ格納部に格納した前記プロトコル情報を前記１または複数の第１のプロトコル情報保持部のうち使用されなくなったものに入力させ、
前記１または複数の第１のプロトコル情報保持部のいずれかに入力された前記プロトコル情報を使用して前記他の通信装置と通信を行わせ、
他の通信装置によって送信されるパケットを受信した際に、該バックログ格納部に格納される特定情報に基づいて、該他の通信装置がセッションを確立したものであると判断できる場合に、該パケットに対して応答させる、通信制御プログラム。
【請求項６】
他の通信装置との間でセッションを確立する際に取得されるプロトコル情報を保持する１または複数の第１のプロトコル情報保持部と、他の通信装置との間でセッションを確立する際に取得されるプロトコル情報を一時的に保持する第２のプロトコル情報保持部と、該第２のプロトコル情報保持部に保持された前記プロトコル情報を格納するデータ格納部と、他の通信装置との間でセッションを確立する際に取得されるプロトコル情報のうち、該セッションを確立した前記他の通信装置を特定する特定情報を保持するバックログ格納部と、を有し、且つバイトストリームでデータ通信を行うプロトコルにしたがって動作する通信装置によって実施される通信制御方法であって、
他の通信装置によって送信されたセッション確立要求に応じて該他の通信装置との間でセッションを確立する処理を行う際に、前記１または複数の第１のプロトコル情報保持部のいずれかが使用されていない場合には、使用されていない第１のプロトコル情報保持部に該セッションを確立する際に取得するプロトコル情報を保持するとともに前記他の通信装置との間で通信を行い、
前記１または複数の第１のプロトコル情報保持部が使用されている場合には前記第２のプロトコル情報保持部に該プロトコル情報を保持し、
前記第２のプロトコル情報保持部に保持した前記プロトコル情報を前記データ格納部に格納し、
前記１または複数の第１のプロトコル情報保持部のいずれかが使用されなくなった場合に、前記データ格納部に格納した前記プロトコル情報を前記１または複数の第１のプロトコル情報保持部のうち使用されなくなったものに入力し、
前記１または複数の第１のプロトコル情報保持部のいずれかに入力された前記プロトコル情報を使用して前記他の通信装置を通信を行い、
他の通信装置によって送信されるパケットを受信した際に、該バックログ格納部に格納される特定情報に基づいて、該他の通信装置がセッションを確立したものであると判断できる場合に、該パケットに対して応答する、通信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置に関する。
【背景技術】
【０００２】
インターネットなどで利用されている通信プロトコルとして、ＴＣＰ(Transmission Control Protocol)とＩＰ(Internet Protocol)とを組み合わせたものが知られている。ＴＣＰ／ＩＰにおいては、通信相手側との間でセッションを確立した際に取得した情報を用いて通信制御を行う。
【０００３】
ＴＣＰセッションを確立し、通信制御を行う技術が知られている（例えば、特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
セッションを確立し、通信制御を行うには、メモリや、ＣＰＵ(Central Processing Unit)のリソースを必要とする。このため、特にＣＰＵのリソースが限られている組み込み機器においては、同時に通信を行うセッションの数を制限する必要がある。
【０００５】
仮に、通信を行うセッションの数を制限している間はセッションの確立要求に対して応答しないようにした場合、セッションの確立要求を送信した側は、該セッションの確立要求が受信されなかったために応答を受信できないのか、セッションの数が制限されているため応答を受信できないのか判断できないため、システムの運用上問題がある。
【０００６】
そこで、本発明は、通信を行うセッションの数が制限されている場合に、セッションを確立することを目的とする。
【課題を解決するための手段】
【０００７】
開示の一実施の形態の通信装置は、
バイトストリームでデータ通信を行うプロトコルにしたがって動作する通信装置であって、
他の通信装置との間でセッションを確立する際に取得されるプロトコル情報を保持する１または複数の第１のプロトコル情報保持部と、
他の通信装置との間でセッションを確立する際に取得されるプロトコル情報を一時的に保持する第２のプロトコル情報保持部と、
該第２のプロトコル保持部に保持された前記プロトコル情報を格納するデータ格納部と、
他の通信装置によって送信されたセッション確立要求に応じて該他の通信装置との間でセッションを確立する処理を行う際に、前記１または複数の第１のプロトコル情報保持部のいずれかが使用されていない場合には、使用されていない第１のプロトコル情報保持部に該セッションを確立する際に取得するプロトコル情報を保持させるとともに該プロトコル情報を使用して前記他の通信装置との間で通信を行い、前記１または複数の第１のプロトコル情報保持部が使用されている場合には前記第２のプロトコル情報保持部に該プロトコル情報を保持させるエンジン部と、
前記第２のプロトコル情報保持部に保持した前記プロトコル情報を前記データ格納部に転送する転送処理部と、
該転送処理部によって前記プロトコル情報を転送した後に、前記１または複数の第１のプロトコル情報保持部のいずれかが使用されなくなった場合に、前記データ格納部に格納した前記プロトコル情報を前記１または複数の第１のプロトコル情報保持部のうち使用されなくなったものに入力するプロトコル制御部と、
他の通信装置との間でセッションを確立する際に取得されるプロトコル情報のうち、該セッションを確立した前記他の通信装置を特定する特定情報を保持するバックログ格納部と、
を有し、
前記エンジン部は、前記プロトコル制御部によって前記１または複数の第１のプロトコル情報保持部のいずれかに入力された前記プロトコル情報を使用して前記他の通信装置と通信を行い、
他の通信装置によって送信されるパケットを受信した際に、前記エンジン部は、該バックログ格納部に格納される特定情報に基づいて、該他の通信装置がセッションを確立したものであると判断できる場合に、該パケットに対して応答する。
【発明の効果】
【０００８】
開示の実施の形態によれば、通信を行うセッションの数が制限されている場合に、セッションを確立することができる。
【図面の簡単な説明】
【０００９】
【図１】一実施の形態に係る通信システムの構成例を示す図である。
【図２】フレーム構成の一例を示す図である。
【図３】一実施の形態に係る受信装置を示す図である。
【図４】一実施の形態に係る受信装置を示す機能ブロック図（その１）である。
【図５】プロトコル情報の一例を示す図である。
【図６】一実施の形態に係る受信装置の動作を示すフローチャート（その１）である。
【図７】一実施の形態に係る受信装置を示す機能ブロック図（その２）である。
【図８】プロトコル情報の一例を示す図である。
【図９】一実施の形態に係る受信装置の動作を示すフローチャート（その２）である。
【図１０】一実施の形態に係る受信装置の動作を示すフローチャート（その３）である。
【発明を実施するための形態】
【００１０】
次に、本発明を実施するための形態を、以下の実施例に基づき図面を参照しつつ説明する。以下で説明する実施例は一例に過ぎず、本発明が適用される実施の形態は、以下の実施例に限られない。
なお、実施例を説明するための全図において、同一機能を有するものは同一符号を用い、繰り返しの説明は省略する。
【００１１】
＜第１の実施の形態＞
＜通信システム＞
図１は、本実施の形態に係る通信システムを示す図である。通信システムは送信装置１００と受信装置２００とを有する。送信装置１００と受信装置２００との間は、インターネットなどのネットワーク５０を介して有線または無線によって接続される。送信装置１００と受信装置２００は、バイトストリームでデータ通信を行うＴＣＰなどの所定のプロトコルにしたがって通信を行う。
【００１２】
送信装置１００は、受信装置２００との間で３ウェイハンドシェイク(three-way handshaking)を行う。具体的には、送信装置１００は、通信を行うのに先立って、ＳＹＮパケット(synchronize packet)などのセッション確立要求を送信する。受信装置２００は、送信装置１００によって送信されるセッション確立要求を受信すると、送信装置１００に接続を許可するＳＹＮＡＣＫパケットなどのセッション確立応答を送信するとともに、送信装置１００との間で送受信する情報（以下、「プロトコル情報」という）を格納する領域を割り当てる。セッション確立応答を受信した送信装置１００は、ＡＣＫパケットなどの接続開始要求を送信し、受信装置２００と通信を開始する。
【００１３】
受信装置２００は、プロトコル情報を格納する領域として、通信用のレジスタと、待ち受け用のレジスタとを有する。受信装置２００は、通信用のレジスタにプロトコル情報を格納した後に、該プロトコル情報を使用して引き続き通信を行うことができる。また、受信装置２００は、待ち受け用のレジスタにプロトコル情報を格納した場合には引き続き通信を行うことができず、通信用のレジスタが使用されなくなった場合に、該使用されなくなった通信用のレジスタにプロトコル情報を格納した後に、該プロトコル情報を使用して引き続き通信を行うことができる。
【００１４】
受信装置２００は、プロトコル情報を格納する領域を割り当てる際に、セッション確立要求によって指定されるポート番号と一致するポート番号が設定された通信用のレジスタが空いている場合には、その通信用のレジスタを割り当てる。受信装置２００は、セッション確立要求によって指定されるポート番号と一致するポート番号が設定された通信用のレジスタが空いていない場合には、該ポート番号が待ち受け用のレジスタに設定されたポート番号と一致する場合には、その待ち受け用のレジスタを割り当てる。そして、３ウェイハンドシェイクが終了し、セッションが確立されると、待ち受け用のレジスタに格納したプロトコル情報を該待ち受け用のレジスタとは異なるデータ格納部に退避させ、待ち受け用のレジスタを初期化する。これによって、他の送信装置によって、セッション確立要求が送信された場合に、該セッション確立要求によって指定されるポート番号と一致するポート番号が設定された通信用のレジスタが空いていない場合でも、該ポート番号が待ち受け用のレジスタのポート番号と一致する場合には、その待ち受け用のレジスタを割り当てることができる。
【００１５】
＜フレーム構成＞
図２は、送信装置１００と受信装置２００との間で送受信されるフレームフォーマットの一例として、ＴＣＰヘッダのフォーマットを示す。
【００１６】
フレームは、発信元ポート番号フィールドと、宛先ポート番号フィールドと、シーケンス番号フィールドと、確認応答(ＡＣＫ)番号フィールドと、データオフセットフィールドと、予約フィールドと、コードビットフィールドとを有する。さらに、フレームは、ウインドウサイズフィールドと、チェックサムフィールドと、緊急ポインタフィールドと、オプションフィールドと、パディングフィールドとを有する。
【００１７】
発信元ポート番号フィールドは１６ビットで構成され、発信元のポート番号が格納される。発信元のポート番号は、ＴＣＰパケットの送信元のアプリケーションを識別するための番号である。宛先ポート番号フィールドは１６ビットで構成され、宛先のポート番号が格納される。宛先のポート番号は、あて先となるアプリケーションが待ち受けしているポート番号である。
【００１８】
シーケンス番号フィールドは３２ビットで構成され、分割されたＴＣＰセグメントのシーケンス番号が格納される。シーケンス番号は、データを送信する送信装置１００によって管理される。送信装置１００は、データを送信するたびに、送信したデータのバイト数分だけシーケンス番号を加算し、ＴＣＰパケットに付帯して送信する。確認応答番号フィールドは３２ビットで構成され、送信側が次に送信すべきデータのシーケンス番号が格納される。確認応答番号は、受信したデータに対して、どこのバイト位置までを受信したかを表す。
【００１９】
データオフセットフィールドは４ビットで構成され、ＴＣＰヘッダ長が４オクテット単位で格納される。データオフセットは、ＴＣＰデータが始まる位置を表す。「予約」フィールドは６ビットで構成され、０が格納される。コードビットフィールドは６ビットで構成され、各ビットはフラグとして使用される。
【００２０】
ウインドウサイズフィールドは１６ビットで構成され、受信側が現在受信可能なデータサイズを送信側に通知するために使用される。送信側は、ウインドウサイズで指定されたデータサイズ以上のデータを送信しない。チェックサムフィールドは１６ビットで構成され、データの信頼性を保証するために使用される。オプションフィールドおよびパディングフィールドは３２ビットで構成され、パディングフィールドには０が格納される。
【００２１】
＜受信装置２００＞
図３は、本実施の形態に係る受信装置２００のハードウェア構成図である。図３に示されているように、本実施の形態の受信装置２００は、受信装置２００全体の動作を制御するＣＰＵ(Central Processing Unit)２０２、およびＩＰＬ(Initial Program Loader)等のＣＰＵ２０２の駆動に用いられるプログラムを記憶したＲＯＭ(Read Only Memory)２０４を備えている。さらに、受信装置２００は、ＣＰＵ２０２のワークエリアとして使用されるＲＡＭ(Random Access Memory)２０６、受信装置用のプログラム等の各種データを記憶するフラッシュメモリ２１０、およびＣＰＵ２０２の制御にしたがってフラッシュメモリ２１０に対する各種データの読み出しまたは書き込みを制御するＳＳＤ（Solid State Drive）２０８を備えている。さらに、受信装置２００は、ネットワーク５０を利用してデータ伝送をするためのネットワークＩ／Ｆ(Interface)２１２、および上記各構成要素を図３に示されているように電気的に接続するためのアドレスバスやデータバス等のシステムバス２５０を備えている。
【００２２】
＜受信装置２００の機能構成＞
図４は、本実施の形態に係る受信装置２００を示す。受信装置２００は、パケット送信部２５２と、パケット受信部２５４と、ＴＣＰエンジン部２５６と、イベント管理部２５８と、プロトコル制御部２６８とを有する。これら各部は、図３に示されている各構成要素のいずれかが、フラッシュメモリ２１０からＲＡＭ２０６上に展開されたプログラムに従ったＣＰＵ２０２からの命令によって動作することで実現される機能が含まれる。また、受信装置２００は、図３に示されているＲＯＭ２０４、ＲＡＭ２０６、フラッシュメモリ２１０によって構築される第１のプロトコル情報保持レジスタ２６０、第２のプロトコル情報保持レジスタ２６２、第３のプロトコル情報保持レジスタ２６４、第４のプロトコル情報保持レジスタ２６６、およびデータ格納部２７０を有している。
【００２３】
（受信装置２００の各機能構成）
次に、図３および図４を用いて、受信装置２００の各機能構成について詳細に説明する。なお、以下では、受信装置２００の各機能構成を説明するにあたって、図３に示されている各構成要素のうち、受信装置２００の各機能構成を実現させるための主な構成要素との関係も説明する。
【００２４】
図４に示される受信装置２００のパケット送信部２５２は、ネットワークＩ／Ｆ２１２によって実現され、ＴＣＰエンジン部２５６によって生成されたＩＰパケットをネットワーク５０を経由して送信装置１００に送信する。
【００２５】
図４に示される受信装置２００のパケット受信部２５４は、ネットワークＩ／Ｆ２１２によって実現され、送信装置１００によって送信されたＩＰパケットを受信し、該ＩＰパケットをＴＣＰエンジン部２５６に入力する。
【００２６】
図４に示される受信装置２００のＴＣＰエンジン部２５６は、演算回路などのハードウェアや、ＣＰＵ２０２からの命令によって実現される。ＴＣＰエンジン部２５６は、パケット送信部２５２、およびパケット受信部２５４と接続される。ＴＣＰエンジン部２５６は、ＴＣＰプロトコルにしたがってセッションを確立し、データの送受信を行う。例えば、ＴＣＰエンジン部２５６は、パケット受信部２５４によって入力されるＩＰパケットに付帯されるヘッダの宛先ポート番号フィールドを参照し、第１のプロトコル情報保持レジスタ２６０−第３のプロトコル情報保持レジスタ２６４から、宛先ポート番号フィールドに付帯される宛先ポート番号と一致するポート番号が設定されたプロトコル情報保持レジスタをを選択する。
【００２７】
ＴＣＰエンジン部２５６は、第１のプロトコル情報保持レジスタ２６０−第３のプロトコル情報保持レジスタ２６４のいずれかに、宛先ポート番号フィールドに付帯される宛先ポート番号と一致するポート番号が設定されたプロトコル情報保持レジスタがある場合、該プロトコル情報保持レジスタが使用中であるか否かを判断する。ＴＣＰエンジン部２５６は、該プロトコル情報保持レジスタが使用中でない場合、該使用中でないプロトコル情報保持レジスタに送信装置１００との間で３ウェイハンドシェイクを行う際に取得されるプロトコル情報を保持する。その後、ＴＣＰエンジン部２５６は、使用中でないプロトコル情報保持レジスタに保持したプロトコル情報を使用して、通信制御を行う。
【００２８】
一方、ＴＣＰエンジン部２５６は、第１のプロトコル情報保持レジスタ２６０−第３のプロトコル情報保持レジスタ２６４のいずれも、宛先ポート番号フィールドに付帯される宛先ポート番号と一致するポート番号が設定されたものでない場合、第４のプロトコル情報保持レジスタ２６６が、宛先ポート番号フィールドに付帯される宛先ポート番号と一致するポート番号が設定されたものであるか否かを判断する。または、ＴＣＰエンジン部２５６は、第１のプロトコル情報保持レジスタ２６０−第３のプロトコル情報保持レジスタ２６４のいずれかが宛先ポート番号と一致するポート番号が設定されたプロトコル情報保持レジスタであっても使用中である場合、第４のプロトコル情報保持レジスタ２６６が、宛先ポート番号フィールドに付帯される宛先ポート番号と一致するポート番号が設定されたプロトコル情報保持レジスタであるか否かを判断する。
【００２９】
ＴＣＰエンジン部２５６は、第４のプロトコル情報保持レジスタ２６６が宛先ポート番号フィールドに付帯される宛先ポート番号と一致するポート番号が設定されたプロトコル情報保持レジスタである場合、その第４のプロトコル情報保持レジスタ２６６に送信装置１００との間で３ウェイハンドシェイクを行う際に取得されるプロトコル情報を保持する。ＴＣＰエンジン部２５６は、第４のプロトコル情報保持レジスタ２６６にプロトコル情報を保持した後に、プロトコル情報を保持するイベントが発生したことを通知するイベント通知信号を作成し、イベント管理部２５８に入力する。
【００３０】
＜プロトコル情報＞
図５は、プロトコル情報保持レジスタに保持されるプロトコル情報の一例を示す。図５には、３ウェイハンドシェイクによって、送信装置１００、および受信装置２００のそれぞれで保持される情報を示す。図５に示す情報以外の情報が保持されてもよい。
【００３１】
プロトコル情報の一例には、プロトコルコントロールブロックフラグ(PCB_Flags)フィールド、ＴＣＰステート(TCP_State)フィールド、リモートアドレス(Remote_Address)フィールド、ローカルポート(Local_Port)フィールド、およびリモートポート(Remote_Port)フィールドに付帯される情報が含まれる。さらに、プロトコル情報の一例には、Ｒ＿ＭＡＣフィールド、アックカウント(Ack_Count)フィールド、ＲＣＶ＿ＷＩＮ＿ＴＭＰフィールド、ＳＮＤ＿ＮＸＴフィールド、ＳＳＴＨＲＥＳＨフィールド、ＳＮＤ＿ＷＮＤフィールド、ＲＣＶ＿ＮＸＴフィールド、およびＳＮＤ＿ＵＮＡフィールドに付帯される情報が含まれる。さらに、プロトコル情報の一例には、ＳＮＤ＿ＷＬ１フィールド、ＳＮＤ＿ＷＬ２フィールド、ＣＷＮＤフィールド、Ｕｓｅａｂｌｅ＿Ｗｉｎｄｏｗフィールド、Ｔｘ＿Ｓｔａｔｕｓフィールド、Ｒｘ＿Ｓｔａｔｕｓフィールド、およびＲＣＶ＿ＷＮＤフィールドに付帯される情報が含まれる。
【００３２】
図４に戻り説明を続ける。図４に示される受信装置２００の第１のプロトコル情報保持レジスタ２６０は、ＲＡＭ２０６、およびＣＰＵ２０２からの命令によって実現される。第１のプロトコル情報保持レジスタ２６０は、送信装置１００との間でセッションを確立するために、３ウェイハンドシェイクを行うことによって取得されるプロトコル情報を保持する。例えば、第１のプロトコル情報保持レジスタ２６０は、ポート番号８０番の通信用に設定される。受信装置２００は、第１のプロトコル情報保持レジスタ２６０にプロトコル情報を保持した後に、引き続き、該プロトコル情報を使用して送信装置１００との間で通信を行う。
【００３３】
図４に示される受信装置２００の第２のプロトコル情報保持レジスタ２６２は、ＲＡＭ２０６、およびＣＰＵ２０２からの命令によって実現される。第２のプロトコル情報保持レジスタ２６２は、送信装置１００との間でセッションを確立するために、３ウェイハンドシェイクを行うことによって取得されるプロトコル情報を保持する。例えば、第２のプロトコル情報保持レジスタ２６２は、ポート番号９０番の通信用に設定される。受信装置２００は、第２のプロトコル情報保持レジスタ２６２にプロトコル情報を保持した後に、引き続き、該プロトコル情報を使用して送信装置１００との間で通信を行う。
【００３４】
図４に示される受信装置２００の第３のプロトコル情報保持レジスタ２６４は、ＲＡＭ２０６、およびＣＰＵ２０２からの命令によって実現される。第３のプロトコル情報保持レジスタ２６４は、送信装置１００との間でセッションを確立するために、３ウェイハンドシェイクを行うことによって取得されるプロトコル情報を保持する。例えば、第３のプロトコル情報保持レジスタ２６４は、ポート番号１００番の通信用に設定される。受信装置２００は、第３のプロトコル情報保持レジスタ２６４にプロトコル情報を保持した後に、引き続き、該プロトコル情報を使用して送信装置１００との間で通信を行う。
【００３５】
図４に示される受信装置２００の第４のプロトコル情報保持レジスタ２６６は、ＲＡＭ２０６、およびＣＰＵ２０２からの命令によって実現される。第４のプロトコル情報保持レジスタ２６６は、送信装置１００との間でセッションを確立するために、３ウェイハンドシェイクを行うことによって取得されるプロトコル情報を一時的に保持する。例えば、第４のプロトコル情報保持レジスタ２６６は、ポート番号８０番の待ち受け用に設定される。受信装置２００は、第３のプロトコル情報保持レジスタ２６４にプロトコル情報を保持した後に、該プロトコル情報をデータ格納部２７０に格納する。
【００３６】
図４に示される受信装置２００のイベント管理部２５８は、ＣＰＵ２０２からの命令によって実現される。イベント管理部２５８は、ＴＣＰエンジン部２５６によって入力されるイベント通知信号に応じて、システムバス２５０を介して、第４のプロトコル情報保持レジスタ２６６に格納されたプロトコル情報を取得し、ダイレクトメモリアクセス(DMA: Direct Memory Access)などのデータ転送方式によって、データ格納部２７０に転送する。イベント管理部２５８は、データ格納部２７０にプロトコル情報を転送した後、第４のプロトコル情報保持レジスタ２６６を初期化する。これによって、第４のプロトコル情報保持レジスタ２６６は、さらに、他の送信装置との間でセッションを確立するために、３ウェイハンドシェイクを行うことによって取得されるプロトコル情報を保持できる。
【００３７】
図４に示される受信装置２００のプロトコル制御部２６８は、ＣＰＵ２０２からの命令によって実現される。プロトコル制御部２６８は、データ格納部２７０にプロトコル情報が保持されている場合に、該プロトコル情報に付帯されているポート番号と一致するポート番号が設定されたプロトコル情報保持レジスタが使用されなくなったことによって空いたか否かを判断する。プロトコル制御部２６８は、プロトコル情報保持レジスタが空いたと判断した場合、ダイレクトメモリアクセスなどのデータ転送方式によって、データ格納部２７０に格納したプロトコル情報を取得し、該プロトコル情報を空いているプロトコル情報保持レジスタに入力する。これによって、ＴＣＰエンジン部２５６は、該空いているプロトコル情報保持レジスタに保持したプロトコル情報を使用して送信装置１００との間で通信を開始することができる。
【００３８】
＜受信装置２００の動作＞
図６は、本実施の形態に係る受信装置２００の動作を示す。
【００３９】
ステップＳ６０２では、受信装置２００のパケット受信部２５４は、送信装置１００によって送信されたＩＰパケットを受信する。
【００４０】
ステップＳ６０４では、受信装置２００のＴＣＰエンジン部２５６は、ＩＰパケットに付帯された宛先ポート番号を取得する。
【００４１】
ステップＳ６０６では、受信装置２００のＴＣＰエンジン部２５６は、第１のプロトコル情報保持レジスタ２６０−第３のプロトコル情報保持レジスタ２６４のうち、宛先ポート番号に一致するポート番号が設定されたものが空いているか否かを判断する。例えば、送信装置１００によって送信されたＩＰパケットのＴＣＰヘッダの宛先ポート番号が８０番である場合、ＴＣＰエンジン部２５６は、ポート番号８０番が設定されている第１のプロトコル情報保持レジスタ２６０が空いているか否か、つまり使用されていないかどうかを判断する。
【００４２】
ステップＳ６０８では、受信装置２００のＴＣＰエンジン部２５６は、ステップＳ６０６において、宛先ポート番号に一致するポート番号が設定されたものが空いていない場合、第４のプロトコル情報保持レジスタ２６６に設定されているポート番号が、宛先ポート番号に一致するか否かを判断する。例えば、ＴＣＰエンジン部２５６は、第１のプロトコル情報保持レジスタ２６０が空いていない場合、第４のプロトコル情報保持レジスタ２６６に設定されているポート番号が宛先ポート番号に一致するか否かを判断する。第４のプロトコル情報保持レジスタ２６６に設定されているポート番号が宛先ポート番号に一致しない場合終了する。この場合、セッションを確立できないことを送信装置１００に通知して終了するようにしてもよい。
【００４３】
ステップＳ６１０では、ステップＳ６０８において第４のプロトコル情報保持レジスタ２６６に設定されているポート番号が宛先ポート番号に一致する場合、ＴＣＰエンジン部２５６は、セッションを確立する際に取得するプロトコル情報を第４のプロトコル情報保持レジスタ２６６に保持する。例えば、ＴＣＰエンジン部２５６は、第４のプロトコル情報保持レジスタ２６６に設定されているポート番号が８０番であるため、セッションを確立する際に取得するプロトコル情報を第４のプロトコル情報保持レジスタ２６６に保持する。その後、セッションを確立した送信装置１００には、受信可能なデータ量が零であることを公告（アドバタイズ）する。
【００４４】
ステップＳ６１２では、受信装置２００のイベント管理部２５８は、データ格納部２７０に第４のプロトコル情報保持レジスタ２６６に保持したプロトコル情報を格納する。
【００４５】
ステップＳ６１４では、受信装置２００のプロトコル制御部２６８は、第１のプロトコル情報保持レジスタ２６０−第３のプロトコル情報保持レジスタ２６４のうち、データ格納部２７０に格納されているプロトコル情報のポート番号に一致するものが空いたか否かを判断する。例えば、プロトコル制御部２６８は、第１のプロトコル情報保持レジスタ２６０が空いたか否かを判断する。
【００４６】
ステップＳ６１６では、ステップＳ６１４においてプロトコル情報のポート番号に一致するものが空いた場合、プロトコル制御部２６８は、データ格納部２７０に格納されているプロトコル情報をその空いているプロトコル情報保持レジスタに転送する。例えば、プロトコル制御部２６８は、第１のプロトコル情報保持レジスタ２６０が空いた場合、データ格納部２７０に格納されているプロトコル情報をその第１のプロトコル情報保持レジスタ２６０に転送する。
【００４７】
ステップＳ６１８では、ＴＣＰエンジン部２５６は、ステップＳ６１６において空いているプロトコル情報保持レジスタに転送したプロトコル情報を使用して送信装置１００との間で通信を行う。
【００４８】
ステップＳ６２０では、受信装置２００のＴＣＰエンジン部２５６は、ステップＳ６０６において、宛先ポート番号に一致するポート番号が設定されたものが空いている場合、セッションを確立する際に取得するプロトコル情報をその空いているプロトコル情報保持レジスタに保持する。その後、ステップＳ６１８に移行する。例えば、ＴＣＰエンジン部２５６は、ポート番号８０番が設定されている第１のプロトコル情報保持レジスタ２６０が空いている場合、セッションを確立する際に取得するプロトコル情報をその第１のプロトコル情報保持レジスタ２６０に保持する。
【００４９】
本実施の形態では、受信装置２００が、第１のプロトコル情報保持レジスタ２６０−第３のプロトコル情報保持レジスタ２６４の３個の通信用のプロトコル情報保持レジスタを有する場合について説明したが、１個−２個でもよいし、４個以上でもよい。また、受信装置２００が、第４のプロトコル情報保持レジスタ２６６の１個の待ち受け用のプロトコル情報保持レジスタを有する場合について説明したが、２個以上でもよい。
【００５０】
また、第１のプロトコル情報保持レジスタ２６０−第４のプロトコル情報保持レジスタ２６６に設定するポート番号は上述した例に限らず、異なるポート番号を設定するようにしてもよい。ここで、第４のプロトコル情報保持レジスタ２６６に設定するポート番号は使用頻度の多いポート番号が設定されるのが好ましい。これによって、送信装置１００によって送信されたＩＰパケットのＴＣＰヘッダの宛先ポート番号が、第４のプロトコル情報保持レジスタ２６６に設定されているポート番号と一致しないことによって、セッションが確立できない頻度を低下させることができる。
【００５１】
本実施の形態によれば、第１のプロトコル情報保持レジスタ２６０−第３のプロトコル情報保持レジスタ２６４の３個の通信用のプロトコル情報保持レジスタが使用されているなどによって通信を行うセッション数が制限されている場合であっても、第４のプロトコル情報保持レジスタ２６６を使用してセッションを確立できる。
【００５２】
＜第２の実施の形態＞
本実施の形態に係る通信システムは図１を適用でき、フレーム構成は図２を適用できる。ただし、図１に示される通信システムにおいて、受信装置２００の代わりに受信装置３００を有する。
【００５３】
本実施の形態に係る受信装置３００のハードウエア構成は、図３を適用できる。
【００５４】
＜受信装置３００の機能構成＞
図７は、本実施の形態に係る受信装置３００を示す。受信装置３００は、パケット送信部３５２と、パケット受信部３５４と、ＴＣＰエンジン部３５６と、イベント管理部３５８と、プロトコル制御部３６８とを有する。これら各部は、図３に示されている各構成要素のいずれかが、フラッシュメモリ２１０からＲＡＭ２０６上に展開されたプログラムに従ったＣＰＵ２０２からの命令によって動作することで実現される機能が含まれる。また、受信装置３００は、図３に示されているＲＯＭ２０４、ＲＡＭ２０６、フラッシュメモリ２１０によって構築される第１のプロトコル情報保持レジスタ３６０、第２のプロトコル情報保持レジスタ３６２、第３のプロトコル情報保持レジスタ３６４、第４のプロトコル情報保持レジスタ３６６、データ格納部３７０、およびバックログ格納部３７２を有している。
【００５５】
＜受信装置３００の各機能構成＞
パケット送信部３５２、パケット受信部３５４、イベント管理部３５８、第１のプロトコル情報保持レジスタ３６０、第２のプロトコル情報保持レジスタ３６２、第３のプロトコル情報保持レジスタ３６４、第４のプロトコル情報保持レジスタ３６６、プロトコル制御部３６８、およびデータ格納部３７０は、図４を参照して説明した受信装置２００のパケット送信部２５２、パケット受信部２５４、イベント管理部２５８、第１のプロトコル情報保持レジスタ２６０、第２のプロトコル情報保持レジスタ２６２、第３のプロトコル情報保持レジスタ２６４、第４のプロトコル情報保持レジスタ２６６、プロトコル制御部２６８、およびデータ格納部２７０をそれぞれ適用できる。
【００５６】
本実施の形態に係る受信装置２００のＴＣＰエンジン部３５６は、演算回路などのハードウェアや、ＣＰＵ２０２からの命令によって実現される。ＴＣＰエンジン部３５６は、パケット送信部３５２、およびパケット受信部３５４と接続される。ＴＣＰエンジン部３５６は、ＴＣＰプロトコルにしたがってセッションを確立し、データの送受信を行う。例えば、ＴＣＰエンジン部３５６は、パケット受信部３５４によって入力されるＩＰパケットに付帯されるヘッダの宛先ポート番号フィールドを参照し、第１のプロトコル情報保持レジスタ２６０−第３のプロトコル情報保持レジスタ３６４から、宛先ポート番号フィールドに付帯される宛先ポート番号と一致するポート番号が設定されたプロトコル情報保持レジスタを選択する。
【００５７】
ＴＣＰエンジン部３５６は、第１のプロトコル情報保持レジスタ３６０−第３のプロトコル情報保持レジスタ３６４のいずれかに、宛先ポート番号フィールドに付帯される宛先ポート番号と一致するポート番号が設定されたプロトコル情報保持レジスタがある場合、該プロトコル情報保持レジスタが使用中であるか否かを判断する。ＴＣＰエンジン部３５６は、該プロトコル情報保持レジスタが使用中でない場合、該使用中でないプロトコル情報保持レジスタに送信装置１００との間で３ウェイハンドシェイクを行う際に取得されるプロトコル情報を保持する。その後、ＴＣＰエンジン部３５６は、使用中でないプロトコル情報保持レジスタに保持したプロトコル情報を使用して、通信制御を行う。
【００５８】
一方、ＴＣＰエンジン部３５６は、第１のプロトコル情報保持レジスタ３６０−第３のプロトコル情報保持レジスタ３６４のいずれも、宛先ポート番号フィールドに付帯される宛先ポート番号と一致するポート番号が設定されたものでない場合、第４のプロトコル情報保持レジスタ３６６が、宛先ポート番号フィールドに付帯される宛先ポート番号と一致するポート番号が設定されたものであるか否かを判断する。または、ＴＣＰエンジン部３５６は、第１のプロトコル情報保持レジスタ３６０−第３のプロトコル情報保持レジスタ３６４のいずれかが宛先ポート番号と一致するポート番号が設定されたプロトコル情報保持レジスタであっても使用中である場合、第４のプロトコル情報保持レジスタ３６６が、宛先ポート番号フィールドに付帯される宛先ポート番号と一致するポート番号が設定されたプロトコル情報保持レジスタであるか否かを判断する。
【００５９】
ＴＣＰエンジン部３５６は、第４のプロトコル情報保持レジスタ３６６が宛先ポート番号フィールドに付帯される宛先ポート番号と一致するポート番号が設定されたプロトコル情報保持レジスタである場合、その第４のプロトコル情報保持レジスタ３６６に送信装置１００との間で３ウェイハンドシェイクを行う際に取得されるプロトコル情報を保持する。さらに、ＴＣＰエンジン部３５６は、バックログ格納部３７２に、プロトコル情報の一部を保持する。ＴＣＰエンジン部３５６は、第４のプロトコル情報保持レジスタ３６６にプロトコル情報を保持し、さらにバックログ格納部３７２にプロトコル情報の一部を保持した後に、プロトコル情報を保持するイベントが発生したことを通知するイベント通知信号を作成し、イベント管理部３５８に入力する。
【００６０】
図８は、バックログ格納部３７２に格納されるプロトコル情報の一部を示す。図８に示されるように、バックログ格納部３７２には、リモートアドレスフィールド、ローカルポートフィールド、リモートポートフィールド、ＳＮＤ＿ＮＸＴフィールドなどのセッションを確立した送信装置を特定できる情報（以下、「特定情報」という）が格納される。
【００６１】
ＴＣＰエンジン部３５６は、イベント管理部３５８にイベント通知信号を入力した後で、且つ該イベント通知信号に対応するプロトコル情報が第１のプロトコル情報保持レジスタ３６０−第３のプロトコル情報保持レジスタ３６４のいずれかに保持されるまでの間に、以下の処理を行う。ＴＣＰエンジン部３５６は、送信装置１００によって送信されるＩＰパケットに付帯される情報に基づいて、バックログ格納部３７２に格納した特定情報に該当するものがあるか否かを判断する。具体的には、ＴＣＰエンジン部３５６は、バックログ格納部３７２に格納した特定情報のうち、リモートアドレスフィールド、ローカルポートフィールド、およびリモートポートフィールドに格納される情報に一致するものが、ＩＰパケットに付帯されているか否かを判断する。ＴＣＰエンジン部３５６は、バックログ格納部３７２に格納した特定情報に一致するものがある場合、該送信装置１００との間でセッションの確立が行われていると判断し、ＳＮＤ＿ＮＸＴフィールドに格納されている情報に基づいて、該送信装置１００に応答する。一方、ＴＣＰエンジン部３５６は、バックログ格納部３７２に格納した特定情報に一致するものがない場合、該送信装置１００との間でセッションの確立が行われていないため、該送信装置１００に応答しない。これによって、セッションを確立していない送信装置によって送信されるＩＰパケットに対しては応答しないようにできるため、セキュリティを向上できる。
【００６２】
＜受信装置３００の動作＞
図９は、本実施の形態に係る受信装置の動作（その２）を示す。
【００６３】
ステップＳ９０２−Ｓ９１０は、図６のステップＳ６０２−Ｓ６１０を適用できる。
【００６４】
ステップＳ９１２では、ＴＣＰエンジン部２５６は、セッションを確立する際に取得するプロトコル情報の一部をバックログ格納部３７２に格納する。
【００６５】
ステップＳ９１４−Ｓ９２２は、図６のステップＳ６１２−Ｓ６２０を適用できる。
【００６６】
図１０は、本実施の形態に係る受信装置の動作（その３）を示す。
【００６７】
ステップＳ１００２では、受信装置３００のパケット受信部３５４は、送信装置１００によって送信されたＩＰパケットを受信する。
【００６８】
ステップＳ１００４では、受信装置３００のＴＣＰエンジン部３５６は、ＩＰパケットに付帯された発信元ポート番号、宛先ポート番号、ＩＰアドレスを取得する。
【００６９】
ステップＳ１００６では、受信装置３００のＴＣＰエンジン部３５６は、バックログ格納部３７２に格納された特定情報に、ステップＳ１００４で取得した情報に一致するものがあるか否かを判断することによってセッションを確立した送信装置によって送信されたものであるか否かを判断する。セッションを確立した送信装置によって送信されたものでない場合、終了する。例えば、ＴＣＰエンジン部３５６は、リモートアドレスフィールドの値がＩＰパケットのＩＰアドレスに一致するか否か、ローカルポートフィールドの値がＩＰパケットの宛先ポート番号に一致するか否か、リモートポートフィールドの値が発信元ポート番号に一致するか否かを判断する。
【００７０】
ステップＳ１００８では、セッションを確立した送信装置によって送信されたものであると判断した場合、ＴＣＰエンジン部３５６は、ＳＮＤ＿ＮＸＴフィールドの値に基づいてシーケンス番号を求め、該シーケンス番号を付帯した応答パケット（ＡＣＫ）を返す。
【００７１】
本実施の形態によれば、ＩＰパケットに付帯される情報に基づいてセッションを確立した送信装置によって送信されたものであるか否かを判断し、セキュリティを確立した送信装置に対してのみ応答するため、セッションを確立していない送信装置に対して応答してしまうことを防止でき、セキュリティを向上できる。
【００７２】
受信装置用の各プログラムは、インストール可能な形式または実行可能な形式のファイルによって、コンピュータで読み取り可能な記録媒体に記録されて流通されるようにしてもよい。また、上記記録媒体の他の例として、ＣＤ−Ｒ(Compact Disc Recordable)、ＤＶＤ(Digital Versatile Disk)、ブルーレイディスク等が挙げられる。また、上記実施の形態の各プログラムが記憶されたＣＤ−ＲＯＭ等の記録媒体、並びに、これらプログラムが記憶されたフラッシュメモリは、プログラム製品(Program Product)として、国内または国外へ提供されることができる。
【００７３】
また、通信システムを構成する送信装置１００、および受信装置２００は、相互に通信可能なものに適用できる。例えば、送信装置１００、および受信装置２００は、ＩＰ(Internet Protocol)電話機や、インターネット電話機、ＰＣ(Personal Computer)等に搭載することなどによって適用してもよい。さらに、送信装置１００、および受信装置２００は、スマートフォン、携帯電話機、カーナビゲーション端末、ウェアラブルコンピュータ、プロジェクタ、監視カメラ、電子黒板、電子看板（デジタルサイネージ）、ゲーム機、または、通信機能を備えた産業用機器に搭載することによって適用してもよい。ウェアラブルコンピュータには、腕時計型のものやヘッドマウントディスプレイ等が含まれる。また、産業用機器には、ＭＦＰ(Multifunction Peripheral/Printer/Product)等のオフィス機器、内視鏡等の医療用機器、耕運機等の農業用機器などが含まれる。
【００７４】
更に、例えば、端末に受信装置２００が搭載され、そのアプリが自らセンターのサーバにアクセスして、各種データを送信したり取得する場合にも適用される。この場合、相手側が、端末ではなく、サーバの場合もあり得る。
【００７５】
上述した実施の形態において、受信装置は通信装置の一例であり、パケット受信部は受信部の一例であり、イベント管理部は転送処理部の一例である。また、第１のプロトコル情報保持レジスタ−第３のプロトコル情報保持レジスタは１または複数の第１のプロトコル情報保持部の一例であり、第４のプロトコル情報保持レジスタは第２のプロトコル情報保持部の一例である。また、受信装置用プログラムは通信制御プログラムの一例である。
【００７６】
本発明は特定の実施例、変形例を参照しながら説明されてきたが、各実施例、変形例は単なる例示に過ぎず、当業者は様々な変形例、修正例、代替例、置換例などを理解するであろう。説明の便宜上、本発明の実施例に従った装置は機能的なブロック図を用いて説明されたが、そのような装置はハードウェアで、ソフトウエアでまたはそれらの組み合わせで実現されてもよい。本発明は上記実施例に限定されず、本発明の精神から逸脱することなく、様々な変形例、修正例、代替例、置換例などが包含される。
【符号の説明】
【００７７】
５０  ネットワーク
１００  送信装置
２００、３００  受信装置
２０２  ＣＰＵ
２０４  ＲＯＭ
２０６  ＲＡＭ
２０８  ＳＳＤ
２１０  フラッシュメモリ
２１２  ネットワークＩ／Ｆ
２５２、３５２  パケット送信部
２５４、３５４  パケット受信部
２５６、３５６  ＴＣＰエンジン部
２５８、３５８  イベント管理部
２６０、３６０  第１のプロトコル情報保持レジスタ
２６２、３６２  第２のプロトコル情報保持レジスタ
２６４、３６４  第３のプロトコル情報保持レジスタ
２６６、３６６  第４のプロトコル情報保持レジスタ
２６８、３６８  プロトコル制御部
２７０、３７０  データ格納部
３７２  バックログ格納部
【先行技術文献】
【特許文献】
【００７８】
【特許文献１】特開２０１４−１５８２４１号公報
【図１】
0006575082.tif 000002
【図２】
0006575082.tif 000003
【図３】
0006575082.tif 000004
【図４】
0006575082.tif 000005
【図５】
0006575082.tif 000006
【図６】
0006575082.tif 000007
【図７】
0006575082.tif 000008
【図８】
0006575082.tif 000009
【図９】
0006575082.tif 000010
【図１０】
0006575082.tif 000011