JP2022006989A - Communication system, server device, client device, and program - Google Patents
Communication system, server device, client device, and program Download PDFInfo
- Publication number
- JP2022006989A JP2022006989A JP2020109603A JP2020109603A JP2022006989A JP 2022006989 A JP2022006989 A JP 2022006989A JP 2020109603 A JP2020109603 A JP 2020109603A JP 2020109603 A JP2020109603 A JP 2020109603A JP 2022006989 A JP2022006989 A JP 2022006989A
- Authority
- JP
- Japan
- Prior art keywords
- destination
- destination code
- address
- request data
- processor
- 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.)
- Pending
Links
- 238000004891 communication Methods 0.000 title claims abstract description 107
- 230000005540 biological transmission Effects 0.000 claims abstract description 26
- 230000004044 response Effects 0.000 claims description 84
- 230000006870 function Effects 0.000 claims description 29
- 238000000034 method Methods 0.000 description 52
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 description 16
- 238000010586 diagram Methods 0.000 description 11
- 238000005401 electroluminescence Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Abstract
Description
本発明の実施形態は、通信システム、サーバー装置、クライアント装置及びプログラムに関する。 Embodiments of the present invention relate to communication systems, server devices, client devices and programs.
ネットワークインタフェースの遅延を低減させるため、OS(operating system)のカーネル処理をバイパスする方法がある。一般的な計算機システムでは、TCP(Transmission Control Protocol)/IP(Internet Protocol)及びUDP(User Datagram Protocol)/IPの処理をOSのカーネルが処理するため、データの転送、システムコールの発行、及びコンテキストスイッチの発生などでネットワークインタフェースに遅延が発生する。当該遅延への対応として、計算機システムは、カーネル処理をバイパスすることで、データの転送、システムコールの発行、及びコンテキストスイッチの発生などを低減させ、ネットワークインタフェースの遅延を低減することができるとされている。 In order to reduce the delay of the network interface, there is a method of bypassing the kernel processing of the OS (operating system). In a general computer system, the OS kernel processes TCP (Transmission Control Protocol) / IP (Internet Protocol) and UDP (User Datagram Protocol) / IP, so data transfer, system call issuance, and context. A delay occurs in the network interface due to the occurrence of a switch. As a response to the delay, the computer system can reduce the delay of the network interface by reducing the data transfer, the issuance of the system call, the occurrence of the context switch, etc. by bypassing the kernel processing. ing.
クライアントサーバー型の時間制約のあるシステムにおいて、応答時間を短縮させるため、OSのカーネルをバイパスしネットワークインタフェース遅延を低減させる方法を用いることができる。しかしながら、イーサネット(登録商標)などの汎用なネットワークを用いるシステムがカーネル処理のバイパスを行うと、アプリケーション層でTCP/IP及びUDP/IPなどの汎用プロトコルの処理を行うこととなり、処理時間が増加してしまう。また、多数のクライアントが単一のサーバーにアクセスをする場合、サーバー側での汎用プロトコル処理の負荷が高くなり、処理時間がさらに増加する可能性がある。
また、サーバーは、クライアントにパケットを返答する際、アプリケーション層でIPヘッダー及びUDPヘッダーなどを生成する必要があり、返答処理に時間を要してしまう。
In a client-server type time-constrained system, in order to shorten the response time, a method of bypassing the OS kernel and reducing the network interface delay can be used. However, if a system using a general-purpose network such as Ethernet (registered trademark) bypasses kernel processing, general-purpose protocols such as TCP / IP and UDP / IP will be processed at the application layer, and the processing time will increase. It ends up. In addition, when a large number of clients access a single server, the load of general-purpose protocol processing on the server side becomes high, and the processing time may further increase.
Further, when the server returns a packet to the client, it is necessary to generate an IP header, a UDP header, and the like at the application layer, and it takes time to process the reply.
本発明の実施形態が解決しようとする課題は、汎用プロトコルを用いる場合でもカーネル処理のバイパスにより遅延を低減することができる通信システム、サーバー装置、クライアント装置及びプログラムを提供することである。 An object to be solved by an embodiment of the present invention is to provide a communication system, a server device, a client device, and a program that can reduce the delay by bypassing kernel processing even when a general-purpose protocol is used.
実施形態の通信システムは、第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の送信側宛先符号が一致する場合、前記要求データに基づく処理を行い、一致しない場合、前記要求データに基づく処理をしない。 The communication system of the embodiment includes a first device and a second device. The first device includes a first transmitting side generation unit and a first communication unit. The first sender generation unit generates a first sender destination code by a first predetermined function using a destination IP address, a destination MAC address, and a destination port number. The first communication unit transmits the request data to which the first transmission side destination code is attached to the second device. The second device includes a second communication unit, a second receiving side generation unit, and a second processing unit. The second communication unit receives the request data. The second receiving side generator uses the IP address of the second device, the MAC address of the second device, and the port number used by the application software of the second device to determine the first predetermined device. The function generates a first receiver destination code. The second processing unit performs processing based on the request data when the first receiving side destination code and the first transmitting side destination code given to the request data match, and when they do not match, the second processing unit performs processing based on the request data. No processing is performed based on the request data.
以下、いくつかの実施形態に係る通信システムについて図面を用いて説明する。なお、以下の実施形態の説明に用いる各図面は、各部の縮尺を適宜変更している場合がある。また、以下の実施形態の説明に用いる各図面は、説明のため、構成を省略して示している場合がある。また、各図面及び本明細書中において、同一の符号は同様の要素を示す。
〔第1実施形態〕
図1は、第1実施形態に係る通信システム1及び通信システム1に含まれる構成要素の要部構成の一例を示すブロック図である。通信システム1は、一例として、サーバー装置100及びクライアント装置200を含む。なお、図1にはクライアント装置200を1つのみ示すが、典型的にはクライアント装置200は、複数ある。また、サーバー装置100は、複数あっても良い。
Hereinafter, the communication system according to some embodiments will be described with reference to the drawings. In addition, in each drawing used for the explanation of the following embodiment, the scale of each part may be changed as appropriate. In addition, the drawings used in the following embodiments may be omitted for the sake of explanation. Further, in each drawing and in the present specification, the same reference numerals indicate similar elements.
[First Embodiment]
FIG. 1 is a block diagram showing an example of a main component configuration of a
サーバー装置100及びクライアント装置200は、ネットワークNWに接続する。ネットワークNWは、例えば、インターネットを含む通信網である。ネットワークNWは、例えば、WAN(wide area network)を含む通信網である。ネットワークNWは、例えば、イントラネットなどのプライベートネットワークを含む通信網である。ネットワークNWは、例えば、LAN(local area network)を含む通信網である。ネットワークNWは、例えば、専用線を含む通信網である。また、ネットワークNWは、無線回線でも良いし有線回線でも良く、無線回線と有線回線とが混在していても良い。また、ネットワークNWは、公衆携帯電話網などを含む通信網であっても良い。
The
サーバー装置100は、例えば、クライアントサーバーモデルのネットワークアーキテクチャにおけるサーバーとして動作する装置である。サーバー装置100は、一例として、プロセッサー110、ROM(read-only memory)120、RAM(random-access memory)130、補助記憶装置140及び通信インターフェース150を含む。そして、バス160などが、これら各部を接続する。サーバー装置100は、第2の装置の一例である。
The
プロセッサー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は、これらのうちの複数を組み合わせたものである。
The
ROM120は、プロセッサー110を中枢とするコンピューターの主記憶装置に相当する。ROM120は、専らデータの読み出しに用いられる不揮発性メモリである。ROM120は、上記のプログラムのうち、例えばファームウェアなどを記憶する。また、ROM120は、プロセッサー110が各種の処理を行う上で使用するデータなども記憶する。
The
RAM130は、プロセッサー110を中枢とするコンピューターの主記憶装置に相当する。RAM130は、データの読み書きに用いられるメモリである。RAM130は、プロセッサー110が各種の処理を行う上で一時的に使用するデータを記憶するワークエリアなどとして利用される。RAM130は、典型的には揮発性メモリである。
The
補助記憶装置140は、プロセッサー110を中枢とするコンピューターの補助記憶装置に相当する。補助記憶装置140は、例えばEEPROM(electric erasable programmable read-only memory)、HDD(hard disk drive)又はフラッシュメモリなどである。補助記憶装置140は、上記のプログラムのうち、例えば、システムソフトウェア及びアプリケーションソフトウェアなどを記憶する。また、補助記憶装置140は、プロセッサー110が各種の処理を行う上で使用するデータ、プロセッサー110での処理によって生成されたデータ及び各種の設定値などを記憶する。
The
通信インターフェース150は、サーバー装置100がネットワークNWなどを介して通信するためのインターフェースである。通信インターフェース150は、第2の通信部の一例である。通信インターフェース150は、サーバー通信部の一例である。
The
バス160は、コントロールバス、アドレスバス及びデータバスなどを含み、サーバー装置100の各部で授受される信号を伝送する。
The
クライアント装置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の装置の一例である。
The
プロセッサー210は、クライアント装置200の動作に必要な演算及び制御などの処理を行うコンピューターの中枢部分に相当する。プロセッサー210は、ROM220又は補助記憶装置240などに記憶されたファームウェア、OSなどのシステムソフトウェア及びアプリケーションソフトウェアなどのプログラムに基づいて、クライアント装置200の各種の機能を実現するべく各部を制御する。また、プロセッサー210は、当該プログラムに基づいて後述する処理を実行する。なお、当該プログラムの一部又は全部は、プロセッサー210の回路内に組み込まれていても良い。プロセッサー210は、例えば、CPU、MPU、SoC、DSP、GPU、ASIC、PLD又はFPGAなどである。あるいは、プロセッサー210は、これらのうちの複数を組み合わせたものである。
The
ROM220は、プロセッサー210を中枢とするコンピューターの主記憶装置に相当する。ROM220は、専らデータの読み出しに用いられる不揮発性メモリである。ROM220は、上記のプログラムのうち、例えばファームウェアなどを記憶する。また、ROM220は、プロセッサー210が各種の処理を行う上で使用するデータなども記憶する。
The
RAM230は、プロセッサー210を中枢とするコンピューターの主記憶装置に相当する。RAM230は、データの読み書きに用いられるメモリである。RAM230は、プロセッサー210が各種の処理を行う上で一時的に使用するデータを記憶するワークエリアなどとして利用される。RAM230は、典型的には揮発性メモリである。
The
補助記憶装置240は、プロセッサー210を中枢とするコンピューターの補助記憶装置に相当する。補助記憶装置240は、例えばEEPROM、HDD又はフラッシュメモリなどである。補助記憶装置240は、上記のプログラムのうち、例えば、システムソフトウェア及びアプリケーションソフトウェアなどを記憶する。また、補助記憶装置240は、プロセッサー210が各種の処理を行う上で使用するデータ、プロセッサー210での処理によって生成されたデータ及び各種の設定値などを記憶する。
The
通信インターフェース250は、クライアント装置200がネットワークNWなどを介して通信するためのインターフェースである。通信インターフェース250は、第1の通信部の一例である。通信インターフェース250は、クライアント通信部の一例である。
The
入力装置260は、クライアント装置200の操作者による操作を受け付ける。入力装置260は、例えば、キーボード、キーパッド、タッチパッド又はマウスなどである。
The
表示装置270は、クライアント装置200の操作者に各種情報を通知するための画面を表示する。表示装置270は、例えば、液晶ディスプレイ又は有機EL(electro-luminescence)ディスプレイなどのディスプレイである。また、入力装置260及び表示装置270としては、タッチパネルを用いることもできる。すなわち、タッチパネルが備える表示パネルを表示装置270として、タッチパネルが備えるタッチパッドを入力装置260として用いることができる。
The
バス280は、コントロールバス、アドレスバス及びデータバスなどを含み、クライアント装置200の各部で授受される信号を伝送する。
The
また、サーバー装置100のプロセッサー110は、プログラムを実行することによりアプリケーション処理部111として機能する。アプリケーション処理部111は、補助記憶装置140などに記憶されたアプリケーションソフトウェアを実行する。アプリケーション処理部111は、一例として、ARP(Address Resolution Protocol)処理部112、宛先判定部113及び宛先置換部114を含む。ARP処理部112、宛先判定部113及び宛先置換部114は、いずれもアプリケーションソフトウェアによる処理を実行する。アプリケーション処理部111は、第2の処理部の一例である。アプリケーション処理部111は、サーバー処理部の一例である。
Further, the
ARP処理部112は、ARP処理などを行う。ARP処理は、アドレス解決などのARPに関する処理である。
宛先判定部113は、受信パケットに含まれる第1の宛先符号から宛先を判定する。宛先判定部113は、第2の受信側生成部の一例である。宛先判定部113は、サーバー受信側生成部の一例である。
宛先置換部114は、受信パケットの送信元と送信先を置き換えて(入れ替えて)返答パケットを生成する。
The
The
The
また、クライアント装置200のプロセッサー110は、プログラムを実行することによりアプリケーション処理部211及びカーネル処理部212として機能する。
Further, the
アプリケーション処理部211は、アプリケーションソフトウェアを実行する。アプリケーション処理部211は、一例として、宛先符号付与部213を含む。アプリケーション処理部211は、第1の処理部の一例である。アプリケーション処理部211は、クライアント制御部の一例である。
宛先符号付与部213は、第1の宛先符号を生成する。また、宛先符号付与部213は、クライアント装置200が送信するパケットに第1の宛先符号を付与する。第1の宛先符号については後述する。宛先符号付与部213は、第1の送信側生成部の一例である。宛先符号付与部213は、クライアント送信側生成部の一例である。
The
The destination
カーネル処理部212は、OSのカーネル処理を行う。カーネル処理部212は、一例として、汎用プロトコル処理部214を含む。
汎用プロトコル処理部214は、UDP、IP及びARPなどの汎用プロトコルに関する処理を行う。
The
The general-purpose protocol processing unit 214 performs processing related to general-purpose protocols such as UDP, IP, and ARP.
以下、実施形態に係る通信システム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との間の処理を例に説明を行う。
Hereinafter, the operation of the
図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が行う。
In step S11 of FIG. 2, the
The process of step S11 is performed by, for example, the general-purpose protocol processing unit 214.
一方、図3のステップS21においてサーバー装置100のプロセッサー110は、通信インターフェース150によってパケットが受信されるのを待ち受けている。プロセッサー110は、ARP要求又は要求パケットなどのパケットが受信されたならば、ステップS21においてYesと判定してステップS22へと進む。このとき、プロセッサー110は、当該パケットをカーネルバイパスしてアプリケーション処理部111に渡す。なお、要求パケットについては、後述する。
On the other hand, in step S21 of FIG. 3, the
ステップS22においてプロセッサー110は、ステップS21で受信されたパケットがARP要求であるか否かを判定する。プロセッサー110は、ステップS21で受信されたパケットがARP要求でないならば、ステップS22においてNoと判定してステップS23へと進む。
なお、ステップS22の処理は、例えばARP処理部112が行う。
In step S22, the
The process of step S22 is performed by, for example, the
ステップS23においてプロセッサー110は、ステップS21で受信されたパケットが要求パケットであるか否かを判定する。プロセッサー110は、ステップS21で受信されたパケットが要求パケットでないならば、ステップS23においてNoと判定して受信されたパケットの種類に応じた処理を行う。
なお、ステップS23の処理は、例えばARP処理部112が行う。
In step S23, the
The process of step S23 is performed by, for example, the
プロセッサー110は、ステップS21で受信されたパケットがARP要求であるならば、ステップS22においてYesと判定してステップS24へと進む。
ステップS24においてプロセッサー110は、ステップS21で受信されたARP要求のターゲットIPアドレスがサーバー装置100のIPアドレスと同じであるか否かを判定する。プロセッサー110は、当該ARP要求のターゲットIPアドレスがサーバー装置100のIPアドレスと異なるならば、ステップS24においてNoと判定してステップS25へと進む。
If the packet received in step S21 is an ARP request, the
In step S24, the
ステップS25においてプロセッサー110は、ステップS21で受信されたARP要求を破棄する。プロセッサー110は、ステップS25の処理の後、ステップS21へと戻る。
In step S25, the
対して、プロセッサー110は、ステップS21で受信されたARP要求のターゲットIPアドレスがサーバー装置100のIPアドレスと同じであるならば、ステップS24においてYesと判定してステップS26へと進む。
On the other hand, if the target IP address of the ARP request received in step S21 is the same as the IP address of the
ステップS26においてプロセッサー110は、ARP処理を行う。プロセッサー110は、ARP処理として、ARPテーブルを生成する。ARPテーブルは、ARP要求に含まれるクライアント装置200のMAC(media access control)アドレスとクライアント装置200のIPアドレスとを紐づけする。
In step S26, the
ステップ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が行う。
In step S27, the
The processing of steps S24 to S27 in FIG. 3 is performed by, for example, the
ステップ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が行う。
In step S28, the
The process of step S28 is performed by, for example, the
一方、図2のステップS12においてクライアント装置200のプロセッサー210は、通信インターフェース250によってARP応答が受信されるのを待ち受けている。プロセッサー210は、ARP応答が受信されたならば、ステップS12においてYesと判定してステップS13へと進む。
なお、ステップS12の処理は、例えば汎用プロトコル処理部214が行う。
On the other hand, in step S12 of FIG. 2, the
The process of step S12 is performed by, for example, the general-purpose protocol processing unit 214.
ステップS13においてプロセッサー210は、要求パケットを送信するか否かを判定する。プロセッサー210は、例えば、アプリケーションソフトウェアの処理などにおいて、サーバー装置100に何らかの要求を送信する必要がある場合に要求パケットを送信すると判定する。プロセッサー210は、要求パケットを送信しないならば、ステップS13においてNoと判定してステップS14へと進む。
なお、ステップS13の処理は、例えばアプリケーション処理部211が行う。
In step S13, the
The processing of step S13 is performed by, for example, the
ステップS14においてプロセッサー210は、通信インターフェース250によって応答パケットなどのパケットが受信されたか否かを判定する。プロセッサー210は、パケットが受信されないならば、ステップS14においてNoと判定してステップS13へと戻る。かくして、プロセッサー210は、要求パケットを送信すると判定するか、パケットが受信されるまでステップS13及びステップS14を繰り返す待受状態となる。
In step S14, the
プロセッサー210は、ステップS13及びステップS14の待受状態にあるときに要求パケットを送信すると判定するならば、ステップS13においてYesと判定してステップS15へと進む。
なお、ステップS15の処理は、例えばアプリケーション処理部211が行う。
If the
The processing of step S15 is performed by, for example, the
ステップS15においてプロセッサー210は、図5に示すような要求パケット400を生成する。要求パケット400は、サーバー装置100に何らかの要求を行うためのパケットである。要求パケット400は、要求データの一例である。
In step S15, the
図5は、要求パケット400の一例を示す図である。
要求パケット400は、一例として、Etherヘッダー410、IPヘッダー420、UDPヘッダー430及びペイロード440を含むイーサネットフレームである。
FIG. 5 is a diagram showing an example of the
The
Etherヘッダー410は、イーサネットフレームのヘッダー部である。Etherヘッダー410は、一例として、プリアンブル411、送信先MACアドレス412、送信元MACアドレス413及びタイプ/長さ414を含む。
The
プリアンブル411は、イーサネットフレームの開始を示す。
送信先MACアドレス412は、要求パケット400の送信先のMACアドレスを示す。
送信元MACアドレス413は、要求パケット400の送信元のMACアドレスを示す。
タイプ/長さ414は、イーサネットフレームのデータ部で運んでいるプロトコルを示す。あるいは、タイプ/長さ414は、イーサネットフレームのデータ部の長さを示す。
The
The
The
Type /
IPヘッダー420はIPパケットのヘッダー部である。IPパケットは、イーサネットフレームのデータ部に含まれる。IPヘッダー420は、一例として、チェックサム421、送信元IPアドレス422及び送信先IPアドレス423を含む。
The
チェックサム421は、IPヘッダー420のチェックサムである。
送信元IPアドレス422は、IPパケットの送信元のIPアドレスを示す。
送信先IPアドレス423は、IPパケットの送信先のIPアドレスを示す。
The
The
The
UDPヘッダー430は、UDPパケットのヘッダー部である。UDPパケットはIPパケッドのペイロードに含まれる。UDPヘッダー430は、一例として、送信元ポート番号431、送信先ポート番号432、パケット長433及びチェックサム434を含む。
The
送信元ポート番号431は、UDPパケットの送信元のポート番号を示す。
送信先ポート番号432は、UDPパケットの送信先のポート番号を示す。
パケット長433は、UDPパケットの長さ、すなわちUDPヘッダー430の長さ及びペイロード440の長さの合計を示す。
チェックサム434は、UDPヘッダー430及びペイロード440のチェックサムである。
The
The
The
ペイロード440は、UDPパケットのペイロードであり、要求パケット400によって送信されるデータの本体などを含む。当該本体は、サーバー装置100に要求する内容を含む。例えば、当該本体は、ETCカードの識別情報、乗車券の識別情報、IoT機器又は工場のセンサーなどから取得されるデータなどであっても良い。また、ペイロード440は、第1の宛先符号441を含む。ペイロード440中の第1の宛先符号441を除くデータは、既存の要求パケットのペイロード内のデータと同様のデータでも良い。
The
プロセッサー210は、送信先MACアドレス412、送信先IPアドレス423及び送信先ポート番号432などを用いてハッシュ値又はチェックサムなどを求めることで、当該ハッシュ値又はチェックサムを用いた固定長の第1の宛先符号441を生成する。なお、第1の宛先符号441の生成に用いる関数は、サーバー側第1の宛先符号の生成に用いる関数と同一である。プロセッサー210は、生成した第1の宛先符号441を、ペイロード440に付与する。第1の宛先符号441は、第1の送信側宛先符号の一例である。第1の宛先符号441は、クライアント送信側宛先符号の一例である。
The
プロセッサー210は、要求パケット400を生成した後、当該要求パケット400をサーバー装置100に送信するように通信インターフェース250に対して指示する。この送信の指示を受けて通信インターフェース250は、当該要求パケット400をサーバー装置100に送信する。送信された当該要求パケット400は、サーバー装置100の通信インターフェース150によって受信される。図4では、要求パケット400をステップST13として示す。プロセッサー210は、図2のステップS15の処理の後、ステップS13へと戻る。
After generating the
なお、ステップS13の処理は、例えばアプリケーション処理部211が行う。第1の宛先符号の生成及び付与については、宛先符号付与部213が行う。
The processing of step S13 is performed by, for example, the
一方、サーバー装置100のプロセッサー110は、図3のステップS21で受信されたパケットが要求パケット400であるならば、ステップS23においてYesと判定してステップS29へと進む。
ステップS29においてサーバー装置100のプロセッサー110は、ステップS21で受信された要求パケット400に含まれる第1の宛先符号441がステップS28で生成したサーバー側第1の宛先符号と一致するか否かを判定する。プロセッサー110は、第1の宛先符号が一致するならば、ステップS29においてYesと判定してステップS30へと進む。
なお、ステップS29の処理は、例えば宛先判定部113が行う。
On the other hand, if the packet received in step S21 of FIG. 3 is the
In step S29, the
The process of step S29 is performed by, for example, the
ステップS30においてプロセッサー110は、要求パケット400のペイロード440中のデータ本体によって要求された内容に基づくサーバー側アプリケーション処理を行う。
なお、ステップS30の処理は、例えばアプリケーション処理部111が行う。
In step S30, the
The processing of step S30 is performed by, for example, the
ステップS31においてプロセッサー110は、要求パケット400への応答として、図6に示すような応答パケット500を生成する。プロセッサー110は、宛先を置換する宛先置換処理により要求パケット400から応答パケット500を生成する。応答パケット500は、応答データの一例である。
なお、ステップS31の処理は、例えば宛先置換部114が行う。
In step S31, the
The process of step S31 is performed by, for example, the
図6は、宛先置換処理及び応答パケット500について説明するための図である
応答パケット500は、一例として、Etherヘッダー510、IPヘッダー520、UDPヘッダー530及びペイロード540を含むイーサネットフレームである。
FIG. 6 is a diagram for explaining the destination replacement process and the
Etherヘッダー510は、イーサネットフレームのヘッダー部である。Etherヘッダー510は、一例として、プリアンブル511、送信先MACアドレス512、送信元MACアドレス513及びタイプ/長さ514を含む。
The
プリアンブル511は、イーサネットフレームの開始を示す。プリアンブル511は、プリアンブル411をコピーしたものである。
The
送信先MACアドレス512は、応答パケット500の送信先のMACアドレスを示す。送信先MACアドレス512は、送信元MACアドレス413をコピーしたものである。
送信元MACアドレス513は、応答パケット500の送信元のMACアドレスを示す。送信元MACアドレス513は、送信先MACアドレス412をコピーしたものである。
以上より、送信先MACアドレス512及び送信元MACアドレス513は、送信先MACアドレス412と送信元MACアドレス413とを入れ替えたものに等しい。
The
The
From the above, the
タイプ/長さ514は、イーサネットフレームのデータ部で運んでいるプロトコルを示す。あるいは、タイプ/長さ514は、イーサネットフレームのデータ部の長さを示す。タイプ/長さ514は、タイプ/長さ414をコピーしたものである。
Type /
IPヘッダー520は、IPパケットのヘッダー部である。IPヘッダー520は、一例として、チェックサム521、送信元IPアドレス522及び送信先IPアドレス523を含む。
The
チェックサム521は、IPヘッダー520のチェックサムである。チェックサム521は、チェックサム421をコピーしたものである。
The
送信元IPアドレス522は、IPパケットの送信元のIPアドレスを示す。送信元IPアドレス522は、送信先IPアドレス423をコピーしたものである。
送信先IPアドレス523は、IPパケットの送信先のIPアドレスを示す。送信先IPアドレス523は、送信元IPアドレス422をコピーしたものである。
したがって、送信元IPアドレス522及び送信先IPアドレス523は、送信元IPアドレスと送信先IPアドレス423とを入れ替えたものに等しい。
The
The
Therefore, the
UDPヘッダー530は、UDPパケットのヘッダー部である。UDPヘッダー530は、一例として、送信元ポート番号531、送信先ポート番号532、パケット長533及びチェックサム534を含む。
The
送信元ポート番号531は、UDPパケットの送信元のポート番号を示す。送信元ポート番号531は、送信先ポート番号432をコピーしたものである。
送信先ポート番号532は、UDPパケットの送信先のポート番号を示す。送信先ポート番号532は、送信元ポート番号431をコピーしたものである。
したがって、送信元ポート番号531及び送信先ポート番号532は、送信元ポート番号431と送信先ポート番号432とを入れ替えたものに等しい。
The
Therefore, the
パケット長533は、UDPパケットの長さ、すなわちUDPヘッダー530の長さ及びペイロード540の長さの合計を示す。パケット長533は、パケット長433をコピーしたものである。ただし、ペイロード440の長さとペイロード540の長さは等しいものとする。
The
チェックサム534は、UDPヘッダー530及びペイロード540のチェックサムである。
The
ペイロード540は、UDPパケットのペイロードであり、応答パケット500によって送信されるデータの本体などを含む。当該本体は、要求パケット400によって要求された内容に基づき応答する内容を含む。当該本体は、ステップS30の処理に基づくデータである。ペイロード540中のデータは、既存の応答パケットのペイロード内のデータと同様のデータでも良い。
The
なお、プロセッサー110は、応答パケット500において各部の入れ替えを、SIMD(single instruction, multiple data)演算を用いて行っても良い。例えば、プロセッサー110は、x86/x64プロセッサーの拡張命令であるSSE(Streaming SIMD Extensions)又はAVX(Advanced Vector Extensions)などを用いると、シャッフル命令(PSHUFB/VPSHUFB)により、128bit、256bit、又は512bit分の領域をバイト毎に置換することが可能である。
The
図7は、SIMD演算による宛先置換処理の例を示す図である。
例えば、プロセッサー110は、SSEの128bit領域のシャッフル命令を用いて、第一引数にEtherヘッダー410を格納し、第2引数に入れ替えるバイト位置を格納すると、戻り値として、送信先MACアドレス412と送信元MACアドレス413とを入れ替えた値を1命令で得ることができる。また、プロセッサー110は、AVXの512bit領域のシャッフル命令を用いると、MACアドレス、IPアドレス及びポート番号を1命令で入れ替えることが可能である。
FIG. 7 is a diagram showing an example of destination replacement processing by SIMD operation.
For example, when the
ステップS32においてプロセッサー110は、ステップS31で生成した応答パケットを要求パケット400の送信元であるクライアント装置200に送信するように通信インターフェース150に対して指示する。この送信の指示を受けて通信インターフェース150は、当該応答パケットを当該クライアント装置200に送信する。送信された当該応答パケットは、クライアント装置200の通信インターフェース250によって受信される。図4では、応答パケットをステップST14として示す。プロセッサー110は、図3のステップS32の処理の後、ステップS21へと戻る。
なお、ステップS32の処理は、例えばアプリケーション処理部111が行う。
In step S32, the
The processing in step S32 is performed by, for example, the
一方、プロセッサー210は、図2のステップS13及びステップS14の待受状態にあるときにパケットが受信されたならば、ステップS14においてYesと判定してステップS16へと進む。このとき、プロセッサー210は、当該パケットをカーネルバイパスしてアプリケーション処理部211に渡す。
ステップS16においてプロセッサー210は、ステップS14で受信されたパケットが応答パケットであるか否かを判定する。プロセッサー210は、ステップS14で受信されたパケットが応答パケットでないならば、ステップS16においてNoと判定して受信されたパケットの種類に応じた処理を行う。対して、プロセッサー210は、ステップS14で受信されたパケットが応答パケットであるならば、ステップS16においてYesと判定してステップS17へと進む。
なお、ステップS16の処理は、例えば汎用プロトコル処理部214が行う。
On the other hand, if the packet is received while in the standby state of step S13 and step S14 of FIG. 2, the
In step S16, the
The process of step S16 is performed by, for example, the general-purpose protocol processing unit 214.
ステップS17においてプロセッサー210は、応答パケット500のペイロード540中のデータ本体の内容に基づくクライアント側アプリケーション処理を行う。プロセッサー210は、ステップS17の処理の後、ステップS13へと戻る。
なお、ステップS17の処理は、例えばアプリケーション処理部211が行う。
In step S17, the
The processing of step S17 is performed by, for example, the
なお、サーバー装置100のプロセッサー110は、第1の宛先符号が一致しないならば、ステップS22で受信された要求パケット400がサーバー装置100のアプリケーションソフトウェア宛てのパケットではないとみなし、図3のステップS29においてNoと判定してステップS33へと進む。
ステップS33においてプロセッサー110は、ステップS22で受信された要求パケット400を破棄する。プロセッサー110は、ステップS33の処理の後、ステップS21へと戻る。
なお、ステップS33の処理は、例えばアプリケーション処理部111が行う。
If the first destination codes do not match, the
In step S33, the
The processing of step S33 is performed by, for example, the
第1実施形態の通信システム1によれば、サーバー装置100は、要求パケット400中の第1の宛先符号441とサーバー側第1の宛先符号が一致するか否かを判定する。これにより、サーバー装置100は、要求パケット400のヘッダー部分の処理を行うことなく、要求パケット400がサーバー装置100のアプリケーションソフトウェア宛てであるか否かを判定することができる。この結果、サーバー装置100による要求パケット400に係る処理にかかる時間が短くなる。
According to the
また、第1実施形態の通信システム1によれば、サーバー装置100は、要求パケット400の一部を入れ替えることで応答パケット500を生成する。これにより、サーバー装置100は、応答パケット500の生成にかかる時間を短くすることができる。
Further, according to the
また、第1実施形態の通信システム1によれば、サーバー装置100は、要求パケット400の一部をコピーすることで応答パケット500を生成する。これにより、サーバー装置100は、応答パケット500の生成にかかる時間を短くすることができる。
Further, according to the
また、第1実施形態の通信システム1によれば、サーバー装置100は、SIMD演算を用いてヘッダーの一部を入れ替える。これにより、サーバー装置100は、応答パケット500の生成にかかる時間を短くすることができる。
Further, according to the
また、第1実施形態の通信システム1によれば、第1の宛先符号は、ハッシュ関数を用いて生成される場合がある。通信システム1は、第1の宛先符号の生成にハッシュ関数を用いることで、サーバー装置100のMACアドレスとIPアドレスとポート番号が分かっても第1の宛先符号の推測が困難となり、セキュリティ性が向上する。
Further, according to the
〔第2実施形態〕
図8は、第2実施形態に係る通信システム1b及び通信システム1bに含まれる構成要素の要部構成の一例を示すブロック図である。
通信システム1bのハードウェア構成は、第1実施形態の通信システム1と同様であるので説明を省略する。
[Second Embodiment]
FIG. 8 is a block diagram showing an example of the main configuration of the components included in the
Since the hardware configuration of the
第2実施形態では、サーバー装置100のアプリケーション処理部111は、ARP処理部112、宛先判定部113及び宛先置換部114に加えて宛先符号付与部115を備える。
宛先符号付与部115は、第2の宛先符号を生成する。また、宛先符号付与部115は、サーバー装置100が送信するパケットに第2の宛先符号を付与する。宛先符号付与部115は、第1の受信側生成部の一例である。
In the second embodiment, the
The destination
また、第2実施形態では、クライアント装置200のアプリケーション処理部211は、宛先符号付与部213に加えて、ARP処理部215及び宛先判定部216を備える。
ARP処理部215は、ARP処理などを行う。
宛先判定部216は、受信パケットに含まれる第2の宛先符号から宛先を判定する。宛先判定部216は、第2の送信側生成部の一例である。
Further, in the second embodiment, the
The ARP processing unit 215 performs ARP processing and the like.
The
以下、第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との間の処理を例に説明を行う。
Hereinafter, the operation of the
第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へと戻る。
In the second embodiment, the
In step S51, the
一方、第2実施形態では、クライアント装置200のプロセッサー210は、図9のステップS12の処理においてYesと判定したならばステップS41へと進む
ステップS41においてプロセッサー210は、通信インターフェース250によってARP要求が受信されるのを待ち受けている。プロセッサー210は、ARP要求が受信されたならば、ステップS41においてYesと判定してステップS42へと進む。
On the other hand, in the second embodiment, if the
ステップS42においてプロセッサー210は、ARP応答を生成する。ここで生成されるARP応答は、サーバー装置100が生成するARP応答と同様である。ただし、クライアント装置200によって生成されるARP応答は、サーバー装置100が生成するARP要求とは送信先と送信元が逆である。プロセッサー210は、ARP応答を生成した後、当該ARP応答をサーバー装置100に送信するように通信インターフェース250に対して指示する。この送信の指示を受けて通信インターフェース250は、当該ARP応答をサーバー装置100に送信する。送信された当該ARP応答は、サーバー装置100の通信インターフェース150によって受信される。図11では、当該ARP応答をステップST22として示す。
In step S42, the
ステップ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へと進む。
In step S43, the
一方、第2実施形態では、サーバー装置100のプロセッサー110は、図10のステップS23においてNoと判定したならば、ステップS52へと進む。
ステップS52においてプロセッサー110は、ステップS21で受信されたパケットがARP応答であるか否かを判定する。プロセッサー110は、ステップS21で受信されたパケットがARP応答でないならば、ステップS52においてNoと判定して受信されたパケットの種類に応じた処理を行う。一方、プロセッサー110は、ステップS21で受信されたパケットがARP応答であるならば、ステップS52においてYesと判定してステップS21へと戻る。
On the other hand, in the second embodiment, if the
In step S52, the
また、第2実施形態では、プロセッサー110は、ステップS31の処理の後、ステップS53へと進む。
ステップS53においてプロセッサー110は、送信先MACアドレス512、送信先IPアドレス523及び送信先ポート番号532などを用いてハッシュ値又はチェックサムなどを求めることで、当該ハッシュ値又はチェックサムを用いた固定長の第2の宛先符号を生成する。なお、ここでの第2の宛先符号の生成に用いる関数は、クライアント側第2の宛先符号の生成に用いる関数と同一である。プロセッサー210は、生成した第2の宛先符号を、ステップS31で生成した応答パケット500のペイロード540に付与する。ここで生成される宛先符号は、第2の送信側宛先符号の一例である。
Further, in the second embodiment, the
In step S53, the
ステップS54においてプロセッサー110は、ステップS53で生成した応答パケットを要求パケット400の送信元であるクライアント装置200に送信するように通信インターフェース150に対して指示する。この送信の指示を受けて通信インターフェース150は、当該応答パケットを当該クライアント装置200に送信する。送信された当該応答パケットは、クライアント装置200の通信インターフェース250によって受信される。図4では、応答パケットをステップST14として示す。プロセッサー110は、図3のステップS54の処理の後、ステップS21へと戻る。プロセッサー110は、ステップS54の処理の後、ステップS21へと戻る。
In step S54, the
一方、第2実施形態では、クライアント装置200のプロセッサー210は、図9のステップS16においてYesと判定したならば、ステップS44へと進む。
ステップS44においてプロセッサー210は、ステップS14で受信された応答パケット500に含まれる第2の宛先符号がステップS43で生成したクライアント側第2の宛先符号と一致するか否かを判定する。プロセッサー210は、第2の宛先符号が一致しないならば、ステップS44においてNoと判定してステップS45へと進む。
On the other hand, in the second embodiment, if the
In step S44, the
ステップS45においてプロセッサー210は、ステップS14で受信された応答パケット500を破棄する。プロセッサー210は、ステップS45の処理の後、ステップS13へと戻る。
In step S45, the
対して、プロセッサー210は、第2の宛先符号が一致するならば、ステップS44においてYesと判定してステップS17へと進む。
On the other hand, if the second destination codes match, the
第2実施形態の通信システム1bによれば、第1実施形態の通信システム1と同様の効果が得られる。
According to the
また、第2実施形態の通信システム1bによれば、クライアント装置200は、応答パケット500中の第2の宛先符号とクライアント側第2の宛先符号が一致するか否かを判定する。これにより、クライアント装置200は、応答パケット500のヘッダー部分の処理を行うことなく、応答パケット500がクライアント装置200のアプリケーションソフトウェア宛てであるか否かを判定することができる。この結果、クライアント装置200による応答パケット500に係る処理にかかる時間が短くなる。
Further, according to the
上記の実施形態は以下のような変形も可能である。 The above embodiment can be modified as follows.
第2実施形態の通信システム1bは、クライアント装置200が先にARP要求を送信し、その後にサーバー装置100がARP要求を送信している。しかしながら、サーバー装置100がクライアント装置200より先にARP要求を送信しても良い。また、サーバー装置100及びクライアント装置200が同時にARP要求を送信しても良い。
In the
第2実施形態の通信システム1bは、クライアント装置200が先にARP要求を送信し、当該ARP要求を受信したことに応じてサーバー装置100がARP要求を送信している。しかしながら、サーバー装置100は、クライアント装置200がARP要求を送信してきたこととは無関係にARP要求を送信しても良い。
また、サーバー装置100がクライアント装置200より先にARP要求を送信する場合においても、クライアント装置200は、当該ARP要求を受信したことに応じてARP要求を送信しても良い。また、クライアント装置200は、サーバー装置100がARP要求を送信してきたこととは無関係にARP要求を送信しても良い。
In the
Further, even when the
サーバー装置100は、ARP応答を受信したことに応じて、サーバー側第1の宛先符号を生成しても良い。クライアント装置200は、ARP応答を受信したことに応じて、クライアント側第2の宛先符号を生成しても良い。
The
上記の実施形態では、サーバー装置とクライアント装置間の処理について説明した。しかしながら、実施形態の通信システムは、サーバー装置とクライアント装置間に限らず、2つの装置の間での通信において宛先符号を用いた同様の処理を行うものでもあっても良い。 In the above embodiment, the processing between the server device and the client device has been described. However, the communication system of the embodiment is not limited to between the server device and the client device, and may perform the same processing using the destination code in the communication between the two devices.
IPv6を用いる通信システムでは、ARPに代えてICMP(Internet Control Message Protocol)v6の近隣探索メッセージを用いても良い。この場合、クライアント装置200又はサーバー装置100は、ARP要求に代えて近隣要請メッセージを、マルキャストアドレスを用いてマルチキャスト送信する。そして、近隣要請メッセージを受信したサーバー装置100又はクライアント装置200は、ARP応答に代えて近隣告知メッセージを送信する。そして、サーバー装置100及びクライアント装置200は、ARPテーブルに代えて近隣キャッシュを用いることでIPアドレスとMACアドレスとを紐づける。
In a communication system using IPv6, a Neighbor Discovery message of ICMP (Internet Control Message Protocol) v6 may be used instead of ARP. In this case, the
サーバー装置100は、ARP及びICMPv6以外のプロトコルで送信されるパケットを受信したことに応じて、サーバー側第1の宛先符号を生成しても良い。クライアント装置200は、ARP及びICMPv6以外のプロトコルで送信されるパケットを受信したことに応じて、クライアント側第2の宛先符号を生成しても良い。
The
実施形態の通信システムは、イーサネット以外のデータリンクを用いるものでも良い。
また、実施形態の通信システムは、TCPなどのUDP以外のトランスポートプロトコルを用いるものであっても良い。
The communication system of the embodiment may use a data link other than Ethernet.
Further, the communication system of the embodiment may use a transport protocol other than UDP such as TCP.
プロセッサー110及びプロセッサー210は、上記実施形態においてプログラムによって実現する処理の一部又は全部を、回路のハードウェア構成によって実現するものであっても良い。
The
上記実施形態における各装置は、例えば、上記の各処理を実行するためのプログラムが記憶された状態で各装置の管理者などへと譲渡される。あるいは、当該各装置は、当該プログラムが記憶されない状態で当該管理者などに譲渡される。そして、当該プログラムが別途に当該管理者などへと譲渡され、当該管理者又はサービスマンなどによる操作に基づいて当該各装置に記憶される。このときのプログラムの譲渡は、例えば、ディスクメディア又は半導体メモリなどのようなリムーバブルな記憶媒体を用いて、あるいはインターネット又はLANなどを介したダウンロードにより実現できる。 Each device in the above embodiment is transferred to, for example, an administrator of each device in a state where a program for executing each of the above processes is stored. Alternatively, each device is transferred to the administrator or the like in a state where the program is not stored. Then, the program is separately transferred to the administrator or the like, and is stored in each device based on the operation by the administrator or the serviceman. The transfer of the program at this time can be realized by using a removable storage medium such as a disk medium or a semiconductor memory, or by downloading via the Internet or a LAN.
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。 Although some embodiments of the present invention have been described, these embodiments are presented as examples and are not intended to limit the scope of the invention. These novel embodiments can be implemented in various other embodiments, and various omissions, replacements, and changes can be made without departing from the gist of the invention. These embodiments and variations thereof are included in the scope and gist of the invention, and are also included in the scope of the invention described in the claims and the equivalent scope thereof.
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 ... Communication system, 100 ... Server device, 110, 210 ... Processor, 111, 211 ... Application processing unit, 112, 215 ... ARP processing unit, 113, 216 ... Destination determination unit, 114 ... Destination Substitution unit, 115, 213 ... Destination code assigning unit, 120, 220 ... ROM, 130, 230 ... RAM, 140, 240 ... Auxiliary storage device, 150, 250 ... Communication interface, 160, 280 ... Bus , 200 ... client device, 212 ... kernel processing unit, 214 ... general-purpose protocol processing unit, 260 ... input device, 270 ... display device, 400 ... request packet, 410,510 ... Ether header, 411, 511 ... Preamble, 421,512 ... Destination MAC address, 413,513 ... Source MAC address, 414,514 ... Type / length, 420,520 ... IP header, 421,434,521,534 …… Checksum, 422,522 …… Source IP address, 423,523 …… Destination IP address, 430,530 …… UDP header, 431,531 …… Source port number, 432,532 …… Destination Port number, 433,533 ... packet length, 440,540 ... payload, 441 ... first destination code, 500 ... response packet
Claims (10)
前記第1の装置は、
送信先IPアドレス、送信先MACアドレス、及び送信先ポート番号を用いて第1の所定の関数により第1の送信側宛先符号を生成する第1の送信側生成部と、
前記第1の送信側宛先符号を付与した要求データを前記第2の装置に送信する第1の通信部と、を備え、
前記第2の装置は、
前記要求データを受信する第2の通信部と、
前記第2の装置のIPアドレス、前記第2の装置のMACアドレス、及び前記第2の装置のアプリケーションソフトウェアが使用するポート番号を用いて前記第1の所定の関数により第1の受信側宛先符号を生成する第2の受信側生成部と、
前記第1の受信側宛先符号と、前記要求データに付与された前記第1の送信側宛先符号が一致する場合、前記要求データに基づく処理を行い、一致しない場合、前記要求データに基づく処理をしない、第2の処理部と、を備える、通信システム。 Including the first device and the second device
The first device is
A first sender generator that generates a first sender destination code by a first predetermined function using a destination IP address, a destination MAC address, and a destination port number.
A first communication unit that transmits the request data to which the first transmission side destination code is assigned to the second device is provided.
The second device is
A second communication unit that receives the request data, and
The first receiver destination code by the first predetermined function using the IP address of the second device, the MAC address of the second device, and the port number used by the application software of the second device. A second receiver generator that generates
If the first receiving side destination code and the first transmitting side destination code given to the request data match, processing based on the request data is performed, and if they do not match, processing based on the request data is performed. A communication system comprising a second processing unit, which does not.
前記第2の通信部は、前記応答データを前記第1の装置に送信する、請求項1に記載の通信システム。 The second processing unit replaces a part of the header of the request data to generate a header of the response data which is a response to the request data.
The communication system according to claim 1, wherein the second communication unit transmits the response data to the first device.
前記第1の装置のIPアドレス、前記第1の装置のMACアドレス、及び前記第1の装置のアプリケーションソフトウェアが使用するポート番号を用いて第2の所定の関数により第2の受信側宛先符号を生成する第1の受信側生成部をさらに備え、
前記第2の装置は、
送信先IPアドレス、送信先MACアドレス、及び送信先ポート番号を用いて前記第2の所定の関数により第2の送信側宛先符号を生成する第2の送信側生成部をさらに備え、
前記第2の通信部は、前記要求データに対する応答である応答データに前記第2の送信側宛先符号を付与して前記第2の装置に送信し、
前記第1の装置は、
前記第2の受信側宛先符号と、前記要求データに付与された前記第1の送信側宛先符号が一致する場合、前記要求データに基づく処理を行い、一致しない場合、前記要求データに基づく処理をしない、第2の処理部と、を備える、請求項1乃至請求項5のいずれか1項に記載の通信システム。 The first device is
A second receiver destination code is assigned by a second predetermined function using the IP address of the first device, the MAC address of the first device, and the port number used by the application software of the first device. Further provided with a first receiving side generator to generate
The second device is
Further comprising a second sender generator that generates a second sender destination code by the second predetermined function using the destination IP address, destination MAC address, and destination port number.
The second communication unit assigns the second transmission side destination code to the response data, which is the response to the request data, and transmits the response data to the second device.
The first device is
If the second receiving side destination code and the first transmitting side destination code given to the request data match, processing based on the request data is performed, and if they do not match, processing based on the request data is performed. The communication system according to any one of claims 1 to 5, further comprising a second processing unit.
サーバー装置のIPアドレス、前記サーバー装置のMACアドレス、及び前記サーバー装置のアプリケーションソフトウェアが使用するポート番号を用いて第1の所定の関数により第1の受信側宛先符号を生成するサーバー受信側生成部と、
前記第1の受信側宛先符号と、前記要求データに付与されたクライアント送信側宛先符号が一致する場合、前記要求データに基づく処理を行い、一致しない場合、前記要求データに基づく処理をしない、サーバー処理部と、を備えるサーバー装置。 The server communication unit that receives the request data and
A server receiver generator that generates a first receiver destination code by a first predetermined function using the IP address of the server device, the MAC address of the server device, and the port number used by the application software of the server device. When,
If the first receiving-side destination code and the client-sending-side destination code assigned to the request data match, processing based on the request data is performed, and if they do not match, processing based on the request data is not performed. A server device with a processing unit.
前記クライアント送信側宛先符号を付与した要求データを送信するクライアント通信部と、を備える、クライアント装置。 A client sender generator that generates a client sender destination code by a first predetermined function using a destination IP address, a destination MAC address, and a destination port number.
A client device including a client communication unit that transmits request data to which a client transmission side destination code is assigned.
サーバー装置のIPアドレス、前記サーバー装置のMACアドレス、及び前記サーバー装置のアプリケーションソフトウェアが使用するポート番号を用いて第1の所定の関数により第1の受信側宛先符号を生成するサーバー受信側生成部と、
前記第1の受信側宛先符号と、受信された要求データに付与されたクライアント送信側宛先符号が一致する場合、前記要求データに基づく処理を行い、一致しない場合、前記要求データに基づく処理をしない、サーバー処理部と、して機能させるプログラム。 The processor of the server device,
A server receiver generator that generates a first receiver destination code by a first predetermined function using the IP address of the server device, the MAC address of the server device, and the port number used by the application software of the server device. When,
If the first receiving side destination code and the client transmitting side destination code given to the received request data match, the processing based on the request data is performed, and if they do not match, the processing based on the request data is not performed. , A program that works as a server processing unit.
送信先IPアドレス、送信先MACアドレス、及び送信先ポート番号を用いて第1の所定の関数によりクライアント送信側宛先符号を生成するクライアント送信側生成部と、
前記クライアント送信側宛先符号を付与した要求データを送信するようにクライアント通信部を制御するクライアント制御部と、して機能させるプログラム。 The processor of the client device,
A client sender generator that generates a client sender destination code by a first predetermined function using a destination IP address, a destination MAC address, and a destination port number.
A program that functions as a client control unit that controls a client communication unit so as to transmit request data to which the client transmission side destination code is assigned.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020109603A JP2022006989A (en) | 2020-06-25 | 2020-06-25 | Communication system, server device, client device, and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020109603A JP2022006989A (en) | 2020-06-25 | 2020-06-25 | Communication system, server device, client device, and program |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022006989A true JP2022006989A (en) | 2022-01-13 |
Family
ID=80110882
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020109603A Pending JP2022006989A (en) | 2020-06-25 | 2020-06-25 | Communication system, server device, client device, and program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2022006989A (en) |
-
2020
- 2020-06-25 JP JP2020109603A patent/JP2022006989A/en active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100652964B1 (en) | Dual-stack network apparatus and broadcasting method thereof | |
US20080304501A1 (en) | Tunneling service method and system | |
US10681002B2 (en) | Internet of Things (IoT) mediation and adaptation secure application gateway | |
KR100560737B1 (en) | appatus for converting IPv4-to-IPv6 using dual stack and method thereof | |
US8631087B2 (en) | Information processing server, remote control system, and remote control method using a tunnel to determine a service on another network and executing the service without using the tunnel | |
US9438555B2 (en) | Communicating with a distribution system via an uplink access point | |
JP2006180162A (en) | Device and method for switching packet | |
CN107770072B (en) | Method and equipment for sending and receiving message | |
JP2003283578A (en) | Protocol converting method and apparatus | |
CN109842609B (en) | Communication system and method for network address translation | |
US20130332586A1 (en) | Providing ipv6 connectivity through shared external interfaces on electronic devices | |
US7653065B2 (en) | Method and system for internet protocol address concatenation | |
CN106507414B (en) | Message forwarding method and device | |
WO2014142258A1 (en) | Communication system, control device, address allocation method, and program | |
JP2006180480A (en) | Network system and method for performing routing using dynamic address | |
JP2022006989A (en) | Communication system, server device, client device, and program | |
US20100238930A1 (en) | Router and method of forwarding ipv6 packets | |
JP2020010315A (en) | Network topology acquisition method and device | |
US9998376B2 (en) | Control device, communication system, control method, and non-transitory recording medium | |
WO2011117959A1 (en) | Communication apparatus, communication apparatus control method, and program | |
JP6724367B2 (en) | Communication system and communication device | |
JP2006262352A (en) | Mobile terminal, packet relay device, communication system, and communication method | |
WO2019142327A1 (en) | Relay device and relay method | |
JP2009207182A (en) | Packet generating method, information processing apparatus with function thereof, and recording medium with packet generation program recorded thereon | |
JP2007151141A (en) | Packet generating method, information processing device with function thereof and recording medium with packet generation program recorded thereon |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20230105 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230613 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20240318 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20240409 |