IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社リコーの特許一覧

特許7151516通信装置、通信プログラム、及び通信方法
<>
  • 特許-通信装置、通信プログラム、及び通信方法 図1
  • 特許-通信装置、通信プログラム、及び通信方法 図2
  • 特許-通信装置、通信プログラム、及び通信方法 図3
  • 特許-通信装置、通信プログラム、及び通信方法 図4
  • 特許-通信装置、通信プログラム、及び通信方法 図5
  • 特許-通信装置、通信プログラム、及び通信方法 図6
  • 特許-通信装置、通信プログラム、及び通信方法 図7
  • 特許-通信装置、通信プログラム、及び通信方法 図8
  • 特許-通信装置、通信プログラム、及び通信方法 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-10-03
(45)【発行日】2022-10-12
(54)【発明の名称】通信装置、通信プログラム、及び通信方法
(51)【国際特許分類】
   H04L 69/16 20220101AFI20221004BHJP
   H04L 43/106 20220101ALI20221004BHJP
【FI】
H04L69/16
H04L43/106
【請求項の数】 10
(21)【出願番号】P 2019014875
(22)【出願日】2019-01-30
(65)【公開番号】P2020123858
(43)【公開日】2020-08-13
【審査請求日】2021-10-21
(73)【特許権者】
【識別番号】000006747
【氏名又は名称】株式会社リコー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】清水 尚之
【審査官】鈴木 香苗
(56)【参考文献】
【文献】特開2006-279394(JP,A)
【文献】特開2005-064595(JP,A)
【文献】特開2017-005402(JP,A)
【文献】国際公開第2005/039150(WO,A1)
【文献】特開2016-158062(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 69/16
H04L 43/106
(57)【特許請求の範囲】
【請求項1】
通信ネットワークを介して接続される他の通信装置と通信する通信装置であって、
不正なTCPタイムスタンプを含む受信パケットを受信したときに、前記受信パケットを送信した通信装置の情報を記憶部に記憶して管理する管理部と、
前記他の通信装置と通信するときに、前記他の通信装置の情報が前記記憶部に記憶されているか否かを判断する判断部と、
前記他の通信装置の情報が前記記憶部に記憶されている場合、前記他の通信装置との通信におけるTCPタイムスタンプオプションを無効にする通信制御部と、
を有する、通信装置。
【請求項2】
前記他の通信装置の情報が前記記憶部に記憶されていない場合、TCPタイムスタンプを用いて前記他の通信装置と通信を行う、請求項1に記載の通信装置。
【請求項3】
前記通信装置の情報は、当該通信装置のMACアドレスを含み、
前記判断部は、前記他の通信装置から受信したSYNパケットに含まれるMACアドレスが、前記記憶部に記憶されているか否かを判断する、請求項1又は2に記載の通信装置。
【請求項4】
前記管理部は、前記受信パケットのTCPタイムスタンプが、前回受信した受信パケットのTCPタイムスタンプよりも古い場合、前記受信パケットが不正なTCPタイムスタンプを含むと判断する、請求項1乃至3のいずれか一項に記載の通信装置。
【請求項5】
前記管理部は、過去に受信した複数のTCPタイムスタンプを保持しておき、
前記受信パケットのTCPタイムスタンプと、前記過去に受信した複数のTCPタイムスタンプとを用いて、前記受信パケットが不正なTCPタイムスタンプであるか否かを判断する、請求項1乃至4のいずれか一項に記載の通信装置。
【請求項6】
前記管理部は、前記TCPタイムスタンプが、予め設定された所定の条件を満たす場合、前記受信パケットが不正なTCPタイムスタンプを含むと判断する、請求項1乃至5のいずれか一項に記載の通信装置。
【請求項7】
前記所定の条件の設定を受け付ける設定受付部を有する、請求項6に記載の通信装置。
【請求項8】
前記記憶部に記憶する前記通信装置の情報の登録を受け付ける登録受付部を有する、請求項1乃至7のいずれか一項に記載の通信装置。
【請求項9】
通信ネットワークを介して接続される他の通信装置と通信する通信装置に、
不正なTCPタイムスタンプを含む受信パケットを受信したときに、前記受信パケットを送信した通信装置の情報を記憶部に記憶する処理と、
前記他の通信装置と通信するときに、前記他の通信装置の情報が前記記憶部に記憶されているかを判断する処理と、
前記他の通信装置の情報が前記記憶部に記憶されている場合、前記他の通信装置との通信におけるTCPタイムスタンプオプションを無効にする処理と、
を実行させる、通信プログラム。
【請求項10】
通信装置が、通信ネットワークを介して接続される他の通信装置と通信する通信方法であって、
前記通信装置が、
不正なTCPタイムスタンプを含む受信パケットを受信したときに、前記受信パケットを送信した通信装置の情報を記憶部に記憶する処理と、
前記他の通信装置と通信するときに、前記他の通信装置の情報が前記記憶部に記憶されているかを判断する処理と、
前記他の通信装置の情報が前記記憶部に記憶されている場合、前記他の通信装置との通信におけるTCPタイムスタンプオプションを無効にする処理と、
を実行する、通信方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信装置、通信プログラム、及び通信方法に関する。
【背景技術】
【0002】
TCP(Transmission Control Protocol)通信を行う通信システムにおいて、TCPオプションの一つであるTCPタイムスタンプ(TCP Timestamp)を用いた通信が行われている。
【0003】
また、通信系の違い等の理由によって、順序が入れ替わったミラーパケットの並べ替えを行うために、ミラーリングハブで受信したパケット毎に、タイムスタンプ情報を示すパケットを作成して、記憶装置に転送する技術が知られている(例えば、特許文献1参照)。
【発明の概要】
【発明が解決しようとする課題】
【0004】
TCPタイムスタンプを用いた通信では、受信パケットの順序が入れ替わると、TCPタイムスタンプの値が不正と判断され、不正と判断された受信パケットは破棄されるため、通信セッションが途切れてしまう場合がある。
【0005】
これに対して、例えば、特許文献1に開示された技術を適用して、パケットを並べ替える方法も考えられるが、この方法では、送信側の通信装置が、送信パケットに追加情報を付加しなければならないという問題がある。
【0006】
本発明の一実施形態は、上記の問題点に鑑みてなされたものであって、TCPタイムスタンプと用いて通信する通信システムにおいて、送信パケットに追加情報を付加しなくても、不正なTCPタイムスタンプによる通信セッションの途切れを低減できるようにする。
【課題を解決するための手段】
【0007】
上記目的を達成するため、本発明の一実施形態に係る通信装置は、通信ネットワークを介して接続される他の通信装置と通信する通信装置であって、不正なTCPタイムスタンプを含む受信パケットを受信したときに、前記受信パケットを送信した通信装置の情報を記憶部に記憶して管理する管理部と、前記他の通信装置と通信するときに、前記他の通信装置の情報が前記記憶部に記憶されているか否かを判断する判断部と、前記他の通信装置の情報が前記記憶部に記憶されている場合、前記他の通信装置との通信におけるTCPタイムスタンプオプションを無効にする通信制御部と、を有する。
【発明の効果】
【0008】
本発明の一実施形態によれば、TCPタイムスタンプと用いて通信する通信システムにおいて、送信パケットに追加情報を付加しなくても、不正なTCPタイムスタンプによる通信セッションの途切れを低減できる。
【図面の簡単な説明】
【0009】
図1】一実施形態に係る通信システムのシステム構成の例を示す図である。
図2】一実施形態に係るMFPのハードウェア構成の例を示す図である。
図3】一実施形態に係るPCのハードウェア構成の例を示す図である。
図4】第1の実施形態に係る通信装置の機能構成の例を示す図である。
図5】第1の実施形態に係る通信制御処理の例を示すフローチャートである。
図6】第1の実施形態に係る判断部の処理について説明するための図である。
図7】第1の実施形態に係るTCPタイムスタンプを判断する処理について説明するための図である。
図8】第2の実施形態に係る通信装置の機能構成の例を示す図である。
図9】第2の実施形態に係る装置情報の登録、及びルール情報の設定について説明するための図である。
【発明を実施するための形態】
【0010】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
【0011】
<システム構成>
図1は、一実施形態に係る通信システムのシステム構成の例を示す図である。通信システム1は、例えば、インターネットやLAN(Local Area Network)等の通信ネットワーク10を介して、他の通信装置と通信する複数の通信装置が含まれる。複数の通信装置には、例えば、MFP(Multifunction Peripheral)100a、プロジェクタ100b、ビデオ会議端末100c等の電子機器や、PC(Personal Computer)100d、スマートフォン1003、サーバ100fの情報処理装置等が含まれる。なお、以下の説明の中で、複数の通信装置のうち、任意の通信装置を示す場合「通信装置100」を用いる。
【0012】
通信装置100は、通信ネットワーク10を介して接続される他の通信装置と、TCPタイムスタンプ(TCP Timestamp)を用いて、TCP(Transmission Control Protocol)通信を行うことができる。
【0013】
TCPタイムスタンプは、TCPオプションの一つであり、パケット中にタイムスタンプ(送信時間)を埋め込むために用いられる。TCPタイプスタンプの情報は、例えば、パケットの往復時間(RTT: Round Trip Time)の測定や、シーケンス番号の巡回防止等に用いられる。TCPタイムスタンプはオプションであるため、有効/無効のいずれでもTCP通信が可能であるが、有効にすることにより、スループットの向上や通信品質の向上が期待できるため、できるだけ有効に設定することが望ましい。
【0014】
TCPタイムスタンプは、TCP3ウェイハンドシェイク(TCP 3 way handshake)の際に、お互いのSYN(Synchronize)パケットにフラグを設定することで有効となり、TCPパケットを送信するときに、内部タイマの値をTCPタイムスタンプに格納する。
【0015】
TCPパケットを送信するときにTCPタイムスタンプに格納する値は、単調増加させることがRFC1323に規定されているが、例えば、対向機やネットワークの状態等によって、受信するTCPタイムスタンプの値が入れ替わる(逆転する)場合がある。
【0016】
TCPタイムスタンプを用いた通信では、TCPタイムスタンプの値が逆転すると、TCPタイムスタンプの値が不正と判断され、不正と判断された受信パケットは破棄されるため、TCPの通信セッションが途切れてしまう場合がある。このような場合、再度TCPの通信セッションが確立することができるが、対向機やネットワークの状態が改善されない限り、上述したような、TCPタイムスタンプの逆転現象は高い確率で再発するという問題がある。
【0017】
一方、TCPタイムスタンプを一律で無効に設定してしまうと、RTTの測定精度が低下する、或いはシーケンス番号の巡回防止ができないため、TCP通信のスループットや通信品質等が低下する等の問題がある。
【0018】
また、例えば、特許文献1に開示された技術を適用して、パケットを並べ替える方法も考えられるが、この方法では、送信側の通信装置が、送信パケットに追加情報を付加しなければならないという問題がある。
【0019】
そこで、本実施形態では、TCPタイムスタンプと用いて通信する通信システム1において、送信パケットに追加情報を付加しなくても、不正なTCPタイムスタンプによる通信セッションの途切れを低減する方法について説明する。
【0020】
本実施形態に係る通信装置100は、不正なTCPタイムスタンプを含む受信パケットを受信したときに、受信パケットを送信した通信装置の情報(例えば、MACアドレス等)を記憶部に記憶する機能を有している。
【0021】
また、通信装置100は、他の通信装置と通信するときに、他の通信装置から受信したSYNパケットに含まれる通信装置の情報が、記憶部に記憶されている場合、他の通信装置との通信におけるTCPタイムスタンプを無効にして通信を行う。一方、他の通信装置から受信したSYNパケットに含まれる通信装置の情報が、記憶部に記憶されていない場合、他の通信装置との通信におけるTCPタイムスタンプを有効にして通信を行う。
【0022】
これにより、通信装置100は、他の通信装置100から不正なタイムスタンプを受信していない場合、他の通信装置とTCPタイムオプションを有効にして通信を行うことができるので、スループット、通信品質等の向上が期待できる。
【0023】
また、通信装置100は、TCPタイムスタンプと用いて通信する通信システム1において、送信パケットに追加情報を付加しなくても、不正なTCPタイムスタンプによる通信セッションの途切れを低減することができる。
【0024】
ここでは、一例として、通信装置100がMFP100a等の電子機器であり、他の通信装置がPC100d等の情報処理装置であるものとして、以下の説明を行う。ただし、これは、あくまで一例であり、通信装置100及び他の通信装置は、例えば、プロジェクタ100b、IWB(Interactive White Board:相互通信が可能な電子式の黒板機能を有する白板)、デジタルサイネージ、HUD(Head Up Display)装置等の出力装置であっても良い。また、通信装置100及び他の通信装置は、例えば、産業機械、撮像装置、集音装置、医療機器、ネットワーク家電、自動車(Connected Car)、デジタルカメラ、ウェアラブル端末等の機器であっても良い。さらに、通信装置100及び他の通信装置は、例えば、携帯電話、スマートフォン、タブレット端末、ゲーム機、PDA(Personal Digital Assistant)、デジタルカメラ、ウェアラブル端末等の汎用の情報処理装置であっても良い。
【0025】
<ハードウェア構成>
続いて、本実施形態に係る通信装置100のハードウェア構成の例について説明する。
【0026】
(MFPのハードウェア構成)
図2は、一実施形態に係るMFPのハードウェア構成の例を示す図である。ここでは、通信装置100が電子機器である場合のハードウェア構成の一例として、MFP100aハードウェア構成について説明する。
【0027】
MFP100aは、例えば、図2に示されるように、コントローラ210、近距離通信回路220、エンジン制御部230、操作パネル240、ネットワークI/F(Interface)250等を備えている。
【0028】
これらのうち、コントローラ210は、コンピュータの主要部であるCPU(Central Processing Unit)201、システムメモリ(MEM-P)202、ノースブリッジ(NB)203、サウスブリッジ(SB)204、ASIC(Application Specific Integrated Circuit)205、記憶部であるローカルメモリ(MEM-C)206、HDD(Hard Disk Drive)コントローラ207、及び、記憶部であるHD(Hard Disk)208等を有し、NB203とASIC205との間をAGP(Accelerated Graphics Port)バス211で接続した構成となっている。
【0029】
これらのうち、CPU201は、MFP100aの全体制御を行う制御部である。NB203は、CPU201と、MEM-P202、SB204、及びAGPバス211とを接続するためのブリッジであり、MEM-P202に対する読み書きなどを制御するメモリコントローラと、PCI(Peripheral Component Interconnect)マスタ及びAGPターゲットとを有する。
【0030】
MEM-P202は、コントローラ210の各機能を実現させるプログラムやデータの格納用メモリであるROM(Read Only Memory)202a、プログラムやデータの展開、及びメモリ印刷時の描画用メモリなどとして用いるRAM(Random Access Memory)202bとからなる。なお、RAM202bに記憶されているプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD-ROM、CD-R、DVD等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成しても良い。
【0031】
SB204は、NB203とPCIデバイス、周辺デバイスとを接続するためのブリッジである。ASIC205は、画像処理用のハードウェア要素を有する画像処理用途向けのIC(Integrated Circuit)であり、AGPバス211、PCIバス212、HDDコントローラ207、及びMEM-C206をそれぞれ接続するブリッジの役割を有する。このASIC205は、PCIターゲット及びAGPマスタ、ASIC205の中核をなすアービタ(ARB)、MEM-C206を制御するメモリコントローラ、ハードウェアロジック等により画像データの回転などを行う複数のDMAC(Direct Memory Access Controller)、並びに、スキャナ部231及びプリンタ部232との間でPCIバス212を介したデータ転送を行うPCIユニットとからなる。なお、ASIC205には、USBのインターフェースや、IEEE1394(Institute of Electrical and Electronics Engineers 1394)のインターフェースを接続するようにしても良い。
【0032】
MEM-C206は、コピー用画像バッファ及び符号バッファとして用いるローカルメモリである。HD208は、画像データの蓄積、印刷時に用いるフォントデータの蓄積、フォームの蓄積を行うためのストレージである。HD208は、CPU201の制御に従ってHD208に対するデータの読出又は書込を制御する。AGPバス211は、グラフィック処理を高速化するために提案されたグラフィックスアクセラレータカード用のバスインタフェースであり、MEM-P202に高スループットで直接アクセスすることにより、グラフィックスアクセラレータカードを高速にすることができる。
【0033】
近距離通信回路220には、1つ以上の無線通信I/F220aが備わっている。無線通信I/F220aには、例えば、NFC(Near Field Communication)、Bluetooth(登録商標)等の近距離無線通信を行うためのアンテナ、高周波回路、通信制御回路等が含まれ得る。
【0034】
エンジン制御部230は、例えば、スキャナ部231及びプリンタ部232等によって構成されている。スキャナ部231は、原稿等を読み取る読取装置である。プリンタ部232は、印刷データを印刷媒体に印刷する印刷装置である。スキャナ部231又はプリンタ部232には、例えば、誤差拡散やガンマ変換等の画像処理部分が含まれている。
【0035】
操作パネル240は、現在の設定値や選択画面等を表示させ、操作者からの入力を受け付けるタッチパネル等のパネル表示部240a、並びに、濃度の設定条件などの画像形成に関する条件の設定値を受け付けるテンキー及びコピー開始指示を受け付けるスタートキー等からなる操作ボタン240bを備えている。コントローラ210は、MFP100a全体の制御を行い、例えば、描画、通信、操作パネル240からの入力等を制御する。
【0036】
なお、MFP100aは、操作パネル240のアプリケーション切り替えキーにより、ドキュメントボックス機能、コピー機能、プリンタ機能、及びファクシミリ機能を順次に切り替えて選択することが可能となる。ドキュメントボックス機能の選択時にはドキュメントボックスモードとなり、コピー機能の選択時にはコピーモードとなり、プリンタ機能の選択時にはプリンタモードとなり、ファクシミリモードの選択時にはファクシミリモードとなる。
【0037】
また、ネットワークI/F250は、通信ネットワーク10を利用してデータ通信をするためのインターフェースである。近距離通信回路220及びネットワークI/F250は、PCIバス212を介して、ASIC205に電気的に接続されている。
【0038】
(PCのハードウェア構成)
図3は、一実施形態に係るPCのハードウェア構成の例を示す図である。ここでは、通信装置100が情報処理装置である場合のハードウェア構成の一例として、PC100dハードウェア構成について説明する。
【0039】
PC100dは、例えば、図3に示すようなコンピュータのハードウェア構成を有している。PC100dは、例えば、CPU301、ROM302、RAM303、HD304、HDDコントローラ305、ディスプレイ306、外部機器接続I/F307、ネットワークI/F308、キーボード309、ポインティングデバイス310、DVD-RW(Digital Versatile Disk Rewritable)ドライブ312、メディアI/F314、及びバスライン315等を備えている。
【0040】
これらのうち、CPU301は、PC100d全体の動作を制御する。ROM302は、例えば、IPL(Initial Program Loader)等のCPU301の起動に用いられるプログラムを記憶する。RAM303は、CPU301のワークエリアとして使用される。HD304は、プログラム等の各種データを記憶する。HDDコントローラ305は、CPU301の制御に従ってHD304に対する各種データの読み出し又は書き込みを制御する。
【0041】
ディスプレイ306は、カーソル、メニュー、ウィンドウ、文字、又は画像などの各種情報を表示する。外部機器接続I/F307は、各種の外部機器を接続するためのインターフェースである。この場合の外部機器は、例えば、USB(Universal Serial Bus)メモリやプリンタ等が含まれる。ネットワークI/F308は、通信ネットワーク10を利用してデータ通信をするためのインターフェースである。
【0042】
キーボード309は、文字、数値、各種指示などの入力のための複数のキーを備えた入力手段の一種である。ポインティングデバイス310は、各種指示の選択や実行、処理対象の選択、カーソルの移動などを行う入力手段の一種である。DVD-RWドライブ312は、着脱可能な記録媒体の一例としてのDVD-RW311に対する各種データの読み出し又は書き込みを制御する。なお、DVD-RW311は、DVD-RWに限らず、DVD-R等であっても良い。メディアI/F314は、フラッシュメモリ等のメディア313に対するデータの読み出し又は書き込み(記憶)を制御する。バスライン315は、上記の各構成要素を電気的に接続するためのアドレスバス、データバス及び各種の制御信号等を含む。
【0043】
<機能構成>
続いて、通信装置100の機能構成について説明する。
【0044】
図4は、一実施形態に係る通信装置の機能構成の例を示す図である。通信装置100は、例えば、図2のCPU201(又は図3のCPU301)で所定のプログラム(通信プログラム)を実行することにより、通信部401、管理部402、判断部403、通信制御部404、及び記憶部405等を実現している。なお、上記の各機能構成のうち、少なくとも一部は、ハードウェアによって実現されるものであっても良い。
【0045】
通信部401は、例えば、CPU201(又はCPU301)で実行されるプログラム、及びネットワークI/F250(又はネットワークI/F308)等によって実現され、通信ネットワーク10を介して接続される他の通信装置とTCP通信を行う。
【0046】
管理部402は、例えば、CPU201(又はCPU301)で実行されるプログラムによって実現され、通信部401が不正なTCPタイムスタンプを含む受信パケットを受信したときに、受信パケットを送信した通信装置の情報を記憶部405に記憶する。
【0047】
例えば、管理部402は、受信パケットに含まれるTCPタイムスタンプの順序が入れ替わっているとき(逆転しているとき)、不正なTCPタイムスタンプと判断する。
【0048】
好ましくは、管理部402は、記憶部405のルール情報412に予め設定されたルール(所定の条件)を満たすTCPタイムスタンプについても、不正なTCPタイムスタンプと判断する。
【0049】
また、管理部402は、不正なTCPタイムスタンプを含むと判断された受信パケットに設定されている送信元のMAC(Media Access Control)アドレス(通信装置の情報の一例)を、記憶部405の装置情報411に記憶して管理する。
【0050】
好ましくは、管理部402は、過去に受信した複数のTCPタイムスタンプを、記憶部405等に保持しておき、受信パケットのTCPタイムスタンプと、過去に受信した複数のTCPタイムスタンプとを用いて、受信パケットが不正なTCPタイムスタンプを含むか否かを判断しても良い。
【0051】
判断部403は、例えば、CPU201(又はCPU301)で実行されるプログラムによって実現され、他の通信装置と通信するときに、他の通信装置の情報が、記憶部405に記憶されているか否かを判断する。例えば、判断部403は、他の通信装置から受信したSYNパケットに含まれる送信元のMACアドレスが、記憶部405の装置情報411に記憶されているが否かを判断する。
【0052】
通信制御部404は、例えば、CPU201(又はCPU301)で実行されるプログラムによって実現され、他の通信装置の情報が記憶部405に記憶されている場合、他の通信装置との通信におけるTCPタイムスタンプオプションを無効にする。例えば、通信制御部404は、判断部403によって、他の通信装置の情報が、記憶部405に記憶されていると判断された場合、SYNパケット応答するSYN/ACKパケットのTCPタイムスタンプオプションを無効に設定する。
【0053】
一方、通信制御部404は、SYNパケットに含まれる他の通信装置の情報が記憶部405に記憶されていない場合、他の通信装置との通信におけるTCPタイムスタンプオプションを有効にする。
【0054】
記憶部405は、例えば、CPU201(又はCPU301)で実行されるプログラム、及び図2のHD208(又は図3のHD304)等によって実現され、装置情報411、ルール情報412、及び受信パケットのTCPタイムス801タンプ等の情報を記憶する。
【0055】
装置情報411に記憶されている情報の一例を表1に示す。
【0056】
【表1】
装置情報411には、例えば、表1に示すように、TCPタイムスタンプが不正と判断された他の通信装置のMACアドレスの一覧が記憶されている。
【0057】
また、ルール情報412に記憶されている情報の一例を表2に示す。
【0058】
【表2】
ルール情報412には、例えば、表2に示すように、受信パケットに含まれるTCPタイムスタンプを、不正と判断するためのルールの一覧が記憶されている。
【0059】
<処理の流れ>
続いて、第1の実施形態に係る通信方法の処理の流れについて説明する。
【0060】
[第1の実施形態]
図5は、第1の実施形態に係る通信制御処理の例を示すフローチャートである。この処理は、通信装置100が、他の通信装置と通信を行うときに実行する通信制御処理の例を示している。
【0061】
ステップS501において、通信装置100の通信部401は、TCP通信を行う他の通信装置からSYNパケットを受信する。
【0062】
ステップS502において、通信装置100の判断部403は、受信したSYNパケットに含まれる送信元のMACアドレスが、記憶部405に記憶されているか否かを判断する。
【0063】
図6は、第1の実施形態に係る判断部の処理について説明するための図である。図6に示すように、受信したSYNパケット601には、SYNパケット601を送信した送信元のMACアドレスが含まれている。また、記憶部405の装置情報411には、図に示すように、過去にTCPタイムスタンプが不正と判断された通信装置のMACアドレスの一覧が記憶されている。
【0064】
判断部403は、SYNパケット601に含まれる送信元のMACアドレスが、装置情報411に記憶されているか否かを判断し、送信元のMACアドレスが装置情報411に記憶されていない場合、処理をステップS503に移行させる。一方、判断部403は、送信元のMACアドレスが装置情報411に記憶されている場合、処理をステップS510に移行させる。
【0065】
例えば、図6の例では、SYNパケット601に含まれる送信元のMACアドレス「aa:bb:cc:dd:ee:ff」が、装置情報411に記憶されているMACアドレスと一致するので、通信装置100は、ステップS510の処理を実行する。
【0066】
まず、ステップS502からステップS503に移行した場合の処理について説明する。ステップS503に移行すると、通信装置100の通信制御部404は、他の通信装置とTCPタイムスタンプオプションを有効に設定する。これにより、通信部401は、受信したSYNパケットに応じて、TCPタイムスタンプを有効に設定したSYN/ACKパケットを、他の通信装置に送信する。これにより、ステップS504において、通信装置100は、他の通信装置とTCPタイムスタンプ有効でTCP通信を行う。
【0067】
ステップS505において、通信装置100は、TCPの通信セッションが終了したか否かを判断する。TCPの通信セッションが終了した場合、通信装置100は、図5の処理を終了させる。一方、TCPの通信セッションが終了していない場合、通信装置100は、処理をステップS506に移行させる。
【0068】
ステップS506において、通信装置100の通信部401は、他の通信装置から送信されるTCPパケットを受信すると、ステップS507以降の処理を実行する。
【0069】
ステップS507において、通信装置100の管理部402は、受信したTCPパケットのTCPタイムスタンプが不正であるか否かを判断する。
【0070】
図7は、第1の実施形態に係るTCPタイムスタンプを判断する処理について説明するための図である。
【0071】
図7(a)は、TCPタイムスタンプ611のフォーマットの例を示している。図7(a)に示すように、TCPタイムスタンプ611には、オプション番号、長さ、TimeStamp値、TimeStamp Echo Reply値等の情報が含まれる。管理部402は、これらの情報のうち、TimeStamp値を、TCPパケットを受信する毎に、記憶部405に保持(記憶)しておく。
【0072】
また、管理部402は、通信部401がTCPパケットを受信すると、例えば、図7(b)に示すように、前回受信したTimeStamp値と、今回受信したTimeStamp値とを比較する。さらに、管理部402は、図7(b)に示すように、今回受信したTimeStamp値が、前回受信したTimeStamp値より小さい場合(又は前記受信したTimeStamp値と同じ値である場合)、TCPタイムスタンプが不正であると判断する。一方、管理部は、今回受信したTimeStamp値が、前回受信したTimeStamp値より大きい場合、TCPタイムスタンプが不正ではない(正しい)と判断する。
【0073】
好ましくは、管理部402は、上記の判断に加えて、受信したTCPパケットが、例えば、表2に示すようなルール情報412に設定されているルールを満たす場合、TCPタイムスタンプが不正であると判断する。
【0074】
受信したTCPパケットのTCPタイムスタンプが不正である場合、管理部402は、処理をステップS508に移行させる。一方、受信したTCPパケットのTCPタイムスタンプが不正ではない場合、管理部402は、処理をステップS509に移行させる。
【0075】
ステップS508に移行すると、管理部402は、受信したTCPパケットに含まれる通信装置の情報を、記憶部405に記憶する。例えば、管理部402は、受信したTCPパケットに含まれる送信元のMACアドレスを、表1に示すような装置情報411に登録する。
【0076】
ステップS509に移行すると、管理部402は、受信したTCPパケットに含まれるTCPタイムスタンプ(TimeStamp値)を記憶部405等に保持(記憶)して、処理をステップS505に戻す。
【0077】
続いて、ステップS502からステップS510に移行した場合の処理について説明する。ステップS510に移行すると、通信装置100の通信制御部404は、他の通信装置との通信におけるTCPタイムスタンプオプションを無効に設定する。これにより、通信部401は、受信したSYNパケットに応じて、TCPタイムスタンプを無効に設定したSYN/ACKパケットを、他の通信装置に送信する。これにより、ステップS511において、通信装置100は、他の通信装置とTCPタイムスタンプ無効でTCP通信を行う。
【0078】
ステップS512において、通信装置100は、TCPの通信セッションが終了するまで通信を継続し、TCPの通信セッションが終了すると図5の処理を終了する。
【0079】
上記の処理により、通信装置100は、通信先の他の通信装置から、不正なTCPタイムスタンプを受信していない場合、TCPタイムスタンプを有効してTCP通信を行うことができる。
【0080】
また、通信装置100は、上記の処理を繰り返し実行することにより、通信先の他の通信装置から、不正なTCPタイムスタンプを受信した場合、TCPタイムスタンプを無効に設定することができる。
【0081】
これにより、通信装置100は、例えば、他の通信装置と通信中に、不正なTCPタイムスタンプにより通信セッションが途切れた場合、TCPタイムスタンプを無効に変更して通信セッションを再開することができるようになる。
【0082】
従って、本実施形態によれば、TCPタイムスタンプと用いて通信する通信システム1において、送信パケットに追加情報を付加しなくても、不正なTCPタイムスタンプによる通信セッションの途切れを低減できるようになる。
【0083】
[第2の実施形態]
図8は、第2の実施形態に係る通信装置の機能構成の例を示す図である。第2の実施形態に係る通信装置100は、図4に示す第1の実施形態に係る通信装置100の機能構成に加えて、登録受付部801、設定受付部802等を有している。
【0084】
登録受付部801は、例えば、CPU201(又はCPU301)で実行されるプログラムによって実現され、表1に示すような装置情報411に記憶する通信装置の情報(例えば、MACアドレス)を受け付ける。また、登録受付部801は、受け付けた通信装置の情報を、記憶部405の装置情報411に記憶する。
【0085】
設定受付部802は、例えば、CPU201(又はCPU301)で実行されるプログラムによって実現され、表2に示すようなルール情報412に登録する判断ルール(所定の条件)を受け付ける。また、設定受付部802は、受け付けた判断ルールを、記憶部のルール情報412に記憶する。
【0086】
図9は、第2の実施形態に係る装置情報の登録、及びルール情報の設定について説明するための図である。
【0087】
第1の実施形態では、通信装置100の管理部402が、他の通信装置から受信した受信パケットのTCPタイムスタンプが不正であると判断したときに、他の通信装置のMACアドレス(通信装置の情報)を、装置情報411に自動的に登録していた。例えば、管理部402は、受信パケットのTCPタイムスタンプが、前回のTCPタイムスタンプより古い場合、及びルール情報412に設定された判断ルールを満たしている場合、他の通信装置のMACアドレスを装置情報411に自動的に登録していた。
【0088】
第2の実施形態では、通信装置100の登録受付部801は、例えば、図2の操作パネル240(又は図3のディスプレイ306)等の表示部に登録画面902を表示させて、ユーザによるMACアドレスの登録を受け付けることができる、これにより、ユーザは、例えば、登録画面902のMACアドレスの入力欄等にMACアドレスを入力すること等により、MACアドレスを手動で装置情報411に登録することができる。
【0089】
また、第2の実施形態では、通信装置100の設定受付部802は、例えば、図2の操作パネル240(又は図3のディスプレイ306)等の表示部に設定画面901を表示させて、ユーザによる判断ルールの設定を受け付けることができる。これにより、ユーザは、例えば、設定画面901に表示された、設定可能な判断ルールの一覧から、設定したい判断ルールを有効に設定すること等により、判断ルールを手動でルール情報412に設定することができる。
【0090】
また、別の一例として、登録受付部801、設定受付部802は、管理者のPC等から送信される装置情報、ルール情報等の設定要求に応じて、記憶部405に記憶した装置情報411、ルール情報412を更新するものであっても良い。
【0091】
これにより、通信装置100のユーザや管理者等は、装置情報411、ルール情報412等を、より柔軟に管理することができるようになる。
【0092】
以上、本発明の各実施形態によれば、TCPタイムスタンプと用いて通信する通信システム1において、送信パケットに追加情報を付加しなくても、不正なTCPタイムスタンプによる通信セッションの途切れを低減できるようになる。
【0093】
<補足>
上記で説明した各実施形態の各機能は、一又は複数の処理回路によって実現することが可能である。ここで、本明細書における「処理回路」とは、電子回路により実装されるプロセッサのようにソフトウェアによって各機能を実行するようプログラミングされたプロセッサや、上記で説明した各機能を実行するよう設計されたASIC(Application Specific Integrated Circuit)、DSP(digital signal processor)、FPGA(field programmable gate array)や従来の回路モジュール等のデバイスを含むものとする。
【符号の説明】
【0094】
1 通信システム
10 通信ネットワーク
100 通信装置
401 通信部
402 管理部
403 判断部
404 通信制御部
405 記憶部
【先行技術文献】
【特許文献】
【0095】
【文献】特開2018-074511号公報
図1
図2
図3
図4
図5
図6
図7
図8
図9