An apparatus, comprising: a downloader coupled to a plurality of servers via a plurality of communication links; and a controller configured to determine initial download requests for the plurality of servers based on predetermined information about a quality of the plurality of communication links, send the initial download requests to the plurality of servers with the downloader, update the information about the quality of the plurality of communication links after the downloader receives data associated with a data file from the plurality of servers via the plurality of communication links, determine subsequent download requests for the plurality of servers based on the updated information about the quality of the plurality of communication links, and send the subsequent download requests to the plurality of servers via the downloader, wherein the initial download requests include a request for a specific server included in the plurality of servers to set a size of an output buffer of the specific server to a first value, characterized in that the controller is further configured to: determine that the download is almost complete when the downloader has received a quantity of the data from the plurality of servers that is greater than a majority threshold; and if the controller determines that the download is almost complete, send subsequent download requests to the plurality of servers, wherein the subsequent download requests include a request for the specific server to set the size of the output buffer to a second value that is less than the first value. a downloader coupled to a plurality of servers via a plurality of communication links; and a controller configured to determine initial download requests for the plurality of servers based on predetermined information about a quality of the plurality of communication links, send the initial download requests to the plurality of servers with the downloader, update the information about the quality of the plurality of communication links after the downloader receives data associated with a data file from the plurality of servers via the plurality of communication links, determine subsequent download requests for the plurality of servers based on the updated information about the quality of the plurality of communication links, and send the subsequent download requests to the plurality of servers via the downloader, determine initial download requests for the plurality of servers based on predetermined information about a quality of the plurality of communication links, send the initial download requests to the plurality of servers with the downloader, update the information about the quality of the plurality of communication links after the downloader receives data associated with a data file from the plurality of servers via the plurality of communication links, determine subsequent download requests for the plurality of servers based on the updated information about the quality of the plurality of communication links, and send the subsequent download requests to the plurality of servers via the downloader, determine that the download is almost complete when the downloader has received a quantity of the data from the plurality of servers that is greater than a majority threshold; and if the controller determines that the download is almost complete, send subsequent download requests to the plurality of servers, wherein the subsequent download requests include a request for the specific server to set the size of the output buffer to a second value that is less than the first value.