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

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

▶ 株式会社東芝の特許一覧 ▶ 東芝電機サービス株式会社の特許一覧

特許7562308通信システム、サーバー装置、クライアント装置及びプログラム
<>
  • 特許-通信システム、サーバー装置、クライアント装置及びプログラム 図1
  • 特許-通信システム、サーバー装置、クライアント装置及びプログラム 図2
  • 特許-通信システム、サーバー装置、クライアント装置及びプログラム 図3
  • 特許-通信システム、サーバー装置、クライアント装置及びプログラム 図4
  • 特許-通信システム、サーバー装置、クライアント装置及びプログラム 図5
  • 特許-通信システム、サーバー装置、クライアント装置及びプログラム 図6
  • 特許-通信システム、サーバー装置、クライアント装置及びプログラム 図7
  • 特許-通信システム、サーバー装置、クライアント装置及びプログラム 図8
  • 特許-通信システム、サーバー装置、クライアント装置及びプログラム 図9
  • 特許-通信システム、サーバー装置、クライアント装置及びプログラム 図10
  • 特許-通信システム、サーバー装置、クライアント装置及びプログラム 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-27
(45)【発行日】2024-10-07
(54)【発明の名称】通信システム、サーバー装置、クライアント装置及びプログラム
(51)【国際特許分類】
   H04L 61/103 20220101AFI20240930BHJP
