Abstract:
A method for downloading files, the method including the steps of at a client a) requesting a proxy server to initiate a first download of a file from a first server, the first server determined by the client to lack download resume capability and the proxy server possessing download resume capability, at the proxy server b) initiating the first download of the file from the first server, and at the client c) initiating at least a second download of the file from the proxy server.

Description:
FIELD OF THE INVENTION 
     The present invention relates to computer networks in general and more particularly to methods and apparatus for downloading a file from a server. 
     BACKGROUND OF THE INVENTION 
     Transfer protocols for downloading files from serving computers (servers) to client computers (clients) via computer networks such as the Internet are well known in the art. Two commonly used transfer protocols include the File Transfer Protocol (FTP) and the Hypertext Transfer Protocol (HTTP). Generally speaking, in order to download a file a client establishes a single data transfer link with a server during a file transfer session through which the contents of the file are transmitted from the server to the client. 
     Recent developments in file transfer protocols include the server&#39;s ability to begin downloading a file from a point other than the start of the file simply by instructing the server to begin transmitting the file from a specified byte offset. This server “download resume” capability has led to the development of file transfer software that is able to resume a download where the data transfer link has been terminated in the middle of a download. The download is simply continued in another file transfer session via another data transfer link with the server from the point at which the download stopped. 
     Unfortunately, not all servers possess download resume capability. Thus, where a download is made from such a server, should the download be prematurely terminated before the complete file is received, the download cannot be resumed from the point of termination to retrieve the remaining portions of the file, but, rather, the download must be restarted from the beginning of the file. 
     SUMMARY OF THE INVENTION 
     The present invention seeks to provide improved methods and apparatus for downloading a file from a server that does not possess download resume capability. 
     There is thus provided in accordance with a preferred embodiment of the present invention a method for downloading files the method including the steps of at a client a) requesting a proxy server to initiate a first download of a file from a first server the first server determined by the client to lack download resume capability and the proxy server possessing download resume capability, at the proxy server b) initiating the first download of the file from the first server, and at the client c) initiating at least a second download of the file from the proxy server. 
     Further in accordance with a preferred embodiment of the present invention the initiating step c) includes initiating a plurality of concurrent second downloads from the proxy server, where each of the plurality of second downloads is of a different portion of the file, and further including the step of assembling the different portions of the file into a single downloaded file. 
     Still further in accordance with a preferred embodiment of the present invention the initiating step c) includes initiating prior to the completion of the first download of the file from the first server to the proxy server. 
     There is also provided in accordance with a preferred embodiment of the present invention a method for downloading files, the method including at a client a) initiating a first download of a file from a first server, the first server determined by the client to lack download resume capability, b) detecting a termination of the download prior to the file being completely downloaded, c) requesting a proxy server to initiate a second download of the file from the first server, the proxy server possessing download resume capability, at the proxy server d) initiating the second download of the file from the first server, at the client e) initiating at least a third download of a non-downloaded portion of the file from the proxy server, and f) assembling the portions of the file downloaded during the first and third downloads into a single downloaded file. 
     Further in accordance with a preferred embodiment of the present invention the initiating step e) includes initiating prior to the completion of the second download of the file from the first server to the proxy server. 
     It is appreciated throughout the specification and claims that references to a server not possessing download resume capability may be understood as either indicating that the server actually does not possess download resume capability or that the server while possessing download resume capability, appears to a client as not having download resume capability, such may occur when transparent proxies are employed between the client and the server. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The present invention will be understood and appreciated more fully from the following detailed description taken in conjunction with the appended drawings in which: 
     FIG. 1 is a simplified conceptual illustration of a file downloading system, constructed and operative in accordance with a preferred embodiment of the present invention; and 
     FIG. 2 is a simplified flowchart illustration of a method of operation of the system of FIG. 1 operative in accordance with a preferred embodiment of the present invention; 
    
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
     Reference is now made to FIG. 1 which is a simplified conceptual illustration of a file downloading system constructed and operative in accordance with a preferred embodiment of the present invention. In the system of FIG. 1 a client computer  10  is provided capable of establishing a data transfer link with a server computer  12  via a network  14 , such as the Internet. A proxy server  16  is also provided which is capable of establishing a data transfer link with server  12  and to which client  10  may establish one or more data transfer links. Server  12  either lacks download resume capability or is detected or otherwise perceived by client  10  in accordance with conventional protocols to lack download resume capability, while proxy server  16  possesses download resume capability. 
     Typical operation of the system of FIG. 1 is now described in the context of an exemplary operational scenario. In the illustration client  10  is shown requesting the download of a file XYZ.DOC from server  12 , with the download commencing from byte offset  0  of XYZ.DOC. Downloading may be carried out in accordance with the File Transfer Protocol(FTP), the Hypertext Transfer Protocol (HTTP), or any other protocol known in the art. Typically, server  12  notifies client  10  of the size of the requested file, which is shown as 3.000 bytes in the illustration. The download of XYZ.DOC continues until bytes 0-999 have been downloaded to client  10 , at which point the download is prematurely terminated before XYZ.DOC has been completely downloaded. The premature termination may be detected by client  10  using any known means. 
     After detecting the premature termination of the download, client  10  requests from proxy server  16  the portion of the file that has not yet been downloaded from server  12 . The request is made of proxy server  16  and not server  12  since server  12  lacks download resume capability and would, therefore, begin downloading file XYZ.DOC from byte offset  0 . thus retransmitting bytes 0-999 to client  10  unnecessarily. In response to the request from client  10 , proxy server  16  downloads the file from server  12 . Proxy server  16  typically has a much higher speed connection to network  14  than does client  10 , enabling proxy server  16  to download the file from server  12  relatively quickly. For example, many Internet server connections transmit and receive data at rates measured in hundreds of kilobytes per second, while many client connections, such as dial-up connections, transmit and receive data at rates of less than 10 kilobytes per second. Once the portion of the file sought by client  10  has been downloaded to proxy server  16  from server  12 , client  10  may continue to download the file from proxy server  16  in one or more portions beginning at byte offset  1000  and via one or more concurrent connections. Downloading from proxy server  16  to client  10  may be carried out in accordance with FTP or HTTP protocols, or any other protocol known in the art, that supports the downloading of a portion of a file starting at a location determined by the requestor, often starting at a location other than the beginning of the file. Where the file is downloaded to proxy server  16  at a rate that is faster than the rate at which proxy server  16  can transmit to client  10 , proxy server  16  need not wait for the entire file to be downloaded from server  12  before transmitting the requested portions of the file to client  10 . Once the various portions of file XYZ.DOC are received by client  10 , they may be assembled using known means into the file XYZ.DOC, as shown by reference numeral  18 . 
     In an alternative exemplary operational scenario client  10 , having detected or otherwise perceived that server  12  lacks download resume capability, does not attempt to download the file from server  12 , but rather requests that proxy server  16  download the file from server  12 . Client  10  may then download the file from proxy server  16  starting from byte offset  0 . As described hereinabove, the download to client  10  may begin either once the entire file has been downloaded to proxy server  16  or concurrently with the download from server  12  to proxy server  16 . 
     Reference is now made to FIG. 2 which is a simplified flowchart illustration of a method of operation of the system of FIG. 1, operative in accordance with a preferred embodiment of the present invention. Elements of the method of FIG. 2 may be implemented by client  10  and proxy server  16  using executable software, hardware, or any suitable combination thereof using conventional techniques. In the method of FIG. 2 a file to be downloaded is indicated at client  10  using any known data entry or selection technique, such as by clicking on a Hypertext Markup Language (HTML) link in a web page within a browser running on client  10  (step  100 ). In the embodiment of FIG. 2 the indication of the file preferably includes the location of a server on which the file may be found, namely server  12 . This may be effected through the use of a Universal Resource Locator (URL) or any other location indicator known in the art. Client  10  then establishes a connection with server  12  to begin the download of the file (step  110 ). In accordance with any suitable conventional techniques, client  10  preferably determines whether server  12  lacks or possesses download resume capability (step  120 ). If server  12  is found to lack download resume capability, client  10  may either attempt to download the file from server  12  anyway (step  130 ), or may request that proxy server  16 , known to client  10  to possess download resume capability, download the file from server  12  to itself (step  170 ). Where client  10  attempts to download the file from server  12 , if the download ends prematurely, as detected by client  10  using conventional techniques (step  140 ), then client  10  instructs proxy server  16  to download the file from server  12  (step  150 ). Proxy server  16  then downloads the file from server  12 , and client  10  downloads the non-downloaded portions from proxy server  16  using conventional download resume techniques, and the file is then assembled front the portions of the file downloaded to client  10  (step  160 ). 
     Where client  10  does not attempt to download the file from server  12 , client  10  instructs proxy server  16  to download the file from server  12  (step  170 ). Proxy server  16  then downloads the file from server  12 , and client  10  downloads the entire file from proxy server  16  using conventional download and download resume techniques (step  180 ). 
     While the methods and apparatus disclosed herein may or may not have been described with reference to specific hardware or software, the methods and apparatus have been described in a manner sufficient to enable persons of ordinary skill in the art to readily adapt commercially available software and hardware as may be needed to reduce any of the embodiments of the present invention to practice without undue experimentation and using conventional techniques. 
     While the present invention has been described with reference to specific embodiments, the description is intended to be illustrative of the invention as a whole and is not to be construed as limiting the invention to the embodiments shown. It is appreciated that various modifications may occur to those skilled in the art that, while not specifically shown herein, are nevertheless within the true spirit and scope of the invention.