draft-ietf-httpbis-p5-range-02.txt   draft-ietf-httpbis-p5-range-03.txt 
Network Working Group R. Fielding, Ed. Network Working Group R. Fielding, Ed.
Internet-Draft Day Software Internet-Draft Day Software
Obsoletes: 2616 (if approved) J. Gettys Obsoletes: 2616 (if approved) J. Gettys
Intended status: Standards Track One Laptop per Child Intended status: Standards Track One Laptop per Child
Expires: August 27, 2008 J. Mogul Expires: December 19, 2008 J. Mogul
HP HP
H. Frystyk H. Frystyk
Microsoft Microsoft
L. Masinter L. Masinter
Adobe Systems Adobe Systems
P. Leach P. Leach
Microsoft Microsoft
T. Berners-Lee T. Berners-Lee
W3C/MIT W3C/MIT
Y. Lafon, Ed. Y. Lafon, Ed.
W3C W3C
J. Reschke, Ed. J. Reschke, Ed.
greenbytes greenbytes
February 24, 2008 June 17, 2008
HTTP/1.1, part 5: Range Requests and Partial Responses HTTP/1.1, part 5: Range Requests and Partial Responses
draft-ietf-httpbis-p5-range-02 draft-ietf-httpbis-p5-range-03
Status of this Memo Status of this Memo
By submitting this Internet-Draft, each author represents that any By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79. aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
skipping to change at page 1, line 49 skipping to change at page 1, line 49
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on August 27, 2008. This Internet-Draft will expire on December 19, 2008.
Copyright Notice
Copyright (C) The IETF Trust (2008).
Abstract Abstract
The Hypertext Transfer Protocol (HTTP) is an application-level The Hypertext Transfer Protocol (HTTP) is an application-level
protocol for distributed, collaborative, hypermedia information protocol for distributed, collaborative, hypermedia information
systems. HTTP has been in use by the World Wide Web global systems. HTTP has been in use by the World Wide Web global
information initiative since 1990. This document is Part 5 of the information initiative since 1990. This document is Part 5 of the
seven-part specification that defines the protocol referred to as seven-part specification that defines the protocol referred to as
"HTTP/1.1" and, taken together, obsoletes RFC 2616. Part 5 defines "HTTP/1.1" and, taken together, obsoletes RFC 2616. Part 5 defines
range-specific requests and the rules for constructing and combining range-specific requests and the rules for constructing and combining
responses to those requests. responses to those requests.
Editorial Note (To be removed by RFC Editor) Editorial Note (To be removed by RFC Editor)
Discussion of this draft should take place on the HTTPBIS working Discussion of this draft should take place on the HTTPBIS working
group mailing list (ietf-http-wg@w3.org). The current issues list is group mailing list (ietf-http-wg@w3.org). The current issues list is
at <http://www.tools.ietf.org/wg/httpbis/trac/report/11> and related at <http://www.tools.ietf.org/wg/httpbis/trac/report/11> and related
documents (including fancy diffs) can be found at documents (including fancy diffs) can be found at
<http://www.tools.ietf.org/wg/httpbis/>. <http://www.tools.ietf.org/wg/httpbis/>.
This draft incorporates those issue resolutions that were either The changes in this draft are summarized in Appendix C.4.
collected in the original RFC2616 errata list
(<http://purl.org/NET/http-errata>), or which were agreed upon on the
mailing list between October 2006 and November 2007 (as published in
"draft-lafon-rfc2616bis-03").
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1. Requirements . . . . . . . . . . . . . . . . . . . . . . . 4 1.1. Requirements . . . . . . . . . . . . . . . . . . . . . . . 4
2. Notational Conventions and Generic Grammar . . . . . . . . . . 4 2. Notational Conventions and Generic Grammar . . . . . . . . . . 4
3. Range Units . . . . . . . . . . . . . . . . . . . . . . . . . 5 3. Range Units . . . . . . . . . . . . . . . . . . . . . . . . . 5
4. Status Code Definitions . . . . . . . . . . . . . . . . . . . 5 4. Status Code Definitions . . . . . . . . . . . . . . . . . . . 5
4.1. 206 Partial Content . . . . . . . . . . . . . . . . . . . 5 4.1. 206 Partial Content . . . . . . . . . . . . . . . . . . . 5
4.2. 416 Requested Range Not Satisfiable . . . . . . . . . . . 6 4.2. 416 Requested Range Not Satisfiable . . . . . . . . . . . 6
5. Combining Byte Ranges . . . . . . . . . . . . . . . . . . . . 6 5. Combining Byte Ranges . . . . . . . . . . . . . . . . . . . . 6
6. Header Field Definitions . . . . . . . . . . . . . . . . . . . 7 6. Header Field Definitions . . . . . . . . . . . . . . . . . . . 7
6.1. Accept-Ranges . . . . . . . . . . . . . . . . . . . . . . 7 6.1. Accept-Ranges . . . . . . . . . . . . . . . . . . . . . . 7
6.2. Content-Range . . . . . . . . . . . . . . . . . . . . . . 8 6.2. Content-Range . . . . . . . . . . . . . . . . . . . . . . 8
6.3. If-Range . . . . . . . . . . . . . . . . . . . . . . . . . 10 6.3. If-Range . . . . . . . . . . . . . . . . . . . . . . . . . 10
6.4. Range . . . . . . . . . . . . . . . . . . . . . . . . . . 10 6.4. Range . . . . . . . . . . . . . . . . . . . . . . . . . . 10
6.4.1. Byte Ranges . . . . . . . . . . . . . . . . . . . . . 10 6.4.1. Byte Ranges . . . . . . . . . . . . . . . . . . . . . 10
6.4.2. Range Retrieval Requests . . . . . . . . . . . . . . . 12 6.4.2. Range Retrieval Requests . . . . . . . . . . . . . . . 12
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13
7.1. Message Header Registration . . . . . . . . . . . . . . . 13
8. Security Considerations . . . . . . . . . . . . . . . . . . . 13 8. Security Considerations . . . . . . . . . . . . . . . . . . . 13
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 13 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 14
10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 13 10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 14
10.1. Normative References . . . . . . . . . . . . . . . . . . . 13 10.1. Normative References . . . . . . . . . . . . . . . . . . . 14
10.2. Informative References . . . . . . . . . . . . . . . . . . 14 10.2. Informative References . . . . . . . . . . . . . . . . . . 15
Appendix A. Internet Media Type multipart/byteranges . . . . . . 14 Appendix A. Internet Media Type multipart/byteranges . . . . . . 15
Appendix B. Compatibility with Previous Versions . . . . . . . . 16 Appendix B. Compatibility with Previous Versions . . . . . . . . 17
B.1. Changes from RFC 2068 . . . . . . . . . . . . . . . . . . 16 B.1. Changes from RFC 2068 . . . . . . . . . . . . . . . . . . 17
B.2. Changes from RFC 2616 . . . . . . . . . . . . . . . . . . 17 B.2. Changes from RFC 2616 . . . . . . . . . . . . . . . . . . 17
Appendix C. Change Log (to be removed by RFC Editor before Appendix C. Change Log (to be removed by RFC Editor before
publication) . . . . . . . . . . . . . . . . . . . . 17 publication) . . . . . . . . . . . . . . . . . . . . 17
C.1. Since RFC2616 . . . . . . . . . . . . . . . . . . . . . . 17 C.1. Since RFC2616 . . . . . . . . . . . . . . . . . . . . . . 17
C.2. Since draft-ietf-httpbis-p5-range-00 . . . . . . . . . . . 17 C.2. Since draft-ietf-httpbis-p5-range-00 . . . . . . . . . . . 18
C.3. Since draft-ietf-httpbis-p5-range-01 . . . . . . . . . . . 17 C.3. Since draft-ietf-httpbis-p5-range-01 . . . . . . . . . . . 18
C.4. Since draft-ietf-httpbis-p5-range-02 . . . . . . . . . . . 18
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 19 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 20
Intellectual Property and Copyright Statements . . . . . . . . . . 22 Intellectual Property and Copyright Statements . . . . . . . . . . 23
1. Introduction 1. Introduction
HTTP clients often encounter interrupted data transfers as a result HTTP clients often encounter interrupted data transfers as a result
of cancelled requests or dropped connections. When a cache has of cancelled requests or dropped connections. When a cache has
stored a partial representation, it is desirable to request the stored a partial representation, it is desirable to request the
remainder of that representation in a subsequent request rather than remainder of that representation in a subsequent request rather than
transfer the entire representation. There are also a number of Web transfer the entire representation. There are also a number of Web
applications that benefit from being able to request only a subset of applications that benefit from being able to request only a subset of
a larger representation, such as a single page of a very large a larger representation, such as a single page of a very large
skipping to change at page 13, line 24 skipping to change at page 13, line 24
header (see Section 6.3) in addition to the Range header. header (see Section 6.3) in addition to the Range header.
If a proxy that supports ranges receives a Range request, forwards If a proxy that supports ranges receives a Range request, forwards
the request to an inbound server, and receives an entire entity in the request to an inbound server, and receives an entire entity in
reply, it SHOULD only return the requested range to its client. It reply, it SHOULD only return the requested range to its client. It
SHOULD store the entire received response in its cache if that is SHOULD store the entire received response in its cache if that is
consistent with its cache allocation policies. consistent with its cache allocation policies.
7. IANA Considerations 7. IANA Considerations
[[anchor2: TBD.]] 7.1. Message Header Registration
The Message Header Registry located at <http://www.iana.org/
assignments/message-headers/message-header-index.html> should be
updated with the permanent registrations below (see [RFC3864]):
+-------------------+----------+----------+-------------+
| Header Field Name | Protocol | Status | Reference |
+-------------------+----------+----------+-------------+
| Accept-Ranges | http | standard | Section 6.1 |
| Content-Range | http | standard | Section 6.2 |
| If-Range | http | standard | Section 6.3 |
| Range | http | standard | Section 6.4 |
+-------------------+----------+----------+-------------+
The change controller is: "IETF (iesg@ietf.org) - Internet
Engineering Task Force".
8. Security Considerations 8. Security Considerations
No additional security considerations have been identified beyond No additional security considerations have been identified beyond
those applicable to HTTP in general [Part1]. those applicable to HTTP in general [Part1].
9. Acknowledgments 9. Acknowledgments
Most of the specification of ranges is based on work originally done Most of the specification of ranges is based on work originally done
by Ari Luotonen and John Franks, with additional input from Steve by Ari Luotonen and John Franks, with additional input from Steve
skipping to change at page 13, line 47 skipping to change at page 14, line 21
Larry Masinter, Jeff Mogul, Lou Montulli, David W. Morris, Luigi Larry Masinter, Jeff Mogul, Lou Montulli, David W. Morris, Luigi
Rizzo, and Bill Weihl. Rizzo, and Bill Weihl.
10. References 10. References
10.1. Normative References 10.1. Normative References
[Part1] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., [Part1] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H.,
Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed., Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed.,
and J. Reschke, Ed., "HTTP/1.1, part 1: URIs, Connections, and J. Reschke, Ed., "HTTP/1.1, part 1: URIs, Connections,
and Message Parsing", draft-ietf-httpbis-p1-messaging-02 and Message Parsing", draft-ietf-httpbis-p1-messaging-03
(work in progress), February 2008. (work in progress), June 2008.
[Part3] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., [Part3] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H.,
Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed., Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed.,
and J. Reschke, Ed., "HTTP/1.1, part 3: Message Payload and J. Reschke, Ed., "HTTP/1.1, part 3: Message Payload
and Content Negotiation", draft-ietf-httpbis-p3-payload-02 and Content Negotiation", draft-ietf-httpbis-p3-payload-03
(work in progress), February 2008. (work in progress), June 2008.
[Part4] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., [Part4] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H.,
Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed., Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed.,
and J. Reschke, Ed., "HTTP/1.1, part 4: Conditional and J. Reschke, Ed., "HTTP/1.1, part 4: Conditional
Requests", draft-ietf-httpbis-p4-conditional-02 (work in Requests", draft-ietf-httpbis-p4-conditional-03 (work in
progress), February 2008. progress), June 2008.
[Part6] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., [Part6] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H.,
Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed., Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed.,
and J. Reschke, Ed., "HTTP/1.1, part 6: Caching", and J. Reschke, Ed., "HTTP/1.1, part 6: Caching",
draft-ietf-httpbis-p6-cache-02 (work in progress), draft-ietf-httpbis-p6-cache-03 (work in progress),
February 2008. June 2008.
[RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail [RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
Extensions (MIME) Part Two: Media Types", RFC 2046, Extensions (MIME) Part Two: Media Types", RFC 2046,
November 1996. November 1996.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
10.2. Informative References 10.2. Informative References
[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.
[RFC3864] Klyne, G., Nottingham, M., and J. Mogul, "Registration
Procedures for Message Header Fields", BCP 90, RFC 3864,
September 2004.
[RFC4288] Freed, N. and J. Klensin, "Media Type Specifications and [RFC4288] Freed, N. and J. Klensin, "Media Type Specifications and
Registration Procedures", BCP 13, RFC 4288, December 2005. Registration Procedures", BCP 13, RFC 4288, December 2005.
Appendix A. Internet Media Type multipart/byteranges Appendix A. Internet Media Type multipart/byteranges
When an HTTP 206 (Partial Content) response message includes the When an HTTP 206 (Partial Content) response message includes the
content of multiple ranges (a response to a request for multiple non- content of multiple ranges (a response to a request for multiple non-
overlapping ranges), these are transmitted as a multipart message- overlapping ranges), these are transmitted as a multipart message-
body [RFC2046]. The media type for this purpose is called body [RFC2046]. The media type for this purpose is called
"multipart/byteranges". The following is to be registered with IANA "multipart/byteranges". The following is to be registered with IANA
skipping to change at page 18, line 8 skipping to change at page 18, line 32
o <http://www3.tools.ietf.org/wg/httpbis/trac/ticket/55>: "Updating o <http://www3.tools.ietf.org/wg/httpbis/trac/ticket/55>: "Updating
to RFC4288" to RFC4288"
Ongoing work on ABNF conversion Ongoing work on ABNF conversion
(<http://www3.tools.ietf.org/wg/httpbis/trac/ticket/36>): (<http://www3.tools.ietf.org/wg/httpbis/trac/ticket/36>):
o Add explicit references to BNF syntax and rules imported from o Add explicit references to BNF syntax and rules imported from
other parts of the specification. other parts of the specification.
C.4. Since draft-ietf-httpbis-p5-range-02
Ongoing work on IANA Message Header Registration
(<http://www3.tools.ietf.org/wg/httpbis/trac/ticket/40>):
o Reference RFC 3984, and update header registrations for headers
defined in this document.
Index Index
2 2
206 Partial Content (status code) 5 206 Partial Content (status code) 5
4 4
416 Requested Range Not Satisfiable (status code) 6 416 Requested Range Not Satisfiable (status code) 6
A A
Accept-Ranges header 7 Accept-Ranges header 7
skipping to change at page 19, line 4 skipping to change at page 19, line 35
ranges-specifier 11 ranges-specifier 11
suffix-byte-range-spec 11 suffix-byte-range-spec 11
suffix-length 11 suffix-length 11
H H
Headers Headers
Accept-Ranges 7 Accept-Ranges 7
Content-Range 8 Content-Range 8
If-Range 10 If-Range 10
Range 10 Range 10
I I
If-Range header 10 If-Range header 10
M M
Media Type Media Type
multipart/byteranges 14 multipart/byteranges 15
multipart/x-byteranges 16 multipart/x-byteranges 17
multipart/byteranges Media Type 14 multipart/byteranges Media Type 15
multipart/x-byteranges Media Type 16 multipart/x-byteranges Media Type 17
R R
Range header 10 Range header 10
S S
Status Codes Status Codes
206 Partial Content 5 206 Partial Content 5
416 Requested Range Not Satisfiable 6 416 Requested Range Not Satisfiable 6
Authors' Addresses Authors' Addresses
skipping to change at page 22, line 44 skipping to change at line 975
attempt made to obtain a general license or permission for the use of attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr. http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at this standard. Please address the information to the IETF at
ietf-ipr@ietf.org. ietf-ipr@ietf.org.
Acknowledgment
Funding for the RFC Editor function is provided by the IETF
Administrative Support Activity (IASA).
 End of changes. 19 change blocks. 
37 lines changed or deleted 60 lines changed or added

This html diff was produced by rfcdiff 1.35. The latest version is available from http://tools.ietf.org/tools/rfcdiff/