【FI】
H04L61/103
【請求項の数】 8
(21)【出願番号】P 2020109603
(22)【出願日】2020-06-25
(65)【公開番号】P2022006989
(43)【公開日】2022-01-13
【審査請求日】2023-06-13
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(73)【特許権者】
【識別番号】598076591
【氏名又は名称】東芝インフラシステムズ株式会社
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】大西 直哉
(72)【発明者】
【氏名】松山 拓紀
(72)【発明者】
【氏名】中谷 博司
【審査官】速水 雄太
(56)【参考文献】
【文献】特開2018-046392(JP,A)
【文献】特開2019-054496(JP,A)
【文献】特開2004-206397(JP,A)
【文献】特開2012-248083(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/00-12/66
41/00-101/695
(57)【特許請求の範囲】
【請求項1】
第1の装置及び第2の装置を含み、
前記第1の装置は、
送信先IPアドレス、送信先MACアドレス、及び送信先ポート番号を用いて第1の所定の関数により第1の送信側宛先符号を生成する第1の送信側生成部と、
前記第1の送信側宛先符号を付与した要求データを前記第2の装置に送信する第1の通信部と、を備え、
前記第2の装置は、
前記要求データを受信する第2の通信部と、
前記第2の装置のIPアドレス、前記第2の装置のMACアドレス、及び前記第2の装置のアプリケーションソフトウェアが使用するポート番号を用いて前記第1の所定の関数により第1の受信側宛先符号を生成する第2の受信側生成部と、
前記第1の受信側宛先符号と、前記要求データに付与された前記第1の送信側宛先符号が一致する場合、前記要求データに基づく処理を行い、一致しない場合、前記要求データに基づく処理をしない、第2の処理部と、を備える、通信システム。
【請求項2】
前記第2の処理部は、前記要求データのヘッダーの一部を入れ替えることで、前記要求データに対する応答である応答データのヘッダーを生成し、
前記第2の通信部は、前記応答データを前記第1の装置に送信する、請求項1に記載の通信システム。
【請求項3】
前記第2の処理部は、前記要求データのヘッダーの一部をSIMD演算によって入れ替える、請求項2に記載の通信システム。
【請求項4】
前記第1の所定の関数は、ハッシュ関数である、請求項1乃至請求項3のいずれか1項に記載の通信システム。
【請求項5】
前記第1の受信側宛先符号及び前記第1の送信側宛先符号のビット長は、前記第2の装置のOSのアーキテクチャと同じビット長である、請求項1乃至請求項4のいずれか1項に記載の通信システム。
【請求項6】
前記第1の装置は、
前記第1の装置のIPアドレス、前記第1の装置のMACアドレス、及び前記第1の装置のアプリケーションソフトウェアが使用するポート番号を用いて第2の所定の関数により第2の受信側宛先符号を生成する第1の受信側生成部をさらに備え、
前記第2の装置は、
送信先IPアドレス、送信先MACアドレス、及び送信先ポート番号を用いて前記第2の所定の関数により第2の送信側宛先符号を生成する第2の送信側生成部をさらに備え、
前記第2の通信部は、前記要求データに対する応答である応答データに前記第2の送信側宛先符号を付与して前記第の装置に送信し、
前記第1の装置は、
前記第2の受信側宛先符号と、前記要求データに付与された前記第1の送信側宛先符号が一致する場合、前記要求データに基づく処理を行い、一致しない場合、前記要求データに基づく処理をしない、第2の処理部と、を備える、請求項1乃至請求項5のいずれか1項に記載の通信システム。
【請求項7】
要求データを受信するサーバー通信部と、
サーバー装置のIPアドレス、前記サーバー装置のMACアドレス、及び前記サーバー装置のアプリケーションソフトウェアが使用するポート番号を用いて第1の所定の関数により第1の受信側宛先符号を生成するサーバー受信側生成部と、
前記第1の受信側宛先符号と、前記要求データに付与されたクライアント送信側宛先符号が一致する場合、前記要求データに基づく処理を行い、一致しない場合、前記要求データに基づく処理をしない、サーバー処理部と、を備えるサーバー装置。
【請求項8】
サーバー装置が備えるプロセッサーを、
サーバー装置のIPアドレス、前記サーバー装置のMACアドレス、及び前記サーバー装置のアプリケーションソフトウェアが使用するポート番号を用いて第1の所定の関数により第1の受信側宛先符号を生成するサーバー受信側生成部と、
前記第1の受信側宛先符号と、受信された要求データに付与されたクライアント送信側宛先符号が一致する場合、前記要求データに基づく処理を行い、一致しない場合、前記要求データに基づく処理をしない、サーバー処理部と、して機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、通信システム、サーバー装置、クライアント装置及びプログラムに関する。
【背景技術】
【0002】
ネットワークインタフェースの遅延を低減させるため、OS(operating system)のカーネル処理をバイパスする方法がある。一般的な計算機システムでは、TCP(Transmission Control Protocol)/IP(Internet Protocol)及びUDP(User Datagram Protocol)/IPの処理をOSのカーネルが処理するため、データの転送、システムコールの発行、及びコンテキストスイッチの発生などでネットワークインタフェースに遅延が発生する。当該遅延への対応として、計算機システムは、カーネル処理をバイパスすることで、データの転送、システムコールの発行、及びコンテキストスイッチの発生などを低減させ、ネットワークインタフェースの遅延を低減することができるとされている。
【0003】
クライアントサーバー型の時間制約のあるシステムにおいて、応答時間を短縮させるため、OSのカーネルをバイパスしネットワークインタフェース遅延を低減させる方法を用いることができる。しかしながら、イーサネット(登録商標)などの汎用なネットワークを用いるシステムがカーネル処理のバイパスを行うと、アプリケーション層でTCP/IP及びUDP/IPなどの汎用プロトコルの処理を行うこととなり、処理時間が増加してしまう。また、多数のクライアントが単一のサーバーにアクセスをする場合、サーバー側での汎用プロトコル処理の負荷が高くなり、処理時間がさらに増加する可能性がある。
また、サーバーは、クライアントにパケットを返答する際、アプリケーション層でIPヘッダー及びUDPヘッダーなどを生成する必要があり、返答処理に時間を要してしまう。
【先行技術文献】
【特許文献】
【0004】
【文献】特許第5869135号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の実施形態が解決しようとする課題は、汎用プロトコルを用いる場合でもカーネル処理のバイパスにより遅延を低減することができる通信システム、サーバー装置、クライアント装置及びプログラムを提供することである。
【課題を解決するための手段】
【0006】
実施形態の通信システムは、第1の装置及び第2の装置を含む。前記第1の装置は、第1の送信側生成部及び第1の通信部を備える。第1の送信側生成部は、送信先IPアドレス、送信先MACアドレス、及び送信先ポート番号を用いて第1の所定の関数により第1の送信側宛先符号を生成する。第1の通信部は、前記第1の送信側宛先符号を付与した要求データを前記第2の装置に送信する。第2の装置は、第2の通信部、第2の受信側生成部及び第2の処理部を備える。第2の通信部は、前記要求データを受信する。第2の受信側生成部は、前記第2の装置のIPアドレス、前記第2の装置のMACアドレス、及び前記第2の装置のアプリケーションソフトウェアが使用するポート番号を用いて前記第1の所定の関数により第1の受信側宛先符号を生成する。第2の処理部は、前記第1の受信側宛先符号と、前記要求データに付与された前記第1の送信側宛先符号が一致する場合、前記要求データに基づく処理を行い、一致しない場合、前記要求データに基づく処理をしない。
【図面の簡単な説明】
【0007】
図1】第1実施形態に係る通信システム及び当該通信システムに含まれる構成要素の要部構成の一例を示すブロック図。
図2図1中のクライアント装置のプロセッサーによる第1実施形態に係る処理の一例を示すフローチャート。
図3図1中のサーバー装置のプロセッサーによる第1実施形態に係る処理の一例を示すフローチャート。
図4】第1実施形態に係る通信システムの情報の流れの一例を示すシーケンス図。
図5】要求パケットの一例を示す図。
図6】宛先置換処理及び応答パケットについて説明するための図。
図7】SIMD演算による宛先置換処理の例を示す図。
図8】第2実施形態に係る通信システム及び当該通信システムに含まれる構成要素の要部構成の一例を示すブロック図。
図9図8中のクライアント装置のプロセッサーによる第2実施形態に係る処理の一例を示すフローチャート。
図10図8中のサーバー装置のプロセッサーによる第2実施形態に係る処理の一例を示すフローチャート。
図11】第2実施形態に係る通信システムの情報の流れの一例を示すシーケンス図。
【発明を実施するための形態】
【0008】
以下、いくつかの実施形態に係る通信システムについて図面を用いて説明する。なお、以下の実施形態の説明に用いる各図面は、各部の縮尺を適宜変更している場合がある。また、以下の実施形態の説明に用いる各図面は、説明のため、構成を省略して示している場合がある。また、各図面及び本明細書中において、同一の符号は同様の要素を示す。
〔第1実施形態〕
図1は、第1実施形態に係る通信システム1及び通信システム1に含まれる構成要素の要部構成の一例を示すブロック図である。通信システム1は、一例として、サーバー装置100及びクライアント装置200を含む。なお、図1にはクライアント装置200を1つのみ示すが、典型的にはクライアント装置200は、複数ある。また、サーバー装置100は、複数あっても良い。
【0009】
サーバー装置100及びクライアント装置200は、ネットワークNWに接続する。ネットワークNWは、例えば、インターネットを含む通信網である。ネットワークNWは、例えば、WAN(wide area network)を含む通信網である。ネットワークNWは、例えば、イントラネットなどのプライベートネットワークを含む通信網である。ネットワークNWは、例えば、LAN(local area network)を含む通信網である。ネットワークNWは、例えば、専用線を含む通信網である。また、ネットワークNWは、無線回線でも良いし有線回線でも良く、無線回線と有線回線とが混在していても良い。また、ネットワークNWは、公衆携帯電話網などを含む通信網であっても良い。
【0010】
サーバー装置100は、例えば、クライアントサーバーモデルのネットワークアーキテクチャにおけるサーバーとして動作する装置である。サーバー装置100は、一例として、プロセッサー110、ROM(read-only memory)120、RAM(random-access memory)130、補助記憶装置140及び通信インターフェース150を含む。そして、バス160などが、これら各部を接続する。サーバー装置100は、第2の装置の一例である。
【0011】
プロセッサー110は、サーバー装置100の動作に必要な演算及び制御などの処理を行うコンピューターの中枢部分に相当する。プロセッサー110は、ROM120又は補助記憶装置140などに記憶されたファームウェア、OSなどのシステムソフトウェア及びアプリケーションソフトウェアなどのプログラムに基づいて、サーバー装置100の各種の機能を実現するべく各部を制御する。また、プロセッサー110は、当該プログラムに基づいて後述する処理を実行する。なお、当該プログラムの一部又は全部は、プロセッサー110の回路内に組み込まれていても良い。プロセッサー110は、例えば、CPU(central processing unit)、MPU(micro processing unit)、SoC(system on a chip)、DSP(digital signal processor)、GPU(graphics processing unit)、ASIC(application specific integrated circuit)、PLD(programmable logic device)又はFPGA(field-programmable gate array)などである。あるいは、プロセッサー110は、これらのうちの複数を組み合わせたものである。
【0012】
ROM120は、プロセッサー110を中枢とするコンピューターの主記憶装置に相当する。ROM120は、専らデータの読み出しに用いられる不揮発性メモリである。ROM120は、上記のプログラムのうち、例えばファームウェアなどを記憶する。また、ROM120は、プロセッサー110が各種の処理を行う上で使用するデータなども記憶する。
【0013】
RAM130は、プロセッサー110を中枢とするコンピューターの主記憶装置に相当する。RAM130は、データの読み書きに用いられるメモリである。RAM130は、プロセッサー110が各種の処理を行う上で一時的に使用するデータを記憶するワークエリアなどとして利用される。RAM130は、典型的には揮発性メモリである。
【0014】
補助記憶装置140は、プロセッサー110を中枢とするコンピューターの補助記憶装置に相当する。補助記憶装置140は、例えばEEPROM(electric erasable programmable read-only memory)、HDD(hard disk drive)又はフラッシュメモリなどである。補助記憶装置140は、上記のプログラムのうち、例えば、システムソフトウェア及びアプリケーションソフトウェアなどを記憶する。また、補助記憶装置140は、プロセッサー110が各種の処理を行う上で使用するデータ、プロセッサー110での処理によって生成されたデータ及び各種の設定値などを記憶する。
【0015】
通信インターフェース150は、サーバー装置100がネットワークNWなどを介して通信するためのインターフェースである。通信インターフェース150は、第2の通信部の一例である。通信インターフェース150は、サーバー通信部の一例である。
【0016】
バス160は、コントロールバス、アドレスバス及びデータバスなどを含み、サーバー装置100の各部で授受される信号を伝送する。
【0017】
クライアント装置200は、例えば、クライアントサーバーモデルのネットワークアーキテクチャにおけるクライアントとして動作する装置である。クライアント装置200は、サーバー装置100のクライアントとして動作する。クライアント装置200は、例えば、PC(personal computer)、スマートホン、IoT(internet of things)機器、自動改札機などの駅務機器、高速道路のETC(electronic toll collection)ゲートの制御装置などの道路交通システム上の機器、プラント関連機器、製造機械、医療機器、健康器具、ゲーム機などの各種機器及び装置である。クライアント装置200は、一例として、プロセッサー210、ROM220、RAM230、補助記憶装置240、通信インターフェース250、入力装置260及び表示装置270を含む。そして、バス280などが、これら各部を接続する。クライアント装置200は、第1の装置の一例である。
【0018】
プロセッサー210は、クライアント装置200の動作に必要な演算及び制御などの処理を行うコンピューターの中枢部分に相当する。プロセッサー210は、ROM220又は補助記憶装置240などに記憶されたファームウェア、OSなどのシステムソフトウェア及びアプリケーションソフトウェアなどのプログラムに基づいて、クライアント装置200の各種の機能を実現するべく各部を制御する。また、プロセッサー210は、当該プログラムに基づいて後述する処理を実行する。なお、当該プログラムの一部又は全部は、プロセッサー210の回路内に組み込まれていても良い。プロセッサー210は、例えば、CPU、MPU、SoC、DSP、GPU、ASIC、PLD又はFPGAなどである。あるいは、プロセッサー210は、これらのうちの複数を組み合わせたものである。
【0019】
ROM220は、プロセッサー210を中枢とするコンピューターの主記憶装置に相当する。ROM220は、専らデータの読み出しに用いられる不揮発性メモリである。ROM220は、上記のプログラムのうち、例えばファームウェアなどを記憶する。また、ROM220は、プロセッサー210が各種の処理を行う上で使用するデータなども記憶する。
【0020】
RAM230は、プロセッサー210を中枢とするコンピューターの主記憶装置に相当する。RAM230は、データの読み書きに用いられるメモリである。RAM230は、プロセッサー210が各種の処理を行う上で一時的に使用するデータを記憶するワークエリアなどとして利用される。RAM230は、典型的には揮発性メモリである。
【0021】
補助記憶装置240は、プロセッサー210を中枢とするコンピューターの補助記憶装置に相当する。補助記憶装置240は、例えばEEPROM、HDD又はフラッシュメモリなどである。補助記憶装置240は、上記のプログラムのうち、例えば、システムソフトウェア及びアプリケーションソフトウェアなどを記憶する。また、補助記憶装置240は、プロセッサー210が各種の処理を行う上で使用するデータ、プロセッサー210での処理によって生成されたデータ及び各種の設定値などを記憶する。
【0022】
通信インターフェース250は、クライアント装置200がネットワークNWなどを介して通信するためのインターフェースである。通信インターフェース250は、第1の通信部の一例である。通信インターフェース250は、クライアント通信部の一例である。
【0023】
入力装置260は、クライアント装置200の操作者による操作を受け付ける。入力装置260は、例えば、キーボード、キーパッド、タッチパッド又はマウスなどである。
【0024】
表示装置270は、クライアント装置200の操作者に各種情報を通知するための画面を表示する。表示装置270は、例えば、液晶ディスプレイ又は有機EL(electro-luminescence)ディスプレイなどのディスプレイである。また、入力装置260及び表示装置270としては、タッチパネルを用いることもできる。すなわち、タッチパネルが備える表示パネルを表示装置270として、タッチパネルが備えるタッチパッドを入力装置260として用いることができる。
【0025】
バス280は、コントロールバス、アドレスバス及びデータバスなどを含み、クライアント装置200の各部で授受される信号を伝送する。
【0026】
また、サーバー装置100のプロセッサー110は、プログラムを実行することによりアプリケーション処理部111として機能する。アプリケーション処理部111は、補助記憶装置140などに記憶されたアプリケーションソフトウェアを実行する。アプリケーション処理部111は、一例として、ARP(Address Resolution Protocol)処理部112、宛先判定部113及び宛先置換部114を含む。ARP処理部112、宛先判定部113及び宛先置換部114は、いずれもアプリケーションソフトウェアによる処理を実行する。アプリケーション処理部111は、第2の処理部の一例である。アプリケーション処理部111は、サーバー処理部の一例である。
【0027】
ARP処理部112は、ARP処理などを行う。ARP処理は、アドレス解決などのARPに関する処理である。
宛先判定部113は、受信パケットに含まれる第1の宛先符号から宛先を判定する。宛先判定部113は、第2の受信側生成部の一例である。宛先判定部113は、サーバー受信側生成部の一例である。
宛先置換部114は、受信パケットの送信元と送信先を置き換えて(入れ替えて)返答パケットを生成する。
【0028】
また、クライアント装置200のプロセッサー110は、プログラムを実行することによりアプリケーション処理部211及びカーネル処理部212として機能する。
【0029】
アプリケーション処理部211は、アプリケーションソフトウェアを実行する。アプリケーション処理部211は、一例として、宛先符号付与部213を含む。アプリケーション処理部211は、第1の処理部の一例である。アプリケーション処理部211は、クライアント制御部の一例である。
宛先符号付与部213は、第1の宛先符号を生成する。また、宛先符号付与部213は、クライアント装置200が送信するパケットに第1の宛先符号を付与する。第1の宛先符号については後述する。宛先符号付与部213は、第1の送信側生成部の一例である。宛先符号付与部213は、クライアント送信側生成部の一例である。
【0030】
カーネル処理部212は、OSのカーネル処理を行う。カーネル処理部212は、一例として、汎用プロトコル処理部214を含む。
汎用プロトコル処理部214は、UDP、IP及びARPなどの汎用プロトコルに関する処理を行う。
【0031】
以下、実施形態に係る通信システム1の動作を図2図4などに基づいて説明する。なお、以下の動作説明における処理の内容は一例であって、同様な結果を得ることが可能な様々な処理を適宜に利用できる。図2は、クライアント装置200のプロセッサー210による処理の一例を示すフローチャートである。プロセッサー210は、例えば、ROM220又は補助記憶装置240などに記憶されたプログラムに基づいて図2の処理を実行する。図3は、サーバー装置100のプロセッサー110による処理の一例を示すフローチャートである。プロセッサー110は、例えば、ROM120又は補助記憶装置140などに記憶されたプログラムに基づいて図3の処理を実行する。図4は、第1実施形態に係る通信システム1の情報の流れの一例を示すシーケンス図である。なお、図4は、通信システム1における情報の流れを網羅するものではなく、図示しない情報の流れが存在しても良い。また、以下の動作説明では、1台のサーバー装置100と1台のクライアント装置200との間の処理を例に説明を行う。
【0032】
図2のステップS11においてクライアント装置200のプロセッサー210は、ターゲットIPアドレスに対応するターゲットMACアドレスを求めるため、ARP要求を生成する。プロセッサー210は、ARP要求を生成した後、当該ARP要求をブロードキャスト送信するように通信インターフェース250に対して指示する。ARP要求は、ターゲットIPアドレスを持つ装置にMACアドレスの送信を要求するパケットである。また、ARP要求は、送信元のMACアドレス及びIPアドレスを通知するパケットである。ARP要求は、送信元のMACアドレスとしてクライアント装置200のMACアドレス、送信元のIPアドレスとしてクライアント装置200のIPアドレス、ターゲットIPアドレス及び送信先のIPアドレスとしてサーバー装置100のIPアドレスを含む。送信の指示を受けて通信インターフェース250は、ARP要求をブロードキャスト送信する。送信された当該ARP要求は、サーバー装置100の通信インターフェース150によって受信される。ARP要求を受信した装置は、ARP要求に含まれるターゲットIPアドレスがサーバー装置100自身のIPアドレスと同一であるかを確認する。そして、IPアドレスがターゲットIPアドレスとは異なる装置、すなわちサーバー装置100以外の装置は、受信した当該ARP要求を破棄する。図4では、ARP要求をステップST11として示す。
なお、ステップS11の処理は、例えば汎用プロトコル処理部214が行う。
【0033】
一方、図3のステップS21においてサーバー装置100のプロセッサー110は、通信インターフェース150によってパケットが受信されるのを待ち受けている。プロセッサー110は、ARP要求又は要求パケットなどのパケットが受信されたならば、ステップS21においてYesと判定してステップS22へと進む。このとき、プロセッサー110は、当該パケットをカーネルバイパスしてアプリケーション処理部111に渡す。なお、要求パケットについては、後述する。
【0034】
ステップS22においてプロセッサー110は、ステップS21で受信されたパケットがARP要求であるか否かを判定する。プロセッサー110は、ステップS21で受信されたパケットがARP要求でないならば、ステップS22においてNoと判定してステップS23へと進む。
なお、ステップS22の処理は、例えばARP処理部112が行う。
【0035】
ステップS23においてプロセッサー110は、ステップS21で受信されたパケットが要求パケットであるか否かを判定する。プロセッサー110は、ステップS21で受信されたパケットが要求パケットでないならば、ステップS23においてNoと判定して受信されたパケットの種類に応じた処理を行う。
なお、ステップS23の処理は、例えばARP処理部112が行う。
【0036】
プロセッサー110は、ステップS21で受信されたパケットがARP要求であるならば、ステップS22においてYesと判定してステップS24へと進む。
ステップS24においてプロセッサー110は、ステップS21で受信されたARP要求のターゲットIPアドレスがサーバー装置100のIPアドレスと同じであるか否かを判定する。プロセッサー110は、当該ARP要求のターゲットIPアドレスがサーバー装置100のIPアドレスと異なるならば、ステップS24においてNoと判定してステップS25へと進む。
【0037】
ステップS25においてプロセッサー110は、ステップS21で受信されたARP要求を破棄する。プロセッサー110は、ステップS25の処理の後、ステップS21へと戻る。
【0038】
対して、プロセッサー110は、ステップS21で受信されたARP要求のターゲットIPアドレスがサーバー装置100のIPアドレスと同じであるならば、ステップS24においてYesと判定してステップS26へと進む。
【0039】
ステップS26においてプロセッサー110は、ARP処理を行う。プロセッサー110は、ARP処理として、ARPテーブルを生成する。ARPテーブルは、ARP要求に含まれるクライアント装置200のMAC(media access control)アドレスとクライアント装置200のIPアドレスとを紐づけする。
【0040】
ステップS27においてプロセッサー110は、ARP応答を生成する。ARP応答は、ARP要求への応答として、ターゲットMACアドレスをARP要求の送信元に通知する。ARP応答は、送信元のMACアドレスとしてサーバー装置100のMACアドレス、送信元のIPアドレス及びターゲットIPアドレスとしてサーバー装置100のIPアドレス、送信先のMACアドレス及びターゲットMACアドレスとしてクライアント装置200のMACアドレス、送信先のIPアドレスとしてクライアント装置200のIPアドレスを含む。プロセッサー110は、ARP応答を生成した後、当該ARP応答をARP要求の送信元であるクライアント装置200に送信するように通信インターフェース150に対して指示する。送信の指示を受けて通信インターフェース150は、当該ARP応答を当該クライアント装置200に送信する。送信された当該ARP応答は、クライアント装置200の通信インターフェース250によって受信される。図4では、ARP応答をステップST12として示す。
なお、図3のステップS24~ステップS27の処理は、例えばARP処理部112が行う。
【0041】
ステップS28においてプロセッサー110は、第1の宛先符号を生成する。第1の宛先符号は、サーバー装置100及びサーバー装置100のアプリケーションソフトウェアの識別などに用いられる。プロセッサー110は、例えば、サーバー装置100のMACアドレス、サーバー装置100のIPアドレス、及びサーバー装置100のアプリケーションソフトウェアで用いられるポート番号などを用いてハッシュ値又はチェックサムなどを求めることで、当該ハッシュ値又はチェックサムを用いた固定長の第1の宛先符号を生成する。第1の宛先符号生成のためにハッシュ値又はチェックサムを求める関数は、第1の所定の関数の一例である。なお、ハッシュ値を求める関数は、ハッシュ関数と呼ばれる。第1の宛先符号の長さは、処理速度の観点から短い方が好ましい。より好ましくは、第1の宛先符号のビット長は、OSのアーキテクチャのbit数と同じbit数である。例えば、サーバー装置100にインストールされているOSが64bitOSであるならば、第1の宛先符号の長さも64bitであることが好ましい。これは、第1の宛先符号が一致しているかどうかをサーバー装置100が1命令で判定が可能となるためである。また、第1の宛先符号の長さが64bitであれば、衝突確率は1×10-19以下となり、サーバー装置100が誤ってサーバー装置100のアプリケーションソフトウェア宛てでないパケットをサーバー側アプリケーション処理する確率が十分に低くなる。なお、サーバー装置100によって生成される第1の宛先符号を、以下「サーバー側第1の宛先符号」というものとする。サーバー側第1の宛先符号は、第1の受信側宛先符号の一例である。プロセッサー110は、ステップS28の処理の後、ステップS21へと戻る。
なお、ステップS28の処理は、例えば宛先判定部113が行う。
【0042】
一方、図2のステップS12においてクライアント装置200のプロセッサー210は、通信インターフェース250によってARP応答が受信されるのを待ち受けている。プロセッサー210は、ARP応答が受信されたならば、ステップS12においてYesと判定してステップS13へと進む。
なお、ステップS12の処理は、例えば汎用プロトコル処理部214が行う。
【0043】
ステップS13においてプロセッサー210は、要求パケットを送信するか否かを判定する。プロセッサー210は、例えば、アプリケーションソフトウェアの処理などにおいて、サーバー装置100に何らかの要求を送信する必要がある場合に要求パケットを送信すると判定する。プロセッサー210は、要求パケットを送信しないならば、ステップS13においてNoと判定してステップS14へと進む。
なお、ステップS13の処理は、例えばアプリケーション処理部211が行う。
【0044】
ステップS14においてプロセッサー210は、通信インターフェース250によって応答パケットなどのパケットが受信されたか否かを判定する。プロセッサー210は、パケットが受信されないならば、ステップS14においてNoと判定してステップS13へと戻る。かくして、プロセッサー210は、要求パケットを送信すると判定するか、パケットが受信されるまでステップS13及びステップS14を繰り返す待受状態となる。
【0045】
プロセッサー210は、ステップS13及びステップS14の待受状態にあるときに要求パケットを送信すると判定するならば、ステップS13においてYesと判定してステップS15へと進む。
なお、ステップS15の処理は、例えばアプリケーション処理部211が行う。
【0046】
ステップS15においてプロセッサー210は、図5に示すような要求パケット400を生成する。要求パケット400は、サーバー装置100に何らかの要求を行うためのパケットである。要求パケット400は、要求データの一例である。
【0047】
図5は、要求パケット400の一例を示す図である。
要求パケット400は、一例として、Etherヘッダー410、IPヘッダー420、UDPヘッダー430及びペイロード440を含むイーサネットフレームである。
【0048】
Etherヘッダー410は、イーサネットフレームのヘッダー部である。Etherヘッダー410は、一例として、プリアンブル411、送信先MACアドレス412、送信元MACアドレス413及びタイプ/長さ414を含む。
【0049】
プリアンブル411は、イーサネットフレームの開始を示す。
送信先MACアドレス412は、要求パケット400の送信先のMACアドレスを示す。
送信元MACアドレス413は、要求パケット400の送信元のMACアドレスを示す。
タイプ/長さ414は、イーサネットフレームのデータ部で運んでいるプロトコルを示す。あるいは、タイプ/長さ414は、イーサネットフレームのデータ部の長さを示す。
【0050】
IPヘッダー420はIPパケットのヘッダー部である。IPパケットは、イーサネットフレームのデータ部に含まれる。IPヘッダー420は、一例として、チェックサム421、送信元IPアドレス422及び送信先IPアドレス423を含む。
【0051】
チェックサム421は、IPヘッダー420のチェックサムである。
送信元IPアドレス422は、IPパケットの送信元のIPアドレスを示す。
送信先IPアドレス423は、IPパケットの送信先のIPアドレスを示す。
【0052】
UDPヘッダー430は、UDPパケットのヘッダー部である。UDPパケットはIPパケッドのペイロードに含まれる。UDPヘッダー430は、一例として、送信元ポート番号431、送信先ポート番号432、パケット長433及びチェックサム434を含む。
【0053】
送信元ポート番号431は、UDPパケットの送信元のポート番号を示す。
送信先ポート番号432は、UDPパケットの送信先のポート番号を示す。
パケット長433は、UDPパケットの長さ、すなわちUDPヘッダー430の長さ及びペイロード440の長さの合計を示す。
チェックサム434は、UDPヘッダー430及びペイロード440のチェックサムである。
【0054】
ペイロード440は、UDPパケットのペイロードであり、要求パケット400によって送信されるデータの本体などを含む。当該本体は、サーバー装置100に要求する内容を含む。例えば、当該本体は、ETCカードの識別情報、乗車券の識別情報、IoT機器又は工場のセンサーなどから取得されるデータなどであっても良い。また、ペイロード440は、第1の宛先符号441を含む。ペイロード440中の第1の宛先符号441を除くデータは、既存の要求パケットのペイロード内のデータと同様のデータでも良い。
【0055】
プロセッサー210は、送信先MACアドレス412、送信先IPアドレス423及び送信先ポート番号432などを用いてハッシュ値又はチェックサムなどを求めることで、当該ハッシュ値又はチェックサムを用いた固定長の第1の宛先符号441を生成する。なお、第1の宛先符号441の生成に用いる関数は、サーバー側第1の宛先符号の生成に用いる関数と同一である。プロセッサー210は、生成した第1の宛先符号441を、ペイロード440に付与する。第1の宛先符号441は、第1の送信側宛先符号の一例である。第1の宛先符号441は、クライアント送信側宛先符号の一例である。
【0056】
プロセッサー210は、要求パケット400を生成した後、当該要求パケット400をサーバー装置100に送信するように通信インターフェース250に対して指示する。この送信の指示を受けて通信インターフェース250は、当該要求パケット400をサーバー装置100に送信する。送信された当該要求パケット400は、サーバー装置100の通信インターフェース150によって受信される。図4では、要求パケット400をステップST13として示す。プロセッサー210は、図2のステップS15の処理の後、ステップS13へと戻る。
【0057】
なお、ステップS13の処理は、例えばアプリケーション処理部211が行う。第1の宛先符号の生成及び付与については、宛先符号付与部213が行う。
【0058】
一方、サーバー装置100のプロセッサー110は、図3のステップS21で受信されたパケットが要求パケット400であるならば、ステップS23においてYesと判定してステップS29へと進む。
ステップS29においてサーバー装置100のプロセッサー110は、ステップS21で受信された要求パケット400に含まれる第1の宛先符号441がステップS28で生成したサーバー側第1の宛先符号と一致するか否かを判定する。プロセッサー110は、第1の宛先符号が一致するならば、ステップS29においてYesと判定してステップS30へと進む。
なお、ステップS29の処理は、例えば宛先判定部113が行う。
【0059】
ステップS30においてプロセッサー110は、要求パケット400のペイロード440中のデータ本体によって要求された内容に基づくサーバー側アプリケーション処理を行う。
なお、ステップS30の処理は、例えばアプリケーション処理部111が行う。
【0060】
ステップS31においてプロセッサー110は、要求パケット400への応答として、図6に示すような応答パケット500を生成する。プロセッサー110は、宛先を置換する宛先置換処理により要求パケット400から応答パケット500を生成する。応答パケット500は、応答データの一例である。
なお、ステップS31の処理は、例えば宛先置換部114が行う。
【0061】
図6は、宛先置換処理及び応答パケット500について説明するための図である
応答パケット500は、一例として、Etherヘッダー510、IPヘッダー520、UDPヘッダー530及びペイロード540を含むイーサネットフレームである。
【0062】
Etherヘッダー510は、イーサネットフレームのヘッダー部である。Etherヘッダー510は、一例として、プリアンブル511、送信先MACアドレス512、送信元MACアドレス513及びタイプ/長さ514を含む。
【0063】
プリアンブル511は、イーサネットフレームの開始を示す。プリアンブル511は、プリアンブル411をコピーしたものである。
【0064】
送信先MACアドレス512は、応答パケット500の送信先のMACアドレスを示す。送信先MACアドレス512は、送信元MACアドレス413をコピーしたものである。
送信元MACアドレス513は、応答パケット500の送信元のMACアドレスを示す。送信元MACアドレス513は、送信先MACアドレス412をコピーしたものである。
以上より、送信先MACアドレス512及び送信元MACアドレス513は、送信先MACアドレス412と送信元MACアドレス413とを入れ替えたものに等しい。
【0065】
タイプ/長さ514は、イーサネットフレームのデータ部で運んでいるプロトコルを示す。あるいは、タイプ/長さ514は、イーサネットフレームのデータ部の長さを示す。タイプ/長さ514は、タイプ/長さ414をコピーしたものである。
【0066】
IPヘッダー520は、IPパケットのヘッダー部である。IPヘッダー520は、一例として、チェックサム521、送信元IPアドレス522及び送信先IPアドレス523を含む。
【0067】
チェックサム521は、IPヘッダー520のチェックサムである。チェックサム521は、チェックサム421をコピーしたものである。
【0068】
送信元IPアドレス522は、IPパケットの送信元のIPアドレスを示す。送信元IPアドレス522は、送信先IPアドレス423をコピーしたものである。
送信先IPアドレス523は、IPパケットの送信先のIPアドレスを示す。送信先IPアドレス523は、送信元IPアドレス422をコピーしたものである。
したがって、送信元IPアドレス522及び送信先IPアドレス523は、送信元IPアドレスと送信先IPアドレス423とを入れ替えたものに等しい。
【0069】
UDPヘッダー530は、UDPパケットのヘッダー部である。UDPヘッダー530は、一例として、送信元ポート番号531、送信先ポート番号532、パケット長533及びチェックサム534を含む。
【0070】
送信元ポート番号531は、UDPパケットの送信元のポート番号を示す。送信元ポート番号531は、送信先ポート番号432をコピーしたものである。
送信先ポート番号532は、UDPパケットの送信先のポート番号を示す。送信先ポート番号532は、送信元ポート番号431をコピーしたものである。
したがって、送信元ポート番号531及び送信先ポート番号532は、送信元ポート番号431と送信先ポート番号432とを入れ替えたものに等しい。
【0071】
パケット長533は、UDPパケットの長さ、すなわちUDPヘッダー530の長さ及びペイロード540の長さの合計を示す。パケット長533は、パケット長433をコピーしたものである。ただし、ペイロード440の長さとペイロード540の長さは等しいものとする。
【0072】
チェックサム534は、UDPヘッダー530及びペイロード540のチェックサムである。
【0073】
ペイロード540は、UDPパケットのペイロードであり、応答パケット500によって送信されるデータの本体などを含む。当該本体は、要求パケット400によって要求された内容に基づき応答する内容を含む。当該本体は、ステップS30の処理に基づくデータである。ペイロード540中のデータは、既存の応答パケットのペイロード内のデータと同様のデータでも良い。
【0074】
なお、プロセッサー110は、応答パケット500において各部の入れ替えを、SIMD(single instruction, multiple data)演算を用いて行っても良い。例えば、プロセッサー110は、x86/x64プロセッサーの拡張命令であるSSE(Streaming SIMD Extensions)又はAVX(Advanced Vector Extensions)などを用いると、シャッフル命令(PSHUFB/VPSHUFB)により、128bit、256bit、又は512bit分の領域をバイト毎に置換することが可能である。
【0075】
図7は、SIMD演算による宛先置換処理の例を示す図である。
例えば、プロセッサー110は、SSEの128bit領域のシャッフル命令を用いて、第一引数にEtherヘッダー410を格納し、第2引数に入れ替えるバイト位置を格納すると、戻り値として、送信先MACアドレス412と送信元MACアドレス413とを入れ替えた値を1命令で得ることができる。また、プロセッサー110は、AVXの512bit領域のシャッフル命令を用いると、MACアドレス、IPアドレス及びポート番号を1命令で入れ替えることが可能である。
【0076】
ステップS32においてプロセッサー110は、ステップS31で生成した応答パケットを要求パケット400の送信元であるクライアント装置200に送信するように通信インターフェース150に対して指示する。この送信の指示を受けて通信インターフェース150は、当該応答パケットを当該クライアント装置200に送信する。送信された当該応答パケットは、クライアント装置200の通信インターフェース250によって受信される。図4では、応答パケットをステップST14として示す。プロセッサー110は、図3のステップS32の処理の後、ステップS21へと戻る。
なお、ステップS32の処理は、例えばアプリケーション処理部111が行う。
【0077】
一方、プロセッサー210は、図2のステップS13及びステップS14の待受状態にあるときにパケットが受信されたならば、ステップS14においてYesと判定してステップS16へと進む。このとき、プロセッサー210は、当該パケットをカーネルバイパスしてアプリケーション処理部211に渡す。
ステップS16においてプロセッサー210は、ステップS14で受信されたパケットが応答パケットであるか否かを判定する。プロセッサー210は、ステップS14で受信されたパケットが応答パケットでないならば、ステップS16においてNoと判定して受信されたパケットの種類に応じた処理を行う。対して、プロセッサー210は、ステップS14で受信されたパケットが応答パケットであるならば、ステップS16においてYesと判定してステップS17へと進む。
なお、ステップS16の処理は、例えば汎用プロトコル処理部214が行う。
【0078】
ステップS17においてプロセッサー210は、応答パケット500のペイロード540中のデータ本体の内容に基づくクライアント側アプリケーション処理を行う。プロセッサー210は、ステップS17の処理の後、ステップS13へと戻る。
なお、ステップS17の処理は、例えばアプリケーション処理部211が行う。
【0079】
なお、サーバー装置100のプロセッサー110は、第1の宛先符号が一致しないならば、ステップS22で受信された要求パケット400がサーバー装置100のアプリケーションソフトウェア宛てのパケットではないとみなし、図3のステップS29においてNoと判定してステップS33へと進む。
ステップS33においてプロセッサー110は、ステップS22で受信された要求パケット400を破棄する。プロセッサー110は、ステップS33の処理の後、ステップS21へと戻る。
なお、ステップS33の処理は、例えばアプリケーション処理部111が行う。
【0080】
第1実施形態の通信システム1によれば、サーバー装置100は、要求パケット400中の第1の宛先符号441とサーバー側第1の宛先符号が一致するか否かを判定する。これにより、サーバー装置100は、要求パケット400のヘッダー部分の処理を行うことなく、要求パケット400がサーバー装置100のアプリケーションソフトウェア宛てであるか否かを判定することができる。この結果、サーバー装置100による要求パケット400に係る処理にかかる時間が短くなる。
【0081】
また、第1実施形態の通信システム1によれば、サーバー装置100は、要求パケット400の一部を入れ替えることで応答パケット500を生成する。これにより、サーバー装置100は、応答パケット500の生成にかかる時間を短くすることができる。
【0082】
また、第1実施形態の通信システム1によれば、サーバー装置100は、要求パケット400の一部をコピーすることで応答パケット500を生成する。これにより、サーバー装置100は、応答パケット500の生成にかかる時間を短くすることができる。
【0083】
また、第1実施形態の通信システム1によれば、サーバー装置100は、SIMD演算を用いてヘッダーの一部を入れ替える。これにより、サーバー装置100は、応答パケット500の生成にかかる時間を短くすることができる。
【0084】
また、第1実施形態の通信システム1によれば、第1の宛先符号は、ハッシュ関数を用いて生成される場合がある。通信システム1は、第1の宛先符号の生成にハッシュ関数を用いることで、サーバー装置100のMACアドレスとIPアドレスとポート番号が分かっても第1の宛先符号の推測が困難となり、セキュリティ性が向上する。
【0085】
〔第2実施形態〕
図8は、第2実施形態に係る通信システム1b及び通信システム1bに含まれる構成要素の要部構成の一例を示すブロック図である。
通信システム1bのハードウェア構成は、第1実施形態の通信システム1と同様であるので説明を省略する。
【0086】
第2実施形態では、サーバー装置100のアプリケーション処理部111は、ARP処理部112、宛先判定部113及び宛先置換部114に加えて宛先符号付与部115を備える。
宛先符号付与部115は、第2の宛先符号を生成する。また、宛先符号付与部115は、サーバー装置100が送信するパケットに第2の宛先符号を付与する。宛先符号付与部115は、第1の受信側生成部の一例である。
【0087】
また、第2実施形態では、クライアント装置200のアプリケーション処理部211は、宛先符号付与部213に加えて、ARP処理部215及び宛先判定部216を備える。
ARP処理部215は、ARP処理などを行う。
宛先判定部216は、受信パケットに含まれる第2の宛先符号から宛先を判定する。宛先判定部216は、第2の送信側生成部の一例である。
【0088】
以下、第2実施形態に係る通信システム1bの動作を図9図11などに基づいて説明する。なお、以下の動作説明における処理の内容は一例であって、同様な結果を得ることが可能な様々な処理を適宜に利用できる。図9は、クライアント装置200のプロセッサー210による処理の一例を示すフローチャートである。プロセッサー210は、例えば、ROM220又は補助記憶装置240などに記憶されたプログラムに基づいて図9の処理を実行する。図10は、サーバー装置100のプロセッサー110による処理の一例を示すフローチャートである。プロセッサー110は、例えば、ROM120又は補助記憶装置140などに記憶されたプログラムに基づいて図10の処理を実行する。図11は、第2実施形態に係る通信システム1bの情報の流れの一例を示すシーケンス図である。なお、図11は、通信システム1bにおける情報の流れを網羅するものではなく、図示しない情報の流れが存在しても良い。また、以下の動作説明では、1台のサーバー装置100と1台のクライアント装置200との間の処理を例に説明を行う。
【0089】
第2実施形態では、サーバー装置100のプロセッサー110は、図10のステップS28の処理の後、ステップS51へと進む。
ステップS51においてプロセッサー110は、ARP要求を生成する。ここで生成されるARP要求は、クライアント装置200が生成するARP要求と同様である。ただし、サーバー装置100によって生成されるARP要求は、クライアント装置200が生成するARP要求とは送信先と送信元が逆である。プロセッサー110は、ARP要求を生成した後、当該ARP要求をクライアント装置200に送信するように通信インターフェース150に対して指示する。この送信の指示を受けて通信インターフェース150は、当該ARP要求をクライアント装置200に送信する。送信された当該ARP要求は、クライアント装置200の通信インターフェース250によって受信される。図11では、当該ARP要求をステップST21として示す。プロセッサー110は、図10のステップS51の処理の後、ステップS21へと戻る。
【0090】
一方、第2実施形態では、クライアント装置200のプロセッサー210は、図9のステップS12の処理においてYesと判定したならばステップS41へと進む
ステップS41においてプロセッサー210は、通信インターフェース250によってARP要求が受信されるのを待ち受けている。プロセッサー210は、ARP要求が受信されたならば、ステップS41においてYesと判定してステップS42へと進む。
【0091】
ステップS42においてプロセッサー210は、ARP応答を生成する。ここで生成されるARP応答は、サーバー装置100が生成するARP応答と同様である。ただし、クライアント装置200によって生成されるARP応答は、サーバー装置100が生成するARP要求とは送信先と送信元が逆である。プロセッサー210は、ARP応答を生成した後、当該ARP応答をサーバー装置100に送信するように通信インターフェース250に対して指示する。この送信の指示を受けて通信インターフェース250は、当該ARP応答をサーバー装置100に送信する。送信された当該ARP応答は、サーバー装置100の通信インターフェース150によって受信される。図11では、当該ARP応答をステップST22として示す。
【0092】
ステップS43においてプロセッサー210は、第2の宛先符号を生成する。第2の宛先符号は、クライアント装置200及びクライアント装置200のアプリケーションソフトウェアの識別などに用いられる。プロセッサー110は、例えば、クライアント装置200のMACアドレス、クライアント装置200のIPアドレス、及びクライアント装置200のアプリケーションソフトウェアで用いられるポート番号などを用いてハッシュ値又はチェックサムなどを求めることで、当該ハッシュ値又はチェックサムを用いた固定長の第2の宛先符号を生成する。第2の宛先符号生成のためにハッシュ値又はチェックサムを求める関数は、第2の所定の関数の一例である。第2の宛先符号の長さは、処理速度の観点から短い方が好ましい。より好ましくは、第2の宛先符号の長さは、OSのbit数と同じbit数である。例えば、クライアント装置200にインストールされているOSが64bitOSであるならば、第2の宛先符号の長さも64bitであることが好ましい。これは、第2の宛先符号が一致しているかどうかをクライアント装置200が1命令で判定が可能となるためである。また、第2の宛先符号の長さが64bitであれば、衝突確率は1×10-19以下となり、クライアント装置200が誤ってクライアント装置200のアプリケーションソフトウェア宛てでないパケットをサーバー側アプリケーション処理する確率が十分に低くなる。なお、クライアント装置200によって生成される第2の宛先符号を、以下「クライアント側第2の宛先符号」というものとする。クライアント側第2の宛先符号は、第2の受信側宛先符号の一例である。プロセッサー210は、ステップS43の処理の後、ステップS13へと進む。
【0093】
一方、第2実施形態では、サーバー装置100のプロセッサー110は、図10のステップS23においてNoと判定したならば、ステップS52へと進む。
ステップS52においてプロセッサー110は、ステップS21で受信されたパケットがARP応答であるか否かを判定する。プロセッサー110は、ステップS21で受信されたパケットがARP応答でないならば、ステップS52においてNoと判定して受信されたパケットの種類に応じた処理を行う。一方、プロセッサー110は、ステップS21で受信されたパケットがARP応答であるならば、ステップS52においてYesと判定してステップS21へと戻る。
【0094】
また、第2実施形態では、プロセッサー110は、ステップS31の処理の後、ステップS53へと進む。
ステップS53においてプロセッサー110は、送信先MACアドレス512、送信先IPアドレス523及び送信先ポート番号532などを用いてハッシュ値又はチェックサムなどを求めることで、当該ハッシュ値又はチェックサムを用いた固定長の第2の宛先符号を生成する。なお、ここでの第2の宛先符号の生成に用いる関数は、クライアント側第2の宛先符号の生成に用いる関数と同一である。プロセッサー210は、生成した第2の宛先符号を、ステップS31で生成した応答パケット500のペイロード540に付与する。ここで生成される宛先符号は、第2の送信側宛先符号の一例である。
【0095】
ステップS54においてプロセッサー110は、ステップS53で生成した応答パケットを要求パケット400の送信元であるクライアント装置200に送信するように通信インターフェース150に対して指示する。この送信の指示を受けて通信インターフェース150は、当該応答パケットを当該クライアント装置200に送信する。送信された当該応答パケットは、クライアント装置200の通信インターフェース250によって受信される。図4では、応答パケットをステップST14として示す。プロセッサー110は、図3のステップS54の処理の後、ステップS21へと戻る。プロセッサー110は、ステップS54の処理の後、ステップS21へと戻る。
【0096】
一方、第2実施形態では、クライアント装置200のプロセッサー210は、図9のステップS16においてYesと判定したならば、ステップS44へと進む。
ステップS44においてプロセッサー210は、ステップS14で受信された応答パケット500に含まれる第2の宛先符号がステップS43で生成したクライアント側第2の宛先符号と一致するか否かを判定する。プロセッサー210は、第2の宛先符号が一致しないならば、ステップS44においてNoと判定してステップS45へと進む。
【0097】
ステップS45においてプロセッサー210は、ステップS14で受信された応答パケット500を破棄する。プロセッサー210は、ステップS45の処理の後、ステップS13へと戻る。
【0098】
対して、プロセッサー210は、第2の宛先符号が一致するならば、ステップS44においてYesと判定してステップS17へと進む。
【0099】
第2実施形態の通信システム1bによれば、第1実施形態の通信システム1と同様の効果が得られる。
【0100】
また、第2実施形態の通信システム1bによれば、クライアント装置200は、応答パケット500中の第2の宛先符号とクライアント側第2の宛先符号が一致するか否かを判定する。これにより、クライアント装置200は、応答パケット500のヘッダー部分の処理を行うことなく、応答パケット500がクライアント装置200のアプリケーションソフトウェア宛てであるか否かを判定することができる。この結果、クライアント装置200による応答パケット500に係る処理にかかる時間が短くなる。
【0101】
上記の実施形態は以下のような変形も可能である。
【0102】
第2実施形態の通信システム1bは、クライアント装置200が先にARP要求を送信し、その後にサーバー装置100がARP要求を送信している。しかしながら、サーバー装置100がクライアント装置200より先にARP要求を送信しても良い。また、サーバー装置100及びクライアント装置200が同時にARP要求を送信しても良い。
【0103】
第2実施形態の通信システム1bは、クライアント装置200が先にARP要求を送信し、当該ARP要求を受信したことに応じてサーバー装置100がARP要求を送信している。しかしながら、サーバー装置100は、クライアント装置200がARP要求を送信してきたこととは無関係にARP要求を送信しても良い。
また、サーバー装置100がクライアント装置200より先にARP要求を送信する場合においても、クライアント装置200は、当該ARP要求を受信したことに応じてARP要求を送信しても良い。また、クライアント装置200は、サーバー装置100がARP要求を送信してきたこととは無関係にARP要求を送信しても良い。
【0104】
サーバー装置100は、ARP応答を受信したことに応じて、サーバー側第1の宛先符号を生成しても良い。クライアント装置200は、ARP応答を受信したことに応じて、クライアント側第2の宛先符号を生成しても良い。
【0105】
上記の実施形態では、サーバー装置とクライアント装置間の処理について説明した。しかしながら、実施形態の通信システムは、サーバー装置とクライアント装置間に限らず、2つの装置の間での通信において宛先符号を用いた同様の処理を行うものでもあっても良い。
【0106】
IPv6を用いる通信システムでは、ARPに代えてICMP(Internet Control Message Protocol)v6の近隣探索メッセージを用いても良い。この場合、クライアント装置200又はサーバー装置100は、ARP要求に代えて近隣要請メッセージを、マルキャストアドレスを用いてマルチキャスト送信する。そして、近隣要請メッセージを受信したサーバー装置100又はクライアント装置200は、ARP応答に代えて近隣告知メッセージを送信する。そして、サーバー装置100及びクライアント装置200は、ARPテーブルに代えて近隣キャッシュを用いることでIPアドレスとMACアドレスとを紐づける。
【0107】
サーバー装置100は、ARP及びICMPv6以外のプロトコルで送信されるパケットを受信したことに応じて、サーバー側第1の宛先符号を生成しても良い。クライアント装置200は、ARP及びICMPv6以外のプロトコルで送信されるパケットを受信したことに応じて、クライアント側第2の宛先符号を生成しても良い。
【0108】
実施形態の通信システムは、イーサネット以外のデータリンクを用いるものでも良い。
また、実施形態の通信システムは、TCPなどのUDP以外のトランスポートプロトコルを用いるものであっても良い。
【0109】
プロセッサー110及びプロセッサー210は、上記実施形態においてプログラムによって実現する処理の一部又は全部を、回路のハードウェア構成によって実現するものであっても良い。
【0110】
上記実施形態における各装置は、例えば、上記の各処理を実行するためのプログラムが記憶された状態で各装置の管理者などへと譲渡される。あるいは、当該各装置は、当該プログラムが記憶されない状態で当該管理者などに譲渡される。そして、当該プログラムが別途に当該管理者などへと譲渡され、当該管理者又はサービスマンなどによる操作に基づいて当該各装置に記憶される。このときのプログラムの譲渡は、例えば、ディスクメディア又は半導体メモリなどのようなリムーバブルな記憶媒体を用いて、あるいはインターネット又はLANなどを介したダウンロードにより実現できる。
【0111】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0112】
1……通信システム、100……サーバー装置、110,210……プロセッサー、111,211……アプリケーション処理部、112,215……ARP処理部、113,216……宛先判定部、114……宛先置換部、115,213……宛先符号付与部、120,220……ROM、130,230……RAM、140,240……補助記憶装置、150,250……通信インターフェース、160,280……バス、200……クライアント装置、212……カーネル処理部、214……汎用プロトコル処理部、260……入力装置、270……表示装置、400……要求パケット、410,510……Etherヘッダー、411,511……プリアンブル、412,512……送信先MACアドレス、413,513……送信元MACアドレス、414,514……タイプ/長さ、420,520……IPヘッダー、421,434,521,534……チェックサム、422,522……送信元IPアドレス、423,523……送信先IPアドレス、430,530……UDPヘッダー、431,531……送信元ポート番号、432,532……送信先ポート番号、433,533……パケット長、440,540……ペイロード、441……第1の宛先符号、500……応答パケット
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11