Sign up ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Technically, what is the difference between the way of hosting (on the server) of

  • a file that can be paused while downloading and resumed again, and
  • a file that needs to be downloaded in one go?
share|improve this question

migrated from Aug 12 '10 at 23:08

This question came from our site for computer enthusiasts and power users.

You might get a better answer at Server Fault or Pro Webmasters. –  ChrisF Aug 12 '10 at 20:33
I'd say server settings, so I think that you should heed ChrisF's advice. A link to SF question here would be welcome. –  AndrejaKo Aug 12 '10 at 20:45
This is something to do with HTTP headers (content-range IIRC), but the guys on server fault should have a better answer. –  wtaniguchi Aug 12 '10 at 20:55
I've started the migration process, so if 4 others agree the question will be moved. –  ChrisF Aug 12 '10 at 21:04

3 Answers 3

up vote 1 down vote accepted

The server would need to support the ability to serve partial content and handle partial requests. Most modern web servers are able to handle it unless you are using something that you built in-house.

You can get more information by reading this Apache document and the relevant RFCs. From the document linked - an example of a response.

HTTP/1.1 206 Partial Content
Date: Wed, 15 Nov 1995 06:25:24 GMT
Last-Modified: Wed, 15 Nov 1995 04:58:08 GMT
Content-type: multipart/byteranges; boundary=THIS_STRING_SEPARATES

Content-type: application/pdf
Content-range: bytes 500-999/8000

...the first range...
Content-type: application/pdf
Content-range: bytes 7000-7999/8000

...the second range
share|improve this answer

A common one is a lack of a content-size or content-range header. Perhaps the author forgot to set one in their download script?

share|improve this answer

A download can be resumed if the HTTP server supports range retrieval requests as defined in Section 14.35 of RFC 2616, which Wikipedia calls "byte serving" for some odd reason.

  1. The server sends Accept-Ranges: bytes in a response to a HEAD or GET request to indicate that it supports byte serving.
  2. The client sends a GET request including Range: bytes=aaa-bbb, where the starting offset is aaa bytes after the start of the file, and the length of the range is bbb - aaa + 1 bytes.
  3. The server sends a status 206 (partial content) response including Content-range: bytes aaa-bbb/cccc, where aaa-bbb are as before and cccc is either the length of the file in bytes or * if the server cannot determine it, followed by a response body containing the requested range of bytes. If the range is out of bounds, the server instead sends a status 416 (requested range not satisfiable) response.

Some video players use range requests to support seeking through a video. The Ogg media container uses interpolated bisection search to support this use case.

Popular web server software can be configured to serve ranges from static files, but a server-side script that authenticates the download may or may not need to handle ranges itself. (Check your scripting language's manual.) Some operators of download servers open to the public deliberately block range requests because several download managers have used support for content ranges to make more than one request to a server, hogging resources that could be used to provide downloads to other users.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.