JP2022006989A - Communication system, server device, client device, and program - Google Patents

Communication system, server device, client device, and program Download PDF

Info

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
Application number
JP2020109603A
Other languages
Japanese (ja)
Inventor
直哉 大西
Naoya Onishi
拓紀 松山
Hiroki Matsuyama
博司 中谷
Hiroshi Nakatani
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.)
Toshiba Corp
Toshiba Infrastructure Systems and Solutions Corp
Original Assignee
Toshiba Corp
Toshiba Infrastructure Systems and Solutions Corp
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 Toshiba Corp, Toshiba Infrastructure Systems and Solutions Corp filed Critical Toshiba Corp
Priority to JP2020109603A priority Critical patent/JP2022006989A/en
Publication of JP2022006989A publication Critical patent/JP2022006989A/en
Pending legal-status Critical Current

Links

Images

Abstract

To reduce a delay by bypassing kernel processing even when using a general-purpose protocol.SOLUTION: A communication system according to an embodiment includes a first device and a second device. The first device includes a transmission side generation unit and a first communication unit. The transmission side generation unit generates a transmission side destination code by a predetermined function using a transmission destination IP address, a transmission destination MAC address, and a transmission destination port number. The first communication unit transmits requested data to which the transmission side destination code is added to the second device. The second device includes a second communication unit, a reception side generation unit, and a processing unit. The second communication unit receives the requested data. The reception side generation unit generates a reception side destination code by a predetermined function using a second device IP address, a second device MAC address, and a port number used by application software. The processing unit performs processing based on the requested data, when the reception side destination code and the transmission side destination code assigned to the requested data match.SELECTED DRAWING: Figure 1

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.

特許第5869135号公報Japanese Patent No. 5869135

本発明の実施形態が解決しようとする課題は、汎用プロトコルを用いる場合でもカーネル処理のバイパスにより遅延を低減することができる通信システム、サーバー装置、クライアント装置及びプログラムを提供することである。 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実施形態に係る通信システム及び当該通信システムに含まれる構成要素の要部構成の一例を示すブロック図。The block diagram which shows an example of the main part composition of the communication system which concerns on 1st Embodiment and the component | component included in the said communication system. 図1中のクライアント装置のプロセッサーによる第1実施形態に係る処理の一例を示すフローチャート。The flowchart which shows an example of the process which concerns on 1st Embodiment by the processor of the client apparatus in FIG. 図1中のサーバー装置のプロセッサーによる第1実施形態に係る処理の一例を示すフローチャート。The flowchart which shows an example of the process which concerns on 1st Embodiment by the processor of the server apparatus in FIG. 第1実施形態に係る通信システムの情報の流れの一例を示すシーケンス図。The sequence diagram which shows an example of the information flow of the communication system which concerns on 1st Embodiment. 要求パケットの一例を示す図。The figure which shows an example of a request packet. 宛先置換処理及び応答パケットについて説明するための図。The figure for demonstrating destination substitution processing and response packet. SIMD演算による宛先置換処理の例を示す図。The figure which shows the example of the destination replacement processing by a SIMD operation. 第2実施形態に係る通信システム及び当該通信システムに含まれる構成要素の要部構成の一例を示すブロック図。The block diagram which shows an example of the main part composition of the communication system which concerns on 2nd Embodiment and the component | component included in the said communication system. 図8中のクライアント装置のプロセッサーによる第2実施形態に係る処理の一例を示すフローチャート。The flowchart which shows an example of the process which concerns on 2nd Embodiment by the processor of the client apparatus in FIG. 図8中のサーバー装置のプロセッサーによる第2実施形態に係る処理の一例を示すフローチャート。The flowchart which shows an example of the process which concerns on 2nd Embodiment by the processor of the server apparatus in FIG. 第2実施形態に係る通信システムの情報の流れの一例を示すシーケンス図。The sequence diagram which shows an example of the information flow of the communication system which concerns on 2nd Embodiment.

以下、いくつかの実施形態に係る通信システムについて図面を用いて説明する。なお、以下の実施形態の説明に用いる各図面は、各部の縮尺を適宜変更している場合がある。また、以下の実施形態の説明に用いる各図面は、説明のため、構成を省略して示している場合がある。また、各図面及び本明細書中において、同一の符号は同様の要素を示す。
〔第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 communication system 1 and a component included in the communication system 1 according to the first embodiment. The communication system 1 includes, as an example, a server device 100 and a client device 200. Although FIG. 1 shows only one client device 200, typically, there are a plurality of client devices 200. Further, there may be a plurality of server devices 100.

サーバー装置100及びクライアント装置200は、ネットワークNWに接続する。ネットワークNWは、例えば、インターネットを含む通信網である。ネットワークNWは、例えば、WAN(wide area network)を含む通信網である。ネットワークNWは、例えば、イントラネットなどのプライベートネットワークを含む通信網である。ネットワークNWは、例えば、LAN(local area network)を含む通信網である。ネットワークNWは、例えば、専用線を含む通信網である。また、ネットワークNWは、無線回線でも良いし有線回線でも良く、無線回線と有線回線とが混在していても良い。また、ネットワークNWは、公衆携帯電話網などを含む通信網であっても良い。 The server device 100 and the client device 200 are connected to the network NW. The network NW is, for example, a communication network including the Internet. The network NW is, for example, a communication network including a WAN (wide area network). The network NW is a communication network including a private network such as an intranet. The network NW is, for example, a communication network including a LAN (local area network). The network NW is, for example, a communication network including a dedicated line. Further, the network NW may be a wireless line or a wired line, and a wireless line and a wired line may be mixed. Further, the network NW may be a communication network including a public mobile phone network and the like.

サーバー装置100は、例えば、クライアントサーバーモデルのネットワークアーキテクチャにおけるサーバーとして動作する装置である。サーバー装置100は、一例として、プロセッサー110、ROM(read-only memory)120、RAM(random-access memory)130、補助記憶装置140及び通信インターフェース150を含む。そして、バス160などが、これら各部を接続する。サーバー装置100は、第2の装置の一例である。 The server device 100 is, for example, a device that operates as a server in the network architecture of the client-server model. The server device 100 includes, for example, a processor 110, a ROM (read-only memory) 120, a RAM (random-access memory) 130, an auxiliary storage device 140, and a communication interface 150. Then, a bus 160 or the like connects each of these parts. The server device 100 is an example of the second device.

プロセッサー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 processor 110 corresponds to a central part of a computer that performs processing such as calculation and control necessary for the operation of the server device 100. The processor 110 controls each unit to realize various functions of the server device 100 based on a program such as firmware, system software such as an OS, and application software stored in the ROM 120 or the auxiliary storage device 140. Further, the processor 110 executes a process described later based on the program. A part or all of the program may be incorporated in the circuit of the processor 110. The processor 110 is, for example, a CPU (central processing unit), an MPU (micro processing unit), a SOC (system on a chip), a DSP (digital signal processor), a GPU (graphics processing unit), an ASIC (application specific integrated circuit), and the like. PLD (programmable logic device) or FPGA (field-programmable gate array). Alternatively, the processor 110 is a combination of a plurality of these.

ROM120は、プロセッサー110を中枢とするコンピューターの主記憶装置に相当する。ROM120は、専らデータの読み出しに用いられる不揮発性メモリである。ROM120は、上記のプログラムのうち、例えばファームウェアなどを記憶する。また、ROM120は、プロセッサー110が各種の処理を行う上で使用するデータなども記憶する。 The ROM 120 corresponds to the main storage device of a computer centered on the processor 110. The ROM 120 is a non-volatile memory used exclusively for reading data. The ROM 120 stores, for example, firmware among the above programs. The ROM 120 also stores data and the like used by the processor 110 to perform various processes.

RAM130は、プロセッサー110を中枢とするコンピューターの主記憶装置に相当する。RAM130は、データの読み書きに用いられるメモリである。RAM130は、プロセッサー110が各種の処理を行う上で一時的に使用するデータを記憶するワークエリアなどとして利用される。RAM130は、典型的には揮発性メモリである。 The RAM 130 corresponds to the main storage device of a computer centered on the processor 110. The RAM 130 is a memory used for reading and writing data. The RAM 130 is used as a work area for storing data temporarily used by the processor 110 for performing various processes. The RAM 130 is typically a volatile memory.

補助記憶装置140は、プロセッサー110を中枢とするコンピューターの補助記憶装置に相当する。補助記憶装置140は、例えばEEPROM(electric erasable programmable read-only memory)、HDD(hard disk drive)又はフラッシュメモリなどである。補助記憶装置140は、上記のプログラムのうち、例えば、システムソフトウェア及びアプリケーションソフトウェアなどを記憶する。また、補助記憶装置140は、プロセッサー110が各種の処理を行う上で使用するデータ、プロセッサー110での処理によって生成されたデータ及び各種の設定値などを記憶する。 The auxiliary storage device 140 corresponds to an auxiliary storage device of a computer centered on the processor 110. The auxiliary storage device 140 is, for example, an EEPROM (electric erasable programmable read-only memory), an HDD (hard disk drive), a flash memory, or the like. The auxiliary storage device 140 stores, for example, system software and application software among the above programs. Further, the auxiliary storage device 140 stores data used by the processor 110 for performing various processes, data generated by the processes of the processor 110, various set values, and the like.

通信インターフェース150は、サーバー装置100がネットワークNWなどを介して通信するためのインターフェースである。通信インターフェース150は、第2の通信部の一例である。通信インターフェース150は、サーバー通信部の一例である。 The communication interface 150 is an interface for the server device 100 to communicate via a network NW or the like. The communication interface 150 is an example of the second communication unit. The communication interface 150 is an example of a server communication unit.

バス160は、コントロールバス、アドレスバス及びデータバスなどを含み、サーバー装置100の各部で授受される信号を伝送する。 The bus 160 includes a control bus, an address bus, a data bus, and the like, and transmits signals transmitted and received by each part of the server device 100.

クライアント装置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 client device 200 is, for example, a device that operates as a client in the network architecture of the client-server model. The client device 200 operates as a client of the server device 100. The client device 200 is, for example, a PC (personal computer), a smartphone, an IoT (internet of things) device, a station affairs device such as an automatic ticket gate, and a road traffic such as an ETC (electronic toll collection) gate control device for a highway. Various equipment and devices such as system equipment, plant-related equipment, manufacturing machines, medical equipment, health equipment, and game machines. The client device 200 includes, as an example, a processor 210, a ROM 220, a RAM 230, an auxiliary storage device 240, a communication interface 250, an input device 260, and a display device 270. Then, a bus 280 or the like connects each of these parts. The client device 200 is an example of the first device.

プロセッサー210は、クライアント装置200の動作に必要な演算及び制御などの処理を行うコンピューターの中枢部分に相当する。プロセッサー210は、ROM220又は補助記憶装置240などに記憶されたファームウェア、OSなどのシステムソフトウェア及びアプリケーションソフトウェアなどのプログラムに基づいて、クライアント装置200の各種の機能を実現するべく各部を制御する。また、プロセッサー210は、当該プログラムに基づいて後述する処理を実行する。なお、当該プログラムの一部又は全部は、プロセッサー210の回路内に組み込まれていても良い。プロセッサー210は、例えば、CPU、MPU、SoC、DSP、GPU、ASIC、PLD又はFPGAなどである。あるいは、プロセッサー210は、これらのうちの複数を組み合わせたものである。 The processor 210 corresponds to a central part of a computer that performs processing such as calculation and control necessary for the operation of the client device 200. The processor 210 controls each part to realize various functions of the client device 200 based on a program such as firmware, system software such as an OS, and application software stored in the ROM 220 or the auxiliary storage device 240. Further, the processor 210 executes a process described later based on the program. A part or all of the program may be incorporated in the circuit of the processor 210. The processor 210 is, for example, a CPU, MPU, SoC, DSP, GPU, ASIC, PLD, FPGA, or the like. Alternatively, the processor 210 is a combination of a plurality of these.

ROM220は、プロセッサー210を中枢とするコンピューターの主記憶装置に相当する。ROM220は、専らデータの読み出しに用いられる不揮発性メモリである。ROM220は、上記のプログラムのうち、例えばファームウェアなどを記憶する。また、ROM220は、プロセッサー210が各種の処理を行う上で使用するデータなども記憶する。 The ROM 220 corresponds to the main storage device of a computer centered on the processor 210. The ROM 220 is a non-volatile memory used exclusively for reading data. The ROM 220 stores, for example, firmware among the above programs. The ROM 220 also stores data and the like used by the processor 210 to perform various processes.

RAM230は、プロセッサー210を中枢とするコンピューターの主記憶装置に相当する。RAM230は、データの読み書きに用いられるメモリである。RAM230は、プロセッサー210が各種の処理を行う上で一時的に使用するデータを記憶するワークエリアなどとして利用される。RAM230は、典型的には揮発性メモリである。 The RAM 230 corresponds to the main storage device of a computer centered on the processor 210. The RAM 230 is a memory used for reading and writing data. The RAM 230 is used as a work area for storing data temporarily used by the processor 210 for performing various processes. The RAM 230 is typically a volatile memory.

補助記憶装置240は、プロセッサー210を中枢とするコンピューターの補助記憶装置に相当する。補助記憶装置240は、例えばEEPROM、HDD又はフラッシュメモリなどである。補助記憶装置240は、上記のプログラムのうち、例えば、システムソフトウェア及びアプリケーションソフトウェアなどを記憶する。また、補助記憶装置240は、プロセッサー210が各種の処理を行う上で使用するデータ、プロセッサー210での処理によって生成されたデータ及び各種の設定値などを記憶する。 The auxiliary storage device 240 corresponds to an auxiliary storage device of a computer centered on the processor 210. The auxiliary storage device 240 is, for example, an EEPROM, an HDD, a flash memory, or the like. The auxiliary storage device 240 stores, for example, system software and application software among the above programs. Further, the auxiliary storage device 240 stores data used by the processor 210 for performing various processes, data generated by the processes of the processor 210, various set values, and the like.

通信インターフェース250は、クライアント装置200がネットワークNWなどを介して通信するためのインターフェースである。通信インターフェース250は、第1の通信部の一例である。通信インターフェース250は、クライアント通信部の一例である。 The communication interface 250 is an interface for the client device 200 to communicate via a network NW or the like. The communication interface 250 is an example of the first communication unit. The communication interface 250 is an example of a client communication unit.

入力装置260は、クライアント装置200の操作者による操作を受け付ける。入力装置260は、例えば、キーボード、キーパッド、タッチパッド又はマウスなどである。 The input device 260 accepts an operation by the operator of the client device 200. The input device 260 is, for example, a keyboard, keypad, touchpad, mouse, or the like.

表示装置270は、クライアント装置200の操作者に各種情報を通知するための画面を表示する。表示装置270は、例えば、液晶ディスプレイ又は有機EL(electro-luminescence)ディスプレイなどのディスプレイである。また、入力装置260及び表示装置270としては、タッチパネルを用いることもできる。すなわち、タッチパネルが備える表示パネルを表示装置270として、タッチパネルが備えるタッチパッドを入力装置260として用いることができる。 The display device 270 displays a screen for notifying the operator of the client device 200 of various information. The display device 270 is, for example, a display such as a liquid crystal display or an organic EL (electro-luminescence) display. A touch panel can also be used as the input device 260 and the display device 270. That is, the display panel provided on the touch panel can be used as the display device 270, and the touch pad provided on the touch panel can be used as the input device 260.

バス280は、コントロールバス、アドレスバス及びデータバスなどを含み、クライアント装置200の各部で授受される信号を伝送する。 The bus 280 includes a control bus, an address bus, a data bus, and the like, and transmits signals transmitted and received by each unit of the client device 200.

また、サーバー装置100のプロセッサー110は、プログラムを実行することによりアプリケーション処理部111として機能する。アプリケーション処理部111は、補助記憶装置140などに記憶されたアプリケーションソフトウェアを実行する。アプリケーション処理部111は、一例として、ARP(Address Resolution Protocol)処理部112、宛先判定部113及び宛先置換部114を含む。ARP処理部112、宛先判定部113及び宛先置換部114は、いずれもアプリケーションソフトウェアによる処理を実行する。アプリケーション処理部111は、第2の処理部の一例である。アプリケーション処理部111は、サーバー処理部の一例である。 Further, the processor 110 of the server device 100 functions as an application processing unit 111 by executing a program. The application processing unit 111 executes the application software stored in the auxiliary storage device 140 or the like. As an example, the application processing unit 111 includes an ARP (Address Resolution Protocol) processing unit 112, a destination determination unit 113, and a destination replacement unit 114. The ARP processing unit 112, the destination determination unit 113, and the destination replacement unit 114 all execute processing by the application software. The application processing unit 111 is an example of the second processing unit. The application processing unit 111 is an example of a server processing unit.

ARP処理部112は、ARP処理などを行う。ARP処理は、アドレス解決などのARPに関する処理である。
宛先判定部113は、受信パケットに含まれる第1の宛先符号から宛先を判定する。宛先判定部113は、第2の受信側生成部の一例である。宛先判定部113は、サーバー受信側生成部の一例である。
宛先置換部114は、受信パケットの送信元と送信先を置き換えて(入れ替えて)返答パケットを生成する。
The ARP processing unit 112 performs ARP processing and the like. ARP processing is processing related to ARP such as address resolution.
The destination determination unit 113 determines the destination from the first destination code included in the received packet. The destination determination unit 113 is an example of a second receiving side generation unit. The destination determination unit 113 is an example of a server receiving side generation unit.
The destination replacement unit 114 replaces (swap) the source and destination of the received packet to generate a reply packet.

また、クライアント装置200のプロセッサー110は、プログラムを実行することによりアプリケーション処理部211及びカーネル処理部212として機能する。 Further, the processor 110 of the client device 200 functions as an application processing unit 211 and a kernel processing unit 212 by executing a program.

アプリケーション処理部211は、アプリケーションソフトウェアを実行する。アプリケーション処理部211は、一例として、宛先符号付与部213を含む。アプリケーション処理部211は、第1の処理部の一例である。アプリケーション処理部211は、クライアント制御部の一例である。
宛先符号付与部213は、第1の宛先符号を生成する。また、宛先符号付与部213は、クライアント装置200が送信するパケットに第1の宛先符号を付与する。第1の宛先符号については後述する。宛先符号付与部213は、第1の送信側生成部の一例である。宛先符号付与部213は、クライアント送信側生成部の一例である。
The application processing unit 211 executes the application software. The application processing unit 211 includes a destination code assignment unit 213 as an example. The application processing unit 211 is an example of the first processing unit. The application processing unit 211 is an example of a client control unit.
The destination code assigning unit 213 generates a first destination code. Further, the destination code assigning unit 213 assigns a first destination code to the packet transmitted by the client device 200. The first destination code will be described later. The destination code assigning unit 213 is an example of a first transmitting side generation unit. The destination code assignment unit 213 is an example of a client transmission side generation unit.

カーネル処理部212は、OSのカーネル処理を行う。カーネル処理部212は、一例として、汎用プロトコル処理部214を含む。
汎用プロトコル処理部214は、UDP、IP及びARPなどの汎用プロトコルに関する処理を行う。
The kernel processing unit 212 performs kernel processing of the OS. The kernel processing unit 212 includes the general-purpose protocol processing unit 214 as an example.
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 communication system 1 according to the embodiment will be described with reference to FIGS. 2 to 4, and the like. The content of the process in the following operation description is an example, and various processes that can obtain the same result can be appropriately used. FIG. 2 is a flowchart showing an example of processing by the processor 210 of the client device 200. The processor 210 executes the process of FIG. 2 based on a program stored in, for example, the ROM 220 or the auxiliary storage device 240. FIG. 3 is a flowchart showing an example of processing by the processor 110 of the server device 100. The processor 110 executes the process of FIG. 3 based on a program stored in, for example, the ROM 120 or the auxiliary storage device 140. FIG. 4 is a sequence diagram showing an example of the information flow of the communication system 1 according to the first embodiment. Note that FIG. 4 does not cover the flow of information in the communication system 1, and there may be a flow of information (not shown). Further, in the following operation description, a process between one server device 100 and one client device 200 will be described as an example.

図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 processor 210 of the client device 200 generates an ARP request in order to obtain the target MAC address corresponding to the target IP address. After generating the ARP request, the processor 210 instructs the communication interface 250 to broadcast the ARP request. An ARP request is a packet that requests a device having a target IP address to transmit a MAC address. The ARP request is a packet that notifies the MAC address and IP address of the source. The ARP request includes the MAC address of the client device 200 as the source MAC address, the IP address of the client device 200 as the source IP address, the target IP address, and the IP address of the server device 100 as the destination IP address. Upon receiving the transmission instruction, the communication interface 250 broadcasts the ARP request. The transmitted ARP request is received by the communication interface 150 of the server device 100. The device that has received the ARP request confirms whether the target IP address included in the ARP request is the same as the IP address of the server device 100 itself. Then, a device whose IP address is different from the target IP address, that is, a device other than the server device 100, discards the received ARP request. In FIG. 4, the ARP request is shown as step ST11.
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 processor 110 of the server device 100 waits for the packet to be received by the communication interface 150. If a packet such as an ARP request or a request packet is received, the processor 110 determines Yes in step S21 and proceeds to step S22. At this time, the processor 110 bypasses the kernel and passes the packet to the application processing unit 111. The request packet will be described later.

ステップS22においてプロセッサー110は、ステップS21で受信されたパケットがARP要求であるか否かを判定する。プロセッサー110は、ステップS21で受信されたパケットがARP要求でないならば、ステップS22においてNoと判定してステップS23へと進む。
なお、ステップS22の処理は、例えばARP処理部112が行う。
In step S22, the processor 110 determines whether or not the packet received in step S21 is an ARP request. If the packet received in step S21 is not an ARP request, the processor 110 determines No in step S22 and proceeds to step S23.
The process of step S22 is performed by, for example, the ARP processing unit 112.

ステップS23においてプロセッサー110は、ステップS21で受信されたパケットが要求パケットであるか否かを判定する。プロセッサー110は、ステップS21で受信されたパケットが要求パケットでないならば、ステップS23においてNoと判定して受信されたパケットの種類に応じた処理を行う。
なお、ステップS23の処理は、例えばARP処理部112が行う。
In step S23, the processor 110 determines whether or not the packet received in step S21 is a request packet. If the packet received in step S21 is not a request packet, the processor 110 determines No in step S23 and performs processing according to the type of the received packet.
The process of step S23 is performed by, for example, the ARP processing unit 112.

プロセッサー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 processor 110 determines Yes in step S22 and proceeds to step S24.
In step S24, the processor 110 determines whether or not the target IP address of the ARP request received in step S21 is the same as the IP address of the server device 100. If the target IP address of the ARP request is different from the IP address of the server device 100, the processor 110 determines No in step S24 and proceeds to step S25.

ステップS25においてプロセッサー110は、ステップS21で受信されたARP要求を破棄する。プロセッサー110は、ステップS25の処理の後、ステップS21へと戻る。 In step S25, the processor 110 discards the ARP request received in step S21. The processor 110 returns to step S21 after the processing of step S25.

対して、プロセッサー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 server device 100, the processor 110 determines Yes in step S24 and proceeds to step S26.

ステップS26においてプロセッサー110は、ARP処理を行う。プロセッサー110は、ARP処理として、ARPテーブルを生成する。ARPテーブルは、ARP要求に含まれるクライアント装置200のMAC(media access control)アドレスとクライアント装置200のIPアドレスとを紐づけする。 In step S26, the processor 110 performs ARP processing. The processor 110 generates an ARP table as an ARP process. The ARP table associates the MAC (media access control) address of the client device 200 included in the ARP request with the IP address of the client device 200.

ステップ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 processor 110 produces an ARP response. The ARP response notifies the source of the ARP request of the target MAC address as a response to the ARP request. The ARP response includes the MAC address of the server device 100 as the source MAC address, the IP address of the server device 100 as the source IP address and target IP address, and the MAC address of the client device 200 as the destination MAC address and target MAC address. , The IP address of the client device 200 is included as the IP address of the destination. After generating the ARP response, the processor 110 instructs the communication interface 150 to transmit the ARP response to the client device 200 that is the source of the ARP request. Upon receiving the transmission instruction, the communication interface 150 transmits the ARP response to the client device 200. The transmitted ARP response is received by the communication interface 250 of the client device 200. In FIG. 4, the ARP response is shown as step ST12.
The processing of steps S24 to S27 in FIG. 3 is performed by, for example, the ARP processing unit 112.

ステップ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 processor 110 generates a first destination code. The first destination code is used for identifying the server device 100 and the application software of the server device 100 and the like. The processor 110 obtains a hash value or a checksum by using, for example, the MAC address of the server device 100, the IP address of the server device 100, the port number used in the application software of the server device 100, and the like. Alternatively, a fixed-length first destination code using a checksum is generated. The function for obtaining the hash value or the checksum for the first destination code generation is an example of the first predetermined function. The function for obtaining the hash value is called a hash function. The length of the first destination code is preferably short from the viewpoint of processing speed. More preferably, the bit length of the first destination code is the same number of bits as the number of bits of the OS architecture. For example, if the OS installed in the server device 100 is a 64-bit OS, it is preferable that the length of the first destination code is also 64-bit. This is because the server device 100 can determine whether or not the first destination codes match with one instruction. Further, if the length of the first destination code is 64 bits, the collision probability is 1 × 10 -19 or less, and the probability that the server device 100 mistakenly processes a packet that is not addressed to the application software of the server device 100 is processed by the server-side application. It will be low enough. The first destination code generated by the server device 100 is hereinafter referred to as "the first destination code on the server side". The server-side first destination code is an example of the first receiving-side destination code. The processor 110 returns to step S21 after the processing of step S28.
The process of step S28 is performed by, for example, the destination determination unit 113.

一方、図2のステップS12においてクライアント装置200のプロセッサー210は、通信インターフェース250によってARP応答が受信されるのを待ち受けている。プロセッサー210は、ARP応答が受信されたならば、ステップS12においてYesと判定してステップS13へと進む。
なお、ステップS12の処理は、例えば汎用プロトコル処理部214が行う。
On the other hand, in step S12 of FIG. 2, the processor 210 of the client device 200 waits for the ARP response to be received by the communication interface 250. If the ARP response is received, the processor 210 determines Yes in step S12 and proceeds to step S13.
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 processor 210 determines whether or not to transmit the request packet. The processor 210 determines to transmit a request packet when it is necessary to transmit some request to the server device 100, for example, in the processing of application software. If the processor 210 does not transmit the request packet, the processor 210 determines No in step S13 and proceeds to step S14.
The processing of step S13 is performed by, for example, the application processing unit 211.

ステップS14においてプロセッサー210は、通信インターフェース250によって応答パケットなどのパケットが受信されたか否かを判定する。プロセッサー210は、パケットが受信されないならば、ステップS14においてNoと判定してステップS13へと戻る。かくして、プロセッサー210は、要求パケットを送信すると判定するか、パケットが受信されるまでステップS13及びステップS14を繰り返す待受状態となる。 In step S14, the processor 210 determines whether or not a packet such as a response packet has been received by the communication interface 250. If the packet is not received, the processor 210 determines No in step S14 and returns to step S13. Thus, the processor 210 is in a standby state in which steps S13 and S14 are repeated until it is determined that the request packet is to be transmitted or the packet is received.

プロセッサー210は、ステップS13及びステップS14の待受状態にあるときに要求パケットを送信すると判定するならば、ステップS13においてYesと判定してステップS15へと進む。
なお、ステップS15の処理は、例えばアプリケーション処理部211が行う。
If the processor 210 determines to transmit the request packet while in the standby state of step S13 and step S14, it determines Yes in step S13 and proceeds to step S15.
The processing of step S15 is performed by, for example, the application processing unit 211.

ステップS15においてプロセッサー210は、図5に示すような要求パケット400を生成する。要求パケット400は、サーバー装置100に何らかの要求を行うためのパケットである。要求パケット400は、要求データの一例である。 In step S15, the processor 210 generates the request packet 400 as shown in FIG. The request packet 400 is a packet for making a request to the server device 100. The request packet 400 is an example of request data.

図5は、要求パケット400の一例を示す図である。
要求パケット400は、一例として、Etherヘッダー410、IPヘッダー420、UDPヘッダー430及びペイロード440を含むイーサネットフレームである。
FIG. 5 is a diagram showing an example of the request packet 400.
The request packet 400 is, for example, an Ethernet frame including an Ether header 410, an IP header 420, a UDP header 430, and a payload 440.

Etherヘッダー410は、イーサネットフレームのヘッダー部である。Etherヘッダー410は、一例として、プリアンブル411、送信先MACアドレス412、送信元MACアドレス413及びタイプ/長さ414を含む。 The Ether header 410 is a header portion of an Ethernet frame. The Ether header 410 includes, by way of example, a preamble 411, a destination MAC address 412, a source MAC address 413 and a type / length 414.

プリアンブル411は、イーサネットフレームの開始を示す。
送信先MACアドレス412は、要求パケット400の送信先のMACアドレスを示す。
送信元MACアドレス413は、要求パケット400の送信元のMACアドレスを示す。
タイプ/長さ414は、イーサネットフレームのデータ部で運んでいるプロトコルを示す。あるいは、タイプ/長さ414は、イーサネットフレームのデータ部の長さを示す。
The preamble 411 indicates the start of an Ethernet frame.
The destination MAC address 412 indicates the MAC address of the destination of the request packet 400.
The source MAC address 413 indicates the MAC address of the source of the request packet 400.
Type / length 414 indicates the protocol carried by the data part of the Ethernet frame. Alternatively, type / length 414 indicates the length of the data portion of the Ethernet frame.

IPヘッダー420はIPパケットのヘッダー部である。IPパケットは、イーサネットフレームのデータ部に含まれる。IPヘッダー420は、一例として、チェックサム421、送信元IPアドレス422及び送信先IPアドレス423を含む。 The IP header 420 is a header portion of the IP packet. The IP packet is included in the data part of the Ethernet frame. The IP header 420 includes, for example, a checksum 421, a source IP address 422, and a destination IP address 423.

チェックサム421は、IPヘッダー420のチェックサムである。
送信元IPアドレス422は、IPパケットの送信元のIPアドレスを示す。
送信先IPアドレス423は、IPパケットの送信先のIPアドレスを示す。
The checksum 421 is a checksum of the IP header 420.
The source IP address 422 indicates the IP address of the source of the IP packet.
The destination IP address 423 indicates the IP address of the destination of the IP packet.

UDPヘッダー430は、UDPパケットのヘッダー部である。UDPパケットはIPパケッドのペイロードに含まれる。UDPヘッダー430は、一例として、送信元ポート番号431、送信先ポート番号432、パケット長433及びチェックサム434を含む。 The UDP header 430 is a header portion of the UDP packet. UDP packets are included in the payload of the IP packet. The UDP header 430 includes, as an example, a source port number 431, a destination port number 432, a packet length 433, and a checksum 434.

送信元ポート番号431は、UDPパケットの送信元のポート番号を示す。
送信先ポート番号432は、UDPパケットの送信先のポート番号を示す。
パケット長433は、UDPパケットの長さ、すなわちUDPヘッダー430の長さ及びペイロード440の長さの合計を示す。
チェックサム434は、UDPヘッダー430及びペイロード440のチェックサムである。
Source port number 431 indicates the port number of the source of the UDP packet.
The destination port number 432 indicates the port number of the destination of the UDP packet.
The packet length 433 indicates the total length of the UDP packet, that is, the length of the UDP header 430 and the length of the payload 440.
The checksum 434 is a checksum of the UDP header 430 and the payload 440.

ペイロード440は、UDPパケットのペイロードであり、要求パケット400によって送信されるデータの本体などを含む。当該本体は、サーバー装置100に要求する内容を含む。例えば、当該本体は、ETCカードの識別情報、乗車券の識別情報、IoT機器又は工場のセンサーなどから取得されるデータなどであっても良い。また、ペイロード440は、第1の宛先符号441を含む。ペイロード440中の第1の宛先符号441を除くデータは、既存の要求パケットのペイロード内のデータと同様のデータでも良い。 The payload 440 is a payload of a UDP packet, and includes a main body of data transmitted by the request packet 400 and the like. The main body includes the contents requested from the server device 100. For example, the main body may be ETC card identification information, ticket identification information, data acquired from an IoT device, a factory sensor, or the like. The payload 440 also includes a first destination code 441. The data other than the first destination code 441 in the payload 440 may be the same data as the data in the payload of the existing request packet.

プロセッサー210は、送信先MACアドレス412、送信先IPアドレス423及び送信先ポート番号432などを用いてハッシュ値又はチェックサムなどを求めることで、当該ハッシュ値又はチェックサムを用いた固定長の第1の宛先符号441を生成する。なお、第1の宛先符号441の生成に用いる関数は、サーバー側第1の宛先符号の生成に用いる関数と同一である。プロセッサー210は、生成した第1の宛先符号441を、ペイロード440に付与する。第1の宛先符号441は、第1の送信側宛先符号の一例である。第1の宛先符号441は、クライアント送信側宛先符号の一例である。 The processor 210 obtains a hash value or a checksum using the destination MAC address 412, the destination IP address 423, the destination port number 432, and the like, and the first fixed length using the hash value or the checksum. Generates the destination code 441 of. The function used to generate the first destination code 441 is the same as the function used to generate the first destination code on the server side. The processor 210 assigns the generated first destination code 441 to the payload 440. The first destination code 441 is an example of the first transmission side destination code. The first destination code 441 is an example of a client transmission side destination code.

プロセッサー210は、要求パケット400を生成した後、当該要求パケット400をサーバー装置100に送信するように通信インターフェース250に対して指示する。この送信の指示を受けて通信インターフェース250は、当該要求パケット400をサーバー装置100に送信する。送信された当該要求パケット400は、サーバー装置100の通信インターフェース150によって受信される。図4では、要求パケット400をステップST13として示す。プロセッサー210は、図2のステップS15の処理の後、ステップS13へと戻る。 After generating the request packet 400, the processor 210 instructs the communication interface 250 to send the request packet 400 to the server device 100. In response to this transmission instruction, the communication interface 250 transmits the request packet 400 to the server device 100. The transmitted request packet 400 is received by the communication interface 150 of the server device 100. In FIG. 4, the request packet 400 is shown as step ST13. The processor 210 returns to step S13 after the process of step S15 of FIG.

なお、ステップS13の処理は、例えばアプリケーション処理部211が行う。第1の宛先符号の生成及び付与については、宛先符号付与部213が行う。 The processing of step S13 is performed by, for example, the application processing unit 211. The destination code assigning unit 213 performs the generation and assignment of the first destination code.

一方、サーバー装置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 request packet 400, the processor 110 of the server device 100 determines Yes in step S23 and proceeds to step S29.
In step S29, the processor 110 of the server apparatus 100 determines whether or not the first destination code 441 included in the request packet 400 received in step S21 matches the first destination code on the server side generated in step S28. do. If the first destination codes match, the processor 110 determines Yes in step S29 and proceeds to step S30.
The process of step S29 is performed by, for example, the destination determination unit 113.

ステップS30においてプロセッサー110は、要求パケット400のペイロード440中のデータ本体によって要求された内容に基づくサーバー側アプリケーション処理を行う。
なお、ステップS30の処理は、例えばアプリケーション処理部111が行う。
In step S30, the processor 110 performs server-side application processing based on the content requested by the data body in the payload 440 of the request packet 400.
The processing of step S30 is performed by, for example, the application processing unit 111.

ステップS31においてプロセッサー110は、要求パケット400への応答として、図6に示すような応答パケット500を生成する。プロセッサー110は、宛先を置換する宛先置換処理により要求パケット400から応答パケット500を生成する。応答パケット500は、応答データの一例である。
なお、ステップS31の処理は、例えば宛先置換部114が行う。
In step S31, the processor 110 generates a response packet 500 as shown in FIG. 6 as a response to the request packet 400. The processor 110 generates a response packet 500 from the request packet 400 by a destination replacement process that replaces the destination. The response packet 500 is an example of response data.
The process of step S31 is performed by, for example, the destination replacement unit 114.

図6は、宛先置換処理及び応答パケット500について説明するための図である
応答パケット500は、一例として、Etherヘッダー510、IPヘッダー520、UDPヘッダー530及びペイロード540を含むイーサネットフレームである。
FIG. 6 is a diagram for explaining the destination replacement process and the response packet 500. As an example, the response packet 500 is an Ethernet frame including an Ether header 510, an IP header 520, a UDP header 530, and a payload 540.

Etherヘッダー510は、イーサネットフレームのヘッダー部である。Etherヘッダー510は、一例として、プリアンブル511、送信先MACアドレス512、送信元MACアドレス513及びタイプ/長さ514を含む。 The Ether header 510 is a header portion of an Ethernet frame. The Ether header 510 includes, by way of example, a preamble 511, a destination MAC address 512, a source MAC address 513 and a type / length 514.

プリアンブル511は、イーサネットフレームの開始を示す。プリアンブル511は、プリアンブル411をコピーしたものである。 The preamble 511 indicates the start of an Ethernet frame. The preamble 511 is a copy of the preamble 411.

送信先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 destination MAC address 512 indicates the MAC address of the destination of the response packet 500. The destination MAC address 512 is a copy of the source MAC address 413.
The source MAC address 513 indicates the MAC address of the source of the response packet 500. The source MAC address 513 is a copy of the destination MAC address 412.
From the above, the destination MAC address 512 and the source MAC address 513 are equivalent to the replacement of the destination MAC address 412 and the source MAC address 413.

タイプ/長さ514は、イーサネットフレームのデータ部で運んでいるプロトコルを示す。あるいは、タイプ/長さ514は、イーサネットフレームのデータ部の長さを示す。タイプ/長さ514は、タイプ/長さ414をコピーしたものである。 Type / length 514 indicates the protocol carried by the data part of the Ethernet frame. Alternatively, type / length 514 indicates the length of the data portion of the Ethernet frame. Type / length 514 is a copy of type / length 414.

IPヘッダー520は、IPパケットのヘッダー部である。IPヘッダー520は、一例として、チェックサム521、送信元IPアドレス522及び送信先IPアドレス523を含む。 The IP header 520 is a header portion of the IP packet. The IP header 520 includes, for example, a checksum 521, a source IP address 522, and a destination IP address 523.

チェックサム521は、IPヘッダー520のチェックサムである。チェックサム521は、チェックサム421をコピーしたものである。 The checksum 521 is a checksum of the IP header 520. The checksum 521 is a copy of the checksum 421.

送信元IPアドレス522は、IPパケットの送信元のIPアドレスを示す。送信元IPアドレス522は、送信先IPアドレス423をコピーしたものである。
送信先IPアドレス523は、IPパケットの送信先のIPアドレスを示す。送信先IPアドレス523は、送信元IPアドレス422をコピーしたものである。
したがって、送信元IPアドレス522及び送信先IPアドレス523は、送信元IPアドレスと送信先IPアドレス423とを入れ替えたものに等しい。
The source IP address 522 indicates the IP address of the source of the IP packet. The source IP address 522 is a copy of the destination IP address 423.
The destination IP address 523 indicates the IP address of the destination of the IP packet. The destination IP address 523 is a copy of the source IP address 422.
Therefore, the source IP address 522 and the destination IP address 523 are equivalent to the exchange of the source IP address and the destination IP address 423.

UDPヘッダー530は、UDPパケットのヘッダー部である。UDPヘッダー530は、一例として、送信元ポート番号531、送信先ポート番号532、パケット長533及びチェックサム534を含む。 The UDP header 530 is a header portion of the UDP packet. The UDP header 530 includes, as an example, a source port number 531 and a destination port number 532, a packet length 533, and a checksum 534.

送信元ポート番号531は、UDPパケットの送信元のポート番号を示す。送信元ポート番号531は、送信先ポート番号432をコピーしたものである。
送信先ポート番号532は、UDPパケットの送信先のポート番号を示す。送信先ポート番号532は、送信元ポート番号431をコピーしたものである。
したがって、送信元ポート番号531及び送信先ポート番号532は、送信元ポート番号431と送信先ポート番号432とを入れ替えたものに等しい。
Source port number 531 indicates the port number of the source of the UDP packet. The source port number 531 is a copy of the destination port number 432.
The destination port number 532 indicates the port number of the destination of the UDP packet. The destination port number 532 is a copy of the source port number 431.
Therefore, the source port number 531 and the destination port number 532 are equivalent to the replacement of the source port number 431 and the destination port number 432.

パケット長533は、UDPパケットの長さ、すなわちUDPヘッダー530の長さ及びペイロード540の長さの合計を示す。パケット長533は、パケット長433をコピーしたものである。ただし、ペイロード440の長さとペイロード540の長さは等しいものとする。 The packet length 533 indicates the total length of the UDP packet, that is, the length of the UDP header 530 and the length of the payload 540. The packet length 533 is a copy of the packet length 433. However, it is assumed that the length of the payload 440 and the length of the payload 540 are equal.

チェックサム534は、UDPヘッダー530及びペイロード540のチェックサムである。 The checksum 534 is a checksum of the UDP header 530 and the payload 540.

ペイロード540は、UDPパケットのペイロードであり、応答パケット500によって送信されるデータの本体などを含む。当該本体は、要求パケット400によって要求された内容に基づき応答する内容を含む。当該本体は、ステップS30の処理に基づくデータである。ペイロード540中のデータは、既存の応答パケットのペイロード内のデータと同様のデータでも良い。 The payload 540 is a payload of a UDP packet, and includes a main body of data transmitted by the response packet 500 and the like. The main body includes the content to respond based on the content requested by the request packet 400. The main body is data based on the process of step S30. The data in the payload 540 may be similar to the data in the payload of an existing response packet.

なお、プロセッサー110は、応答パケット500において各部の入れ替えを、SIMD(single instruction, multiple data)演算を用いて行っても良い。例えば、プロセッサー110は、x86/x64プロセッサーの拡張命令であるSSE(Streaming SIMD Extensions)又はAVX(Advanced Vector Extensions)などを用いると、シャッフル命令(PSHUFB/VPSHUFB)により、128bit、256bit、又は512bit分の領域をバイト毎に置換することが可能である。 The processor 110 may replace each part of the response packet 500 by using a SIMD (single instruction, multiple data) operation. For example, when the processor 110 uses SSE (Streaming SIMD Extensions) or AVX (Advanced Vector Extensions), which are extension instructions of the x86 / x64 processor, the shuffle instruction (PSHUFB / VPSHUFB) is used for 128 bits, 256 bits, or 512 bits. It is possible to replace the area byte by byte.

図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 processor 110 stores the Ether header 410 in the first argument and stores the byte position to be replaced in the second argument by using the shuffle instruction in the 128-bit area of the SSE, the destination MAC address 412 and the transmission are sent as a return value. The value obtained by exchanging the original MAC address 413 can be obtained with one instruction. Further, the processor 110 can replace the MAC address, the IP address, and the port number with one instruction by using the shuffle instruction in the 512-bit area of AVX.

ステップS32においてプロセッサー110は、ステップS31で生成した応答パケットを要求パケット400の送信元であるクライアント装置200に送信するように通信インターフェース150に対して指示する。この送信の指示を受けて通信インターフェース150は、当該応答パケットを当該クライアント装置200に送信する。送信された当該応答パケットは、クライアント装置200の通信インターフェース250によって受信される。図4では、応答パケットをステップST14として示す。プロセッサー110は、図3のステップS32の処理の後、ステップS21へと戻る。
なお、ステップS32の処理は、例えばアプリケーション処理部111が行う。
In step S32, the processor 110 instructs the communication interface 150 to transmit the response packet generated in step S31 to the client device 200 which is the source of the request packet 400. In response to this transmission instruction, the communication interface 150 transmits the response packet to the client device 200. The transmitted response packet is received by the communication interface 250 of the client device 200. In FIG. 4, the response packet is shown as step ST14. The processor 110 returns to step S21 after the process of step S32 of FIG.
The processing in step S32 is performed by, for example, the application processing unit 111.

一方、プロセッサー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 processor 210 determines Yes in step S14 and proceeds to step S16. At this time, the processor 210 bypasses the kernel and passes the packet to the application processing unit 211.
In step S16, the processor 210 determines whether or not the packet received in step S14 is a response packet. If the packet received in step S14 is not a response packet, the processor 210 determines No in step S16 and performs processing according to the type of the received packet. On the other hand, if the packet received in step S14 is a response packet, the processor 210 determines Yes in step S16 and proceeds to step S17.
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 processor 210 performs client-side application processing based on the contents of the data body in the payload 540 of the response packet 500. The processor 210 returns to step S13 after the processing of step S17.
The processing of step S17 is performed by, for example, the application processing unit 211.

なお、サーバー装置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 processor 110 of the server device 100 considers that the request packet 400 received in step S22 is not a packet addressed to the application software of the server device 100, and step S29 in FIG. In, it is determined as No, and the process proceeds to step S33.
In step S33, the processor 110 discards the request packet 400 received in step S22. The processor 110 returns to step S21 after the processing of step S33.
The processing of step S33 is performed by, for example, the application processing unit 111.

第1実施形態の通信システム1によれば、サーバー装置100は、要求パケット400中の第1の宛先符号441とサーバー側第1の宛先符号が一致するか否かを判定する。これにより、サーバー装置100は、要求パケット400のヘッダー部分の処理を行うことなく、要求パケット400がサーバー装置100のアプリケーションソフトウェア宛てであるか否かを判定することができる。この結果、サーバー装置100による要求パケット400に係る処理にかかる時間が短くなる。 According to the communication system 1 of the first embodiment, the server device 100 determines whether or not the first destination code 441 in the request packet 400 and the first destination code on the server side match. As a result, the server device 100 can determine whether or not the request packet 400 is addressed to the application software of the server device 100 without processing the header portion of the request packet 400. As a result, the time required for the processing of the request packet 400 by the server device 100 is shortened.

また、第1実施形態の通信システム1によれば、サーバー装置100は、要求パケット400の一部を入れ替えることで応答パケット500を生成する。これにより、サーバー装置100は、応答パケット500の生成にかかる時間を短くすることができる。 Further, according to the communication system 1 of the first embodiment, the server device 100 generates a response packet 500 by replacing a part of the request packet 400. As a result, the server device 100 can shorten the time required to generate the response packet 500.

また、第1実施形態の通信システム1によれば、サーバー装置100は、要求パケット400の一部をコピーすることで応答パケット500を生成する。これにより、サーバー装置100は、応答パケット500の生成にかかる時間を短くすることができる。 Further, according to the communication system 1 of the first embodiment, the server device 100 generates a response packet 500 by copying a part of the request packet 400. As a result, the server device 100 can shorten the time required to generate the response packet 500.

また、第1実施形態の通信システム1によれば、サーバー装置100は、SIMD演算を用いてヘッダーの一部を入れ替える。これにより、サーバー装置100は、応答パケット500の生成にかかる時間を短くすることができる。 Further, according to the communication system 1 of the first embodiment, the server device 100 replaces a part of the header by using the SIMD operation. As a result, the server device 100 can shorten the time required to generate the response packet 500.

また、第1実施形態の通信システム1によれば、第1の宛先符号は、ハッシュ関数を用いて生成される場合がある。通信システム1は、第1の宛先符号の生成にハッシュ関数を用いることで、サーバー装置100のMACアドレスとIPアドレスとポート番号が分かっても第1の宛先符号の推測が困難となり、セキュリティ性が向上する。 Further, according to the communication system 1 of the first embodiment, the first destination code may be generated by using a hash function. Communication system 1 uses a hash function to generate the first destination code, so that even if the MAC address, IP address, and port number of the server device 100 are known, it becomes difficult to guess the first destination code, and security is improved. improves.

〔第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 communication system 1b and the communication system 1b according to the second embodiment.
Since the hardware configuration of the communication system 1b is the same as that of the communication system 1 of the first embodiment, the description thereof will be omitted.

第2実施形態では、サーバー装置100のアプリケーション処理部111は、ARP処理部112、宛先判定部113及び宛先置換部114に加えて宛先符号付与部115を備える。
宛先符号付与部115は、第2の宛先符号を生成する。また、宛先符号付与部115は、サーバー装置100が送信するパケットに第2の宛先符号を付与する。宛先符号付与部115は、第1の受信側生成部の一例である。
In the second embodiment, the application processing unit 111 of the server device 100 includes an ARP processing unit 112, a destination determination unit 113, a destination replacement unit 114, and a destination code assigning unit 115.
The destination code assigning unit 115 generates a second destination code. Further, the destination code assigning unit 115 assigns a second destination code to the packet transmitted by the server device 100. The destination code assigning unit 115 is an example of a first receiving side generation unit.

また、第2実施形態では、クライアント装置200のアプリケーション処理部211は、宛先符号付与部213に加えて、ARP処理部215及び宛先判定部216を備える。
ARP処理部215は、ARP処理などを行う。
宛先判定部216は、受信パケットに含まれる第2の宛先符号から宛先を判定する。宛先判定部216は、第2の送信側生成部の一例である。
Further, in the second embodiment, the application processing unit 211 of the client device 200 includes an ARP processing unit 215 and a destination determination unit 216 in addition to the destination code assigning unit 213.
The ARP processing unit 215 performs ARP processing and the like.
The destination determination unit 216 determines the destination from the second destination code included in the received packet. The destination determination unit 216 is an example of a second transmission side generation unit.

以下、第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 communication system 1b according to the second embodiment will be described with reference to FIGS. 9 to 11 and the like. The content of the process in the following operation description is an example, and various processes that can obtain the same result can be appropriately used. FIG. 9 is a flowchart showing an example of processing by the processor 210 of the client device 200. The processor 210 executes the process of FIG. 9 based on a program stored in, for example, a ROM 220 or an auxiliary storage device 240. FIG. 10 is a flowchart showing an example of processing by the processor 110 of the server device 100. The processor 110 executes the process of FIG. 10 based on a program stored in, for example, the ROM 120 or the auxiliary storage device 140. FIG. 11 is a sequence diagram showing an example of the information flow of the communication system 1b according to the second embodiment. Note that FIG. 11 does not cover the flow of information in the communication system 1b, and a flow of information (not shown) may exist. Further, in the following operation description, a process between one server device 100 and one client device 200 will be described as an example.

第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 processor 110 of the server device 100 proceeds to step S51 after the process of step S28 in FIG.
In step S51, the processor 110 generates an ARP request. The ARP request generated here is the same as the ARP request generated by the client device 200. However, the ARP request generated by the server device 100 has the opposite destination and source to the ARP request generated by the client device 200. After generating the ARP request, the processor 110 instructs the communication interface 150 to send the ARP request to the client device 200. In response to this transmission instruction, the communication interface 150 transmits the ARP request to the client device 200. The transmitted ARP request is received by the communication interface 250 of the client device 200. In FIG. 11, the ARP request is shown as step ST21. The processor 110 returns to step S21 after the process of step S51 of FIG.

一方、第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 processor 210 of the client device 200 determines Yes in the process of step S12 of FIG. 9, the process proceeds to step S41. In step S41, the processor 210 receives an ARP request by the communication interface 250. I'm waiting for you to be done. If the ARP request is received, the processor 210 determines Yes in step S41 and proceeds to step S42.

ステップ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 processor 210 produces an ARP response. The ARP response generated here is the same as the ARP response generated by the server device 100. However, the ARP response generated by the client device 200 has a destination and a source opposite to the ARP request generated by the server device 100. After generating the ARP response, the processor 210 instructs the communication interface 250 to send the ARP response to the server device 100. In response to this transmission instruction, the communication interface 250 transmits the ARP response to the server device 100. The transmitted ARP response is received by the communication interface 150 of the server device 100. In FIG. 11, the ARP response is shown as step ST22.

ステップ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 processor 210 generates a second destination code. The second destination code is used for identifying the client device 200 and the application software of the client device 200. The processor 110 obtains a hash value or a checksum by using, for example, the MAC address of the client device 200, the IP address of the client device 200, the port number used in the application software of the client device 200, and the like. Alternatively, a fixed-length second destination code using a checksum is generated. The function for obtaining the hash value or checksum for the second destination code generation is an example of the second predetermined function. The length of the second destination code is preferably short from the viewpoint of processing speed. More preferably, the length of the second destination code is the same as the number of bits of the OS. For example, if the OS installed in the client device 200 is a 64-bit OS, it is preferable that the length of the second destination code is also 64-bit. This is because the client device 200 can determine whether or not the second destination codes match with one instruction. If the length of the second destination code is 64 bits, the collision probability is 1 × 10 -19 or less, and the probability that the client device 200 mistakenly processes a packet that is not addressed to the application software of the client device 200 is processed by the server-side application. It will be low enough. The second destination code generated by the client device 200 is hereinafter referred to as "client-side second destination code". The client-side second destination code is an example of the second receiving-side destination code. The processor 210 proceeds to step S13 after the processing of step S43.

一方、第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 processor 110 of the server device 100 determines No in step S23 of FIG. 10, the process proceeds to step S52.
In step S52, the processor 110 determines whether or not the packet received in step S21 is an ARP response. If the packet received in step S21 is not an ARP response, the processor 110 determines No in step S52 and performs processing according to the type of received packet. On the other hand, if the packet received in step S21 is an ARP response, the processor 110 determines Yes in step S52 and returns to step S21.

また、第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 processor 110 proceeds to step S53 after the processing of step S31.
In step S53, the processor 110 obtains a hash value or checksum using the destination MAC address 512, the destination IP address 523, the destination port number 532, and the like, so that the processor 110 has a fixed length using the hash value or checksum. Generates a second destination code for. The function used to generate the second destination code here is the same as the function used to generate the second destination code on the client side. The processor 210 attaches the generated second destination code to the payload 540 of the response packet 500 generated in step S31. The destination code generated here is an example of the second transmitting side destination code.

ステップS54においてプロセッサー110は、ステップS53で生成した応答パケットを要求パケット400の送信元であるクライアント装置200に送信するように通信インターフェース150に対して指示する。この送信の指示を受けて通信インターフェース150は、当該応答パケットを当該クライアント装置200に送信する。送信された当該応答パケットは、クライアント装置200の通信インターフェース250によって受信される。図4では、応答パケットをステップST14として示す。プロセッサー110は、図3のステップS54の処理の後、ステップS21へと戻る。プロセッサー110は、ステップS54の処理の後、ステップS21へと戻る。 In step S54, the processor 110 instructs the communication interface 150 to transmit the response packet generated in step S53 to the client device 200 which is the source of the request packet 400. In response to this transmission instruction, the communication interface 150 transmits the response packet to the client device 200. The transmitted response packet is received by the communication interface 250 of the client device 200. In FIG. 4, the response packet is shown as step ST14. The processor 110 returns to step S21 after the processing of step S54 in FIG. The processor 110 returns to step S21 after the processing of step S54.

一方、第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 processor 210 of the client device 200 determines Yes in step S16 of FIG. 9, the process proceeds to step S44.
In step S44, the processor 210 determines whether or not the second destination code included in the response packet 500 received in step S14 matches the client-side second destination code generated in step S43. If the second destination codes do not match, the processor 210 determines No in step S44 and proceeds to step S45.

ステップS45においてプロセッサー210は、ステップS14で受信された応答パケット500を破棄する。プロセッサー210は、ステップS45の処理の後、ステップS13へと戻る。 In step S45, the processor 210 discards the response packet 500 received in step S14. The processor 210 returns to step S13 after the processing of step S45.

対して、プロセッサー210は、第2の宛先符号が一致するならば、ステップS44においてYesと判定してステップS17へと進む。 On the other hand, if the second destination codes match, the processor 210 determines Yes in step S44 and proceeds to step S17.

第2実施形態の通信システム1bによれば、第1実施形態の通信システム1と同様の効果が得られる。 According to the communication system 1b of the second embodiment, the same effect as that of the communication system 1 of the first embodiment can be obtained.

また、第2実施形態の通信システム1bによれば、クライアント装置200は、応答パケット500中の第2の宛先符号とクライアント側第2の宛先符号が一致するか否かを判定する。これにより、クライアント装置200は、応答パケット500のヘッダー部分の処理を行うことなく、応答パケット500がクライアント装置200のアプリケーションソフトウェア宛てであるか否かを判定することができる。この結果、クライアント装置200による応答パケット500に係る処理にかかる時間が短くなる。 Further, according to the communication system 1b of the second embodiment, the client device 200 determines whether or not the second destination code in the response packet 500 and the second destination code on the client side match. As a result, the client device 200 can determine whether or not the response packet 500 is addressed to the application software of the client device 200 without processing the header portion of the response packet 500. As a result, the time required for the processing related to the response packet 500 by the client device 200 is shortened.

上記の実施形態は以下のような変形も可能である。 The above embodiment can be modified as follows.

第2実施形態の通信システム1bは、クライアント装置200が先にARP要求を送信し、その後にサーバー装置100がARP要求を送信している。しかしながら、サーバー装置100がクライアント装置200より先にARP要求を送信しても良い。また、サーバー装置100及びクライアント装置200が同時にARP要求を送信しても良い。 In the communication system 1b of the second embodiment, the client device 200 first transmits the ARP request, and then the server device 100 transmits the ARP request. However, the server device 100 may send the ARP request before the client device 200. Further, the server device 100 and the client device 200 may simultaneously transmit the ARP request.

第2実施形態の通信システム1bは、クライアント装置200が先にARP要求を送信し、当該ARP要求を受信したことに応じてサーバー装置100がARP要求を送信している。しかしながら、サーバー装置100は、クライアント装置200がARP要求を送信してきたこととは無関係にARP要求を送信しても良い。
また、サーバー装置100がクライアント装置200より先にARP要求を送信する場合においても、クライアント装置200は、当該ARP要求を受信したことに応じてARP要求を送信しても良い。また、クライアント装置200は、サーバー装置100がARP要求を送信してきたこととは無関係にARP要求を送信しても良い。
In the communication system 1b of the second embodiment, the client device 200 first transmits an ARP request, and the server device 100 transmits the ARP request in response to receiving the ARP request. However, the server device 100 may transmit the ARP request regardless of the client device 200 transmitting the ARP request.
Further, even when the server device 100 transmits the ARP request before the client device 200, the client device 200 may transmit the ARP request in response to receiving the ARP request. Further, the client device 200 may transmit the ARP request regardless of the server device 100 transmitting the ARP request.

サーバー装置100は、ARP応答を受信したことに応じて、サーバー側第1の宛先符号を生成しても良い。クライアント装置200は、ARP応答を受信したことに応じて、クライアント側第2の宛先符号を生成しても良い。 The server device 100 may generate the first server-side destination code in response to receiving the ARP response. The client device 200 may generate a second destination code on the client side in response to receiving the ARP response.

上記の実施形態では、サーバー装置とクライアント装置間の処理について説明した。しかしながら、実施形態の通信システムは、サーバー装置とクライアント装置間に限らず、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 client device 200 or the server device 100 multicasts a neighbor request message using the Marcast address instead of the ARP request. Then, the server device 100 or the client device 200 that has received the neighborhood request message transmits the neighborhood notification message instead of the ARP response. Then, the server device 100 and the client device 200 associate the IP address and the MAC address by using the neighborhood cache instead of the ARP table.

サーバー装置100は、ARP及びICMPv6以外のプロトコルで送信されるパケットを受信したことに応じて、サーバー側第1の宛先符号を生成しても良い。クライアント装置200は、ARP及びICMPv6以外のプロトコルで送信されるパケットを受信したことに応じて、クライアント側第2の宛先符号を生成しても良い。 The server device 100 may generate a first destination code on the server side in response to receiving a packet transmitted by a protocol other than ARP and ICMPv6. The client device 200 may generate a second destination code on the client side in response to receiving a packet transmitted by a protocol other than ARP and ICMPv6.

実施形態の通信システムは、イーサネット以外のデータリンクを用いるものでも良い。
また、実施形態の通信システムは、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 processor 110 and the processor 210 may realize a part or all of the processing realized by the program in the above embodiment by the hardware configuration of the circuit.

上記実施形態における各装置は、例えば、上記の各処理を実行するためのプログラムが記憶された状態で各装置の管理者などへと譲渡される。あるいは、当該各装置は、当該プログラムが記憶されない状態で当該管理者などに譲渡される。そして、当該プログラムが別途に当該管理者などへと譲渡され、当該管理者又はサービスマンなどによる操作に基づいて当該各装置に記憶される。このときのプログラムの譲渡は、例えば、ディスクメディア又は半導体メモリなどのようなリムーバブルな記憶媒体を用いて、あるいはインターネット又は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の装置及び第2の装置を含み、
前記第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の処理部は、前記要求データのヘッダーの一部を入れ替えることで、前記要求データに対する応答である応答データのヘッダーを生成し、
前記第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.
前記第2の処理部は、前記要求データのヘッダーの一部をSIMD演算によって入れ替える、請求項2に記載の通信システム。 The communication system according to claim 2, wherein the second processing unit replaces a part of the header of the request data by a SIMD operation. 前記第1の所定の関数は、ハッシュ関数である、請求項1乃至請求項3のいずれか1項に記載の通信システム。 The communication system according to any one of claims 1 to 3, wherein the first predetermined function is a hash function. 前記第1の受信側宛先符号及び前記第1の送信側宛先符号のビット長は、前記第2の装置のOSのアーキテクチャと同じビット長である、請求項1乃至請求項4のいずれか1項に記載の通信システム。 One of claims 1 to 4, wherein the bit lengths of the first receiving-side destination code and the first transmitting-side destination code have the same bit length as the architecture of the OS of the second apparatus. The communication system described in. 前記第1の装置は、
前記第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.
送信先IPアドレス、送信先MACアドレス、及び送信先ポート番号を用いて第1の所定の関数によりクライアント送信側宛先符号を生成するクライアント送信側生成部と、
前記クライアント送信側宛先符号を付与した要求データを送信するクライアント通信部と、を備える、クライアント装置。
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.
JP2020109603A 2020-06-25 2020-06-25 Communication system, server device, client device, and program Pending JP2022006989A (en)

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)

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