Ignore:
Timestamp:
Jul 16, 2012, 7:30:03 AM (7 years ago)
Author:
julian.reschke@…
Message:

Move imported ABNF rules to appendix sections

File:
1 edited

Legend:

Unmodified
Added
Removed
  • draft-ietf-httpbis/latest/p5-range.html

    r1804 r1805  
    482482      <link rel="Appendix" title="A Internet Media Type multipart/byteranges" href="#rfc.section.A">
    483483      <link rel="Appendix" title="B Changes from RFC 2616" href="#rfc.section.B">
    484       <link rel="Appendix" title="C Collected ABNF" href="#rfc.section.C">
    485       <link rel="Appendix" title="D Change Log (to be removed by RFC Editor before publication)" href="#rfc.section.D">
     484      <link rel="Appendix" title="C Imported ABNF" href="#rfc.section.C">
     485      <link rel="Appendix" title="D Collected ABNF" href="#rfc.section.D">
     486      <link rel="Appendix" title="E Change Log (to be removed by RFC Editor before publication)" href="#rfc.section.E">
    486487      <link href="p4-conditional.html" rel="prev">
    487488      <link href="p6-cache.html" rel="next">
     
    543544      <p>The current issues list is at &lt;<a href="http://tools.ietf.org/wg/httpbis/trac/report/3">http://tools.ietf.org/wg/httpbis/trac/report/3</a>&gt; and related documents (including fancy diffs) can be found at &lt;<a href="http://tools.ietf.org/wg/httpbis/">http://tools.ietf.org/wg/httpbis/</a>&gt;.
    544545      </p> 
    545       <p>The changes in this draft are summarized in <a href="#changes.since.19" title="Since draft-ietf-httpbis-p5-range-19">Appendix&nbsp;D.1</a>.
     546      <p>The changes in this draft are summarized in <a href="#changes.since.19" title="Since draft-ietf-httpbis-p5-range-19">Appendix&nbsp;E.1</a>.
    546547      </p>
    547548      <h1><a id="rfc.status" href="#rfc.status">Status of This Memo</a></h1>
     
    574575         <li>1.&nbsp;&nbsp;&nbsp;<a href="#introduction">Introduction</a><ul>
    575576               <li>1.1&nbsp;&nbsp;&nbsp;<a href="#intro.conformance.and.error.handling">Conformance and Error Handling</a></li>
    576                <li>1.2&nbsp;&nbsp;&nbsp;<a href="#notation">Syntax Notation</a><ul>
    577                      <li>1.2.1&nbsp;&nbsp;&nbsp;<a href="#core.rules">Core Rules</a></li>
    578                      <li>1.2.2&nbsp;&nbsp;&nbsp;<a href="#abnf.dependencies">ABNF Rules defined in other Parts of the Specification</a></li>
    579                   </ul>
    580                </li>
     577               <li>1.2&nbsp;&nbsp;&nbsp;<a href="#notation">Syntax Notation</a></li>
    581578            </ul>
    582579         </li>
     
    625622         <li>A.&nbsp;&nbsp;&nbsp;<a href="#internet.media.type.multipart.byteranges">Internet Media Type multipart/byteranges</a></li>
    626623         <li>B.&nbsp;&nbsp;&nbsp;<a href="#changes.from.rfc.2616">Changes from RFC 2616</a></li>
    627          <li>C.&nbsp;&nbsp;&nbsp;<a href="#collected.abnf">Collected ABNF</a></li>
    628          <li>D.&nbsp;&nbsp;&nbsp;<a href="#change.log">Change Log (to be removed by RFC Editor before publication)</a><ul>
    629                <li>D.1&nbsp;&nbsp;&nbsp;<a href="#changes.since.19">Since draft-ietf-httpbis-p5-range-19</a></li>
     624         <li>C.&nbsp;&nbsp;&nbsp;<a href="#imported.abnf">Imported ABNF</a></li>
     625         <li>D.&nbsp;&nbsp;&nbsp;<a href="#collected.abnf">Collected ABNF</a></li>
     626         <li>E.&nbsp;&nbsp;&nbsp;<a href="#change.log">Change Log (to be removed by RFC Editor before publication)</a><ul>
     627               <li>E.1&nbsp;&nbsp;&nbsp;<a href="#changes.since.19">Since draft-ietf-httpbis-p5-range-19</a></li>
    630628            </ul>
    631629         </li>
     
    671669      </p>
    672670      <h2 id="rfc.section.1.2"><a href="#rfc.section.1.2">1.2</a>&nbsp;<a id="notation" href="#notation">Syntax Notation</a></h2>
    673       <p id="rfc.section.1.2.p.1">This specification uses the Augmented Backus-Naur Form (ABNF) notation of <a href="#RFC5234" id="rfc.xref.RFC5234.1"><cite title="Augmented BNF for Syntax Specifications: ABNF">[RFC5234]</cite></a> with the list rule extension defined in <a href="p1-messaging.html#notation" title="Syntax Notation">Section 1.2</a> of <a href="#Part1" id="rfc.xref.Part1.2"><cite title="HTTP/1.1, part 1: Message Routing and Syntax&#34;">[Part1]</cite></a>. <a href="#collected.abnf" title="Collected ABNF">Appendix&nbsp;C</a> shows the collected ABNF with the list rule expanded.
    674       </p>
    675       <p id="rfc.section.1.2.p.2">The following core rules are included by reference, as defined in <a href="#RFC5234" id="rfc.xref.RFC5234.2"><cite title="Augmented BNF for Syntax Specifications: ABNF">[RFC5234]</cite></a>, <a href="http://tools.ietf.org/html/rfc5234#appendix-B.1">Appendix B.1</a>: ALPHA (letters), CR (carriage return), CRLF (CR LF), CTL (controls), DIGIT (decimal 0-9), DQUOTE (double quote), HEXDIG
    676          (hexadecimal 0-9/A-F/a-f), LF (line feed), OCTET (any 8-bit sequence of data), SP (space), and VCHAR (any visible US-ASCII
    677          character).
    678       </p>
    679       <p id="rfc.section.1.2.p.3">Note that all rules derived from <a href="#core.rules" class="smpl">token</a> are to be compared case-insensitively, like <a href="#range.units" class="smpl">range-unit</a> and <a href="#header.accept-ranges" class="smpl">acceptable-ranges</a>.
    680       </p>
    681       <h3 id="rfc.section.1.2.1"><a href="#rfc.section.1.2.1">1.2.1</a>&nbsp;<a id="core.rules" href="#core.rules">Core Rules</a></h3>
    682       <p id="rfc.section.1.2.1.p.1">The core rules below are defined in <a href="#Part1" id="rfc.xref.Part1.3"><cite title="HTTP/1.1, part 1: Message Routing and Syntax&#34;">[Part1]</cite></a> and <a href="#Part2" id="rfc.xref.Part2.1"><cite title="HTTP/1.1, part 2: Semantics and Payloads">[Part2]</cite></a>:
    683       </p>
    684       <div id="rfc.figure.u.1"></div><pre class="inline">  <a href="#core.rules" class="smpl">OWS</a>        = &lt;OWS, defined in <a href="#Part1" id="rfc.xref.Part1.4"><cite title="HTTP/1.1, part 1: Message Routing and Syntax&#34;">[Part1]</cite></a>, <a href="p1-messaging.html#whitespace" title="Whitespace">Section 3.2.1</a>&gt;
    685   <a href="#core.rules" class="smpl">token</a>      = &lt;token, defined in <a href="#Part1" id="rfc.xref.Part1.5"><cite title="HTTP/1.1, part 1: Message Routing and Syntax&#34;">[Part1]</cite></a>, <a href="p1-messaging.html#field.components" title="Field value components">Section 3.2.4</a>&gt;
    686   <a href="#core.rules" class="smpl">HTTP-date</a>  = &lt;HTTP-date, defined in <a href="#Part2" id="rfc.xref.Part2.2"><cite title="HTTP/1.1, part 2: Semantics and Payloads">[Part2]</cite></a>, <a href="p2-semantics.html#http.date" title="Date/Time Formats">Section 5.1</a>&gt;
    687 </pre><h3 id="rfc.section.1.2.2"><a href="#rfc.section.1.2.2">1.2.2</a>&nbsp;<a id="abnf.dependencies" href="#abnf.dependencies">ABNF Rules defined in other Parts of the Specification</a></h3>
    688       <p id="rfc.section.1.2.2.p.1">The ABNF rules below are defined in other parts:</p>
    689       <div id="rfc.figure.u.2"></div><pre class="inline">  <a href="#abnf.dependencies" class="smpl">entity-tag</a> = &lt;entity-tag, defined in <a href="#Part4" id="rfc.xref.Part4.1"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a>, <a href="p4-conditional.html#header.etag" title="ETag">Section 2.3</a>&gt;
    690 </pre><h1 id="rfc.section.2"><a href="#rfc.section.2">2.</a>&nbsp;<a id="range.units" href="#range.units">Range Units</a></h1>
     671      <p id="rfc.section.1.2.p.1">This specification uses the Augmented Backus-Naur Form (ABNF) notation of <a href="#RFC5234" id="rfc.xref.RFC5234.1"><cite title="Augmented BNF for Syntax Specifications: ABNF">[RFC5234]</cite></a> with the list rule extension defined in <a href="p1-messaging.html#notation" title="Syntax Notation">Section 1.2</a> of <a href="#Part1" id="rfc.xref.Part1.2"><cite title="HTTP/1.1, part 1: Message Routing and Syntax&#34;">[Part1]</cite></a>. <a href="#imported.abnf" title="Imported ABNF">Appendix&nbsp;C</a> describes rules imported from other documents. <a href="#collected.abnf" title="Collected ABNF">Appendix&nbsp;D</a> shows the collected ABNF with the list rule expanded.
     672      </p>
     673      <h1 id="rfc.section.2"><a href="#rfc.section.2">2.</a>&nbsp;<a id="range.units" href="#range.units">Range Units</a></h1>
    691674      <p id="rfc.section.2.p.1">HTTP/1.1 allows a client to request that only part (a range) of the representation be included within the response. HTTP/1.1
    692675         uses range units in the <a href="#range.retrieval.requests" class="smpl">Range</a> (<a href="#header.range" id="rfc.xref.header.range.1" title="Range">Section&nbsp;5.4</a>) and <a href="#header.content-range" class="smpl">Content-Range</a> (<a href="#header.content-range" id="rfc.xref.header.content-range.1" title="Content-Range">Section&nbsp;5.2</a>) header fields. A representation can be broken down into subranges according to various structural units.
    693676      </p>
    694       <div id="rfc.figure.u.3"></div><pre class="inline"><span id="rfc.iref.g.1"></span><span id="rfc.iref.g.2"></span><span id="rfc.iref.g.3"></span>  <a href="#range.units" class="smpl">range-unit</a>       = <a href="#range.units" class="smpl">bytes-unit</a> / <a href="#range.units" class="smpl">other-range-unit</a>
     677      <div id="rfc.figure.u.1"></div><pre class="inline"><span id="rfc.iref.g.1"></span><span id="rfc.iref.g.2"></span><span id="rfc.iref.g.3"></span>  <a href="#range.units" class="smpl">range-unit</a>       = <a href="#range.units" class="smpl">bytes-unit</a> / <a href="#range.units" class="smpl">other-range-unit</a>
    695678  <a href="#range.units" class="smpl">bytes-unit</a>       = "bytes"
    696   <a href="#range.units" class="smpl">other-range-unit</a> = <a href="#core.rules" class="smpl">token</a>
     679  <a href="#range.units" class="smpl">other-range-unit</a> = <a href="#imported.abnf" class="smpl">token</a>
    697680</pre><p id="rfc.section.2.p.3">HTTP/1.1 has been designed to allow implementations of applications that do not depend on knowledge of ranges. The only range
    698681         unit defined by HTTP/1.1 is "bytes". Additional specifiers can be defined as described in <a href="#range.specifier.registry" title="Range Specifier Registry">Section&nbsp;2.1</a>.
     
    741724      <p id="rfc.section.3.2.p.2">When this status code is returned for a byte-range request, the response <em class="bcp14">SHOULD</em> include a <a href="#header.content-range" class="smpl">Content-Range</a> header field specifying the current length of the representation (see <a href="#header.content-range" id="rfc.xref.header.content-range.3" title="Content-Range">Section&nbsp;5.2</a>). This response <em class="bcp14">MUST NOT</em> use the multipart/byteranges content-type. For example,
    742725      </p>
    743       <div id="rfc.figure.u.4"></div><pre class="text">HTTP/1.1 416 Requested Range Not Satisfiable
     726      <div id="rfc.figure.u.2"></div><pre class="text">HTTP/1.1 416 Requested Range Not Satisfiable
    744727Date: Mon, 20 Jan 2012 15:41:54 GMT
    745728Content-Range: bytes */47022
     
    757740         a request for a set of ranges that overlap without any holes), this content is transmitted with a <a href="#header.content-range" class="smpl">Content-Range</a> header field, and a <a href="p1-messaging.html#header.content-length" class="smpl">Content-Length</a> header field showing the number of bytes actually transferred. For example,
    758741      </p>
    759       <div id="rfc.figure.u.5"></div><pre class="text">HTTP/1.1 206 Partial Content
     742      <div id="rfc.figure.u.3"></div><pre class="text">HTTP/1.1 206 Partial Content
    760743Date: Wed, 15 Nov 1995 06:25:24 GMT
    761744Last-Modified: Wed, 15 Nov 1995 04:58:08 GMT
     
    777760         one or more Range specifications. After several such transfers, a client might have received several ranges of the same representation.
    778761         These ranges can only be safely combined if they all have in common the same strong validator, where "strong validator" is
    779          defined to be either an entity-tag that is not marked as weak (<a href="p4-conditional.html#header.etag" title="ETag">Section 2.3</a> of <a href="#Part4" id="rfc.xref.Part4.2"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a>) or, if no entity-tag is provided, a <a href="p4-conditional.html#header.last-modified" class="smpl">Last-Modified</a> value that is strong in the sense defined by <a href="p4-conditional.html#lastmod.comparison" title="Comparison">Section 2.2.2</a> of <a href="#Part4" id="rfc.xref.Part4.3"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a>.
     762         defined to be either an entity-tag that is not marked as weak (<a href="p4-conditional.html#header.etag" title="ETag">Section 2.3</a> of <a href="#Part4" id="rfc.xref.Part4.1"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a>) or, if no entity-tag is provided, a <a href="p4-conditional.html#header.last-modified" class="smpl">Last-Modified</a> value that is strong in the sense defined by <a href="p4-conditional.html#lastmod.comparison" title="Comparison">Section 2.2.2</a> of <a href="#Part4" id="rfc.xref.Part4.2"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a>.
    780763      </p>
    781764      <p id="rfc.section.4.2.p.2">When a client receives an incomplete <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a> or <a href="#status.206" class="smpl">206 (Partial Content)</a> response and already has one or more stored responses for the same method and effective request URI, all of the stored responses
     
    800783      <h2 id="rfc.section.5.1"><a href="#rfc.section.5.1">5.1</a>&nbsp;<a id="header.accept-ranges" href="#header.accept-ranges">Accept-Ranges</a></h2>
    801784      <p id="rfc.section.5.1.p.1">The "Accept-Ranges" header field allows a resource to indicate its acceptance of range requests.</p>
    802       <div id="rfc.figure.u.6"></div><pre class="inline"><span id="rfc.iref.g.4"></span><span id="rfc.iref.g.5"></span>  <a href="#header.accept-ranges" class="smpl">Accept-Ranges</a>     = <a href="#header.accept-ranges" class="smpl">acceptable-ranges</a>
     785      <div id="rfc.figure.u.4"></div><pre class="inline"><span id="rfc.iref.g.4"></span><span id="rfc.iref.g.5"></span>  <a href="#header.accept-ranges" class="smpl">Accept-Ranges</a>     = <a href="#header.accept-ranges" class="smpl">acceptable-ranges</a>
    803786  <a href="#header.accept-ranges" class="smpl">acceptable-ranges</a> = 1#<a href="#range.units" class="smpl">range-unit</a> / "none"
    804787</pre><p id="rfc.section.5.1.p.3">Origin servers that accept byte-range requests <em class="bcp14">MAY</em> send
    805788      </p>
    806       <div id="rfc.figure.u.7"></div><pre class="text">  Accept-Ranges: bytes
     789      <div id="rfc.figure.u.5"></div><pre class="text">  Accept-Ranges: bytes
    807790</pre><p id="rfc.section.5.1.p.5">but are not required to do so. Clients <em class="bcp14">MAY</em> generate range requests without having received this header field for the resource involved. Range units are defined in <a href="#range.units" title="Range Units">Section&nbsp;2</a>.
    808791      </p>
    809792      <p id="rfc.section.5.1.p.6">Servers that do not accept any kind of range request for a resource <em class="bcp14">MAY</em> send
    810793      </p>
    811       <div id="rfc.figure.u.8"></div><pre class="text">  Accept-Ranges: none
     794      <div id="rfc.figure.u.6"></div><pre class="text">  Accept-Ranges: none
    812795</pre><p id="rfc.section.5.1.p.8">to advise the client not to attempt a range request.</p>
    813796      <div id="rfc.iref.c.1"></div>
     
    819802      <p id="rfc.section.5.2.p.2">Range units are defined in <a href="#range.units" title="Range Units">Section&nbsp;2</a>.
    820803      </p>
    821       <div id="rfc.figure.u.9"></div><pre class="inline"><span id="rfc.iref.g.6"></span><span id="rfc.iref.g.7"></span><span id="rfc.iref.g.8"></span><span id="rfc.iref.g.9"></span>  <a href="#header.content-range" class="smpl">Content-Range</a>           = <a href="#header.content-range" class="smpl">byte-content-range-spec</a>
     804      <div id="rfc.figure.u.7"></div><pre class="inline"><span id="rfc.iref.g.6"></span><span id="rfc.iref.g.7"></span><span id="rfc.iref.g.8"></span><span id="rfc.iref.g.9"></span>  <a href="#header.content-range" class="smpl">Content-Range</a>           = <a href="#header.content-range" class="smpl">byte-content-range-spec</a>
    822805                          / <a href="#header.content-range" class="smpl">other-content-range-spec</a>
    823806                         
    824   <a href="#header.content-range" class="smpl">byte-content-range-spec</a> = <a href="#range.units" class="smpl">bytes-unit</a> <a href="#notation" class="smpl">SP</a>
     807  <a href="#header.content-range" class="smpl">byte-content-range-spec</a> = <a href="#range.units" class="smpl">bytes-unit</a> <a href="#imported.abnf" class="smpl">SP</a>
    825808                            <a href="#header.content-range" class="smpl">byte-range-resp-spec</a> "/"
    826809                            ( <a href="#header.content-range" class="smpl">instance-length</a> / "*" )
     
    829812                          / "*"
    830813                         
    831   <a href="#header.content-range" class="smpl">instance-length</a>         = 1*<a href="#notation" class="smpl">DIGIT</a>
     814  <a href="#header.content-range" class="smpl">instance-length</a>         = 1*<a href="#imported.abnf" class="smpl">DIGIT</a>
    832815 
    833   <a href="#header.content-range" class="smpl">other-content-range-spec</a> = <a href="#range.units" class="smpl">other-range-unit</a> <a href="#notation" class="smpl">SP</a>
     816  <a href="#header.content-range" class="smpl">other-content-range-spec</a> = <a href="#range.units" class="smpl">other-range-unit</a> <a href="#imported.abnf" class="smpl">SP</a>
    834817                             <a href="#header.content-range" class="smpl">other-range-resp-spec</a>
    835   <a href="#header.content-range" class="smpl">other-range-resp-spec</a>    = *<a href="#notation" class="smpl">CHAR</a>
     818  <a href="#header.content-range" class="smpl">other-range-resp-spec</a>    = *<a href="#imported.abnf" class="smpl">CHAR</a>
    836819</pre><p id="rfc.section.5.2.p.4">The header field <em class="bcp14">SHOULD</em> indicate the total length of the full representation, unless this length is unknown or difficult to determine. The asterisk
    837820         "*" character means that the instance-length is unknown at the time when the response was generated.
     
    852835      <ul>
    853836         <li>The first 500 bytes:
    854             <div id="rfc.figure.u.10"></div><pre class="text">  bytes 0-499/1234
     837            <div id="rfc.figure.u.8"></div><pre class="text">  bytes 0-499/1234
    855838</pre> </li>
    856839         <li>The second 500 bytes:
    857             <div id="rfc.figure.u.11"></div><pre class="text">  bytes 500-999/1234
     840            <div id="rfc.figure.u.9"></div><pre class="text">  bytes 500-999/1234
    858841</pre> </li>
    859842         <li>All except for the first 500 bytes:
    860             <div id="rfc.figure.u.12"></div><pre class="text">  bytes 500-1233/1234
     843            <div id="rfc.figure.u.10"></div><pre class="text">  bytes 500-1233/1234
    861844</pre> </li>
    862845         <li>The last 500 bytes:
    863             <div id="rfc.figure.u.13"></div><pre class="text">  bytes 734-1233/1234
     846            <div id="rfc.figure.u.11"></div><pre class="text">  bytes 734-1233/1234
    864847</pre> </li>
    865848      </ul>
     
    877860         is unchanged, send me the part(s) that I am missing; otherwise, send me the entire new representation".
    878861      </p>
    879       <div id="rfc.figure.u.14"></div><pre class="inline"><span id="rfc.iref.g.10"></span>  <a href="#header.if-range" class="smpl">If-Range</a> = <a href="#abnf.dependencies" class="smpl">entity-tag</a> / <a href="#core.rules" class="smpl">HTTP-date</a>
     862      <div id="rfc.figure.u.12"></div><pre class="inline"><span id="rfc.iref.g.10"></span>  <a href="#header.if-range" class="smpl">If-Range</a> = <a href="#imported.abnf" class="smpl">entity-tag</a> / <a href="#imported.abnf" class="smpl">HTTP-date</a>
    880863</pre><p id="rfc.section.5.3.p.4">Clients <em class="bcp14">MUST NOT</em> use an entity-tag marked as weak in an If-Range field value and <em class="bcp14">MUST NOT</em> use a <a href="p4-conditional.html#header.last-modified" class="smpl">Last-Modified</a> date in an If-Range field value unless it has no entity-tag for the representation and the Last-Modified date it does have
    881          for the representation is strong in the sense defined by <a href="p4-conditional.html#lastmod.comparison" title="Comparison">Section 2.2.2</a> of <a href="#Part4" id="rfc.xref.Part4.4"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a>.
     864         for the representation is strong in the sense defined by <a href="p4-conditional.html#lastmod.comparison" title="Comparison">Section 2.2.2</a> of <a href="#Part4" id="rfc.xref.Part4.3"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a>.
    882865      </p>
    883866      <p id="rfc.section.5.3.p.5">A server that evaluates a conditional range request that is applicable to one of its representations <em class="bcp14">MUST</em> evaluate the condition as false if the entity-tag used as a validator is marked as weak or, when an HTTP-date is used as the
    884          validator, if the date value is not strong in the sense defined by <a href="p4-conditional.html#lastmod.comparison" title="Comparison">Section 2.2.2</a> of <a href="#Part4" id="rfc.xref.Part4.5"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a>. (A server can distinguish between a valid HTTP-date and any form of entity-tag by examining the first two characters.)
     867         validator, if the date value is not strong in the sense defined by <a href="p4-conditional.html#lastmod.comparison" title="Comparison">Section 2.2.2</a> of <a href="#Part4" id="rfc.xref.Part4.4"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a>. (A server can distinguish between a valid HTTP-date and any form of entity-tag by examining the first two characters.)
    885868      </p>
    886869      <p id="rfc.section.5.3.p.6">The If-Range header field <em class="bcp14">SHOULD</em> only be sent by clients together with a Range header field. The If-Range header field <em class="bcp14">MUST</em> be ignored if it is received in a request that does not include a Range header field. The If-Range header field <em class="bcp14">MUST</em> be ignored by a server that does not support the sub-range operation.
     
    903886         </p>
    904887      </div>
    905       <div id="rfc.figure.u.15"></div><pre class="inline"><span id="rfc.iref.g.11"></span><span id="rfc.iref.g.12"></span><span id="rfc.iref.g.13"></span><span id="rfc.iref.g.14"></span><span id="rfc.iref.g.15"></span><span id="rfc.iref.g.16"></span>  <a href="#rule.ranges-specifier" class="smpl">byte-ranges-specifier</a> = <a href="#range.units" class="smpl">bytes-unit</a> "=" <a href="#rule.ranges-specifier" class="smpl">byte-range-set</a>
     888      <div id="rfc.figure.u.13"></div><pre class="inline"><span id="rfc.iref.g.11"></span><span id="rfc.iref.g.12"></span><span id="rfc.iref.g.13"></span><span id="rfc.iref.g.14"></span><span id="rfc.iref.g.15"></span><span id="rfc.iref.g.16"></span>  <a href="#rule.ranges-specifier" class="smpl">byte-ranges-specifier</a> = <a href="#range.units" class="smpl">bytes-unit</a> "=" <a href="#rule.ranges-specifier" class="smpl">byte-range-set</a>
    906889  <a href="#rule.ranges-specifier" class="smpl">byte-range-set</a>  = 1#( <a href="#rule.ranges-specifier" class="smpl">byte-range-spec</a> / <a href="#rule.ranges-specifier" class="smpl">suffix-byte-range-spec</a> )
    907890  <a href="#rule.ranges-specifier" class="smpl">byte-range-spec</a> = <a href="#rule.ranges-specifier" class="smpl">first-byte-pos</a> "-" [ <a href="#rule.ranges-specifier" class="smpl">last-byte-pos</a> ]
    908   <a href="#rule.ranges-specifier" class="smpl">first-byte-pos</a>  = 1*<a href="#notation" class="smpl">DIGIT</a>
    909   <a href="#rule.ranges-specifier" class="smpl">last-byte-pos</a>   = 1*<a href="#notation" class="smpl">DIGIT</a>
     891  <a href="#rule.ranges-specifier" class="smpl">first-byte-pos</a>  = 1*<a href="#imported.abnf" class="smpl">DIGIT</a>
     892  <a href="#rule.ranges-specifier" class="smpl">last-byte-pos</a>   = 1*<a href="#imported.abnf" class="smpl">DIGIT</a>
    910893</pre><p id="rfc.section.5.4.1.p.5">The first-byte-pos value in a byte-range-spec gives the byte-offset of the first byte in a range. The last-byte-pos value
    911894         gives the byte-offset of the last byte in the range; that is, the byte positions specified are inclusive. Byte offsets start
     
    919902      </p>
    920903      <p id="rfc.section.5.4.1.p.8">By its choice of last-byte-pos, a client can limit the number of bytes retrieved without knowing the size of the representation.</p>
    921       <div id="rfc.figure.u.16"></div><pre class="inline"><span id="rfc.iref.g.17"></span><span id="rfc.iref.g.18"></span>  <a href="#rule.ranges-specifier" class="smpl">suffix-byte-range-spec</a> = "-" <a href="#rule.ranges-specifier" class="smpl">suffix-length</a>
    922   <a href="#rule.ranges-specifier" class="smpl">suffix-length</a> = 1*<a href="#notation" class="smpl">DIGIT</a>
     904      <div id="rfc.figure.u.14"></div><pre class="inline"><span id="rfc.iref.g.17"></span><span id="rfc.iref.g.18"></span>  <a href="#rule.ranges-specifier" class="smpl">suffix-byte-range-spec</a> = "-" <a href="#rule.ranges-specifier" class="smpl">suffix-length</a>
     905  <a href="#rule.ranges-specifier" class="smpl">suffix-length</a> = 1*<a href="#imported.abnf" class="smpl">DIGIT</a>
    923906</pre><p id="rfc.section.5.4.1.p.10">A suffix-byte-range-spec is used to specify the suffix of the representation body, of a length given by the suffix-length
    924907         value. (That is, this form specifies the last N bytes of a representation.) If the representation is shorter than the specified
     
    934917      <ul>
    935918         <li>The first 500 bytes (byte offsets 0-499, inclusive):
    936             <div id="rfc.figure.u.17"></div><pre class="text">  bytes=0-499
     919            <div id="rfc.figure.u.15"></div><pre class="text">  bytes=0-499
    937920</pre> </li>
    938921         <li>The second 500 bytes (byte offsets 500-999, inclusive):
    939             <div id="rfc.figure.u.18"></div><pre class="text">  bytes=500-999
     922            <div id="rfc.figure.u.16"></div><pre class="text">  bytes=500-999
    940923</pre> </li>
    941924         <li>The final 500 bytes (byte offsets 9500-9999, inclusive):
    942             <div id="rfc.figure.u.19"></div><pre class="text">  bytes=-500
    943 </pre> Or: <div id="rfc.figure.u.20"></div><pre class="text">  bytes=9500-
     925            <div id="rfc.figure.u.17"></div><pre class="text">  bytes=-500
     926</pre> Or: <div id="rfc.figure.u.18"></div><pre class="text">  bytes=9500-
    944927</pre> </li>
    945928         <li>The first and last bytes only (bytes 0 and 9999):
    946             <div id="rfc.figure.u.21"></div><pre class="text">  bytes=0-0,-1
     929            <div id="rfc.figure.u.19"></div><pre class="text">  bytes=0-0,-1
    947930</pre> </li>
    948931         <li>Several legal but not canonical specifications of the second 500 bytes (byte offsets 500-999, inclusive):
    949             <div id="rfc.figure.u.22"></div><pre class="text">  bytes=500-600,601-999
     932            <div id="rfc.figure.u.20"></div><pre class="text">  bytes=500-600,601-999
    950933  bytes=500-700,601-999
    951934</pre> </li>
     
    955938         body, instead of the entire representation body.
    956939      </p>
    957       <div id="rfc.figure.u.23"></div><pre class="inline"><span id="rfc.iref.g.19"></span>  <a href="#range.retrieval.requests" class="smpl">Range</a> = <a href="#rule.ranges-specifier" class="smpl">byte-ranges-specifier</a> / <a href="#range.retrieval.requests" class="smpl">other-ranges-specifier</a>
     940      <div id="rfc.figure.u.21"></div><pre class="inline"><span id="rfc.iref.g.19"></span>  <a href="#range.retrieval.requests" class="smpl">Range</a> = <a href="#rule.ranges-specifier" class="smpl">byte-ranges-specifier</a> / <a href="#range.retrieval.requests" class="smpl">other-ranges-specifier</a>
    958941  <a href="#range.retrieval.requests" class="smpl">other-ranges-specifier</a> = <a href="#range.units" class="smpl">other-range-unit</a> "=" <a href="#range.retrieval.requests" class="smpl">other-range-set</a>
    959   <a href="#range.retrieval.requests" class="smpl">other-range-set</a> = 1*<a href="#notation" class="smpl">CHAR</a>
     942  <a href="#range.retrieval.requests" class="smpl">other-range-set</a> = 1*<a href="#imported.abnf" class="smpl">CHAR</a>
    960943</pre><p id="rfc.section.5.4.2.p.3">A server <em class="bcp14">MAY</em> ignore the Range header field. However, origin servers and intermediate caches ought to support byte ranges when possible,
    961944         since Range supports efficient recovery from partially failed transfers, and supports efficient partial retrieval of large
     
    10921075      </p>
    10931076      <h1 id="rfc.section.8"><a href="#rfc.section.8">8.</a>&nbsp;<a id="acks" href="#acks">Acknowledgments</a></h1>
    1094       <p id="rfc.section.8.p.1">See <a href="p1-messaging.html#acks" title="Acknowledgments">Section 9</a> of <a href="#Part1" id="rfc.xref.Part1.6"><cite title="HTTP/1.1, part 1: Message Routing and Syntax&#34;">[Part1]</cite></a>.
     1077      <p id="rfc.section.8.p.1">See <a href="p1-messaging.html#acks" title="Acknowledgments">Section 9</a> of <a href="#Part1" id="rfc.xref.Part1.3"><cite title="HTTP/1.1, part 1: Message Routing and Syntax&#34;">[Part1]</cite></a>.
    10951078      </p>
    10961079      <h1 id="rfc.references"><a id="rfc.section.9" href="#rfc.section.9">9.</a> References
     
    12241207         </p>
    12251208      </div>
    1226       <div id="rfc.figure.u.24"></div>
     1209      <div id="rfc.figure.u.22"></div>
    12271210      <p>For example:</p><pre class="text">  HTTP/1.1 206 Partial Content
    12281211  Date: Wed, 15 Nov 1995 06:25:24 GMT
     
    12411224  ...the second range
    12421225  --THIS_STRING_SEPARATES--
    1243 </pre><div id="rfc.figure.u.25"></div>
     1226</pre><div id="rfc.figure.u.23"></div>
    12441227      <p>Another example, using the "exampleunit" range unit:</p>  <pre class="text">  HTTP/1.1 206 Partial Content
    12451228  Date: Tue, 14 Nov 1995 06:25:24 GMT
     
    12761259      <p id="rfc.section.B.p.4">Clarify that multipart/byteranges can consist of a single part. (<a href="#internet.media.type.multipart.byteranges" title="Internet Media Type multipart/byteranges">Appendix&nbsp;A</a>)
    12771260      </p>
    1278       <h1 id="rfc.section.C"><a href="#rfc.section.C">C.</a>&nbsp;<a id="collected.abnf" href="#collected.abnf">Collected ABNF</a></h1>
     1261      <h1 id="rfc.section.C"><a href="#rfc.section.C">C.</a>&nbsp;<a id="imported.abnf" href="#imported.abnf">Imported ABNF</a></h1>
     1262      <p id="rfc.section.C.p.1">The following core rules are included by reference, as defined in <a href="#RFC5234" id="rfc.xref.RFC5234.2"><cite title="Augmented BNF for Syntax Specifications: ABNF">[RFC5234]</cite></a>, <a href="http://tools.ietf.org/html/rfc5234#appendix-B.1">Appendix B.1</a>: ALPHA (letters), CR (carriage return), CRLF (CR LF), CTL (controls), DIGIT (decimal 0-9), DQUOTE (double quote), HEXDIG
     1263         (hexadecimal 0-9/A-F/a-f), LF (line feed), OCTET (any 8-bit sequence of data), SP (space), and VCHAR (any visible US-ASCII
     1264         character).
     1265      </p>
     1266      <p id="rfc.section.C.p.2">Note that all rules derived from <a href="#imported.abnf" class="smpl">token</a> are to be compared case-insensitively, like <a href="#range.units" class="smpl">range-unit</a> and <a href="#header.accept-ranges" class="smpl">acceptable-ranges</a>.
     1267      </p>
     1268      <p id="rfc.section.C.p.3">The rules below are defined in <a href="#Part1" id="rfc.xref.Part1.4"><cite title="HTTP/1.1, part 1: Message Routing and Syntax&#34;">[Part1]</cite></a>:
     1269      </p>
     1270      <div id="rfc.figure.u.24"></div><pre class="inline">  <a href="#imported.abnf" class="smpl">OWS</a>        = &lt;OWS, defined in <a href="#Part1" id="rfc.xref.Part1.5"><cite title="HTTP/1.1, part 1: Message Routing and Syntax&#34;">[Part1]</cite></a>, <a href="p1-messaging.html#whitespace" title="Whitespace">Section 3.2.1</a>&gt;
     1271  <a href="#imported.abnf" class="smpl">token</a>      = &lt;token, defined in <a href="#Part1" id="rfc.xref.Part1.6"><cite title="HTTP/1.1, part 1: Message Routing and Syntax&#34;">[Part1]</cite></a>, <a href="p1-messaging.html#field.components" title="Field value components">Section 3.2.4</a>&gt;
     1272</pre><p id="rfc.section.C.p.5">The rules below are defined in other parts:</p>
     1273      <div id="rfc.figure.u.25"></div><pre class="inline">  <a href="#imported.abnf" class="smpl">HTTP-date</a>  = &lt;HTTP-date, defined in <a href="#Part2" id="rfc.xref.Part2.1"><cite title="HTTP/1.1, part 2: Semantics and Payloads">[Part2]</cite></a>, <a href="p2-semantics.html#http.date" title="Date/Time Formats">Section 5.1</a>&gt;
     1274  <a href="#imported.abnf" class="smpl">entity-tag</a> = &lt;entity-tag, defined in <a href="#Part4" id="rfc.xref.Part4.5"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a>, <a href="p4-conditional.html#header.etag" title="ETag">Section 2.3</a>&gt;
     1275</pre><h1 id="rfc.section.D"><a href="#rfc.section.D">D.</a>&nbsp;<a id="collected.abnf" href="#collected.abnf">Collected ABNF</a></h1>
    12791276      <div id="rfc.figure.u.26"></div> <pre class="inline"><a href="#header.accept-ranges" class="smpl">Accept-Ranges</a> = acceptable-ranges
    12801277
    12811278<a href="#header.content-range" class="smpl">Content-Range</a> = byte-content-range-spec / other-content-range-spec
    12821279
    1283 <a href="#core.rules" class="smpl">HTTP-date</a> = &lt;HTTP-date, defined in [Part2], Section 5.1&gt;
     1280<a href="#imported.abnf" class="smpl">HTTP-date</a> = &lt;HTTP-date, defined in [Part2], Section 5.1&gt;
    12841281
    12851282<a href="#header.if-range" class="smpl">If-Range</a> = entity-tag / HTTP-date
    12861283
    1287 <a href="#core.rules" class="smpl">OWS</a> = &lt;OWS, defined in [Part1], Section 3.2.1&gt;
     1284<a href="#imported.abnf" class="smpl">OWS</a> = &lt;OWS, defined in [Part1], Section 3.2.1&gt;
    12881285
    12891286<a href="#range.retrieval.requests" class="smpl">Range</a> = byte-ranges-specifier / other-ranges-specifier
     
    13021299<a href="#range.units" class="smpl">bytes-unit</a> = "bytes"
    13031300
    1304 <a href="#abnf.dependencies" class="smpl">entity-tag</a> = &lt;entity-tag, defined in [Part4], Section 2.3&gt;
     1301<a href="#imported.abnf" class="smpl">entity-tag</a> = &lt;entity-tag, defined in [Part4], Section 2.3&gt;
    13051302
    13061303<a href="#rule.ranges-specifier" class="smpl">first-byte-pos</a> = 1*DIGIT
     
    13211318<a href="#rule.ranges-specifier" class="smpl">suffix-length</a> = 1*DIGIT
    13221319
    1323 <a href="#core.rules" class="smpl">token</a> = &lt;token, defined in [Part1], Section 3.2.4&gt;
    1324 </pre> <h1 id="rfc.section.D"><a href="#rfc.section.D">D.</a>&nbsp;<a id="change.log" href="#change.log">Change Log (to be removed by RFC Editor before publication)</a></h1>
    1325       <p id="rfc.section.D.p.1">Changes up to the first Working Group Last Call draft are summarized in &lt;<a href="http://tools.ietf.org/html/draft-ietf-httpbis-p5-range-19#appendix-D">http://tools.ietf.org/html/draft-ietf-httpbis-p5-range-19#appendix-D</a>&gt;.
    1326       </p>
    1327       <h2 id="rfc.section.D.1"><a href="#rfc.section.D.1">D.1</a>&nbsp;<a id="changes.since.19" href="#changes.since.19">Since draft-ietf-httpbis-p5-range-19</a></h2>
    1328       <p id="rfc.section.D.1.p.1">Closed issues: </p>
     1320<a href="#imported.abnf" class="smpl">token</a> = &lt;token, defined in [Part1], Section 3.2.4&gt;
     1321</pre> <h1 id="rfc.section.E"><a href="#rfc.section.E">E.</a>&nbsp;<a id="change.log" href="#change.log">Change Log (to be removed by RFC Editor before publication)</a></h1>
     1322      <p id="rfc.section.E.p.1">Changes up to the first Working Group Last Call draft are summarized in &lt;<a href="http://tools.ietf.org/html/draft-ietf-httpbis-p5-range-19#appendix-D">http://tools.ietf.org/html/draft-ietf-httpbis-p5-range-19#appendix-D</a>&gt;.
     1323      </p>
     1324      <h2 id="rfc.section.E.1"><a href="#rfc.section.E.1">E.1</a>&nbsp;<a id="changes.since.19" href="#changes.since.19">Since draft-ietf-httpbis-p5-range-19</a></h2>
     1325      <p id="rfc.section.E.1.p.1">Closed issues: </p>
    13291326      <ul>
    13301327         <li> &lt;<a href="http://tools.ietf.org/wg/httpbis/trac/ticket/358">http://tools.ietf.org/wg/httpbis/trac/ticket/358</a>&gt;: "ABNF list expansion code problem"
     
    14131410            </li>
    14141411            <li><a id="rfc.index.P" href="#rfc.index.P"><b>P</b></a><ul>
    1415                   <li><em>Part1</em>&nbsp;&nbsp;<a href="#rfc.xref.Part1.1">1.1</a>, <a href="#rfc.xref.Part1.2">1.2</a>, <a href="#rfc.xref.Part1.3">1.2.1</a>, <a href="#rfc.xref.Part1.4">1.2.1</a>, <a href="#rfc.xref.Part1.5">1.2.1</a>, <a href="#rfc.xref.Part1.6">8</a>, <a href="#Part1"><b>9.1</b></a><ul>
     1412                  <li><em>Part1</em>&nbsp;&nbsp;<a href="#rfc.xref.Part1.1">1.1</a>, <a href="#rfc.xref.Part1.2">1.2</a>, <a href="#rfc.xref.Part1.3">8</a>, <a href="#Part1"><b>9.1</b></a>, <a href="#rfc.xref.Part1.4">C</a>, <a href="#rfc.xref.Part1.5">C</a>, <a href="#rfc.xref.Part1.6">C</a><ul>
    14161413                        <li><em>Section 1.2</em>&nbsp;&nbsp;<a href="#rfc.xref.Part1.2">1.2</a></li>
    14171414                        <li><em>Section 2</em>&nbsp;&nbsp;<a href="#rfc.xref.Part1.1">1.1</a></li>
    1418                         <li><em>Section 3.2.1</em>&nbsp;&nbsp;<a href="#rfc.xref.Part1.4">1.2.1</a></li>
    1419                         <li><em>Section 3.2.4</em>&nbsp;&nbsp;<a href="#rfc.xref.Part1.5">1.2.1</a></li>
    1420                         <li><em>Section 9</em>&nbsp;&nbsp;<a href="#rfc.xref.Part1.6">8</a></li>
     1415                        <li><em>Section 3.2.1</em>&nbsp;&nbsp;<a href="#rfc.xref.Part1.5">C</a></li>
     1416                        <li><em>Section 3.2.4</em>&nbsp;&nbsp;<a href="#rfc.xref.Part1.6">C</a></li>
     1417                        <li><em>Section 9</em>&nbsp;&nbsp;<a href="#rfc.xref.Part1.3">8</a></li>
    14211418                     </ul>
    14221419                  </li>
    1423                   <li><em>Part2</em>&nbsp;&nbsp;<a href="#rfc.xref.Part2.1">1.2.1</a>, <a href="#rfc.xref.Part2.2">1.2.1</a>, <a href="#Part2"><b>9.1</b></a><ul>
    1424                         <li><em>Section 5.1</em>&nbsp;&nbsp;<a href="#rfc.xref.Part2.2">1.2.1</a></li>
     1420                  <li><em>Part2</em>&nbsp;&nbsp;<a href="#Part2"><b>9.1</b></a>, <a href="#rfc.xref.Part2.1">C</a><ul>
     1421                        <li><em>Section 5.1</em>&nbsp;&nbsp;<a href="#rfc.xref.Part2.1">C</a></li>
    14251422                     </ul>
    14261423                  </li>
    1427                   <li><em>Part4</em>&nbsp;&nbsp;<a href="#rfc.xref.Part4.1">1.2.2</a>, <a href="#rfc.xref.Part4.2">4.2</a>, <a href="#rfc.xref.Part4.3">4.2</a>, <a href="#rfc.xref.Part4.4">5.3</a>, <a href="#rfc.xref.Part4.5">5.3</a>, <a href="#Part4"><b>9.1</b></a><ul>
    1428                         <li><em>Section 2.2.2</em>&nbsp;&nbsp;<a href="#rfc.xref.Part4.3">4.2</a>, <a href="#rfc.xref.Part4.4">5.3</a>, <a href="#rfc.xref.Part4.5">5.3</a></li>
    1429                         <li><em>Section 2.3</em>&nbsp;&nbsp;<a href="#rfc.xref.Part4.1">1.2.2</a>, <a href="#rfc.xref.Part4.2">4.2</a></li>
     1424                  <li><em>Part4</em>&nbsp;&nbsp;<a href="#rfc.xref.Part4.1">4.2</a>, <a href="#rfc.xref.Part4.2">4.2</a>, <a href="#rfc.xref.Part4.3">5.3</a>, <a href="#rfc.xref.Part4.4">5.3</a>, <a href="#Part4"><b>9.1</b></a>, <a href="#rfc.xref.Part4.5">C</a><ul>
     1425                        <li><em>Section 2.2.2</em>&nbsp;&nbsp;<a href="#rfc.xref.Part4.2">4.2</a>, <a href="#rfc.xref.Part4.3">5.3</a>, <a href="#rfc.xref.Part4.4">5.3</a></li>
     1426                        <li><em>Section 2.3</em>&nbsp;&nbsp;<a href="#rfc.xref.Part4.1">4.2</a>, <a href="#rfc.xref.Part4.5">C</a></li>
    14301427                     </ul>
    14311428                  </li>
     
    14501447                     </ul>
    14511448                  </li>
    1452                   <li><em>RFC5234</em>&nbsp;&nbsp;<a href="#rfc.xref.RFC5234.1">1.2</a>, <a href="#rfc.xref.RFC5234.2">1.2</a>, <a href="#RFC5234"><b>9.1</b></a><ul>
    1453                         <li><em>Appendix B.1</em>&nbsp;&nbsp;<a href="#rfc.xref.RFC5234.2">1.2</a></li>
     1449                  <li><em>RFC5234</em>&nbsp;&nbsp;<a href="#rfc.xref.RFC5234.1">1.2</a>, <a href="#RFC5234"><b>9.1</b></a>, <a href="#rfc.xref.RFC5234.2">C</a><ul>
     1450                        <li><em>Appendix B.1</em>&nbsp;&nbsp;<a href="#rfc.xref.RFC5234.2">C</a></li>
    14541451                     </ul>
    14551452                  </li>
Note: See TracChangeset for help on using the changeset viewer.