A method of progressively playing back, by a client, a media sequence stored as a media file on a remote server, the method comprising: obtaining information concerning the content of the media file from the remote server; identifying, by the client, a starting location within the media sequence; identifying, by the client, byte ranges of the media file corresponding to media required to play the media sequence from the starting location; requesting, by the client from the remote server, the byte ranges required to play the media sequence from the starting location; buffering received bytes of information pending commencement of playback; playing back the buffered bytes of information; receiving a "trick play" user instruction; identifying, by the client, byte ranges of the media file corresponding to media required to play the media sequence in accordance with the "trick play" user instruction; when previously requested byte ranges are no longer required, flushing the previous byte range requests; and requesting, by the client from the remote server, the byte ranges required to play the media in accordance with the "trick play" user instruction, wherein the method further comprises: maintaining, by the client, a mask indicating the portions of the media file that have been downloaded; identifying, using the mask, whether at least a portion of a byte range required to play the media in accordance with the "trick play" user instruction has already been downloaded; and requesting, by the client from the remote server, only the portions of byte ranges that have not already been downloaded from the remote server to play the media in accordance with the "trick play" user instruction. obtaining information concerning the content of the media file from the remote server; identifying, by the client, a starting location within the media sequence; identifying, by the client, byte ranges of the media file corresponding to media required to play the media sequence from the starting location; requesting, by the client from the remote server, the byte ranges required to play the media sequence from the starting location; buffering received bytes of information pending commencement of playback; playing back the buffered bytes of information; receiving a "trick play" user instruction; identifying, by the client, byte ranges of the media file corresponding to media required to play the media sequence in accordance with the "trick play" user instruction; when previously requested byte ranges are no longer required, flushing the previous byte range requests; and requesting, by the client from the remote server, the byte ranges required to play the media in accordance with the "trick play" user instruction, maintaining, by the client, a mask indicating the portions of the media file that have been downloaded; identifying, using the mask, whether at least a portion of a byte range required to play the media in accordance with the "trick play" user instruction has already been downloaded; and requesting, by the client from the remote server, only the portions of byte ranges that have not already been downloaded from the remote server to play the media in accordance with the "trick play" user instruction.