Subject: HTTP Partial Download Query

From: "Yogesh Bang" <[email-masked]>
Date: Sun, 8 Dec 2002 18:48:58 +0530

Hi There,

I was browsing through RFC 2616 for HTTP1.1
One of the smart feature it mensioned was of PARTIAL DOWNLOAD.
Means browser can specify a range of bytes (e.g 100-200 bytes of img123.gif)
in the HTTP header and webserver will send only those bytes.

I have following query about PARTIAL DOWNLOAD

If the browser is capable of accepting say 100KB at a time (This 
is most likely scenario in case of browsers on Mobile phones)
then is it browser's responsibility to make request for every 100KB 
of that object(which is to be downloaded) and the webserver will send requested 
bytes? 
OR
Is it the server who will send the requested Object in chunk of 100KB
with seperator and as Multipart response?

Any quick help in terms of sample code, URL will be highly
appreciated.

Thanks for you Time.

With Regards,
Yog

---

From: "Patrick R. McManus" <[email-masked]>
Date: Sun, 8 Dec 2002 10:14:49 -0500

[Yogesh Bang: Dec 08 18:48]

> with seperator and as Multipart response?

your first scenario is much closer.. the server will send only a
subset of the document.. if the client wants other subsets it must
make multiple requests. Also note that the server is allowed to just
send you the whole document even if you only ask for part of it.

imho, your issue appears to be one of flow control, which isn't really
what the range mechanism was meant for. (but then I'm not one to talk,
I've done an experiment to try and interleave different documents from
the same web page across the same persistent tcp stream using range).You should
really use your transport protocol to accomplish what you're
after. (e.g. in TCP advertise a 0 rwin and you won't get any more data
until you've consumed the last chunk.)

-Patrick

---

From: Scott Lawrence <[email-masked]>
Date: 08 Dec 2002 10:43:43 -0500

"Yogesh Bang" <[email-masked]> writes:

> If the browser is capable of accepting say 100KB at a time (This is
> most likely scenario in case of browsers on Mobile phones) then is
> it browser's responsibility to make request for every 100KB of that
> object(which is to be downloaded) and the webserver will send
> requested bytes?
> OR

The client (browser) may request a specified range of the object; if
it wants another range, it must make another request.  The request is
made using the Range request header (see section 14.35 of RFC 2616).

Note however, that since a server MAY ignore a Range request header
and return the entire resource, a client that has a limited capacity
cannot always rely on getting a subrange response.  The Content-Range
header is included in the response if it is a subrange.

There is a mechanism (the 'Accept-Ranges' response header) designed to
allow the server to declare whether or not it will support range
requests for a resource - I don't know how widely it is implemented.
If it is implemented by the server, then an OPTIONS or HEAD request to
the URL of interest would return an Accept-Ranges header, without
having to deal with the entire object.

-- 
  Scott Lawrence