Byte Serving

Byte serving is the process of sending only a portion of an HTTP/1.1 message from a server to a client. Byte serving uses the Range HTTP request header and the Accept-Ranges and Content-Range HTTP response headers.

Clients which request byte-serving might do so in cases in which a large file has been only partially delivered and a limited portion of the file is needed in a particular range. Byte Serving is therefore a method of bandwidth optimization. In the HTTP/1.0 standard, clients were only able to request an entire document. By allowing byte-serving, clients may choose to request any portion of the resource. One advantage of this capability is when a large media file is being requested, and that media file is properly formatted, the client may be able to request just the portions of the file known to be of interest. This has been reported to work for some PDF files and clients in which a client may request a certain page, rather than the entire file. Other names for byte serving:

  • Section 14.35.2 of RFC 2616 says the client makes Range Retrieval Requests when it makes a partial content request
  • Clients make range requests
  • Byte Range Serving
  • Page on demand

Byte serving can also be used by multihomed clients to simultaneous download a resource over multiple network interfaces. To achieve this type of application-layer link aggregation, multiple HTTP sessions are established and logical file segments are collaboratively downloaded from the server and reassembled at the client. This allows full utilization of several end-to-end paths and therefore leads to an increased download speed.

The use of the Chunked Transfer-Encoding is not byte-serving, but is instead a method in which an HTTP/1.1 server sends the entire resource, but in several separate portions (or chunks) of data. It is often used when a server does not know exactly how much data there will be in the total response, allowing the server to start sending data to the client straight away without having to buffer the response and determine the exact length before it begins sending it to the client. This improves latency and reduces memory requirements while preserving the ability to reuse the connection after the response is completed. Byte serving and chunking are compatible and can be used with or without the other.

Famous quotes containing the word serving:

    The way to be patriotic in America is not only to love America, but to love the duty that lies nearest to our hand, and to know that in performing it we are serving our country.
    Woodrow Wilson (1856–1924)