FORM 2
THE PATENTS ACT, 1970
(39 of 1970)
&
THE PATENT RULES, 2003
COMPLETE SPECIFICATION (See Section 10 and Rule 13)
Title of invention:
A SYSTEM AND METHOD FOR UPLOADING AND DOWNLOADING
DATA OVER A NETWORK
Applicant:
TATA Consultancy Services Limited
A company Incorporated in India under The Companies Act, 1956
Having address:
Nirmal Building, 9th Floor,
Nariman Point, Mumbai 400021,
Maharashtra, India
The following specification particularly describes the invention and the manner the manner in which it is to be performed.
FIELD OF THE INVENTION
This invention generally relates to a system and method for data transfer over a network. More particularly the invention relates to a system and method for adaptive and smart mechanism to upload and download data from a mobile phone over the Internet with minimal wastage of resources.
BACKGROUND OF THE INVENTION
A client and a server for data transmission interact with each other using data transfer protocols such as FTP, HTTP, HTTPS, and the like. Data packets are exchanged over the network and communicated over a wired or wireless channel. The rate of transmission of these packets depends on the quality and bandwidth of the transmitting channel. Due to congestion or faulty network conditions the packets are not delivered to the destination. If the size of data to be transmitted is too large, like a multimedia file, and the signal-strength of network is poor, for example, in mobile cellular networks then there are high chances of communication failure.
In most of the developing countries mobile networks are generally fragile. Consequently, attempts by mobile clients to transfer data over internet using Hypertext Transfer Protocol (http) to backend servers are fraught with problems. Further, retransmission of data reinitiates the data transfer process from the beginning which can consume a large cellular bandwidth. This can also lead to a congested network due to the blocking of bandwidth without the knowledge of the available bandwidth. Furthermore, data transfer charges are high and therefore prohibit consumers from using the related services.
A plurality of techniques have been described by the prior art such as chunk transfer encoding which is a part of Hypertext Transfer Protocol. In chunk transfer encoding technique response from a server is sent as chunks or packets to the client. The content-length is not set to any value. Further, the size of a chunk is sent before the chunk is actually sent. The server transmits the chunks before the size of the entire data is known
and the final chunk with size zero terminates the connection. This technique works for the download of a content that is dynamic. In case there is a network failure, the request has to be sent again to the server to download the content from the beginning, hence resulting in wastage of the network bandwidth and high cost for transmission of data.
UNIX utilities such as WGET and WPUT also facilitate downloading content directly from a server and make it available on a local server. Such functionalities utilize HTTP, HTTPS and FTP protocols. Such utilities may be robust as they resume a download from the point from where the connection was lost. These techniques also utilize the 'range' header-field. However, the content is not split into chunks before uploading or downloading, only a single stream of the content is received/sent from/to the server.
Furthermore, in TCP/IP the data is divided into a plurality of packets having a header and a body at every layer at the sender's location. At the receiver's end each header is removed at the respective layer and actual data is provided to the top most layer. In between the two hosts packets are sent as chunks. However, in case the data transfer fails the resume operation reinitiates the transmission process from the first packet. This leads to unnecessary wastage of resources that needs to be minimized by selectively sending only the chunks that failed to upload.
Therefore, there remains a need to implement a simple and adaptive method in order to reduce the cost of transmission in case of a network failure especially in mobile or wireless networks, that guarantees the data transfer between the clients and servers with minimal wastage of resources.
In order to solve the above mentioned problems, the present invention proposes a method and system for data transfer over a fragile network. According to the present invention the content to be transmitted is divided into chunks and is sent to the server along with related identifiers. The chunks once received are re-assembled and compiled to get the entire content back. The chunks are re-assembled at the server by sorting the chunks in
accordance with the related identifiers. Such a method is easy to implement and result in saving network bandwidth and hence the cost incurred for data transmission.
Other features and advantages of the present invention will be explained in the following description of the invention having reference to the appended drawings.
OBJECTIVES OF THE INVENTION
It is a primary objective of the invention to provide a system and a related method for adaptive and smart data transfer over a network that incurs lesser cost of transmission in case of network failure and also guarantees the data transfer between the clients and servers.
It is another objective of the present invention to provide a pause and resume functionality for downloading/uploading process such that upon network failure the data transmission starts from the point of failure and therefore the chunks already sent are not required to be re-sent, hence saving retransmission costs.
It is a further objective of the present invention to provide a solution for data transfer over fragile wireless data transfer that is simple in implementation and easy in understanding the transaction.
Yet another objective of the present invention is to provide a technique for handling large size data over a network having poor quality signaling.
SUMMARY OF THE INVENTION
Before the present methods, systems, and hardware enablement are described, it is to be understood that this invention in not limited to the particular systems, and methodologies described, as there can be multiple possible embodiments of the present invention which are not expressly illustrated in the present disclosure. It is also to be understood that the
terminology used in the description is for the purpose of describing the particular versions or embodiments only, and is not intended to limit the scope of the present invention which will be limited only by the appended claims.
The present invention is related to a data transmission technique between a client and server over a network. Specifically, the present invention describes a method and system for downloading and uploading content from a mobile client device such as a mobile phone wherein the content resides on one or more servers over a wireless network.
In an embodiment, the system and underlying method enables dividing large size data into several small size chunks. Such small chunks are then sent to a distant server and reconstituted again at the server side by using identifiers and sequence numbers. In an aspect the size of a chunk may depend upon a plurality of network attributes such as network quality, bandwidths, and the like.
In another embodiment, the system and underlying method may enable resuming transfer of chunks that failed to reach the server in case the data transmission is interrupted. In an aspect, such an interruption in data transmission may be due to network failure.
In an embodiment, the present invention describes a system and a method for transmitting a data set from a transmitting device to a receiving device over a network. The transmitting device is adapted to divide the data set into a plurality of data chunks each of a predetermined size; to create and to further sequentially transmit a plurality of data packets based on the receipt of an acknowledgement id from the receiving device for the delivered data packet. In an aspect, a first data packet may be created that comprises of a first data chunk selected from the plurality of data chunks and a first metadata. Apart from the first data packet a plurality of subsequent data packets may also be created that comprise of a subsequent data chunk and a subsequent metadata corresponding to the subsequent data chunk. The receiving device may be adapted to receive and reassemble the plurality of data packets. Moreover, the receiving device in response to the reception of the first data packet may transmit the acknowledgement id and an identification key to
the transmitting device via the network. Further, the receiving device may also be adapted to transmit acknowledgement id corresponding to each received subsequent data packet. In case the available network bandwidth changes, the transmitting device is adapted to re-divide and send the data set yet to be received by the receiving device into a plurality of data chunks each of a size based on the available network bandwidth.
The foregoing has outlined rather broadly the features and technical advantages of the present invention in order that the detailed description of the invention that follows may be better understood. Additional features and advantages of the invention will be described hereinafter which form the subject of the claims of the invention. It should be appreciated that the conception and specific embodiment disclosed may be readily utilized as a basis for modifying or designing other structures for carrying out the same purposes of the present invention. It should also be realized that such equivalent constructions do not depart from the invention as set forth in the appended claims. The novel features which are believed to be characteristic of the invention, both as to its organization and method of operation, together with further objects and advantages will be better understood from the following description when considered in connection with the accompanying figures. It is to be expressly understood, however, that each of the figures is provided for the purpose of illustration and description only and is not intended as a definition of the limits of the present invention.
BRIEF DESCRIPTION OF DRAWINGS
The foregoing summary, as well as the following detailed description of preferred embodiments, is better understood when read in conjunction with the appended drawings. For the purpose of illustrating the invention, there is shown in the present document example constructions of the invention; however, the invention is not limited to the specific methods and apparatus disclosed in the document and the drawing:
Figure 1 according to an exemplary embodiment of the present invention describes a smart upload mechanism with a client dividing a media stream into chunks.
Figure 2 according to another exemplary embodiment of the present invention describes a smart download mechanism wherein a server responds to a download request by a client.
Figure 3 according to an exemplary embodiment of the present invention describes the system architecture of the present invention.
BRIEF DESCRIPTION OF THE INVENTION
Some embodiments of this invention, illustrating its features, will now be discussed:
The words "comprising," "having," "containing," and "including," and other forms thereof, are intended to be equivalent in meaning and be open ended in that an item or items following any one of these words is not meant to be an exhaustive listing of such item or items, or meant to be limited to only the listed item or items.
The present invention provides a mechanism for uploading and downloading content such as videos, audio files, and the like to and from a server by a mobile client device over a network. It is a method to adapt the rate of data transmission based on the quality of the network and bandwidth, and to continue an ongoing process of upload or download from the point where the process had stopped hence reducing wastage of repeated transmission.
The present method divides the content into chunks and re-assembles such chunks at the server side once all chunks are received by the server. At any point if the connection is lost, the process is stopped for a while and when the network is restored the upload continues from the point where it had stopped, such that the data integrity is not compromised and the cost of retransmission is low. A plurality of simultaneous uploads may be enabled and for each upload the content may be adaptively broken into smaller chunks to factor a poor bandwidth connection. Chunks may be threaded and the threads may be sent asynchronously to the server in one session. The chunks belonging to a
particular upload process are provided with a file identifier in a header of the chunk. Such a header may include meta-information the chunk there by helping chunks related to a single content file to be re-constituted at the server end. The method re-groups the divided chunks as well as it creates low overhead for generating a unique request id by the server to identify the group of a chunk received.
Figure 1 describes a smart uploading mechanism from a mobile client device to a web server. The client is enabled to enter an uploading module with data to be uploaded. The data is extracted into a memory stream and it is divided into a plurality of chunks of a default fixed size and each chunk is encapsulated with meta-info. Such individual chunks are then uploaded simultaneously. In case of failure during transmission, the chunks are retried for transmission for a limited number of times. In case the retransmission also fails, the chunks are divided into chunks of smaller size than the default fixed size and such smaller chunks are then retransmitted over the network. The uploading module is exited after successfully transmitting the last chunk. If after a fixed number of retry attempts the transmission fails then an appropriate error message is displayed.
Figure 2 describes a smart downloading mechanism of data from a web server. The mobile client device enters a download module to download a large data item from a given web server. Data is received as chunks of the actual message, Any failure during the retrieval of the data chunks a retry is attempted to download the chunk that failed to receive. Upon successfully receiving the last data chunk all the data chunks are assembled according to the part number and the file name that is stored in the meta-info of the chunks and thereupon the download module is exited.
Figure 3 by way of an example describes the system architecture of the present invention. The system comprises of a transmitting device such as a mobile communication device that may request a receiving device such as a server for uploading or downloading data that may be stored in the transmitting device over a network. In an aspect, the network may comprise of one or more wireless base stations, a wireless channel and one or more necessary network elements. The transmitting device divides the data set into a plurality
of data chunks each of a predetermined size; to create and to further sequentially transmit a plurality of data packets based on the receipt of an acknowledgement id from the receiving device for the delivered data packet wherein a first data packet comprises of a first data chunk selected from the plurality of data chunks and a first metadata; and a plurality of subsequent data packets comprising a subsequent data chunk and a subsequent metadata corresponding to the subsequent data chunk; the receiving device is adapted to receive and reassemble the plurality of data packets and in response to the reception of the first data packet transmits the acknowledgement id and an identification key to the transmitting device via the network; and to transmit the acknowledgement id corresponding to each received subsequent data packet; the transmitting device is further adapted to re-divide and send the remaining data set into a plurality of data chunks each of a size based on the available network bandwidth. In an aspect, the first metadata relating to the first data chunk comprise of at least the total number of data chunks created out of the data set, size of each data chunk, and a data packet identifier. Moreover, the subsequent metadata that relates to subsequent data chunks comprises of an identification key and the packet identifier corresponding to the data packet.
The disclosed embodiments are merely exemplary of the invention, which may be embodied in various forms. Persons skilled in the art and technology to which this application pertains will appreciate that alterations and changes in the described structures and methods of operation can be practiced without meaningfully departing from the principle, spirit and scope.
The methodology and techniques described with respect to the exemplary embodiments can be performed using a machine or other computing device within which a set of instructions, when executed, may cause the machine to perform any one or more of the methodologies discussed above. In some embodiments, the machine operates as a standalone device. In some embodiments, the machine may be connected (e.g., using a network) to other machines. In a networked deployment, the machine may operate in the capacity of a server or a client user machine in a server-client user network environment, or as a peer machine in a peer-to-peer (or distributed) network environment.
We Claim:
1. A system for transmitting a data set from a transmitting device to a receiving device over a network, wherein
the transmitting device is adapted to divide the data set into a plurality of data chunks each of a predetermined size; to create and to further sequentially transmit a plurality of data packets based on the receipt of an acknowledgement id from the receiving device for the delivered data packet wherein
a first data packet comprises of a first data chunk selected from the
plurality of data chunks and a first metadata; and
a plurality of subsequent data packets comprising a subsequent
data chunk and a subsequent metadata corresponding to the subsequent
data chunk;
the receiving device is adapted to receive and reassemble the plurality of data packets and in response to the reception of the first data packet transmits the acknowledgement id and an identification key to the transmitting device via the network; and to transmit the acknowledgement id corresponding to each received subsequent data packet;
the transmitting device is further adapted to re-divide and send the remaining data set into a plurality of data chunks each of a size based on the available network bandwidth.
2. The system as claimed in claim 1, wherein the transmitting device and the receiving device is selected from a group comprising of a mobile communication device, a server.
3. The system as claimed in claim 1, wherein the network comprises of one or more wireless base stations and a wireless channel.
4. The system as claimed in claim 1. wherein the first metadata comprises of total number of data chunks, size of each data chunk, and a data packet identifier.
5. The system as claimed in claim 1, wherein the subsequent metadata comprises of an identification key and the data packet identifier corresponding to the data packet.
6. A method for transmitting a data set from a transmitting device to a receiving device over a network, wherein the method comprising the steps of
dividing the data set into a plurality of data chunks each of a predetermined size by the transmitting device;
creating and simultaneously transmitting a plurality of data packets based on the receipt of an acknowledgement id from the receiving device for the delivered data packet wherein a first data packet comprises of a first data chunk selected from the plurality of data chunks and a first metadata; and a plurality of subsequent data packets comprising a subsequent data chunk and a subsequent metadata corresponding to the subsequent data chunk;
receiving the plurality of data packets by the receiving device;
transmitting the acknowledgement id and an identification key by the receiving device; and transmitting the acknowledgement id corresponding to each received subsequent data packet in response to the reception of the data packets by the receiving device to the transmitting device via the network;
re-dividing the remaining data set into a plurality of data chunks each of a size based on the available network bandwidth by the transmitting device.
7. The method as claimed in claim 6, wherein the re-division of the remaining data set into a plurality of data chunks each of a larger size is based on the increased available network bandwidth.
8. The method as claimed in claim 6, wherein the re-division of the remaining data set into a plurality of data chunks each of a smaller size is based on the decreased available network bandwidth.
9. The method as claimed in claim 6, wherein the transmission of the remaining data packets by the transmitting device comprises of resuming transmission and resending the remaining data packets if the corresponding acknowledgement id of a data packet is not received by the transmitting device.
10. The method as claimed in claim 6, wherein the transmission of data set from the transmitting device to the receiving device over the network is uploading data by the transmitting device to the receiving device or downloading data by the transmitting device from the receiving device.