| 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.34. The latest version is available from http://tools.ietf.org/tools/rfcdiff/