JP6575082B2 - 通信装置、通信制御プログラム、および通信制御方法 - Google Patents

通信装置、通信制御プログラム、および通信制御方法 Download PDF

Info

Publication number
JP6575082B2
JP6575082B2 JP2015053685A JP2015053685A JP6575082B2 JP 6575082 B2 JP6575082 B2 JP 6575082B2 JP 2015053685 A JP2015053685 A JP 2015053685A JP 2015053685 A JP2015053685 A JP 2015053685A JP 6575082 B2 JP6575082 B2 JP 6575082B2
Authority
JP
Japan
Prior art keywords
protocol information
information holding
communication device
session
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2015053685A
Other languages
English (en)
Other versions
JP2016174293A (ja
Inventor
佐藤 宏
宏 佐藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2015053685A priority Critical patent/JP6575082B2/ja
Publication of JP2016174293A publication Critical patent/JP2016174293A/ja
Application granted granted Critical
Publication of JP6575082B2 publication Critical patent/JP6575082B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、通信装置に関する。
インターネットなどで利用されている通信プロトコルとして、TCP(Transmission Control Protocol)とIP(Internet Protocol)とを組み合わせたものが知られている。TCP/IPにおいては、通信相手側との間でセッションを確立した際に取得した情報を用いて通信制御を行う。
TCPセッションを確立し、通信制御を行う技術が知られている(例えば、特許文献1参照)。
セッションを確立し、通信制御を行うには、メモリや、CPU(Central Processing Unit)のリソースを必要とする。このため、特にCPUのリソースが限られている組み込み機器においては、同時に通信を行うセッションの数を制限する必要がある。
仮に、通信を行うセッションの数を制限している間はセッションの確立要求に対して応答しないようにした場合、セッションの確立要求を送信した側は、該セッションの確立要求が受信されなかったために応答を受信できないのか、セッションの数が制限されているため応答を受信できないのか判断できないため、システムの運用上問題がある。
そこで、本発明は、通信を行うセッションの数が制限されている場合に、セッションを確立することを目的とする。
開示の一実施の形態の通信装置は、
バイトストリームでデータ通信を行うプロトコルにしたがって動作する通信装置であって、
他の通信装置との間でセッションを確立する際に取得されるプロトコル情報を保持する1または複数の第1のプロトコル情報保持部と、
他の通信装置との間でセッションを確立する際に取得されるプロトコル情報を一時的に保持する第2のプロトコル情報保持部と、
該第2のプロトコル保持部に保持された前記プロトコル情報を格納するデータ格納部と、
他の通信装置によって送信されたセッション確立要求に応じて該他の通信装置との間でセッションを確立する処理を行う際に、前記1または複数の第1のプロトコル情報保持部のいずれかが使用されていない場合には、使用されていない第1のプロトコル情報保持部に該セッションを確立する際に取得するプロトコル情報を保持させるとともに該プロトコル情報を使用して前記他の通信装置との間で通信を行い、前記1または複数の第1のプロトコル情報保持部が使用されている場合には前記第2のプロトコル情報保持部に該プロトコル情報を保持させるエンジン部と、
前記第2のプロトコル情報保持部に保持した前記プロトコル情報を前記データ格納部に転送する転送処理部と、
該転送処理部によって前記プロトコル情報を転送した後に、前記1または複数の第1のプロトコル情報保持部のいずれかが使用されなくなった場合に、前記データ格納部に格納した前記プロトコル情報を前記1または複数の第1のプロトコル情報保持部のうち使用されなくなったものに入力するプロトコル制御部と
他の通信装置との間でセッションを確立する際に取得されるプロトコル情報のうち、該セッションを確立した前記他の通信装置を特定する特定情報を保持するバックログ格納部と、
を有し、
前記エンジン部は、前記プロトコル制御部によって前記1または複数の第1のプロトコル情報保持部のいずれかに入力された前記プロトコル情報を使用して前記他の通信装置と通信を行い、
他の通信装置によって送信されるパケットを受信した際に、前記エンジン部は、該バックログ格納部に格納される特定情報に基づいて、該他の通信装置がセッションを確立したものであると判断できる場合に、該パケットに対して応答する。
開示の実施の形態によれば、通信を行うセッションの数が制限されている場合に、セッションを確立することができる。
一実施の形態に係る通信システムの構成例を示す図である。 フレーム構成の一例を示す図である。 一実施の形態に係る受信装置を示す図である。 一実施の形態に係る受信装置を示す機能ブロック図(その1)である。 プロトコル情報の一例を示す図である。 一実施の形態に係る受信装置の動作を示すフローチャート(その1)である。 一実施の形態に係る受信装置を示す機能ブロック図(その2)である。 プロトコル情報の一例を示す図である。 一実施の形態に係る受信装置の動作を示すフローチャート(その2)である。 一実施の形態に係る受信装置の動作を示すフローチャート(その3)である。
次に、本発明を実施するための形態を、以下の実施例に基づき図面を参照しつつ説明する。以下で説明する実施例は一例に過ぎず、本発明が適用される実施の形態は、以下の実施例に限られない。
なお、実施例を説明するための全図において、同一機能を有するものは同一符号を用い、繰り返しの説明は省略する。
<第1の実施の形態>
<通信システム>
図1は、本実施の形態に係る通信システムを示す図である。通信システムは送信装置100と受信装置200とを有する。送信装置100と受信装置200との間は、インターネットなどのネットワーク50を介して有線または無線によって接続される。送信装置100と受信装置200は、バイトストリームでデータ通信を行うTCPなどの所定のプロトコルにしたがって通信を行う。
送信装置100は、受信装置200との間で3ウェイハンドシェイク(three-way handshaking)を行う。具体的には、送信装置100は、通信を行うのに先立って、SYNパケット(synchronize packet)などのセッション確立要求を送信する。受信装置200は、送信装置100によって送信されるセッション確立要求を受信すると、送信装置100に接続を許可するSYNACKパケットなどのセッション確立応答を送信するとともに、送信装置100との間で送受信する情報(以下、「プロトコル情報」という)を格納する領域を割り当てる。セッション確立応答を受信した送信装置100は、ACKパケットなどの接続開始要求を送信し、受信装置200と通信を開始する。
受信装置200は、プロトコル情報を格納する領域として、通信用のレジスタと、待ち受け用のレジスタとを有する。受信装置200は、通信用のレジスタにプロトコル情報を格納した後に、該プロトコル情報を使用して引き続き通信を行うことができる。また、受信装置200は、待ち受け用のレジスタにプロトコル情報を格納した場合には引き続き通信を行うことができず、通信用のレジスタが使用されなくなった場合に、該使用されなくなった通信用のレジスタにプロトコル情報を格納した後に、該プロトコル情報を使用して引き続き通信を行うことができる。
受信装置200は、プロトコル情報を格納する領域を割り当てる際に、セッション確立要求によって指定されるポート番号と一致するポート番号が設定された通信用のレジスタが空いている場合には、その通信用のレジスタを割り当てる。受信装置200は、セッション確立要求によって指定されるポート番号と一致するポート番号が設定された通信用のレジスタが空いていない場合には、該ポート番号が待ち受け用のレジスタに設定されたポート番号と一致する場合には、その待ち受け用のレジスタを割り当てる。そして、3ウェイハンドシェイクが終了し、セッションが確立されると、待ち受け用のレジスタに格納したプロトコル情報を該待ち受け用のレジスタとは異なるデータ格納部に退避させ、待ち受け用のレジスタを初期化する。これによって、他の送信装置によって、セッション確立要求が送信された場合に、該セッション確立要求によって指定されるポート番号と一致するポート番号が設定された通信用のレジスタが空いていない場合でも、該ポート番号が待ち受け用のレジスタのポート番号と一致する場合には、その待ち受け用のレジスタを割り当てることができる。
<フレーム構成>
図2は、送信装置100と受信装置200との間で送受信されるフレームフォーマットの一例として、TCPヘッダのフォーマットを示す。
フレームは、発信元ポート番号フィールドと、宛先ポート番号フィールドと、シーケンス番号フィールドと、確認応答(ACK)番号フィールドと、データオフセットフィールドと、予約フィールドと、コードビットフィールドとを有する。さらに、フレームは、ウインドウサイズフィールドと、チェックサムフィールドと、緊急ポインタフィールドと、オプションフィールドと、パディングフィールドとを有する。
発信元ポート番号フィールドは16ビットで構成され、発信元のポート番号が格納される。発信元のポート番号は、TCPパケットの送信元のアプリケーションを識別するための番号である。宛先ポート番号フィールドは16ビットで構成され、宛先のポート番号が格納される。宛先のポート番号は、あて先となるアプリケーションが待ち受けしているポート番号である。
シーケンス番号フィールドは32ビットで構成され、分割されたTCPセグメントのシーケンス番号が格納される。シーケンス番号は、データを送信する送信装置100によって管理される。送信装置100は、データを送信するたびに、送信したデータのバイト数分だけシーケンス番号を加算し、TCPパケットに付帯して送信する。確認応答番号フィールドは32ビットで構成され、送信側が次に送信すべきデータのシーケンス番号が格納される。確認応答番号は、受信したデータに対して、どこのバイト位置までを受信したかを表す。
データオフセットフィールドは4ビットで構成され、TCPヘッダ長が4オクテット単位で格納される。データオフセットは、TCPデータが始まる位置を表す。「予約」フィールドは6ビットで構成され、0が格納される。コードビットフィールドは6ビットで構成され、各ビットはフラグとして使用される。
ウインドウサイズフィールドは16ビットで構成され、受信側が現在受信可能なデータサイズを送信側に通知するために使用される。送信側は、ウインドウサイズで指定されたデータサイズ以上のデータを送信しない。チェックサムフィールドは16ビットで構成され、データの信頼性を保証するために使用される。オプションフィールドおよびパディングフィールドは32ビットで構成され、パディングフィールドには0が格納される。
<受信装置200>
図3は、本実施の形態に係る受信装置200のハードウェア構成図である。図3に示されているように、本実施の形態の受信装置200は、受信装置200全体の動作を制御するCPU(Central Processing Unit)202、およびIPL(Initial Program Loader)等のCPU202の駆動に用いられるプログラムを記憶したROM(Read Only Memory)204を備えている。さらに、受信装置200は、CPU202のワークエリアとして使用されるRAM(Random Access Memory)206、受信装置用のプログラム等の各種データを記憶するフラッシュメモリ210、およびCPU202の制御にしたがってフラッシュメモリ210に対する各種データの読み出しまたは書き込みを制御するSSD(Solid State Drive)208を備えている。さらに、受信装置200は、ネットワーク50を利用してデータ伝送をするためのネットワークI/F(Interface)212、および上記各構成要素を図3に示されているように電気的に接続するためのアドレスバスやデータバス等のシステムバス250を備えている。
<受信装置200の機能構成>
図4は、本実施の形態に係る受信装置200を示す。受信装置200は、パケット送信部252と、パケット受信部254と、TCPエンジン部256と、イベント管理部258と、プロトコル制御部268とを有する。これら各部は、図3に示されている各構成要素のいずれかが、フラッシュメモリ210からRAM206上に展開されたプログラムに従ったCPU202からの命令によって動作することで実現される機能が含まれる。また、受信装置200は、図3に示されているROM204、RAM206、フラッシュメモリ210によって構築される第1のプロトコル情報保持レジスタ260、第2のプロトコル情報保持レジスタ262、第3のプロトコル情報保持レジスタ264、第4のプロトコル情報保持レジスタ266、およびデータ格納部270を有している。
(受信装置200の各機能構成)
次に、図3および図4を用いて、受信装置200の各機能構成について詳細に説明する。なお、以下では、受信装置200の各機能構成を説明するにあたって、図3に示されている各構成要素のうち、受信装置200の各機能構成を実現させるための主な構成要素との関係も説明する。
図4に示される受信装置200のパケット送信部252は、ネットワークI/F212によって実現され、TCPエンジン部256によって生成されたIPパケットをネットワーク50を経由して送信装置100に送信する。
図4に示される受信装置200のパケット受信部254は、ネットワークI/F212によって実現され、送信装置100によって送信されたIPパケットを受信し、該IPパケットをTCPエンジン部256に入力する。
図4に示される受信装置200のTCPエンジン部256は、演算回路などのハードウェアや、CPU202からの命令によって実現される。TCPエンジン部256は、パケット送信部252、およびパケット受信部254と接続される。TCPエンジン部256は、TCPプロトコルにしたがってセッションを確立し、データの送受信を行う。例えば、TCPエンジン部256は、パケット受信部254によって入力されるIPパケットに付帯されるヘッダの宛先ポート番号フィールドを参照し、第1のプロトコル情報保持レジスタ260−第3のプロトコル情報保持レジスタ264から、宛先ポート番号フィールドに付帯される宛先ポート番号と一致するポート番号が設定されたプロトコル情報保持レジスタをを選択する。
TCPエンジン部256は、第1のプロトコル情報保持レジスタ260−第3のプロトコル情報保持レジスタ264のいずれかに、宛先ポート番号フィールドに付帯される宛先ポート番号と一致するポート番号が設定されたプロトコル情報保持レジスタがある場合、該プロトコル情報保持レジスタが使用中であるか否かを判断する。TCPエンジン部256は、該プロトコル情報保持レジスタが使用中でない場合、該使用中でないプロトコル情報保持レジスタに送信装置100との間で3ウェイハンドシェイクを行う際に取得されるプロトコル情報を保持する。その後、TCPエンジン部256は、使用中でないプロトコル情報保持レジスタに保持したプロトコル情報を使用して、通信制御を行う。
一方、TCPエンジン部256は、第1のプロトコル情報保持レジスタ260−第3のプロトコル情報保持レジスタ264のいずれも、宛先ポート番号フィールドに付帯される宛先ポート番号と一致するポート番号が設定されたものでない場合、第4のプロトコル情報保持レジスタ266が、宛先ポート番号フィールドに付帯される宛先ポート番号と一致するポート番号が設定されたものであるか否かを判断する。または、TCPエンジン部256は、第1のプロトコル情報保持レジスタ260−第3のプロトコル情報保持レジスタ264のいずれかが宛先ポート番号と一致するポート番号が設定されたプロトコル情報保持レジスタであっても使用中である場合、第4のプロトコル情報保持レジスタ266が、宛先ポート番号フィールドに付帯される宛先ポート番号と一致するポート番号が設定されたプロトコル情報保持レジスタであるか否かを判断する。
TCPエンジン部256は、第4のプロトコル情報保持レジスタ266が宛先ポート番号フィールドに付帯される宛先ポート番号と一致するポート番号が設定されたプロトコル情報保持レジスタである場合、その第4のプロトコル情報保持レジスタ266に送信装置100との間で3ウェイハンドシェイクを行う際に取得されるプロトコル情報を保持する。TCPエンジン部256は、第4のプロトコル情報保持レジスタ266にプロトコル情報を保持した後に、プロトコル情報を保持するイベントが発生したことを通知するイベント通知信号を作成し、イベント管理部258に入力する。
<プロトコル情報>
図5は、プロトコル情報保持レジスタに保持されるプロトコル情報の一例を示す。図5には、3ウェイハンドシェイクによって、送信装置100、および受信装置200のそれぞれで保持される情報を示す。図5に示す情報以外の情報が保持されてもよい。
プロトコル情報の一例には、プロトコルコントロールブロックフラグ(PCB_Flags)フィールド、TCPステート(TCP_State)フィールド、リモートアドレス(Remote_Address)フィールド、ローカルポート(Local_Port)フィールド、およびリモートポート(Remote_Port)フィールドに付帯される情報が含まれる。さらに、プロトコル情報の一例には、R_MACフィールド、アックカウント(Ack_Count)フィールド、RCV_WIN_TMPフィールド、SND_NXTフィールド、SSTHRESHフィールド、SND_WNDフィールド、RCV_NXTフィールド、およびSND_UNAフィールドに付帯される情報が含まれる。さらに、プロトコル情報の一例には、SND_WL1フィールド、SND_WL2フィールド、CWNDフィールド、Useable_Windowフィールド、Tx_Statusフィールド、Rx_Statusフィールド、およびRCV_WNDフィールドに付帯される情報が含まれる。
図4に戻り説明を続ける。図4に示される受信装置200の第1のプロトコル情報保持レジスタ260は、RAM206、およびCPU202からの命令によって実現される。第1のプロトコル情報保持レジスタ260は、送信装置100との間でセッションを確立するために、3ウェイハンドシェイクを行うことによって取得されるプロトコル情報を保持する。例えば、第1のプロトコル情報保持レジスタ260は、ポート番号80番の通信用に設定される。受信装置200は、第1のプロトコル情報保持レジスタ260にプロトコル情報を保持した後に、引き続き、該プロトコル情報を使用して送信装置100との間で通信を行う。
図4に示される受信装置200の第2のプロトコル情報保持レジスタ262は、RAM206、およびCPU202からの命令によって実現される。第2のプロトコル情報保持レジスタ262は、送信装置100との間でセッションを確立するために、3ウェイハンドシェイクを行うことによって取得されるプロトコル情報を保持する。例えば、第2のプロトコル情報保持レジスタ262は、ポート番号90番の通信用に設定される。受信装置200は、第2のプロトコル情報保持レジスタ262にプロトコル情報を保持した後に、引き続き、該プロトコル情報を使用して送信装置100との間で通信を行う。
図4に示される受信装置200の第3のプロトコル情報保持レジスタ264は、RAM206、およびCPU202からの命令によって実現される。第3のプロトコル情報保持レジスタ264は、送信装置100との間でセッションを確立するために、3ウェイハンドシェイクを行うことによって取得されるプロトコル情報を保持する。例えば、第3のプロトコル情報保持レジスタ264は、ポート番号100番の通信用に設定される。受信装置200は、第3のプロトコル情報保持レジスタ264にプロトコル情報を保持した後に、引き続き、該プロトコル情報を使用して送信装置100との間で通信を行う。
図4に示される受信装置200の第4のプロトコル情報保持レジスタ266は、RAM206、およびCPU202からの命令によって実現される。第4のプロトコル情報保持レジスタ266は、送信装置100との間でセッションを確立するために、3ウェイハンドシェイクを行うことによって取得されるプロトコル情報を一時的に保持する。例えば、第4のプロトコル情報保持レジスタ266は、ポート番号80番の待ち受け用に設定される。受信装置200は、第3のプロトコル情報保持レジスタ264にプロトコル情報を保持した後に、該プロトコル情報をデータ格納部270に格納する。
図4に示される受信装置200のイベント管理部258は、CPU202からの命令によって実現される。イベント管理部258は、TCPエンジン部256によって入力されるイベント通知信号に応じて、システムバス250を介して、第4のプロトコル情報保持レジスタ266に格納されたプロトコル情報を取得し、ダイレクトメモリアクセス(DMA: Direct Memory Access)などのデータ転送方式によって、データ格納部270に転送する。イベント管理部258は、データ格納部270にプロトコル情報を転送した後、第4のプロトコル情報保持レジスタ266を初期化する。これによって、第4のプロトコル情報保持レジスタ266は、さらに、他の送信装置との間でセッションを確立するために、3ウェイハンドシェイクを行うことによって取得されるプロトコル情報を保持できる。
図4に示される受信装置200のプロトコル制御部268は、CPU202からの命令によって実現される。プロトコル制御部268は、データ格納部270にプロトコル情報が保持されている場合に、該プロトコル情報に付帯されているポート番号と一致するポート番号が設定されたプロトコル情報保持レジスタが使用されなくなったことによって空いたか否かを判断する。プロトコル制御部268は、プロトコル情報保持レジスタが空いたと判断した場合、ダイレクトメモリアクセスなどのデータ転送方式によって、データ格納部270に格納したプロトコル情報を取得し、該プロトコル情報を空いているプロトコル情報保持レジスタに入力する。これによって、TCPエンジン部256は、該空いているプロトコル情報保持レジスタに保持したプロトコル情報を使用して送信装置100との間で通信を開始することができる。
<受信装置200の動作>
図6は、本実施の形態に係る受信装置200の動作を示す。
ステップS602では、受信装置200のパケット受信部254は、送信装置100によって送信されたIPパケットを受信する。
ステップS604では、受信装置200のTCPエンジン部256は、IPパケットに付帯された宛先ポート番号を取得する。
ステップS606では、受信装置200のTCPエンジン部256は、第1のプロトコル情報保持レジスタ260−第3のプロトコル情報保持レジスタ264のうち、宛先ポート番号に一致するポート番号が設定されたものが空いているか否かを判断する。例えば、送信装置100によって送信されたIPパケットのTCPヘッダの宛先ポート番号が80番である場合、TCPエンジン部256は、ポート番号80番が設定されている第1のプロトコル情報保持レジスタ260が空いているか否か、つまり使用されていないかどうかを判断する。
ステップS608では、受信装置200のTCPエンジン部256は、ステップS606において、宛先ポート番号に一致するポート番号が設定されたものが空いていない場合、第4のプロトコル情報保持レジスタ266に設定されているポート番号が、宛先ポート番号に一致するか否かを判断する。例えば、TCPエンジン部256は、第1のプロトコル情報保持レジスタ260が空いていない場合、第4のプロトコル情報保持レジスタ266に設定されているポート番号が宛先ポート番号に一致するか否かを判断する。第4のプロトコル情報保持レジスタ266に設定されているポート番号が宛先ポート番号に一致しない場合終了する。この場合、セッションを確立できないことを送信装置100に通知して終了するようにしてもよい。
ステップS610では、ステップS608において第4のプロトコル情報保持レジスタ266に設定されているポート番号が宛先ポート番号に一致する場合、TCPエンジン部256は、セッションを確立する際に取得するプロトコル情報を第4のプロトコル情報保持レジスタ266に保持する。例えば、TCPエンジン部256は、第4のプロトコル情報保持レジスタ266に設定されているポート番号が80番であるため、セッションを確立する際に取得するプロトコル情報を第4のプロトコル情報保持レジスタ266に保持する。その後、セッションを確立した送信装置100には、受信可能なデータ量が零であることを公告(アドバタイズ)する。
ステップS612では、受信装置200のイベント管理部258は、データ格納部270に第4のプロトコル情報保持レジスタ266に保持したプロトコル情報を格納する。
ステップS614では、受信装置200のプロトコル制御部268は、第1のプロトコル情報保持レジスタ260−第3のプロトコル情報保持レジスタ264のうち、データ格納部270に格納されているプロトコル情報のポート番号に一致するものが空いたか否かを判断する。例えば、プロトコル制御部268は、第1のプロトコル情報保持レジスタ260が空いたか否かを判断する。
ステップS616では、ステップS614においてプロトコル情報のポート番号に一致するものが空いた場合、プロトコル制御部268は、データ格納部270に格納されているプロトコル情報をその空いているプロトコル情報保持レジスタに転送する。例えば、プロトコル制御部268は、第1のプロトコル情報保持レジスタ260が空いた場合、データ格納部270に格納されているプロトコル情報をその第1のプロトコル情報保持レジスタ260に転送する。
ステップS618では、TCPエンジン部256は、ステップS616において空いているプロトコル情報保持レジスタに転送したプロトコル情報を使用して送信装置100との間で通信を行う。
ステップS620では、受信装置200のTCPエンジン部256は、ステップS606において、宛先ポート番号に一致するポート番号が設定されたものが空いている場合、セッションを確立する際に取得するプロトコル情報をその空いているプロトコル情報保持レジスタに保持する。その後、ステップS618に移行する。例えば、TCPエンジン部256は、ポート番号80番が設定されている第1のプロトコル情報保持レジスタ260が空いている場合、セッションを確立する際に取得するプロトコル情報をその第1のプロトコル情報保持レジスタ260に保持する。
本実施の形態では、受信装置200が、第1のプロトコル情報保持レジスタ260−第3のプロトコル情報保持レジスタ264の3個の通信用のプロトコル情報保持レジスタを有する場合について説明したが、1個−2個でもよいし、4個以上でもよい。また、受信装置200が、第4のプロトコル情報保持レジスタ266の1個の待ち受け用のプロトコル情報保持レジスタを有する場合について説明したが、2個以上でもよい。
また、第1のプロトコル情報保持レジスタ260−第4のプロトコル情報保持レジスタ266に設定するポート番号は上述した例に限らず、異なるポート番号を設定するようにしてもよい。ここで、第4のプロトコル情報保持レジスタ266に設定するポート番号は使用頻度の多いポート番号が設定されるのが好ましい。これによって、送信装置100によって送信されたIPパケットのTCPヘッダの宛先ポート番号が、第4のプロトコル情報保持レジスタ266に設定されているポート番号と一致しないことによって、セッションが確立できない頻度を低下させることができる。
本実施の形態によれば、第1のプロトコル情報保持レジスタ260−第3のプロトコル情報保持レジスタ264の3個の通信用のプロトコル情報保持レジスタが使用されているなどによって通信を行うセッション数が制限されている場合であっても、第4のプロトコル情報保持レジスタ266を使用してセッションを確立できる。
<第2の実施の形態>
本実施の形態に係る通信システムは図1を適用でき、フレーム構成は図2を適用できる。ただし、図1に示される通信システムにおいて、受信装置200の代わりに受信装置300を有する。
本実施の形態に係る受信装置300のハードウエア構成は、図3を適用できる。
<受信装置300の機能構成>
図7は、本実施の形態に係る受信装置300を示す。受信装置300は、パケット送信部352と、パケット受信部354と、TCPエンジン部356と、イベント管理部358と、プロトコル制御部368とを有する。これら各部は、図3に示されている各構成要素のいずれかが、フラッシュメモリ210からRAM206上に展開されたプログラムに従ったCPU202からの命令によって動作することで実現される機能が含まれる。また、受信装置300は、図3に示されているROM204、RAM206、フラッシュメモリ210によって構築される第1のプロトコル情報保持レジスタ360、第2のプロトコル情報保持レジスタ362、第3のプロトコル情報保持レジスタ364、第4のプロトコル情報保持レジスタ366、データ格納部370、およびバックログ格納部372を有している。
<受信装置300の各機能構成>
パケット送信部352、パケット受信部354、イベント管理部358、第1のプロトコル情報保持レジスタ360、第2のプロトコル情報保持レジスタ362、第3のプロトコル情報保持レジスタ364、第4のプロトコル情報保持レジスタ366、プロトコル制御部368、およびデータ格納部370は、図4を参照して説明した受信装置200のパケット送信部252、パケット受信部254、イベント管理部258、第1のプロトコル情報保持レジスタ260、第2のプロトコル情報保持レジスタ262、第3のプロトコル情報保持レジスタ264、第4のプロトコル情報保持レジスタ266、プロトコル制御部268、およびデータ格納部270をそれぞれ適用できる。
本実施の形態に係る受信装置200のTCPエンジン部356は、演算回路などのハードウェアや、CPU202からの命令によって実現される。TCPエンジン部356は、パケット送信部352、およびパケット受信部354と接続される。TCPエンジン部356は、TCPプロトコルにしたがってセッションを確立し、データの送受信を行う。例えば、TCPエンジン部356は、パケット受信部354によって入力されるIPパケットに付帯されるヘッダの宛先ポート番号フィールドを参照し、第1のプロトコル情報保持レジスタ260−第3のプロトコル情報保持レジスタ364から、宛先ポート番号フィールドに付帯される宛先ポート番号と一致するポート番号が設定されたプロトコル情報保持レジスタを選択する。
TCPエンジン部356は、第1のプロトコル情報保持レジスタ360−第3のプロトコル情報保持レジスタ364のいずれかに、宛先ポート番号フィールドに付帯される宛先ポート番号と一致するポート番号が設定されたプロトコル情報保持レジスタがある場合、該プロトコル情報保持レジスタが使用中であるか否かを判断する。TCPエンジン部356は、該プロトコル情報保持レジスタが使用中でない場合、該使用中でないプロトコル情報保持レジスタに送信装置100との間で3ウェイハンドシェイクを行う際に取得されるプロトコル情報を保持する。その後、TCPエンジン部356は、使用中でないプロトコル情報保持レジスタに保持したプロトコル情報を使用して、通信制御を行う。
一方、TCPエンジン部356は、第1のプロトコル情報保持レジスタ360−第3のプロトコル情報保持レジスタ364のいずれも、宛先ポート番号フィールドに付帯される宛先ポート番号と一致するポート番号が設定されたものでない場合、第4のプロトコル情報保持レジスタ366が、宛先ポート番号フィールドに付帯される宛先ポート番号と一致するポート番号が設定されたものであるか否かを判断する。または、TCPエンジン部356は、第1のプロトコル情報保持レジスタ360−第3のプロトコル情報保持レジスタ364のいずれかが宛先ポート番号と一致するポート番号が設定されたプロトコル情報保持レジスタであっても使用中である場合、第4のプロトコル情報保持レジスタ366が、宛先ポート番号フィールドに付帯される宛先ポート番号と一致するポート番号が設定されたプロトコル情報保持レジスタであるか否かを判断する。
TCPエンジン部356は、第4のプロトコル情報保持レジスタ366が宛先ポート番号フィールドに付帯される宛先ポート番号と一致するポート番号が設定されたプロトコル情報保持レジスタである場合、その第4のプロトコル情報保持レジスタ366に送信装置100との間で3ウェイハンドシェイクを行う際に取得されるプロトコル情報を保持する。さらに、TCPエンジン部356は、バックログ格納部372に、プロトコル情報の一部を保持する。TCPエンジン部356は、第4のプロトコル情報保持レジスタ366にプロトコル情報を保持し、さらにバックログ格納部372にプロトコル情報の一部を保持した後に、プロトコル情報を保持するイベントが発生したことを通知するイベント通知信号を作成し、イベント管理部358に入力する。
図8は、バックログ格納部372に格納されるプロトコル情報の一部を示す。図8に示されるように、バックログ格納部372には、リモートアドレスフィールド、ローカルポートフィールド、リモートポートフィールド、SND_NXTフィールドなどのセッションを確立した送信装置を特定できる情報(以下、「特定情報」という)が格納される。
TCPエンジン部356は、イベント管理部358にイベント通知信号を入力した後で、且つ該イベント通知信号に対応するプロトコル情報が第1のプロトコル情報保持レジスタ360−第3のプロトコル情報保持レジスタ364のいずれかに保持されるまでの間に、以下の処理を行う。TCPエンジン部356は、送信装置100によって送信されるIPパケットに付帯される情報に基づいて、バックログ格納部372に格納した特定情報に該当するものがあるか否かを判断する。具体的には、TCPエンジン部356は、バックログ格納部372に格納した特定情報のうち、リモートアドレスフィールド、ローカルポートフィールド、およびリモートポートフィールドに格納される情報に一致するものが、IPパケットに付帯されているか否かを判断する。TCPエンジン部356は、バックログ格納部372に格納した特定情報に一致するものがある場合、該送信装置100との間でセッションの確立が行われていると判断し、SND_NXTフィールドに格納されている情報に基づいて、該送信装置100に応答する。一方、TCPエンジン部356は、バックログ格納部372に格納した特定情報に一致するものがない場合、該送信装置100との間でセッションの確立が行われていないため、該送信装置100に応答しない。これによって、セッションを確立していない送信装置によって送信されるIPパケットに対しては応答しないようにできるため、セキュリティを向上できる。
<受信装置300の動作>
図9は、本実施の形態に係る受信装置の動作(その2)を示す。
ステップS902−S910は、図6のステップS602−S610を適用できる。
ステップS912では、TCPエンジン部256は、セッションを確立する際に取得するプロトコル情報の一部をバックログ格納部372に格納する。
ステップS914−S922は、図6のステップS612−S620を適用できる。
図10は、本実施の形態に係る受信装置の動作(その3)を示す。
ステップS1002では、受信装置300のパケット受信部354は、送信装置100によって送信されたIPパケットを受信する。
ステップS1004では、受信装置300のTCPエンジン部356は、IPパケットに付帯された発信元ポート番号、宛先ポート番号、IPアドレスを取得する。
ステップS1006では、受信装置300のTCPエンジン部356は、バックログ格納部372に格納された特定情報に、ステップS1004で取得した情報に一致するものがあるか否かを判断することによってセッションを確立した送信装置によって送信されたものであるか否かを判断する。セッションを確立した送信装置によって送信されたものでない場合、終了する。例えば、TCPエンジン部356は、リモートアドレスフィールドの値がIPパケットのIPアドレスに一致するか否か、ローカルポートフィールドの値がIPパケットの宛先ポート番号に一致するか否か、リモートポートフィールドの値が発信元ポート番号に一致するか否かを判断する。
ステップS1008では、セッションを確立した送信装置によって送信されたものであると判断した場合、TCPエンジン部356は、SND_NXTフィールドの値に基づいてシーケンス番号を求め、該シーケンス番号を付帯した応答パケット(ACK)を返す。
本実施の形態によれば、IPパケットに付帯される情報に基づいてセッションを確立した送信装置によって送信されたものであるか否かを判断し、セキュリティを確立した送信装置に対してのみ応答するため、セッションを確立していない送信装置に対して応答してしまうことを防止でき、セキュリティを向上できる。
受信装置用の各プログラムは、インストール可能な形式または実行可能な形式のファイルによって、コンピュータで読み取り可能な記録媒体に記録されて流通されるようにしてもよい。また、上記記録媒体の他の例として、CD−R(Compact Disc Recordable)、DVD(Digital Versatile Disk)、ブルーレイディスク等が挙げられる。また、上記実施の形態の各プログラムが記憶されたCD−ROM等の記録媒体、並びに、これらプログラムが記憶されたフラッシュメモリは、プログラム製品(Program Product)として、国内または国外へ提供されることができる。
また、通信システムを構成する送信装置100、および受信装置200は、相互に通信可能なものに適用できる。例えば、送信装置100、および受信装置200は、IP(Internet Protocol)電話機や、インターネット電話機、PC(Personal Computer)等に搭載することなどによって適用してもよい。さらに、送信装置100、および受信装置200は、スマートフォン、携帯電話機、カーナビゲーション端末、ウェアラブルコンピュータ、プロジェクタ、監視カメラ、電子黒板、電子看板(デジタルサイネージ)、ゲーム機、または、通信機能を備えた産業用機器に搭載することによって適用してもよい。ウェアラブルコンピュータには、腕時計型のものやヘッドマウントディスプレイ等が含まれる。また、産業用機器には、MFP(Multifunction Peripheral/Printer/Product)等のオフィス機器、内視鏡等の医療用機器、耕運機等の農業用機器などが含まれる。
更に、例えば、端末に受信装置200が搭載され、そのアプリが自らセンターのサーバにアクセスして、各種データを送信したり取得する場合にも適用される。この場合、相手側が、端末ではなく、サーバの場合もあり得る。
上述した実施の形態において、受信装置は通信装置の一例であり、パケット受信部は受信部の一例であり、イベント管理部は転送処理部の一例である。また、第1のプロトコル情報保持レジスタ−第3のプロトコル情報保持レジスタは1または複数の第1のプロトコル情報保持部の一例であり、第4のプロトコル情報保持レジスタは第2のプロトコル情報保持部の一例である。また、受信装置用プログラムは通信制御プログラムの一例である。
本発明は特定の実施例、変形例を参照しながら説明されてきたが、各実施例、変形例は単なる例示に過ぎず、当業者は様々な変形例、修正例、代替例、置換例などを理解するであろう。説明の便宜上、本発明の実施例に従った装置は機能的なブロック図を用いて説明されたが、そのような装置はハードウェアで、ソフトウエアでまたはそれらの組み合わせで実現されてもよい。本発明は上記実施例に限定されず、本発明の精神から逸脱することなく、様々な変形例、修正例、代替例、置換例などが包含される。
50 ネットワーク
100 送信装置
200、300 受信装置
202 CPU
204 ROM
206 RAM
208 SSD
210 フラッシュメモリ
212 ネットワークI/F
252、352 パケット送信部
254、354 パケット受信部
256、356 TCPエンジン部
258、358 イベント管理部
260、360 第1のプロトコル情報保持レジスタ
262、362 第2のプロトコル情報保持レジスタ
264、364 第3のプロトコル情報保持レジスタ
266、366 第4のプロトコル情報保持レジスタ
268、368 プロトコル制御部
270、370 データ格納部
372 バックログ格納部
特開2014−158241号公報

Claims (6)

  1. バイトストリームでデータ通信を行うプロトコルにしたがって動作する通信装置であって、
    他の通信装置との間でセッションを確立する際に取得されるプロトコル情報を保持する1または複数の第1のプロトコル情報保持部と、
    他の通信装置との間でセッションを確立する際に取得されるプロトコル情報を一時的に保持する第2のプロトコル情報保持部と、
    該第2のプロトコル情報保持部に保持された前記プロトコル情報を格納するデータ格納部と、
    他の通信装置によって送信されたセッション確立要求に応じて該他の通信装置との間でセッションを確立する処理を行う際に、前記1または複数の第1のプロトコル情報保持部のいずれかが使用されていない場合には、使用されていない第1のプロトコル情報保持部に該セッションを確立する際に取得するプロトコル情報を保持させるとともに該プロトコル情報を使用して前記他の通信装置との間で通信を行い、前記1または複数の第1のプロトコル情報保持部が使用されている場合には前記第2のプロトコル情報保持部に該プロトコル情報を保持させるエンジン部と、
    前記第2のプロトコル情報保持部に保持した前記プロトコル情報を前記データ格納部に転送する転送処理部と、
    該転送処理部によって前記プロトコル情報を転送した後に、前記1または複数の第1のプロトコル情報保持部のいずれかが使用されなくなった場合に、前記データ格納部に格納した前記プロトコル情報を前記1または複数の第1のプロトコル情報保持部のうち使用されなくなったものに入力するプロトコル制御部と、
    他の通信装置との間でセッションを確立する際に取得されるプロトコル情報のうち、該セッションを確立した前記他の通信装置を特定する特定情報を保持するバックログ格納部
    を有し、
    前記エンジン部は、前記プロトコル制御部によって前記1または複数の第1のプロトコル情報保持部のいずれかに入力された前記プロトコル情報を使用して前記他の通信装置と通信を行い、
    他の通信装置によって送信されるパケットを受信した際に、前記エンジン部は、該バックログ格納部に格納される特定情報に基づいて、該他の通信装置がセッションを確立したものであると判断できる場合に、該パケットに対して応答する通信装置。
  2. 前記1または複数の第1のプロトコル情報保持部のそれぞれにはポート番号が設定されており、
    前記エンジン部は、前記セッション確立要求に含まれるポート番号に基づいて前記1または複数の第1のプロトコル保持部から使用するものを選択する、請求項1に記載の通信装置。
  3. 前記転送処理部は、前記第2のプロトコル情報保持部に保持した前記プロトコル情報をダイレクトメモリアクセスによって前記データ格納部に格納し、
    前記プロトコル制御部は、前記1または複数の第1のプロトコル情報保持部のいずれかが使用されなくなった場合に、前記データ格納部に格納した前記プロトコル情報をダイレクトメモリアクセスによって前記1または複数の第1のプロトコル情報保持部のうち使用されなくなったものに入力する、請求項1又は2に記載の通信装置。
  4. 前記エンジン部は、TCPにしたがって、3ウェイハンドシェイクを行うことによってセッションを確立する、請求項1ないしのいずれか1項に記載の通信装置。
  5. 他の通信装置との間でセッションを確立する際に取得されるプロトコル情報を保持する1または複数の第1のプロトコル情報保持部と、他の通信装置との間でセッションを確立する際に取得されるプロトコル情報を一時的に保持する第2のプロトコル情報保持部と、該第2のプロトコル情報保持部に保持された前記プロトコル情報を格納するデータ格納部と、他の通信装置との間でセッションを確立する際に取得されるプロトコル情報のうち、該セッションを確立した前記他の通信装置を特定する特定情報を保持するバックログ格納部と、を有し、且つバイトストリームでデータ通信を行うプロトコルにしたがって動作する通信装置に、
    他の通信装置によって送信されたセッション確立要求に応じて該他の通信装置との間でセッションを確立する処理を行わせる際に、前記1または複数の第1のプロトコル情報保持部のいずれかが使用されていない場合には、使用されていない第1のプロトコル情報保持部に該セッションを確立する際に取得されるプロトコル情報を保持させるとともに該プロトコル情報を使用して前記他の通信装置との間で通信を行わせ、前記1または複数の第1のプロトコル情報保持部が使用されている場合には前記第2のプロトコル情報保持部に該プロトコル情報を保持させ、
    前記第2のプロトコル情報保持部に保持した前記プロトコル情報を前記データ格納部に格納させるとともに、前記1または複数の第1のプロトコル情報保持部のいずれかが使用されなくなった場合に、前記データ格納部に格納した前記プロトコル情報を前記1または複数の第1のプロトコル情報保持部のうち使用されなくなったものに入力させ、
    前記1または複数の第1のプロトコル情報保持部のいずれかに入力された前記プロトコル情報を使用して前記他の通信装置と通信を行わせ
    他の通信装置によって送信されるパケットを受信した際に、該バックログ格納部に格納される特定情報に基づいて、該他の通信装置がセッションを確立したものであると判断できる場合に、該パケットに対して応答させる、通信制御プログラム。
  6. 他の通信装置との間でセッションを確立する際に取得されるプロトコル情報を保持する1または複数の第1のプロトコル情報保持部と、他の通信装置との間でセッションを確立する際に取得されるプロトコル情報を一時的に保持する第2のプロトコル情報保持部と、該第2のプロトコル情報保持部に保持された前記プロトコル情報を格納するデータ格納部と、他の通信装置との間でセッションを確立する際に取得されるプロトコル情報のうち、該セッションを確立した前記他の通信装置を特定する特定情報を保持するバックログ格納部と、を有し、且つバイトストリームでデータ通信を行うプロトコルにしたがって動作する通信装置によって実施される通信制御方法であって、
    他の通信装置によって送信されたセッション確立要求に応じて該他の通信装置との間でセッションを確立する処理を行う際に、前記1または複数の第1のプロトコル情報保持部のいずれかが使用されていない場合には、使用されていない第1のプロトコル情報保持部に該セッションを確立する際に取得するプロトコル情報を保持するとともに前記他の通信装置との間で通信を行い、
    前記1または複数の第1のプロトコル情報保持部が使用されている場合には前記第2のプロトコル情報保持部に該プロトコル情報を保持し、
    前記第2のプロトコル情報保持部に保持した前記プロトコル情報を前記データ格納部に格納し、
    前記1または複数の第1のプロトコル情報保持部のいずれかが使用されなくなった場合に、前記データ格納部に格納した前記プロトコル情報を前記1または複数の第1のプロトコル情報保持部のうち使用されなくなったものに入力し、
    前記1または複数の第1のプロトコル情報保持部のいずれかに入力された前記プロトコル情報を使用して前記他の通信装置を通信を行い、
    他の通信装置によって送信されるパケットを受信した際に、該バックログ格納部に格納される特定情報に基づいて、該他の通信装置がセッションを確立したものであると判断できる場合に、該パケットに対して応答する、通信制御方法。
JP2015053685A 2015-03-17 2015-03-17 通信装置、通信制御プログラム、および通信制御方法 Expired - Fee Related JP6575082B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015053685A JP6575082B2 (ja) 2015-03-17 2015-03-17 通信装置、通信制御プログラム、および通信制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015053685A JP6575082B2 (ja) 2015-03-17 2015-03-17 通信装置、通信制御プログラム、および通信制御方法

Publications (2)

Publication Number Publication Date
JP2016174293A JP2016174293A (ja) 2016-09-29
JP6575082B2 true JP6575082B2 (ja) 2019-09-18

Family

ID=57009295

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015053685A Expired - Fee Related JP6575082B2 (ja) 2015-03-17 2015-03-17 通信装置、通信制御プログラム、および通信制御方法

Country Status (1)

Country Link
JP (1) JP6575082B2 (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5380363B2 (ja) * 2010-01-19 2014-01-08 アラクサラネットワークス株式会社 アドレス変換装置およびアドレス変換テーブルの管理方法
US9363188B2 (en) * 2013-03-15 2016-06-07 Arris Enterprises, Inc. Cable modem termination system control of cable modem queue length

Also Published As

Publication number Publication date
JP2016174293A (ja) 2016-09-29

Similar Documents

Publication Publication Date Title
EP3544261A1 (en) Data transmission method and device
CN108494817B (zh) 数据传输方法、相关装置及系统
US9942092B2 (en) Method and an apparatus for controlling messages between host and controller
CN103795632A (zh) 一种数据报文传输方法及相关设备、系统
CN110312283B (zh) 一种信息处理方法及装置
US9288287B2 (en) Accelerated sockets
JP2016170630A5 (ja)
CN115396528A (zh) 基于协议族的quic数据传输方法及装置
JP4363404B2 (ja) 受信装置および方法、並びにプログラム
CN104461978B (zh) 单向数据传输的方法及装置
CN111385068B (zh) 数据传输方法、装置、电子设备及通信系统
JP6149591B2 (ja) 無線中継装置、通信システム、及び、通信方法
JP2006295787A (ja) 情報処理システム、情報処理装置、及び情報処理方法
JP6575082B2 (ja) 通信装置、通信制御プログラム、および通信制御方法
US11172053B2 (en) Transfer apparatus, transfer method, and program for transporting data from a single source to sinks with different communication requirements
JP6758858B2 (ja) 通信装置、通信方法及びプログラム
JP5411992B2 (ja) シングルアソシエーションによるマルチユーザーのサポートの実現方法及び装置
US9106608B2 (en) Communication device, communication method, and non-transitory computer-readable recording medium
CN106341830B (zh) 一种实现联网模式切换的方法及终端
AU2014231331B2 (en) System and method for reliable messaging between application sessions across volatile networking conditions
KR20120042745A (ko) 비접속 환경에서 신뢰적인 통신을 수립하기 위한 방법 및 시스템
JP2004187099A (ja) 通信制御方法、通信システム及び通信装置
JP6458574B2 (ja) 通信装置、通信制御プログラム、および通信制御方法
JP2020013324A (ja) 決済システム、決済端末、サービス提供者端末、ユーザ端末、情報処理方法及びプログラム
CN115982090B (zh) 软硬件协同实现远端内存访问的方法和装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180208

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181102

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181113

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20190326

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190626

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20190702

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190723

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190805

R151 Written notification of patent or utility model registration

Ref document number: 6575082

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees