Device and method for data transfer and program
Abstract
[Task] To provide a proxy device that can reduce the load on the network.
Solution.When transferring reply data with new contents from the server-side proxy 230 to the client-side proxy 240, both proxies 2 associate the data with the fingerprint calculated by applying the hash function to the data, and perform a finger. Register in the print cache. When transferring reply data having the same fingerprint as the fingerprint registered in the fingerprint cache from the server-side proxy 230 to the client-side proxy 240, the fingerprint is transferred instead of the reply data, and the same fingerprint is transferred. Is not registered, but if the data to be transferred can be compressed and expressed by using the fingerprint of the reference data using other registered data as the reference data, the compressed data is transferred.
Term
Term ended
Projected expiry passed 12 March 2021, 5.5 years ago.
- Priority and filed
- Published
- Projected expiry
- Today
19 claims: 6 independent, 13 dependent
- 1【特許請求の範囲】 【請求項1】第1の通信装置から送信されたデータを受信し、該データをその宛先となる第2の通信装置に通ずる他のデータ転送装置へ送信するとともに、該第2の通信装置から送信されたデータを該他のデータ転送装置を介して受信し、該データをその宛先となる該第1の通信装置へ送信するデータ転送装置であって、 前記第1の通信装置から前記データを受信するための受信手段と、 過去に前記他のデータ転送装置へ送信したデータと、該データの内容をもとに生成して該データに割り当てた名前とを対応付けて保持するための保持手段と、 前記第1の通信装置から送信されたデータを受信した際に、該受信したデータの内容をもとに生成した該データに割り当てるべき名前が、前記保持手段に保持されている場合には、該データの代わりに該名前を送信するための処理を行い、該受信したデータに割り当てられるべき名前が、前記保持手段に保持されていない場合には、該受信したデータと該名前とを対応付けて前記保持手段に保持するための処理を行うとともに、前記保持手段に保持されている他のデータを参照データとし、該参照データに対応する前記名前を利用して、該受信したデータを圧縮して表現することが可能であるならば、該受信したデータを圧縮して表現した圧縮データを送信するための処理を行い、圧縮して表現することが可能でないならば、該受信したデータを送信するための処理を行う処理手段と、 前記処理手段の処理に応じて前記名前、前記圧縮データまたは前記受信したデータを、前記他のデータ転送装置へ送信するための送信手段とを備えたことを特徴とするデータ転送装置。
- 2【請求項2】第1の通信装置から送信されたデータを他のデータ転送装置を介して受信し、該データをその宛先となる第2の通信装置へ送信するとともに、該第2の通信装置から送信されたデータを受信し、該データをその宛先となる第1の通信装置に通ずる他のデータ転送装置へ送信するデータ転送装置であって、 前記他のデータ転送装置から、前記データ、当該データの代わりに当該データの内容をもとに生成して該データに割り当てられた名前、または当該データの代わりに他のデータを参照データとし、該参照データの内容をもとに生成して該参照データに割り当てられた名前を利用して当該データを圧縮して表現した圧縮データを受信するための受信手段と、 過去に前記他のデータ転送装置から受信したデータと、該データの内容をもとに生成して該データに割り当てられた名前とを対応付けて保持するための保持手段と、 前記他のデータ転送装置から前記名前を受信した場合には、前記保持手段から該受信した名前に対応付けて保持されているデータを取得し、該取得したデータを送信するための処理を行い、前記他のデータ転送装置から前記データを受信した場合には、該受信したデータと該データに割り当てられるべき名前とを対応付けて前記保持手段に保持するための処理を行うとともに、該受信したデータを送信するための処理を行い、前記他のデータ転送装置から前記圧縮データを受信した場合には、該圧縮データに含まれる参照データに対応する名前と同一の名前に対応付けて前記保持手段に保持されているデータを取得し、該取得したデータを前記参照データとして該圧縮データの元となったデータを解凍するとともに、該解凍したデータと該データに割り当てられるべき名前とを対応付けて前記保持手段に保持するための処理を行い、該解凍したデータを送信するための処理を行う処理手段と、 前記処理手段の処理に応じて前記取得したデータ、前記受信したデータまたは前記解凍したデータを、前記第2の通信装置へ送信するための送信手段とを備えたことを特徴とするデータ転送装置。
- 3【請求項3】前記名前は、所定の方法によって前記データを圧縮して得た値であることを特徴とする請求項1または2に記載のデータ転送装置。
- 4【請求項4】前記名前は、前記データに所定のハッシュ関数を適用して得られた値であることを特徴とする請求項1または2に記載のデータ転送装置。
- 5【請求項5】前記圧縮データは、1又は複数の前記参照データに対応する前記名前と、当該各参照データのうち使用する部分を示す情報と、該使用する部分の接続方法を示す情報とを含むものであることを特徴とする請求項1または2に記載のデータ転送装置。
- 6【請求項6】前記圧縮データは、1つの前記参照データに対応する前記名前と、該参照データのうち該圧縮データの元となったデータと相違する部分を示す情報と、該相違する部分に嵌め込むべき内容とを含むものであることを特徴とする請求項1または2に記載のデータ転送装置。
- 7【請求項7】前記受信したデータに割り当てられるべき前記名前が前記保持手段に保持されていなかったために、該受信したデータを前記他のデータ転送装置へ送信する際には、該受信したデータに割り当てられるべき前記名前をも併せて送信することを特徴とする請求項1に記載のデータ転送装置。
- 8【請求項8】前記他のデータ転送装置から前記データとともに該データに割り当てられるべき前記名前を受信した場合に、該受信したデータと該受信した名前とを対応付けて前記保持手段に保持することを特徴とする請求項2に記載のデータ転送装置。
- 9【請求項9】少なくともリプライメッセージのデータであって空でないものを対象として前記保持手段への保持及び前記名前の転送を行うことを特徴とする請求項1または2に記載のデータ転送装置。
- 10【請求項10】予め定められた条件を満たすデータは、前記保持手段への保持を行う対象から除外することを特徴とする請求項1または2に記載のデータ転送装置。
- 11【請求項11】前記データ転送装置は、ローカルエリアネットワークを介して前記第1の通信装置と接続されたものであることを特徴とする請求項1に記載のデータ転送装置。
- 12【請求項12】前記データ転送装置は、前記第1の通信装置上にソフトウェアとして搭載されたものであることを特徴とする請求項1に記載のデータ転送装置。
- 13【請求項13】前記データ転送装置は、ローカルエリアネットワークを介して前記第2の通信装置と接続されたものであることを特徴とする請求項2に記載のデータ転送装置。
- 14【請求項14】前記データ転送装置は、前記第2の通信装置上にソフトウェアとして搭載されたものであることを特徴とする請求項2に記載のデータ転送装置。
- 15【請求項15】前記第1の通信装置はサーバ装置であり、前記第2の通信装置はクライアント装置であることを特徴とする請求項1または2に記載のデータ転送装置。
- 16【請求項16】第1の通信装置から送信されたデータを受信し、該データをその宛先となる第2の通信装置に通ずる他のデータ転送装置へ送信するとともに、該第2の通信装置から送信されたデータを該他のデータ転送装置を介して受信し、該データをその宛先となる該第1の通信装置へ送信するデータ転送装置におけるデータ転送方法であって、 前記第1の通信装置から送信されたデータを受信し、 受信された前記データの内容をもとに生成した該データに割り当てるべき名前が、過去に前記他のデータ転送装置へ送信したデータと該データの内容をもとに生成して該データに割り当てた名前とを対応付けて保持するための保持手段に保持されているか否か判断し、 保持されている場合には、受信された前記データの代わりに前記名前を送信するための処理を行い、 保持されていない場合には、前記受信したデータと前記名前とを対応付けて前記保持手段に保持するための処理を行うとともに、前記保持手段に保持されている他のデータを参照データとし、該参照データに対応する前記名前を利用して、該受信したデータを圧縮して表現することが可能であるならば、該受信したデータを圧縮して表現した圧縮データを送信するための処理を行い、圧縮して表現することが可能でないならば、該受信したデータを送信するための処理を行うことを特徴とするデータ転送方法。
- 17【請求項17】第1の通信装置から送信されたデータを他のデータ転送装置を介して受信し、該データをその宛先となる第2の通信装置へ送信するとともに、該第2の通信装置から送信されたデータを受信し、該データをその宛先となる第1の通信装置に通ずる他のデータ転送装置へ送信するデータ転送装置におけるデータ転送方法であって、 前記他のデータ転送装置から、前記データ、当該データの代わりに当該データの内容をもとに生成して該データに割り当てられた名前、または当該データの代わりに他のデータを参照データとし、該参照データの内容をもとに生成して該参照データに割り当てられた名前を利用して当該データを圧縮して表現した圧縮データを受信し、 前記他のデータ転送装置から前記データの代わりに該データの内容をもとに生成して該データに割り当てられた名前を受信した場合には、過去に前記他のデータ転送装置から受信されたデータと該データの内容をもとに生成して該データに割り当てられた名前とを対応付けて保持するための保持手段から、受信された前記名前に対応付けて保持されているデータを取得し、該取得したデータを送信するための処理を行い、前記他のデータ転送装置から前記データを受信した場合には、該受信したデータと該データに割り当てられるべき名前とを対応付けて前記保持手段に保持するための処理を行うとともに、該受信したデータを送信するための処理を行い、前記他のデータ転送装置から前記圧縮データを受信した場合には、該圧縮データに含まれる参照データに対応する名前と同一の名前に対応付けて前記保持手段に保持されているデータを取得し、該取得したデータを前記参照データとして該圧縮データの元となったデータを解凍するとともに、該解凍したデータと該データに割り当てられるべき名前とを対応付けて前記保持手段に保持するための処理を行い、該解凍したデータを送信するための処理を行うことを特徴とするデータ転送方法。
- 18【請求項18】第1の通信装置から送信されたデータを受信し、該データをその宛先となる第2の通信装置に通ずる他のデータ転送装置へ送信するとともに、該第2の通信装置から送信されたデータを該他のデータ転送装置を介して受信し、該データをその宛先となる該第1の通信装置へ送信するデータ転送装置としてコンピュータを機能させるためのプログラムであって、 過去に前記他のデータ転送装置へ送信したデータと、該データの内容をもとに生成して該データに割り当てた名前とを対応付けて記憶装置に保持するための機能と、 前記第1の通信装置から送信されたデータを受信した際に、該受信したデータの内容をもとに生成した該データに割り当てるべき名前が、前記記憶装置に保持されている場合には、該データの代わりに該名前を送信するための処理を行い、該受信したデータに割り当てられるべき名前が、前記記憶装置に保持されていない場合には、該受信したデータと該名前とを対応付けて前記記憶装置に保持するための処理を行うとともに、前記記憶装置に保持されている他のデータを参照データとし、該参照データに対応する前記名前を利用して、該受信したデータを圧縮して表現することが可能であるならば、該受信したデータを圧縮して表現した圧縮データを送信するための処理を行い、圧縮して表現することが可能でないならば、該受信したデータを送信するための処理を行う機能とをコンピュータに実現させるためのプログラム。
- 19【請求項19】第1の通信装置から送信されたデータを他のデータ転送装置を介して受信し、該データをその宛先となる第2の通信装置へ送信するとともに、該第2の通信装置から送信されたデータを受信し、該データをその宛先となる第1の通信装置に通ずる他のデータ転送装置へ送信するデータ転送装置としてコンピュータを機能させるためのプログラムであって、 過去に前記他のデータ転送装置から受信したデータと、該データの内容をもとに生成して該データに割り当てられた名前とを対応付けて記憶装置に保持するための機能と、 前記他のデータ転送装置から前記データを受信したか、当該データの代わりに当該データの内容をもとに生成して該データに割り当てられた名前を受信したか、または当該データの代わりに他のデータを参照データとし、該参照データの内容をもとに生成して該参照データに割り当てられた名前を利用して当該データを圧縮して表現した圧縮データを受信したかを判断するための機能と、 前記他のデータ転送装置から前記名前を受信した場合には、前記記憶装置から該受信した名前に対応付けて保持されているデータを取得し、該取得したデータを送信するための処理を行い、前記他のデータ転送装置から前記データを受信した場合には、該受信したデータと該データに割り当てられるべき名前とを対応付けて前記記憶装置に保持するための処理を行うとともに、該受信したデータを送信するための処理を行い、前記他のデータ転送装置から前記圧縮データを受信した場合には、該圧縮データに含まれる参照データに対応する名前と同一の名前に対応付けて前記記憶装置に保持されているデータを取得し、該取得したデータを前記参照データとして該圧縮データの元となったデータを解凍するとともに、該解凍したデータと該データに割り当てられるべき名前とを対応付けて前記記憶装置に保持するための処理を行い、該解凍したデータを送信するための処理を行う機能とをコンピュータに実現させるためのプログラム。
Independent claims19
495 paragraphs in 1 section, as filed
Description: TECHNICAL FIELD [Detailed description of the invention]
【0001】
[Technical field to which the invention belongs]
The present invention relates to data transfer devices, data transfer methods and programs that transfer data for other devices.
【0002】
[Conventional technology]
A client-server type information system is widely used, which is composed of a server that provides various services via a network and a client that requests a desired service from the server. In particular, the WORLDWIDE WEB system (or simply called WEB), which consists of a WEB server and a client that communicate using the HTTP protocol on the Internet, is a client-server type information system that is very widely used. Normally, a server program runs on the server, and a predetermined tool (program) such as a browser runs on the client. The contents of services provided on the Internet are also diverse, providing information such as characters, still images, moving images, voices (for example, homepages, e-mails, digital contents, etc.) and programs via the network. Various services such as delivery or transfer services, electronic store services for selling products, reservation services for seats and rooms, mediation services for various contracts, etc. already exist, and new forms of services are being created one after another. Has appeared.
【0003】
By the way, in a client-server type information system such as the WEB, regardless of the form of the service provided, the service is basically provided by data transfer between the client and server. Will be done. Therefore, the capacity (bandwidth) of the network used for communication between the client and the server tends to become a bottleneck of the entire system. Therefore, cache technology is usually used to reduce the load on the network.
【0004】
In the case of a WEB system, many browsers running on the client use a cache mechanism and cache recently accessed data. Since access is made by specifying information and services with a name called URL on the WEB, the cache on the client is the data returned as a result of the information and services requested to the WEB server in the past that can be cached. , Corresponds to the URL and records it in the cache. In this case, when there is a request for the same URL information or service as the one in the cache, if it can be determined that the response data in the cache is not out of date, that data is returned to the WEB server. Communication between can be eliminated.
【0005】
If there are multiple users on a corporate office LAN, a research institution LAN, or a home LAN, a proxy server may be placed between the LAN and the Internet, and a cache mechanism may be provided on the proxy server. There are many. The cache in the client (for example, the cache of the browser) operates as a cache dedicated to the client user, while the cache of the proxy server on the LAN operates as a cache shared by a plurality of client users. Therefore, in the latter case, the cache is effective even when accessing a URL accessed by another person (another client) in the past.
【0006】
By the way, in the WEB, communication is performed between the client and the server by a protocol called HTTP. The HTTP protocol is a set of a "request message" sent from the client to the server and a "reply message" that responds and returns a response from the server to the client.
【0007】
The request message consists of a "request header" and a "request body". The request header contains information that you want to access, a URL that specifies the service, a method name that indicates the type of access, and various other information required for access. The request body contains the data to be sent to the server. The data contained in the request body is also called "request data".
【0008】
The reply message consists of a "reply header" and a "reply body". The reply header contains information such as the status of the processing result, and the reply body contains data such as the requested information and the processing result of the requested service. The data contained in the reply body is also called "reply data".
【0009】
Request message methods include the "GET method" that reads information on the server, the "PUT method" that writes user data to the server, and the "POST method" that sends back the processing results in response to the request. It is the main one used to access the service. Other methods such as DELETE are defined.
【0010】
In most cases, the request body of the request message of the GET method and the reply body of the reply message of the PUT method are empty. The request body of the request message of the POST method contains information used for processing on the server side as needed, and the reply body of the reply message of the POST method contains the data of the result of the processing.
【0011】
The data read from the server by the GET method can be divided into "dynamic data" generated on the server side each time it is read and "static data" that sends back the data already stored on the server side as it is. Of these, the contents of dynamic data may differ each time the same URL is read, so in many cases, the server sends back a non-cacheable specification in the header of the reply message. Therefore, it is the static data part that is cached in the WEB data. This static data can be divided into "shared data" that can be referenced by an unspecified number of users and "private data" that controls access so that only specific users can access it by user authentication. .. The former shared data can be cached in any cache. However, the latter private data cannot be cached in a shared cache such as a proxy server (since private data must be authenticated by the server and sent back). However, in the case of a personal cache such as a browser, private data can also be cached.
【0012】
Since the POST method returns the result of processing on the server side, the server generally puts the non-cacheable specification in the header of the reply message and sends back the result. Therefore, it is usually not cached.
【0013】
The PUT method sends the data to the server, so the cache does nothing.
【0014】
[Problems to be Solved by the Invention]
The conventional WEB cache targets static contents. In the past, information and services published on the WEB were not updated very frequently and were often published to an unspecified number of people, so the ratio of static content was very high, and it was conventional. Cache technology was also effective in reducing the load on the network.
【0015】
However, as systems such as WEB-based ASPs (Application Service Providers) that allow users to access information and services on servers via networks using WEB browsers have become widespread, conventional cache technologies have been used as described below. The amount of data that cannot be handled is increasing. -Since the user is authenticated and the users who can access it are restricted, there is a lot of private data. -Many dynamic data are generated by referring to the back-end database. -In many cases, POST methods such as form processing and search are used. -PUT methods are often used to share information within groups. As a result, cache technology alone is no longer effective as a method for reducing the load on the network.
【0016】
The present invention has been made in consideration of the above circumstances, and provides a data transfer device, a data transfer method, and a program equipped with a cache technology / compression technology that can further reduce the load on the network connecting the data transfer devices. The purpose is to provide.
【0017】
[Means for solving problems]
The present invention receives data transmitted from the first communication device, transmits the data to another data transfer device communicating with the second communication device to which the data is transmitted, and transmits the data from the second communication device. A data transfer device that receives the received data via the other data transfer device and transmits the data to the first communication device that is the destination of the data, and receives the data from the first communication device. A receiving means for holding the data, and a holding means for associating and holding the data transmitted to the other data transfer device in the past and the name generated based on the contents of the data and assigned to the data. When the data transmitted from the first communication device is received, the name to be assigned to the data generated based on the contents of the received data is held in the holding means. A process for transmitting the name is performed instead of the data, and when the name to be assigned to the received data is not held by the holding means, the received data is associated with the name. The processing for holding the data in the holding means is performed, and other data held in the holding means is used as reference data, and the received data is compressed by using the name corresponding to the reference data. If it is possible to express the received data, a process for transmitting the compressed data expressed by compressing the received data is performed, and if it is not possible to express the compressed data, the received data is transmitted. It is provided with a processing means for performing the processing for performing the processing and a transmission means for transmitting the name, the compressed data, or the received data to the other data transfer device according to the processing of the processing means. It is a feature.
【0018】
The present invention receives the data transmitted from the first communication device via another data transfer device, transmits the data to the second communication device to which the data is transmitted, and from the second communication device. A data transfer device that receives transmitted data and transmits the data to another data transfer device that communicates with the first communication device that is the destination of the transmitted data, and the data and the data are transmitted from the other data transfer device. Instead of, the name assigned to the data generated based on the content of the data, or other data is used as the reference data instead of the data, and the reference is generated based on the content of the reference data. Based on the receiving means for receiving the compressed data expressed by compressing the data using the name assigned to the data, the data received from the other data transfer device in the past, and the contents of the data. Corresponds to the holding means for associating and holding the name assigned to the data generated in the data, and when the name is received from the other data transfer device, the received name is received from the holding means. When the attached and held data is acquired, processing for transmitting the acquired data is performed, and the data is received from the other data transfer device, the received data and the data are assigned. When the compressed data is received from the other data transfer device by performing the process for holding the data to be associated with the name to be held in the holding means and transmitting the received data. The data held in the holding means was acquired in association with the same name as the name corresponding to the reference data included in the compressed data, and the acquired data was used as the reference data to be the source of the compressed data. A processing means for decompressing data, performing a process for associating the decompressed data with a name to be assigned to the data and holding the decompressed data in the holding means, and performing a process for transmitting the decompressed data. The data is provided with a transmission means for transmitting the acquired data, the received data, or the decompressed data to the second communication device according to the processing of the processing means.
【0019】
Preferably, the name may be a value obtained by compressing the data by a predetermined method. Preferably, the name may be a value obtained by applying a predetermined hash function to the data.
【0020】
Preferably, the compressed data includes the name corresponding to one or more of the reference data, information indicating a portion of each reference data to be used, and information indicating a method of connecting the portion to be used. You may do so. Preferably, the compressed data is fitted with the name corresponding to one of the reference data, information indicating a portion of the reference data that differs from the original data of the compressed data, and the different portion. It may be included with the content to be.
【0021】
Preferably, the data transfer device may be connected to the first communication device via a local area network. Preferably, the data transfer device may be mounted as software on the first communication device. Preferably, the data transfer device may be connected to the second communication device via a local area network. Preferably, the data transfer device may be mounted as software on the second communication device.
【0022】
Further, the present invention receives data transmitted from the first communication device, transmits the data to another data transfer device communicating with the second communication device as the destination, and also transmits the data to the second communication device. A data transfer method in a data transfer device that receives data transmitted from a data transfer device via the other data transfer device and transmits the data to the first communication device that is the destination of the data. The name to be assigned to the data that receives the data transmitted from the device and is generated based on the contents of the received data includes the data transmitted to the other data transfer device in the past and the contents of the data. It is determined whether or not the data is held by the holding means for holding the data generated in association with the name assigned to the data, and if the data is held, the name is replaced with the received data. Is performed, and if it is not held, the received data is associated with the name and held in the holding means, and the data is held in the holding means. If it is possible to compress and express the received data by using other data as reference data and using the name corresponding to the reference data, compression of the received data is compressed and expressed. It is characterized in that a process for transmitting data is performed, and if it is not possible to express by compressing, a process for transmitting the received data is performed.
【0023】
Further, in the present invention, the data transmitted from the first communication device is received via another data transfer device, the data is transmitted to the second communication device as the destination, and the second communication is performed. A data transfer method in a data transfer device that receives data transmitted from the device and transmits the data to another data transfer device that communicates with the first communication device that is the destination, and is a data transfer method from the other data transfer device. , The data, a name generated based on the content of the data instead of the data, or another data instead of the data as reference data, and based on the content of the reference data Receives compressed data generated by compressing the data using the name assigned to the reference data, and based on the contents of the data instead of the data from the other data transfer device. When the generated and assigned name to the data is received, the data generated and assigned to the data based on the data received from the other data transfer device in the past and the contents of the data are used. The data held in association with the received name is acquired from the holding means for associating and holding the data, a process for transmitting the acquired data is performed, and the data is transferred from the other data transfer device. When the data is received, a process for associating the received data with a name to be assigned to the data and holding the data in the holding means is performed, and a process for transmitting the received data is performed. When the compressed data is received from the other data transfer device, the data held in the holding means is acquired in association with the same name as the name corresponding to the reference data included in the compressed data. Then, the acquired data is used as the reference data to decompress the data that is the source of the compressed data, and the decompressed data is associated with the name to be assigned to the data and held in the holding means. It is characterized in that a process is performed and a process for transmitting the decompressed data is performed.
【0024】
The present invention relating to the device is also valid as an invention relating to the method, and the present invention relating to the method is also valid as an invention relating to the device. In addition, the present invention relating to an apparatus or method provides a function for causing a computer to perform a procedure corresponding to the present invention (or for causing the computer to function as a means corresponding to the present invention, or for causing the computer to perform a function corresponding to the present invention. It also holds as a program (for realization), and also as a computer-readable recording medium on which the program is recorded.
【0025】
According to the present invention, the correspondence between the data and the name is maintained between the data transfer devices, and for the data holding this correspondence, the corresponding name is transferred instead of transferring the data. The amount of data transferred between transfer devices can be reduced.
【0026】
For example, even if the reply message of the GET method is private data, it can be compressed by fingerprinting and transferred between data transfer devices. Further, for example, even if the reply message of the GET method is dynamic data, if the contents are the same data, it can be compressed by fingerprinting and transferred between data transfer devices. Further, for example, even if the POST method is used, if the results are the same data, it can be compressed by fingerprinting and transferred between data transfer devices.
【0027】
Further, according to the present invention, even if the corresponding name cannot be transferred instead of transferring the data because the name corresponding to the data is not retained, the retained reference data can be used. By transferring the compressed data expressed by compressing the data using the corresponding name, the amount of data transferred between the data transfer devices can be reduced.
【0028】
For example, if the reply data of the GET method or POST method is partially different from the previously accessed data, the amount of data can be reduced by performing differential transfer. Further, for example, when the request data of the PUT method or the POST method is partially different from the previously sent data, the amount of data can be reduced by performing the differential transfer.
【0029】
BEST MODE FOR CARRYING OUT THE INVENTION
Hereinafter, embodiments of the invention will be described with reference to the drawings.
【0030】
In the following, the case where the WAN is the Internet, the client is connected to the user office LAN, and the HTTP protocol is used will be described as an example. Of course, in the present invention, the WAN is other than the Internet. However, it is applicable even if the client is installed in a home LAN other than the office, or if a protocol other than the HTTP protocol is used.
【0031】
FIG. 38 shows a basic configuration example of a computer network system to which the present invention is applied. In this configuration example, a wide area network (WAN) 214 such as the Internet or a dedicated line is connected between the local area network (LAN) 212 in the ASP server center 202 and the local area network (LAN) 216 in the user office 204. The server 220 in the ASP server center 202 and the client 250 in the user office 204 can communicate with each other via LAN212, WAN214, and LAN216. One or more servers are connected to the ASP server center LAN, and one or more clients are connected to the user office LAN.
【0032】
The WEB-based ASP provides services by various application programs from the server 220 installed in the server center 202 via WAN 214, and the user uses the WEB browser on the client installed in the office 204 to provide services. Access the service.
【0033】
In such a usage pattern, the effective communication capacity (bandwidth) of the network connecting the LAN 216 in the user office and the LAN 212 in the server center, especially the wide area network 214 such as the Internet, is the LAN 212 in the server center or the LAN 216 in the user office. It becomes a bottleneck in performance, causes communication delay, and causes a problem that the response performance of the application deteriorates.
【0034】
Therefore, in the present embodiment, as shown in FIG. 1, two modules, a server-side proxy 230 and a client-side proxy 240, are installed at both ends of the wide area network 214 connecting the LAN 212 in the server center and the LAN 216 in the user office. By reducing the amount of communication data by performing fingerprint compression (FP compression) described later or differential compression described later between them, the bottleneck of the wide area network is eliminated.
【0035】
The server 220, the server-side proxy 230, the client-side proxy 240, and the client 250 of the present embodiment all use software (server program, server-side proxy program, client-side proxy program, client program) on the computer. It can be realized by operating it. In this case, if necessary, software such as OS and driver software, packet communication software, encryption software, etc. that have the desired functions of the computer, or hardware such as communication interface device, external storage device, input / output device, etc. are installed or connected. Will be done. Further, in this case, it is preferable to use a graphical user interface (GUI) for inputting information from a user or an administrator, presenting information to the user, and the like.
【0036】
On the client 250 used by the user to use the service, a program such as a WEB browser runs according to the purpose. The user uses the service, for example, by sending a request message from a WEB browser to a server that provides a desired service such as information transfer or order reception via the Internet, receiving a reply message, or repeating this as appropriate. .. Of course, instead of general-purpose software such as a WEB browser, other software such as dedicated software for using a specific service may be used. Further, the client may be, for example, a mobile phone terminal having an Internet function, or the like, instead of a general-purpose calculator.
【0037】
A predetermined server program runs on the server 220 to provide the user of the client 220 with a service specific to the server site.
【0038】
As shown in FIG. 1, the server-side proxy 230 can be installed and implemented so as to operate as a transparent proxy by connecting to both LAN212 and WAN214 in the server center. It can also be installed and implemented on LAN212 in the server center as shown in Fig. 2. Further, as shown in FIG. 3, the function of the server-side proxy 230 can be implemented so as to be built in the server 220.
【0039】
Similarly, the client-side proxy 240 can be installed and implemented to operate as a transparent proxy by connecting to both LAN216 and WAN214 in the user office as shown in FIG. It can also be installed on LAN216 in the user office as shown in Fig. 2. Further, as shown in FIG. 3, the function of the client-side proxy 240 can be implemented so as to be built into a browser or the like running on the client 250. Alternatively, it can be implemented so that the personal client-side proxy 240 is operated on the operating client 250 such as a browser.
【0040】
The server-side proxy 230 and the client-side proxy 240 may have the same form as shown in FIGS. 1 to 3, or may have different forms.
【0041】
In the following, the fingerprint cache and FP compression using the fingerprint cache will be described, and then differential compression will be described.
【0042】
Both the server-side proxy 230 and the client-side proxy 240 of the present embodiment have a cache mechanism called a fingerprint cache (FP cache). The fingerprint cache records and manages the data exchanged by the HTTP protocol by the name called fingerprint (FP).
【0043】
As illustrated in FIG. 4, the fingerprint is determined by a predetermined calculation method (hash function in the example of FIG. 4) from the contents of the data (content in the example of FIG. 4) exchanged by the HTTP protocol. , A short number. This numerical value may have a variable length, but from the viewpoint of ease of processing, a fixed length numerical value is easier to handle.
【0044】
As a method of calculating the fingerprint, a well-known hash function such as MD-5 or SHA-1 can be used. These hash functions are used for digital signatures on data, etc., and when arbitrary data is given, they are converted to 128-bit numbers for MD-5 and 160-bit numbers for SHA-1. can do. The characteristics of these hash functions are that if two data X1 and X2 are given and data X1 and data X2 are the same, the hash value calculated for data X1 and the hash value calculated for data X2 Are equal, but given two different data A, B, the hash value calculated for data A and the hash value calculated for data B are very likely to be different. (In principle, the hash values calculated for two different data A and B may be the same, but the probability is so small that it can be ignored in practice).
【0045】
As shown in Fig. 5, the fingerprint cache (60 in the figure) of the server-side proxy 230 and the client-side proxy 240 is the data of the data body (61 in the figure) that was exchanged by the HTTP protocol in the past. The fingerprint value (62 in the figure) calculated from is recorded and managed as a name.
【0046】
For example, when transferring data from the server-side proxy 230 to the client-side proxy 240 using the HTTP protocol, the server-side proxy 230 calculates the fingerprint of the data, and the data corresponding to that fingerprint enters the fingerprint cache. If so, the data (data with the same content) has been transferred in the past, so the corresponding fingerprint value is transferred without transferring the data. Upon receiving the fingerprint, the client-side proxy 240 can reproduce the data to be transferred by extracting the data corresponding to the value of the fingerprint from the fingerprint cache. By such a method (that is, data compression data transfer data decompression), if the data is the same as the one sent in the past, it is only necessary to send the fingerprint value, so that the amount of data flowing through the network can be significantly reduced. Can be done. Of course, the same applies when transferring data from the client-side proxy 240 to the server-side proxy 230.
【0047】
For the sake of explanation, when transferring data between the server-side proxy 230 and the client-side proxy 240, it is a finger to use the fingerprint cache to replace the message body data with a fingerprint to compress the amount of transfer information. It shall be called print compression (FP compression).
【0048】
Note that between the server-side proxy 230 and the client-side proxy 240, all messages are subject to FP compression (that is, targets that use the fingerprint cache to perform processing to replace data with fingerprints). However, in order to exclude the application to, for example, those for which the effect of the fingerprint cache cannot be expected, the message satisfying the predetermined condition is excluded from the application of FP compression (always FP compression). You may transfer it without doing it). The predetermined condition in this case is, for example, that predetermined information is described in the message header. Specifically, for example, information indicating the GET method and information indicating the request are described in the message header. Also, another example of a predetermined condition is that the data to be transferred is null or very short in size. Of course, there are many other variations. Further, a plurality of conditions may be used in combination.
【0049】
Next, differential compression will be described.
【0050】
In the above-mentioned FP compression, the identity of the data is determined at high speed by using the fingerprint on the data, and the same data as the data registered in the fingerprint cache is not transferred between the proxies (instead, the data concerned). (By transferring the fingerprint to) to reduce the load on the network.
【0051】
However, FP compression cannot be applied to data that is different from the data registered in the fingerprint cache, even if most of the data is the same. Therefore, in the present embodiment, even when FP compression cannot be performed, one or a plurality of data registered in the fingerprint cache are used as reference data, and the fingerprint of the reference data and the difference information with respect to the reference data are transferred. By expressing the transferred data with the information for restoring the data to be transferred, the transferred data is expressed with a small amount of information, and the amount of transferred data is reduced as much as possible. That is, the basic idea is to use the data in the fingerprint cache as a dictionary and not send the data that can be retrieved from it.
【0052】
For example, in applications such as WEB-based ASPs, data that is mostly the same but only partially different is used. For example, there are many forms of data in which the same information is entered in many fields and only a part of the data is different. Further, for example, some Web pages differ only in date or time, and some Web pages differ only in the counter value of the total number of accesses. In such a case, it is particularly effective.
【0053】
Further, the differential compression using such a fingerprint has an advantage that it is necessary to predetermine the relationship between the data to be transferred and the reference data. In other words, in the case of the conventional difference transfer method, it was necessary for both parties to decide in advance what to base the difference on, so when trying to actually use the difference transfer in the WEB system, the data at this URL will be this. There was a need for a means to register rules such as taking differences based on data on both sides, and it was impossible to make them work effectively for arbitrary data. On the other hand, in this difference compression method, the data in the fingerprint cache is used as reference data to take the difference, so that the effect of data compression due to the difference can be obtained without determining the base of the difference in advance. Obtainable.
【0054】
For the sake of explanation, when transferring data between the server-side proxy 230 and the client-side proxy 240, the fingerprint cache is used to replace the message body data with the fingerprint of the reference data to compress the amount of transfer information. This is called differential compression.
【0055】
Here, a case where all the messages to which the FP compression is applied are to be applied to the differential compression will be described as an example. Of course, as described above, among the messages to which the FP compression is applied, the messages that satisfy the predetermined conditions may be excluded from the application of the differential compression (in this case, the differential compression may be applied. The applicable conditions are the conditions to which FP compression is applied, plus other conditions). For example, make the upper limit U2 of the data size not differentially compressed larger than the upper limit U1 of the data size not FP compressed (the lower limit L2 of the data size to be differentially compressed than the lower limit L1 of the data size to be FP compressed). The method of increasing the size and whether or not FP compression is applied is determined by the data size, but regarding whether or not differential compression is applied, data other than HTML or XML among the FP compression is applied. There are various methods such as external ( differential compression is performed only for HTML and XML data).
【0056】
In the present embodiment, the message to be compressed is, as a result, a message in which the data is FP-compressed, a message in which the data is differentially compressed, or a message in which the data is not compressed, and the server-side proxy 230 and the client. It will be transferred to and from the side proxy 240.
【0057】
Here, the method of differential compression will be described.
【0058】
There are various methods of differential compression using the fingerprint cache, such as those shown below. -Use one of the data registered in the fingerprint cache as reference data. Between the proxies, the fingerprint value corresponding to the reference data and the information indicating the difference between the transfer data and the reference data are transferred. -In the above method, the data registered in the fingerprint cache is used for all or part of the difference from the reference data. Alternatively, all or part of the transferred data is represented by combining (all or part of) the data registered in the fingerprint cache. For example, any number of data registered in the fingerprint cache is used as reference data. Between the proxies, the fingerprint value corresponding to the reference data, the information indicating the part of the reference data used for restoring the transferred data, and the information indicating how to restore the transferred data based on that part are transferred. To do.
【0059】
The following is an example of how to represent the differentially compressed data.
【0060】
Figure 6 shows three types of instructions for expressing the data to be transferred. The differentially compressed data to be transferred instead of the data is composed of a sequence of these instructions.
【0061】
(a) is an instruction to number and define the reference data when referencing the data in the fingerprint cache. The first byte, 8n (n = 0 in the example of FIG. 6), is an indicator identifier. Of this instruction identifier, n indicates that the data specified by the fingerprint is treated as the nth reference data. The 16 bytes starting from the second byte indicate the fingerprint value for the reference data. In this example, 80 to 8F can handle reference data from 0 to 15 at maximum. Of course, the maximum number of reference data that can be handled can be large or small depending on the implementation.
【0062】
(b) represents an instruction to copy partial data from the reference data defined in (a). The first byte, 9n (n = 0 in the example of FIG. 6), is an indicator identifier. Of this instruction identifier, n indicates that the reference data of number n defined in the instruction of (a) is used. The 4 bytes from the 2nd byte indicate the offset position in the nth reference data, and the 4 bytes from the 6th byte indicate the length of the data. Then, they indicate that the data of the specified length from the specified offset position in the reference data of the nth should be copied (as a component of the transfer data) according to the position (order) of the sequence of the instructions.
【0063】
(c) is an instruction for directly specifying the data. A0 in the first byte is an indicator identifier. The 4 bytes from the 2nd byte indicate the length of the data. After the 6th byte, the data of the number of bytes specified by the length continues. Then, it indicates that the data after the 6th byte is copied (as a component of the transfer data) according to the position (order) of the sequence of the instructions.
【0064】
The differential compressed data composed of such a sequence of instructions can be decompressed by simply copying and connecting the data in the order instructed while referring to the fingerprint cache.
【0065】
Next, an example of differential compression according to the above method is shown.
【0066】
Assume that the data shown in Fig. 7 is stored in the fingerprint cache as fingerprints 5E83 ... B6.
【0067】
At this time, if the data shown in FIG. 8 is given, the data shown in FIG. 7 can be used as reference data for differential compression as shown in FIG.
【0068】
That is, when compared with the data in FIG. 7, the data in FIG. 8 is only changed from "TOKYO" in the data in FIG. 7 to "OSAKA". Therefore, as shown in Fig. 9, first, the 0th byte is instructed to define the data of the fingerprint "5E83 ... B6" as the 0th reference data, and the 17th byte is the 0th byte of the 0th reference data. Instructed to copy 60 bytes from, then instructed to copy the 5 characters of "OSAKA" at the 26th byte, and finally copied the 51st byte from the 65th byte of the 0th reference data at the 36th byte. Instructed to do.
【0069】
The data in FIG. 8 can be reproduced by decompressing according to this instruction.
【0070】
In this example, only one reference data is used, but it is possible to use more than one.
【0071】
Next, another example of differential compression according to the above method is shown.
【0072】
Assume that the data shown in FIG. 10 is stored in the fingerprint cache as fingerprint 82F3 ... 38, and the data shown in FIG. 11 is stored in the fingerprint cache as fingerprint A20D ... CB. .. At this time, if the data shown in FIG. 12 is given, the data shown in FIG. 10 and the data shown in FIG. 11 can be used as reference data for differential compression as shown in FIG.
【0073】
In FIG. 13, first, the 0th byte is instructed to define the data of the fingerprint 82F3 ... 38 as the 0th reference data, and the 17th byte is the 0th to 53rd bytes of the 0th reference data. Instructed to copy, instructed to define the data of the fingerprint "A20D ... CB" as the first reference data at the 26th byte, and at the 43rd byte, the 96th to 55th bytes of the first reference data. Is instructed to copy.
【0074】
The data in FIG. 12 can be reproduced by decompressing according to this instruction.
【0075】
In the above method, the part to be used of the reference data is instructed and the data to be used is directly specified (method 1), but instead, the unused part of the reference data (directly) is used. It is also possible to instruct the part to be replaced with the instruction data) and directly specify the data to be fitted in the unused part (method 2).
【0076】
It is also possible to use method 1 and method 2 together.
【0077】
Next, the inter-proxy message format (for the message to which FP compression is applied) when transferring data between the server-side proxy 230 and the client-side proxy 240 will be described with reference to FIGS. 14 to 18. ..
【0078】
When transferring data between the server-side proxy 230 and the client-side proxy 240, the messages to which FP compression is applied include messages in which the data is FP-compressed and replaced with fingerprints (messages during FP compression). A message that is not FP-compressed but contains differentially compressed data (message that is differentially compressed) and a message that is loaded with data that is neither FP-compressed nor differentially compressed (message when uncompressed). There is. In the case of a configuration in which not all messages are applied to FP compression, in addition to these three messages, there are messages not covered by FP compression.
【0079】
Of the two proxies, in the sending proxy, the data is deleted and the fingerprint is added in the message at the time of FP compression, and the data is deleted in the message at the time of differential compression, and the relevant data such as the fingerprint of the reference data is restored. Information is added. Data is not deleted for uncompressed messages and messages that are not subject to compression.
【0080】
Of the two proxies, the receiving proxy needs to be able to identify the above three or four types of messages. When a message is received during FP compression, the fingerprint is returned to the data, and when a message is received during differential compression, the data is restored. In addition, the fingerprint cache is registered when a message is received during differential compression or uncompression.
【0081】
Figure 14 shows an example of the message format. (a) is a message at the time of uncompressed, (b) is a message at the time of differential compression, and (c) is a message at the time of FP compression.
【0082】
In (a), the data is placed in the message body, in (b), the information for restoring the data is placed in the message body instead of the data, and in (c), the finger is placed in the message body instead of the data. A print (FP) is placed.
【0083】
Also, in this example, the message header describes the identification information that makes it possible to identify the type of message (in the proxy on the compression side), and based on this identification information (in the proxy on the decompression side), whether or not FP compression is performed is performed. Identify (for example, 01 for no uncompressed, 10 for differential compression, 11 for FP compression). The identification information may be a special one used between proxies, or may be one that uses or uses a field that originally exists in a normal HTTP message header.
【0084】
In the case of a configuration in which messages not covered by FP compression may exist, the message of the message not covered by FP compression is displayed in the proxy on the compression side (sending side) as shown in Fig. 14 (d). -The above identification information (for example, 00) may be included in the header.
【0085】
In addition, in the case of a configuration in which a message that is not applicable to FP compression may exist, the message is a message that is not applicable to FP compression due to some information contained in the message header in the decompression side (reception side) proxy. When it can be determined that the message is not applicable to FP compression when the message body is empty (null), or when it is determined that the message is not applicable to FP compression, it is not applicable to FP compression. It is also possible not to include the identification information in the message header of the message.
【0086】
Here, FIG. 39 shows a specific example of a message in the format of FIG. 14 (a), FIG. 40 shows a specific example of a message in the format of FIG. 14 (b), and FIG. 41 shows a specific example of the message in the format of FIG. 14 (c). A specific example of the message is shown, and FIG. 42 shows a specific example of the message in the format shown in FIG. 14 (d). Fingerprint-Mode: ... in the header of each figure corresponds to the identification information, and 6E39 ... 0128 in the body of FIG. 41 corresponds to the fingerprint.
【0087】
In the example of FIGS. 14 (a) and 14 (b), the message did not include the fingerprint for the data at the time of uncompression or differential compression, but the message header may include the fingerprint. You may (or you may want the message body to include a header for that data). FIGS. 15 (a) to 15 (c) show an example in which a fingerprint is included in the message header during uncompressed or differential compression, and a fingerprint is included in the message body during FP compression. By doing so, when registering the fingerprint cache for the data on the decompression side, by using the fingerprint, it is possible to save the trouble of obtaining the fingerprint from the data again.
【0088】
FIG. 43 shows a specific example of the message in the format of FIG. 15 (a), and FIG. 44 shows a specific example of the message in the format of FIG. 15 (b). A specific example of the message in the format of FIG. 15 (c) is the same as that of FIG. 41. Fingerprint: ... in the headers of FIGS. 43 and 44 corresponds to the fingerprint.
【0089】
In any of the above cases, as shown in FIG. 16, in the message at the time of FP compression, the fingerprint (FP) may be included in the message header and the message body may be empty (null).
【0090】
FIG. 45 shows a specific example of the message in the format of FIG.
【0091】
In addition to the above, various message formats are possible.
【0092】
For example, in FIG. 17, the uncompressed flag is described in the header of the uncompressed message in (a) and the fingerprint is not described, and the differential compression flag is described in the header of the message during differential compression in (b). Moreover, the fingerprint is not described, the fingerprint is described in the header of the message at the time of FP compression in (c), and the body is empty (null).
【0093】
In this case, it is possible to identify that the message is a FP compressed message by detecting that the message body is null or that the header of the message contains a fingerprint. it can. Further, the uncompressed message and the differential compressed message can be identified by detecting that the uncompressed flag or the differential compressed flag is described in the header.
【0094】
FIG. 46 shows a specific example of a message in the format of FIG. 17 (a), FIG. 47 shows a specific example of a message in the format of FIG. 17 (b), and FIG. 48 shows a specific example of the message in the format of FIG. 17 (c). A specific example is shown. Non-Compression: ... in the header of FIG. 46 corresponds to the uncompressed flag, and Differencial-Compression: ... in the header of FIG. 47 corresponds to the differential compression flag.
【0095】
In the case of a configuration in which messages not covered by FP compression may exist, in the proxy on the compression side (sending side), as shown in (a) and (b) of FIG. 18, ((a) is data. If is not empty (null), (b) is if the data is empty)), the non-target flag may be included in the message header of the message that is not applicable to FP compression.
【0096】
In addition, in the case of a configuration in which a message that is not applicable to FP compression may exist, the message is a message that is not applicable to FP compression due to some information contained in the message header in the decompression side (reception side) proxy. When it can be determined that, as shown in (c) and (d) of Fig. 18, ((c) is when the data is not empty (null), and (d) is when the data is empty (null). It is also possible not to include the non-target flag in the message header of messages that are not covered by FP compression.
【0097】
FIG. 49 shows a specific example of a message in the format of FIG. 18 (a), FIG. 50 shows a specific example of a message in the format of FIG. 18 (b), and FIG. 51 shows a specific example of a message in the format of FIG. 18 (c). An example is shown, and FIG. 52 shows a specific example of a message in the format shown in FIG. 18 (d). No-FP-Compression: ... in the headers of FIGS. 49 and 50 corresponds to the non-target flag.
【0098】
Hereinafter, the present embodiment will be described in detail, focusing on the case where the reply data is FP-compressed / decompressed when the reply message is transferred from the server-side proxy 230 to the client-side proxy 240.
【0099】
FIG. 19 shows a configuration example of the server-side proxy 230 of the present embodiment, and FIG. 20 shows a configuration example of the client-side proxy 240 of the present embodiment. Note that FIGS. 19 and 20 mainly show the configuration when data is transferred from the server-side proxy 230 to the client-side proxy 240.
【0100】
As shown in FIG. 19, the server-side proxy 230 performs processing for receiving a forwarded message from the LAN 212 in the server center or the wide area network 214, and FP compression is performed on the data contained in the forwarded message. Processing unit 232 for performing differential compression, transmitting unit 233 for processing to send a transfer message to LAN 212 in the server center or wide area network 214, and the fingerprint and the underlying data are stored in association with each other. It has a fingerprint cache (FP cache) 234 for. Further, the processing unit 232 searches and registers the fingerprint (FP) compression determination unit 2321 for determining whether or not the data included in the transfer message should be compressed, and the fingerprint cache 234. Fingerprint cache (FP cache) management unit 2322, fingerprint (FP) compression processing unit 2323 for performing processing such as replacing the data contained in the transferred message with the corresponding fingerprint, difference the data contained in the transferred message. Includes a differential compression processing unit 2324 for performing processing such as replacing with compressed data.
【0101】
As shown in FIG. 20, the client-side proxy 240 performs a process for receiving a forwarded message from the LAN 216 in the user office or the wide area network 214, and decompresses the FP for the data contained in the forwarded message. Processing unit 242 for performing processing, transmitting unit 243 for performing processing for transmitting a transfer message to LAN 216 in the user office or wide area network 214, and a finger for storing the fingerprint and the underlying data in association with each other. It has a print cache (FP cache) 244. Further, the processing unit 242 includes a fingerprint (FP) compression determination unit 2421 for determining whether or not the data included in the transfer message should be compressed and whether or not FP compression and differential compression are performed on the transfer message. Fingerprint cache (FP cache) management unit 2422 for searching and registering cache 234, fingerprint for performing processing such as decompressing the original data from the fingerprint included in the FP compressed transfer message. (FP) Decompression processing unit 2423, and differential decompression processing unit 2424 for performing processing such as decompressing the original data from the differential compression data included in the differentially compressed transfer message.
【0102】
The FP compression determination unit 2321 on the compression side and the FP compression determination unit 2421 on the decompression side examine the data contained in the message by checking whether or not the message satisfies a predetermined condition as described above. Judge whether to apply compression (when all messages are to be applied to FP compression, the FP compression judgment unit 2321 on the compression side and the relevant part of the procedure example shown later are unnecessary and decompressed. The corresponding judgment part of the FP compression judgment unit 2421 on the side and the corresponding part of the procedure example shown later are unnecessary). Further, the FP compression determination unit 2421 on the decompression side determines whether or not the data of the message to which the FP compression is applied is FP-compressed. The following describes mainly the case of transferring a message to which FP compression is applied (when it is determined that the message is to be applied to FP compression, or when all messages are to be applied to FP compression).
【0103】
21 and 22 show an example of the processing procedure of the server-side proxy 230 when transferring a reply message from the server-side proxy 30 to the client-side proxy 240. Note that FIGS. 21 and 22 describe the processing when one reply message is received, but in reality, the processing illustrated in FIGS. 21 and 22 is performed for all the reply messages received by the server-side proxy 230. I do.
【0104】
The server-side proxy 230 receives the reply message from the server 220 by the receiving unit 231 (step S201).
【0105】
The FP compression determination unit 2321 examines and determines whether or not the reply data of the reply message is the target of FP compression (step S202). If it is determined that the reply data is not subject to FP compression (step S202), the received reply message is transferred from the transmitter 33 to the client-side proxy 240 (step S212).
【0106】
If it is determined in step S202 that the reply data of the reply message is the one to be compressed by the FP, the FP cache management unit 322 calculates the value of the fingerprint of the reply data (step S203). The fingerprint cache 234 is searched using the fingerprint value as a key (step S204).
【0107】
Then, if a set of the fingerprint value and the corresponding data is registered in the fingerprint cache 234 (step S205), the FP compression processing unit 2323 sends the received reply message to the finger. The print value is used to format the FP compression (for example, FIG. 16), and the transmission unit 233 transmits the data to the client-side proxy 240 (step S206).
【0108】
On the other hand, as a result of the search in step S204, if the set of the fingerprint value and the corresponding data is not registered in the fingerprint cache 234 (step S205), the differential compression processing unit 2324 determines. Differential compression is performed (step S207), and it is determined whether or not the differential compression is successful (step S208).
【0109】
Whether or not the differential compression is successful is determined, for example, by comparing the data amount r0 of the original data targeted for the differential compression with the data amount r1 of the differential compression data and satisfying r0-r1> d. Judge that it was done. Here, the constant d is a predetermined integer of 0 or more.
【0110】
If it is determined in step S208 that the differential compression is successful, the following two operations are performed. (1-1) The differential compression processing unit 2324 converts the received reply message into a format for differential compression (using the value of the fingerprint as necessary) (for example, FIG. 15 (b)). Transmission from the transmitter 233 to the client-side proxy 240 (step S209). (1-2) The FP cache management unit 2322 associates the fingerprint value with the reply message (using the fingerprint value as a key) and registers it in the fingerprint cache 234 (step S211). ).
【0111】
In addition, either of the above (1-1) and (1-2) may be performed first, or may be performed in parallel.
【0112】
On the other hand, if it is determined in step S208 that the differential compression has failed, the following two operations are performed. (2-1) The difference compression processing unit 2324 converts the received reply message into the uncompressed format (for example, FIG. 15A), and transmits it from the transmission unit 233 to the client-side proxy 240 (step). S210). (2-2) The FP cache management unit 2322 associates the fingerprint value with the reply message (using the fingerprint value as a key) and registers it in the fingerprint cache 234 (step S211). ).
【0113】
In (2-1) above, the received reply message may be formatted in the uncompressed state by the FP compression processing unit 2323 instead of the differential compression processing unit 2324.
【0114】
In addition, either of the above (2-1) and (2-2) may be performed first, or may be performed in parallel.
【0115】
Next, FIGS. 23 and 24 show an example of the processing procedure of the client-side proxy 240 when the reply message is transferred from the server-side proxy 230 to the client-side proxy 240. Note that FIGS. 23 and 24 describe the processing when one request message is received, but in reality, the processing illustrated in FIGS. 23 and 24 is performed for all the request messages received by the client-side proxy 240. I do.
【0116】
The client-side proxy 240 receives a reply message from the server-side proxy 230 by the receiving unit 241 (step S211).
【0117】
The FP compression determination unit 2421 examines and determines whether or not the reply data of the reply message is the target of FP compression (step S212). If it is determined that the reply data is not subject to FP compression (step S212), the received reply message is transferred from the transmitter 43 to the client 250 (step S224).
【0118】
If it is determined in step S212 that the reply data of the reply message is to be FP-compressed, the FP compression determination unit 2421 further examines and determines whether the reply data is FP-compressed (step). S213).
【0119】
If it is determined in step S213 that the reply data of the reply message is FP-compressed (for example, in the case of FIG. 16 etc.), the FP cache management unit 2422 obtains the fingerprint value of the reply data. (Step S214), the fingerprint cache 244 is searched using the fingerprint value as a key (step S215).
【0120】
Then, when the FP decompression processing unit 2423 adds the data corresponding to the value of the fingerprint searched from the fingerprint cache 234 to the received reply message and uses special information between the proxies. After deleting the information, transmits the information from the transmission unit 243 to the client 250 (step S216).
【0121】
On the other hand, if it is determined in step S213 that the reply data of the reply message is not FP-compressed (for example, in the case of FIGS. 15A and 15B), the FP compression determination unit 2421 further adds It is determined whether or not the reply data is differentially compressed (step S217).
【0122】
If it is determined in step S217 that differential compression is performed (for example, in the case of FIG. 15B), the following two operations are performed. (1-1) The differential decompression processing unit 2424 decompresses the differential compressed data (after searching / acquiring the reference data by the FP cache management unit 2422) and restores the original reply data (step S218). The restored reply data is added to the reply message, and when special information is used between proxies, the information is deleted from the received reply message, and the reply message is transmitted from the transmitter 243 to the client 250 (step S219). ). (1-2) The FP cache management unit 2422 obtains the fingerprint value of the reply data (step S220), associates the fingerprint value with the reply message (keys the fingerprint value). And register it in the fingerprint cache 234 (step S223).
【0123】
On the other hand, if it is determined in step S217 that the differential compression is not performed (for example, in the case of FIG. 15A), the following two operations are performed. (2-1) When the differential decompression processing unit 2424 uses special information between proxies, after deleting the information from the received reply message, the transmission unit 243 transmits this to the client 250 (step S222). ). (2-2) The FP cache management unit 2422 obtains the fingerprint value of the reply data (step S221), associates the fingerprint value with the reply message (keys the fingerprint value). And register it in the fingerprint cache 234 (step S223).
【0124】
In (2-1) above, the FP decompression processing unit 2423 may be used instead of the difference decompression processing unit 2424.
【0125】
Further, either of the above (1-1) and (1-2) may be performed first, or may be performed in parallel. The same applies to (2-1) and (2-2) above.
【0126】
By the way, in step S214 / step S220 / step S221, when the fingerprint is described in the message, the method of obtaining the fingerprint from the message and the reply data when the fingerprint is not described in the message are also provided. There is also a method of calculating the fingerprint value by a hash function or the like. Even if the fingerprint is described in the message, it is possible to calculate the fingerprint value based on the reply data. Further, step S214 / step S220 / step S221 may be performed at any timing before the fingerprint is used. However, in the latter method, the calculation in step S220 must be performed after step S218.
【0127】
Further, the determinations of steps S212, S213, and S217 may be performed at the same time.
【0128】
Next, the procedure for performing differential compression will be described.
【0129】
FIG. 25 shows an example of the differential compression procedure. This is an example of the procedure when the three types of specifications described above are used.
【0130】
Here, in order to perform differential compression, it is assumed that a history table in which recently accessed data among the data stored in the fingerprint cache are arranged in order is used. This history table does not necessarily have to record the fingerprints of all the data in the fingerprint cache. For example, a predetermined number may be recorded (in this case, the number is determined in advance assuming a number effective for use as reference data for differential compression, for example). Of course, one or more criteria other than the order of recent access may be used as the criteria for recording in the history table, and one or more criteria may be used in combination with the criteria in the order of recent access. You may.
【0131】
There is also a method in which the history table is integrated with the fingerprint cache.
【0132】
(Step S231) First, empty the working copy buffer and instruction buffer.
【0133】
Based on the contents copied to this copy buffer, the instructions shown in FIGS. 6 (a) to 6 (c) are created and written to the instruction buffer. Finally, the sequence of instructions written in the instruction buffer becomes the differential compressed data.
【0134】
(Step S232) Treat the data to be differentially compressed as a character string, and prepare a pointer that points to the character string. First, the pointer is set to point to the first character in the character string.
【0135】
In the following, the loop process will be executed until it is determined in step S241 that the pointer has reached the last character in the character string.
【0136】
(Step S233) The data corresponding to the fingerprint recorded in the history table is taken out in order from the newest one, and the data corresponding to the fingerprint is matched in the data with a predetermined length or more from the position pointed by the pointer in the data to be differentially compressed. Extract the data as reference data.
【0137】
There are various methods as the reference data and the determination method. For example, a method of examining the data corresponding to the fingerprint recorded in the history table in the latest order, and first extracting the data matching by a predetermined length or more as reference data, the fingerprint recorded in the history table. There is a method of examining all the data corresponding to the above and extracting the data having the longest matching length (provided that the matching length is longer than a predetermined length) as reference data.
【0138】
(Step S234) If the reference data is found, the process proceeds to step S237. If the reference data is not found, the process proceeds to step S235.
【0139】
(Step S237) When the reference data is found in step S234, if the copy buffer is not empty, a copy instruction by direct specification in (c) of FIG. 6 corresponding to the character string in the copy buffer is created. , Write this to the instruction buffer. Empty the copy buffer. If the copy buffer is empty, nothing is done.
【0140】
(Step S238) If the reference data definition of (a) in FIG. 6 corresponding to the reference data found in step S233 has not yet been written to the instruction buffer, the instruction of the reference data definition is written to the instruction buffer.
【0141】
(Step S239) The copy instruction of the character string matched from the reference data is written to the instruction buffer as the copy instruction of (b) of FIG.
【0142】
(Step S240) Advance the pointer by the length of the character string that matches the reference data.
【0143】
(Step S235) On the other hand, when the reference data is found in step S234, the character pointed to by the pointer is put in the copy buffer.
【0144】
(Step S236) Advance the pointer by one character.
【0145】
(Step S241) If the pointer does not reach the end of the data to be differentially compressed (if the unprocessed data part remains), the process returns to step S233. When the pointer reaches the end of the data to be differentially compressed (if there is no unprocessed data part remaining), the process loop is exited and the process proceeds to step S242.
【0146】
(Step S242) If the copy buffer is not empty, a copy instruction by direct specification in (c) of FIG. 6 corresponding to the character string in the copy buffer is created, and this is written to the instruction buffer. Empty the copy buffer. If the copy buffer is empty, nothing is done.
【0147】
The content of the instruction buffer at this time is the differential compressed data.
【0148】
As described above, in reality, after the differential compression is performed in this way, the data size as a result of the differential compression is smaller than the data size before the differential compression (or a certain standard (constant). Make sure that it is smaller than the amount of compression). If the data size does not decrease due to differential compression (or does not decrease beyond a certain standard (a certain amount of compression)), it is better not to perform differential compression, so the data is transferred as it is.
【0149】
By the way, in the above-mentioned differential compression process, the process of selecting the latest data having a character string that matches the predetermined length or more in step S233 is considered to be the process that takes the longest time. A hash table can be used to speed up this process. From the data to be entered in the history table, all the character strings of the predetermined length are extracted, the hash value (for example, the sum of the codes of all the characters) is calculated, and registered in the hash table. Keep it. This hash table should be overwritten with the latest data if there is data with the same hash value. Using this hash table, the hash value of a character string of a predetermined length is obtained from the current pointer position of the data to be differentially compressed, and the data obtained by subtracting the hash table using that hash value is the step. It becomes the first candidate for the data to be selected in S233. Here, the same hash value may be generated even with different character strings, so check by actually comparing the character strings to see if they are really the same, and if they are not the same, look at the data in the history table in order, etc. Search for candidates.
【0150】
Another method for speeding up the processing in step S233 is to perform comparison processing in units of rows. In the procedure of FIG. 25, the comparison process was performed in units of characters, but for all the data in the history table, the hash value column of each row in the data is calculated. First, the hash value column of each row is calculated from the data to be differentially compressed. After that, the procedure is the same as in FIG. 25, but the comparison is performed not in character units but in line hash values. Since this method uses a line as a unit, the number of comparisons can be reduced as compared with a character unit. However, in order to compare by hash value, different rows may have the same hash value, so after finally judging that the hash values are the same, actually compare the inside of the row and see if they are really the same. It is desirable to judge. Of course, the above hashing technique can be combined with the structure for comparing rows as a unit in this way. In this case, a plurality of consecutive rows may be combined and registered in the hash table in units of the minimum number of rows that are the same as or longer than the predetermined length.
【0151】
Next, FIG. 26 shows another example of the differential compression procedure. This uses one of the data registered in the fingerprint cache as reference data, and between the proxy, the fingerprint value corresponding to the reference data and the information indicating the difference between the transfer data and the reference data. This is an example of the procedure for transferring data.
【0152】
Here, too, the history table as described above is used.
【0153】
First, among the data corresponding to the fingerprints recorded in the history table, one that meets a predetermined criterion is selected as reference data (step S245).
【0154】
The predetermined standard is, for example, that the amount of data of the portion of the data to be differentially compressed that does not match the data to be referred to is less than or equal to the predetermined amount of data and is referred to. When the number of divided lumps when the data is divided into a plurality of lumps by the unmatched portion is less than or equal to a predetermined number, this can be selected as reference data.
【0155】
Then, as a method of determining as reference data, as described above, for example, the data corresponding to the fingerprint recorded in the history table is examined in the latest order, and the data that matches at least the predetermined length at the beginning is examined. As reference data, how to check all the data corresponding to the fingerprint recorded in the history table, and how to retrieve the data with the smallest amount of unmatched data and the least number of divisions as reference data, etc. There are various methods.
【0156】
If the reference data is found (step S246), the reference data definition instructions (eg, (a) in FIG. 6) are written to the instruction buffer (step S247).
【0157】
An instruction indicating the part of the reference data that did not match (the part to be directly replaced with the specified data) (for example, the instruction in the same format as (b) in FIG. 6 but the instruction identifier of the first byte is changed) is instructed. Write to buffer (step S248).
【0158】
A direct specification instruction (for example, (c) in FIG. 6) indicating the data to be fitted in the unmatched part of the reference data is written to the instruction buffer (step S249).
【0159】
If there are a plurality of replacement portions, step S248 and step S249 are executed accordingly.
【0160】
The content of the instruction buffer at this time is the differential compressed data.
【0161】
On the other hand, if the reference data is found (step S246), differential compression will not be performed.
【0162】
In the above description of FIGS. 25 and 26, the history table is provided separately from the fingerprint cache, but there is also a method in which the history table is integrated with the fingerprint cache.
【0163】
Further, in the above description, the history table is used, but there is also a method in which the history table is not used. For example, a method of examining the fingerprint cache in a predetermined order (for example, in the order of entries or randomly) up to a predetermined number, and using the best of them, or a fingerprint cache. There are various methods such as a method of checking in a predetermined order (for example, in the order of entry or randomly) and determining the reference data when the reference data satisfying a predetermined condition is obtained for the first time.
【0164】
Also, in the history table or fingerprint cache, in addition to the fingerprint, the URL for the reply message that included the reply data that was the source when the fingerprint was registered is also stored, and the reference data is stored. When searching, first check whether the data with the same URL as the URL for the reply message containing the reply data to be differentially compressed is not registered in the history table or fingerprint cache, and if so, the relevant data. Data with the same URL as the URL may be prioritized over others to see if it can be used as reference data.
【0165】
Of course, in addition to FIGS. 25 and 26, various differential compression procedures are possible.
【0166】
If the fingerprint cache is not used when transferring the request message from the client-side proxy 240 to the server-side proxy 230, the server-side proxy 230 uses the client-side proxy 230 as illustrated in FIG. 27. The procedure may be that the request message is received from the proxy 240 (step S225) and sent to the server 220 (step S226). Similarly, the client-side proxy 240 may receive a request message from the client 250 (step S227) and send it to the server-side proxy 230 (step S228), as illustrated in FIG.
【0167】
In the following, with reference to Fig. 29 (when registered or uncompressed), Fig. 30 (when FP compressed) and Fig. 31 (when registered or differentially compressed), data transfer using the fingerprint cache is more specific. Explain to.
【0168】
First, referring to FIG. 29, data that is not registered in the fingerprint cache and that has not been successfully differentially compressed is transferred from the server-side proxy 230 to the client-side proxy 240, and the data is fingered. The operation when registering the print cache will be described.
【0169】
(1) It is assumed that the browser or the like on the client 250 issues a POST method request message to the server 220 with the URL "/A.cgi", for example. First, the browser and the like are set so that the request message to the server 220 is sent to the client-side proxy 240.
【0170】
(2) The client-side proxy 240 that receives the request message from the client 250 forwards the request message to the server-side proxy 230.
【0171】
(3) The server-side proxy 230 that receives the request message forwards the request message to the server 250.
【0172】
(4) After processing the request message, the server 220 sends the reply message back to the server-side proxy 230.
【0173】
(5) The server-side proxy 230 that received the reply message first calculates the fingerprint of the reply data of the received reply message, and determines whether the data with the fingerprint name is stored in the fingerprint cache 234. Find out. Here, the data is not included and is deleted or invalidated for the first time (in the case of a configuration in which the data once registered in the fingerprint cache may be deleted or invalidated after that, the data was once registered in the fingerprint cache Since it is (including the case where it is the first time after that), the data is put (registered) in the fingerprint cache 234 with the fingerprint as the name.
【0174】
If the data to be compressed cannot be FP-compressed, differential compression processing is performed, and if the reply data can be differentially compressed to reduce the amount of data, differential compression is performed. It is assumed that the amount of data could not be reduced by differential compression.
【0175】
(6) The server-side proxy 230 forwards the reply message containing the data to the client-side proxy 240. As described above, if the fingerprint value calculated from the reply data is put in the reply header or the like and sent, the trouble of calculating the fingerprint again by the client-side proxy 240 can be saved.
【0176】
(7) Since the client-side proxy 240 that received the reply message is the first data, the reply data is registered in the fingerprint cache 244. As described above, the fingerprint is calculated from the reply data, or the server-side proxy takes out the fingerprint put in the reply header or the like and puts it as a name.
【0177】
(8) The client-side proxy 240 deletes (if the reply header etc. contains information used only between the server-side proxy 230 and the client-side proxy 240 such as the fingerprint value, it is deleted. After that, send the reply message back to the client 250 (such as the browser running on it).
【0178】
In the server-side proxy 230, the fingerprint cache registration in (5) above may be performed after the operation in (6). Further, in the client-side proxy 240, the fingerprint cache registration of (7) may be performed after the operation of (8).
【0179】
Next, with reference to FIG. 30, the operation when the operation of FIG. 29 is performed and the cache-registered data is transferred from the server-side proxy 230 to the client-side proxy 240 will be described.
【0180】
(1) to (4) are the same as (1) to (4) in the operation described with reference to FIG. 29.
【0181】
(5) The server-side proxy 240 that received the reply message from the server 250 first calculates the fingerprint of the reply data of the received reply message, and the data having the fingerprint name is entered in the fingerprint cache 234. Find out if there is. Since the fingerprint cache is registered here, the data of the reply body is replaced with the fingerprint (for example, by putting the fingerprint value in the reply header or the like and emptying the reply body as described above).
【0182】
(6) The server-side proxy 230 forwards the reply message in which the reply body is replaced with a fingerprint to the client-side proxy 240.
【0183】
(7) Upon receiving the reply message, the client-side proxy 240 detects that the reply data has been replaced with a fingerprint, and uses the specified fingerprint (for example, in the reply header as described above) to finger. Extract the corresponding data from the print cache 244 and put it in the reply body. If the reply header or the like contains information such as a fingerprint value that is used only between the server-side proxy 230 and the client-side proxy 240, it is deleted.
【0184】
(8) Then, the client-side proxy 230 sends the reply message back to the client (browser running on it, etc.).
【0185】
By the way, since the fingerprint cache of the server-side proxy 230 and the client-side proxy 240 has an upper limit, garbage collection is performed according to a predetermined algorithm to erase old data or data that is unlikely to be used. Is preferable.
【0186】
However, in this way, data that has already been erased in the fingerprint cache 244 of the client-side proxy 240 even if it has the fingerprint cache 234 of the server-side proxy 230 can occur. In (7) above, the client-side proxy 240 tried to retrieve the data to be replaced from the reply data from the fingerprint cache 244 based on the fingerprint, but the fingerprint and data corresponding to the fingerprint cache 244. Pairs may not exist. In such a case, for example, the client-side proxy 240 requests the server-side proxy 230 to send the data of the specified fingerprint, and the requested server-side proxy 230 asks the server-side proxy 230 to send the specified fingerprint. A mechanism may be provided to retrieve the data from the fingerprint cache 234 and send it back.
【0187】
On the contrary, if the fingerprint cache 234 of the server-side proxy 230 has already deleted the data, but the fingerprint cache 244 of the client-side proxy 240 still has the data, see FIG. 29. In (7) in the operation described with reference to, when registering the fingerprint / reply data in the fingerprint cache 244 in the client-side proxy 240, the fingerprint / reply data registered at that time is It may be overwritten.
【0188】
In (5) in the operation described with reference to FIG. 30, the server-side proxy 230 requests the fingerprint of the reply data, and if the fingerprint is in the fingerprint cache 234, the same data as the ply data. Is treated as being in the fingerprint cache 234 in combination with the fingerprint. Practically, this method is sufficient, assuming that different data do not generate the same fingerprint, but with a very small probability an error will occur if the fingerprints of different data happen to have the same value. There is also a way to get rid of. In this case, when the fingerprint obtained from the reply data is stored in the fingerprint cache 234, the data stored in the fingerprint cache 234 in combination with the fingerprint and the ply data are combined. It suffices to compare and judge whether they are the same or not. At this time, if it is determined that data having the same fingerprint but different contents is registered, a method as illustrated below can be considered. -The fingerprint shall not be used anymore (the data giving that fingerprint will no longer be cached). -Prioritize the fingerprint / data registered earlier (other data that gives a fingerprint with the same value as the fingerprint being registered will not be cached during the registration). -Prioritize the fingerprint / data that is currently being registered (the fingerprint / data that is being registered will be updated one after another by other data that gives the fingerprint of the same value).
【0189】
The operation of the present embodiment in which the difference transfer is performed will be described with reference to FIG. 31.
【0190】
(1) to (4) are the same as (1) to (4) in the operation described with reference to FIG. 29.
【0191】
(5) The server-side proxy 230 that received the reply message first calculates the fingerprint of the reply data of the received reply message, and determines whether the data with the fingerprint name is stored in the fingerprint cache 234. Find out. Here, it is not included and it is the first data, so put (register) that data in the fingerprint cache 234 with the fingerprint as the name.
【0192】
(6) If the data to be compressed cannot be FP-compressed, perform differential compression processing, and if the reply data can be differentially compressed to reduce the amount of data, differential compression is performed. Here, it is assumed that the reply data can be differentially compressed to reduce the amount of data when the data whose fingerprint is 71F0 ... 73E6 is used as the reference data. Replace the reply data with the differentially compressed data, and put the information indicating that the reply header or the like is differentially compressed.
【0193】
(7) The server-side proxy 230 forwards the reply message to the client-side proxy.
【0194】
(8) The client-side proxy 240 sees the reply header and the like, knows that the reply data is differentially compressed, and decompresses the compression. At this time, first, the fingerprint "71F0 ... 73E6" of the reference data specified in the compressed data is fetched, and then the data corresponding to the fingerprint is fetched from the fingerprint cache and used. .. Put the decompressed data in the reply data and rewrite the necessary header such as the content size of the reply header.
【0195】
(9) Since the client-side proxy 240 that received the reply message is the first data, the decompressed reply data is registered in the fingerprint cache 244. If the reply header or the like contains information such as a fingerprint value that is used only between the server-side proxy 230 and the client-side proxy 240, it is deleted. As described above, the fingerprint is calculated from the reply data, or the server-side proxy takes out the fingerprint put in the reply header or the like and puts it as a name.
【0196】
(10) The client-side proxy 240 sends a reply message back to the client 250 (such as a browser running on it).
【0197】
In (5) above, all unregistered data to be compressed shall be registered in the fingerprint cache, and all the data used as reference data in (6) above shall be registered in the fingerprint cache. However, when the only data is used for the reference data, the data that is the target of differential compression and the reference data used for the differential compression have almost the same contents ( For example, if the amount of data that does not match between the two is less than the standard), (i) the unregistered data to be compressed is not registered in the fingerprint cache, and the reference data is kept registered in the fingerprint cache. Alternatively, (ii) the unregistered data to be compressed is registered in the fingerprint cache, and the reference data is deleted from the fingerprint cache. In addition, when only one data is used for the reference data, the data targeted for differential compression and the reference data used for the differential compression have almost the same contents and the same URL. In the case of, it is also possible to register the unregistered data to be compressed in the fingerprint cache as if the data has been updated, and delete the reference data from the fingerprint cache. There are many other variations.
【0198】
By the way, in the examples described so far, the fingerprint cache is used when transferring the reply data from the server-side proxy 230 to the client-side proxy 240, and a set of a certain data and a fingerprint for the data is fingerprinted. The timing of registration in the cache is when the data is transferred from the server-side proxy 230 to the client-side proxy 240 for the first time. However, in a usage such as WEB-based ASP, data is first created in a user office or the like, registered in a server, and then accessed from a browser or the like. If the data is registered in the fingerprint cache of the client-side proxy and the server-side proxy at the time of registering the data in the server, the subsequent access can be speeded up. Therefore, if the reply data transmitted by the server is originally the data transferred from the client to the server (however, the request data at the time of this transfer), the registration timing is set to the original request data that becomes the reply data. May be the first time that is transferred from the client-side proxy 140 to the server-side proxy 130 (in this case, when the data is transferred from the server-side proxy 130 to the client-side proxy 140 for the first time as reply data). Since the registration to the fingerprint cache has already been completed, it is possible to reduce the amount of transferred data by using the fingerprint cache even if it is the first transfer of reply data. it can).
【0199】
Now, in the example described so far, when the reply data is transferred from the server-side proxy 230 to the client-side proxy 240, if the reply data is the same as the data registered in the fingerprint cache, The network traffic is reduced by transferring the corresponding fingerprint or the differential compressed data instead of the reply data, but the present invention makes a request from the client-side proxy 240 to the server-side proxy 230. It can be further applied to the case of transferring data.
【0200】
When applying FP compression to both, it is also possible to apply differential compression to only one of them.
【0201】
It is also possible to apply FP compression and differential compression only when transferring request data from the client-side proxy 240 to the server-side proxy 230.
【0202】
When applying FP compression and differential compression to the request data transfer from the client-side proxy 240 to the server-side proxy 230, the roles of the server-side proxy 230 and the client-side proxy 240 for the reply data described above can be reversed. When applying FP compression and differential compression to both data transfers, the server-side proxy 230 is provided with a fingerprint decompression processing unit and a differential decompression processing unit in the processing unit 232 in addition to the configuration shown in FIG. In addition to the configuration shown in FIG. 20, the proxy 240 may further include a fingerprint compression processing unit and a differential compression processing unit in the processing unit 242.
【0203】
In any proxy, the fingerprint compression processing unit and the fingerprint decompression processing unit may be combined to form a fingerprint (FP) compression / decompression processing unit. Similarly, the differential compression processing unit and the differential decompression processing unit may be combined to form the differential compression / decompression processing unit.
【0204】
Further, the server-side proxy 230 and the client-side proxy 240 may provide a fingerprint cache for request data transfer independently of the fingerprint cache for reply data transfer, but the same applies to reply data transfer and quest data transfer. The fingerprint cache may be shared. In the case of a configuration in which the history table described above is used for differential compression, the history table may be provided independently or shared in the same manner.
【0205】
Figure 32 shows a configuration example of the proxy (server-side proxy, client-side proxy) in this case.
【0206】
Further, FIGS. 33 and 34 show an example of the processing procedure of the client-side proxy 240 when transferring a request message from the client-side proxy 240 to the server-side proxy 230. In FIGS. 33 and 34, in FIGS. 21 and 22, the message to be transferred changes from the reply message to the request message, the message source changes from the server to the client, the message destination changes from the client to the server, and the server-side proxy 40. It corresponds to the operation of the client side proxy 40 interchanged with the operation of.
【0207】
Further, FIGS. 35 and 36 show an example of the processing procedure of the server-side proxy 230 when transferring a request message from the client-side proxy 240 to the server-side proxy 230.
【0208】
In FIGS. 35 and 36, in FIGS. 23 and 24, the message to be transferred changes from the reply message to the request message, the message source changes from the server to the client, the message destination changes from the client to the server, and the server-side proxy 40. It corresponds to the operation of the client side proxy 40 interchanged with the operation of.
【0209】
If the request data is also replaced with the fingerprint or the differential compressed data in this way, for example, when uploading the same file to the server many times, it is only necessary to send the fingerprint from the second time onward. It can reduce network traffic.
【0210】
In the present embodiment, the case where the request message transferred from the client-side process to the server-side proxy and the reply message transferred from the server-side proxy to the client-side proxy are targeted has been described. If both the device that sends the request message and the device that sends the reply message, or the device that sends both the request message and the reply message are connected, they are, of course, forwarded from the client-side process to the server-side proxy. Request messages and reply messages and request messages and reply messages that are forwarded from the server-side proxy to the client-side process, and request messages that are forwarded from the client-side process to the server-side proxy and from the server-side proxy to the client-side. It is also possible to target only the request message transferred to the process.
【0211】
By the way, so far, the explanation has focused on one-to-one communication between one server-side proxy and one client-side proxy, but the scope of the present invention is, of course, the server-side proxy and the client-side proxy. It is not limited to a system that communicates on a one-to-one basis, but a system in which a server-side proxy and a client-side proxy communicate on a one-to-many basis, and a system in which a server-side proxy and a client-side proxy communicate on a many-to-one basis. Or, it can be applied to a system in which a server-side proxy and a client-side proxy communicate in a many-to-many manner. For example, as shown in FIG. 37, it is possible to implement so that client-side proxies installed in a plurality of user offices, personal proxies used by mobile users, and the like share and use server-side proxies.
【0212】
Also, until now, the entire data contained in one message was targeted for FP compression (target registered in the fingerprint cache), but for example, the data contained in one message is the data of a predetermined unit. When composed of a set, it is possible to configure only a part of the unit data included in one message to be FP-compressed (the target to be registered in the fingerprint cache).
【0213】
Further, the URL specified in the request message issued by the client for the reply data that can be cached by the shared cache mechanism of the proxy to the server-side proxy or the client-side proxy (either one or both) of the present embodiment. And the reply data included in the reply message corresponding to the request message, the fingerprint corresponding to the reply data, and the request header such as the MIME type included in the reply header of the reply message. Information required for configuration and information such as time stamps used to determine the validity period are associated and cached (all may be retained in the fingerprint cache, or information excluding reply data (URL). And a corresponding table that holds the fingerprint and other information) may be provided separately), and by using this together with the fingerprint cache, it is possible to operate the shared cache of the proxy server as well. .. For example, when the cache function is provided in the client-side proxy, if the reply data for the URL specified in the request message sent by the client is cached and the data is valid, the client-side proxy Can get the data corresponding to the URL from the fingerprint cache, compose a reply message, and respond to the client.
【0214】
The above functions can be realized as software. The present embodiment can also be implemented as a program for causing the computer to perform a predetermined means (or for causing the computer to function as a predetermined means, or for causing the computer to realize a predetermined function). It can also be implemented as a computer-readable recording medium on which the program is recorded.
【0215】
It should be noted that the configuration illustrated in the embodiment of the present invention is an example, and is not intended to exclude other configurations, and a part of the illustrated configuration may be replaced with another or one of the illustrated configurations. It is also possible to obtain another configuration by omitting a part, adding another function or element to the illustrated configuration, or combining them. In addition, another configuration that is logically equivalent to the illustrated configuration, another configuration that includes a part that is logically equivalent to the illustrated configuration, another configuration that is logically equivalent to the main part of the illustrated configuration, and the like are also possible. is there. Further, another configuration that achieves the same or similar purpose as the illustrated configuration, another configuration that has the same or similar effect as the illustrated configuration, and the like are also possible. In addition, various variations of the various constituent parts illustrated in the embodiment of the present invention can be appropriately combined and implemented. Moreover, the embodiment of this invention is an invention as an individual device, an invention about two or more related devices, an invention as a whole system, an invention about a component inside an individual device, or a method corresponding thereto. It includes / inherently inventions related to various viewpoints, stages, concepts or categories such as inventions. Therefore, the invention can be extracted from the contents disclosed in the embodiment of the present invention without being limited to the illustrated configuration.
【0216】
The present invention is not limited to the above-described embodiment, and can be implemented with various modifications within the technical scope thereof.
【0217】
[Effect of the invention]
According to the present invention, the correspondence between the data and the name is maintained between the data transfer devices, and for the data holding this correspondence, the corresponding name is transferred instead of transferring the data. The amount of data transferred between transfer devices can be reduced.
[Simple explanation of drawings]
[Figure 1]
The figure which shows the structural example of the computer network system which concerns on one Embodiment of this invention. [Figure 2]
The figure which shows the other configuration example of the computer network system which concerns on this embodiment. [Fig. 3]
The figure which shows still another configuration example of the computer network system which concerns on this embodiment. [Fig. 4]
The figure for demonstrating the fingerprint used in this embodiment. [Fig. 5]
The figure for demonstrating the fingerprint cache used in the same embodiment. [Fig. 6]
The figure for demonstrating the instruction method of the differential compression used in the same embodiment. [Fig. 7]
The figure for demonstrating the specific example of the differential compression of the same embodiment. [Fig. 8]
The figure for demonstrating the specific example of the differential compression of the same embodiment. [Fig. 9]
The figure for demonstrating the specific example of the differential compression of the same embodiment. [Fig. 10]
The figure for demonstrating another specific example of the differential compression of the same embodiment. [Fig. 11]
The figure for demonstrating another specific example of the differential compression of the same embodiment. [Fig. 12]
The figure for demonstrating another specific example of the differential compression of the same embodiment. [Fig. 13]
The figure for demonstrating another specific example of the differential compression of the same embodiment. [Fig. 14]
The figure which shows an example of the message format used in the same embodiment. [Fig. 15]
The figure which shows another example of the message format used in the same embodiment. [Fig. 16]
The figure which shows still another example of the message format used in the same embodiment. [Fig. 17]
The figure which shows still another example of the message format used in the same embodiment. [Fig. 18]
The figure which shows still another example of the message format used in the same embodiment. [Fig. 19]
The figure which shows the configuration example of the server-side proxy which concerns on the same embodiment [Fig. 20]
The figure which shows the configuration example of the client side proxy which concerns on the same embodiment [Fig. 21]
A flowchart showing an example of a server-side proxy procedure according to the same embodiment. [Fig. 22]
A flowchart showing an example of a server-side proxy procedure according to the same embodiment. [Fig. 23]
A flowchart showing an example of a client-side proxy procedure according to the same embodiment. [Fig. 24]
A flowchart showing an example of a client-side proxy procedure according to the same embodiment. [Fig. 25]
A flowchart showing an example of the differential compression processing procedure of the same embodiment. [Fig. 26]
A flowchart showing another example of the differential compression processing procedure of the same embodiment. [Fig. 27]
A flowchart showing an example of a server-side proxy procedure according to the same embodiment. [Fig. 28]
A flowchart showing an example of a client-side proxy procedure according to the same embodiment. [Fig. 29]
The figure for demonstrating the data transfer between the server side proxy and the client side proxy which concerns on this embodiment. [Fig. 30]
The figure for demonstrating the data transfer between the server side proxy and the client side proxy which concerns on this embodiment. [Fig. 31]
The figure for demonstrating the data transfer between the server side proxy and the client side proxy which concerns on this embodiment. [Fig. 32]
The figure which shows the other configuration example of the proxy in the same embodiment [Fig. 33]
A flowchart showing another procedure example of the client-side proxy according to the same embodiment. [Fig. 34]
A flowchart showing another procedure example of the client-side proxy according to the same embodiment. [Fig. 35]
A flowchart showing another procedure example of the server-side proxy according to the same embodiment. [Fig. 36]
A flowchart showing another procedure example of the server-side proxy according to the same embodiment. [Fig. 37]
The figure which shows still another configuration example of the computer network system which concerns on this embodiment. [Fig. 38]
Diagram to illustrate a traditional computer network system [Fig. 39]
FIG. 14 shows a specific example of a message in the format shown in FIG. 14 (a). [Fig. 40]
A diagram showing a specific example of a message in the format shown in FIG. 14 (b). [Fig. 41]
The figure which shows the concrete example of the message of the format of FIG. 14 (c) and FIG. 15 (c). [Fig. 42]
A diagram showing a specific example of a message in the format shown in FIG. 14 (d). [Fig. 43]
A diagram showing a specific example of a message in the format shown in FIG. 15 (a). [Fig. 44]
A diagram showing a specific example of a message in the format shown in FIG. 15 (b). [Fig. 45]
The figure which shows the specific example of the message of the format of FIG. [Fig. 46]
The figure which shows the specific example of the message of the format of FIG. 17 (a) [Fig. 47]
A diagram showing a specific example of a message in the format shown in FIG. 17 (b). [Fig. 48]
The figure which shows the specific example of the message of the format of FIG. 17 (c) [Fig. 49]
The figure which shows the specific example of the message of the format of FIG. 18 (a) [Fig. 50]
A diagram showing a specific example of a message in the format shown in FIG. 18 (b). [Fig. 51]
A diagram showing a specific example of a message in the format shown in FIG. 18 (c). [Fig. 52]
A diagram showing a specific example of a message in the format shown in FIG. 18 (d). [Explanation of symbols]
202 ... ASP Server Center 204 ... User Office 212 ... LAN in ASP Server Center 214 ... WAN 216 ... LAN in the user office 220 ... server device 230 ... Server-side proxy device 240 ... Client-side proxy device 250 ... client device 231,241 ... Receiver 232,242 ... Processing unit 233,243 ... Transmitter 234,244 ... Fingerprint cache 2321,2421 ... FP compression judgment unit 2322,2422 ... Fingerprint Cache Management Department 2323 ... FP compression processing unit 2423 ... FP decompression processing unit 2324 ... Differential compression processing unit 2424 ... Difference decompression processing unit 2325,2425 ... FP decompression / decompression processing unit 2326, 2426 ... Difference decompression / decompression processing section
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| WO2009091485A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US9742832B2 | Cited by | United States of America | Applicant |
| US9083708B2 | Cited by | United States of America | Applicant |
| JP2015055877A | Cited by | Japan | Search report |
| JP2009519508A | Cited by | Japan | Search report |
| US7975071B2 | Cited by | United States of America | Applicant |
| JP2015055877A | Cited by | Japan | Search report |
5 members in 2 offices
Priority claims2
| Document | Office | Kind | Date |
|---|---|---|---|
| 2001069286 | Japan | A | |
| JP20010069286 | – | – | – |
Members5
| Document | Office | Kind | |
|---|---|---|---|
| US2002129168A1 | United States of America | A1 | |
| JP2002268937AThis record | Japan | A | |
| JP3990115B2 | Japan | B2 | |
| US7359956B2 | United States of America | B2 | |
| US2008250119A1 | United States of America | A1 |
13 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Cancellation because of no payment of annual feesLAPS | LAPS | |
| Renewal fee payment (event date is renewal date of database)FPAY | FPAY | |
| Renewal fee payment (event date is renewal date of database)FPAY | FPAY | |
| Renewal fee payment (event date is renewal date of database)FPAY | FPAY | |
| Renewal fee payment (event date is renewal date of database)FPAY | FPAY | |
| First payment of annual fees (during grant procedure)JAPANESE INTERMEDIATE CODE: A61A61 | A61 | |
| Written decision to grant a patent or to grant a registration (utility model)JAPANESE INTERMEDIATE CODE: A01A01 | A01 | |
| Decision of grant or rejection writtenTRDD | TRDD | |
| Transfer to examiner for re-examination before appeal (zenchi)AppealJAPANESE INTERMEDIATE CODE: A911A911 | A911 | |
| Written amendmentJAPANESE INTERMEDIATE CODE: A523A521 | A521 | |
| Decision of refusalJAPANESE INTERMEDIATE CODE: A02A02 | A02 | |
| Written amendmentJAPANESE INTERMEDIATE CODE: A523A521 | A521 | |
| Notification of reasons for refusalJAPANESE INTERMEDIATE CODE: A131A131 | A131 |
Numbers
- Publication
- 2002-268937
- Publication, DOCDB
- 2002268937
- Publication, EPODOC
- JP2002268937
- Application
- 69286
- Application, DOCDB
- 2001069286
- Application, EPODOC
- JP20010069286
Titles2
- Japanese
- 【発明の名称】データ転送装置、データ転送方法及びプログラム
- English
- INDUSTRIAL APPLICABILITY: Data transfer device, data transfer method and program
Classification
- CPC, 4
- H04L69/04
- H04L67/2876
- H04L67/5682
- H04L9/40
- IPC, 4
- G06F12 00
- G06F5 00
- H04L29 06
- H04L29 08