Changeset 10506

Show
Ignore:
Timestamp:
02/02/08 03:04:50 (2 years ago)
Author:
dave
Message:

rstbep2html applied to rst files. Addition of BEP headers to most rst files.

Location:
dotorg/trunk/html/beps
Files:
6 added
8 modified
1 moved

Legend:

Unmodified
Added
Removed
  • dotorg/trunk/html/beps/bep_0000.html

    r10492 r10506  
    1 <?xml version="1.0" encoding="utf-8" ?> 
    2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
    4 <!-- 
    5 This HTML is auto-generated.  DO NOT EDIT THIS FILE!  If you are writing a new 
    6 BEP, see http://www.bittorrent.org/beps/bep_0001.html for instructions and links 
    7 to templates.  DO NOT USE THIS HTML FILE AS YOUR TEMPLATE! 
    8 --> 
    9 <head> 
    10   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    11   <meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" /> 
    12   <title>BEP 0 -- Index of BitTorrent Enhancement Proposals</title> 
    13   <style type="text/css"> 
    14  
    15 /* 
    16 :Author: David Goodger 
    17 :Contact: goodger@python.org 
    18 :date: $Date: 2006-05-21 22:44:42 +0200 (Sun, 21 May 2006) $ 
    19 :version: $Revision: 4564 $ 
    20 :copyright: This stylesheet has been placed in the public domain. 
    21  
    22 Default cascading style sheet for the BEP HTML output of Docutils. 
    23 */ 
    24  
    25 /* "! important" is used here to override other ``margin-top`` and 
    26    ``margin-bottom`` styles that are later in the stylesheet or  
    27    more specific.  See http://www.w3.org/TR/CSS1#the-cascade */ 
    28 .first { 
    29   margin-top: 0 ! important } 
    30  
    31 .last, .with-subtitle { 
    32   margin-bottom: 0 ! important } 
    33  
    34 .hidden { 
    35   display: none } 
    36  
    37 .navigation { 
    38   width: 100% ; 
    39   background: #99ccff ; 
    40   margin-top: 0px ; 
    41   margin-bottom: 0px } 
    42  
    43 .navigation .navicon { 
    44   width: 150px ; 
    45   height: 35px } 
    46  
    47 .navigation .textlinks { 
    48   padding-left: 1em ; 
    49   text-align: left } 
    50  
    51 .navigation td, .navigation th { 
    52   padding-left: 0em ; 
    53   padding-right: 0em ; 
    54   vertical-align: middle } 
    55  
    56 .rfc2822 { 
    57   margin-top: 0.5em ; 
    58   margin-left: 0.5em ; 
    59   margin-right: 0.5em ; 
    60   margin-bottom: 0em } 
    61  
    62 .rfc2822 td { 
    63   text-align: left } 
    64  
    65 .rfc2822 th.field-name { 
    66   text-align: right ; 
    67   font-family: sans-serif ; 
    68   padding-right: 0.5em ; 
    69   font-weight: bold ; 
    70   margin-bottom: 0em } 
    71  
    72 a.toc-backref { 
    73   text-decoration: none ; 
    74   color: black } 
    75  
    76 blockquote.epigraph { 
    77   margin: 2em 5em ; } 
    78  
    79 body { 
    80   margin: 0px ; 
    81   margin-bottom: 1em ; 
    82   padding: 0px } 
    83  
    84 dl.docutils dd { 
    85   margin-bottom: 0.5em } 
    86  
    87 div.section { 
    88   margin-left: 1em ; 
    89   margin-right: 1em ; 
    90   margin-bottom: 1.5em } 
    91  
    92 div.section div.section { 
    93   margin-left: 0em ; 
    94   margin-right: 0em ; 
    95   margin-top: 1.5em } 
    96  
    97 div.abstract { 
    98   margin: 2em 5em } 
    99  
    100 div.abstract p.topic-title { 
    101   font-weight: bold ; 
    102   text-align: center } 
    103  
    104 div.admonition, div.attention, div.caution, div.danger, div.error, 
    105 div.hint, div.important, div.note, div.tip, div.warning { 
    106   margin: 2em ; 
    107   border: medium outset ; 
    108   padding: 1em } 
    109  
    110 div.admonition p.admonition-title, div.hint p.admonition-title, 
    111 div.important p.admonition-title, div.note p.admonition-title, 
    112 div.tip p.admonition-title { 
    113   font-weight: bold ; 
    114   font-family: sans-serif } 
    115  
    116 div.attention p.admonition-title, div.caution p.admonition-title, 
    117 div.danger p.admonition-title, div.error p.admonition-title, 
    118 div.warning p.admonition-title { 
    119   color: red ; 
    120   font-weight: bold ; 
    121   font-family: sans-serif } 
    122  
    123 /* Uncomment (and remove this text!) to get reduced vertical space in 
    124    compound paragraphs. 
    125 div.compound .compound-first, div.compound .compound-middle { 
    126   margin-bottom: 0.5em } 
    127  
    128 div.compound .compound-last, div.compound .compound-middle { 
    129   margin-top: 0.5em } 
    130 */ 
    131  
    132 div.dedication { 
    133   margin: 2em 5em ; 
    134   text-align: center ; 
    135   font-style: italic } 
    136  
    137 div.dedication p.topic-title { 
    138   font-weight: bold ; 
    139   font-style: normal } 
    140  
    141 div.figure { 
    142   margin-left: 2em ; 
    143   margin-right: 2em } 
    144  
    145 div.footer, div.header { 
    146   clear: both; 
    147   font-size: smaller } 
    148  
    149 div.footer { 
    150   margin-left: 1em ; 
    151   margin-right: 1em } 
    152  
    153 div.line-block { 
    154   display: block ; 
    155   margin-top: 1em ; 
    156   margin-bottom: 1em } 
    157  
    158 div.line-block div.line-block { 
    159   margin-top: 0 ; 
    160   margin-bottom: 0 ; 
    161   margin-left: 1.5em } 
    162  
    163 div.sidebar { 
    164   margin-left: 1em ; 
    165   border: medium outset ; 
    166   padding: 1em ; 
    167   background-color: #ffffee ; 
    168   width: 40% ; 
    169   float: right ; 
    170   clear: right } 
    171  
    172 div.sidebar p.rubric { 
    173   font-family: sans-serif ; 
    174   font-size: medium } 
    175  
    176 div.system-messages { 
    177   margin: 5em } 
    178  
    179 div.system-messages h1 { 
    180   color: red } 
    181  
    182 div.system-message { 
    183   border: medium outset ; 
    184   padding: 1em } 
    185  
    186 div.system-message p.system-message-title { 
    187   color: red ; 
    188   font-weight: bold } 
    189  
    190 div.topic { 
    191   margin: 2em } 
    192  
    193 h1.section-subtitle, h2.section-subtitle, h3.section-subtitle, 
    194 h4.section-subtitle, h5.section-subtitle, h6.section-subtitle { 
    195   margin-top: 0.4em } 
    196  
    197 h1 { 
    198   font-family: sans-serif ; 
    199   font-size: large } 
    200  
    201 h2 { 
    202   font-family: sans-serif ; 
    203   font-size: medium } 
    204  
    205 h3 { 
    206   font-family: sans-serif ; 
    207   font-size: small } 
    208  
    209 h4 { 
    210   font-family: sans-serif ; 
    211   font-style: italic ; 
    212   font-size: small } 
    213  
    214 h5 { 
    215   font-family: sans-serif; 
    216   font-size: x-small } 
    217  
    218 h6 { 
    219   font-family: sans-serif; 
    220   font-style: italic ; 
    221   font-size: x-small } 
    222  
    223 hr.docutils { 
    224   width: 75% } 
    225  
    226 img.align-left { 
    227   clear: left } 
    228  
    229 img.align-right { 
    230   clear: right } 
    231  
    232 img.borderless { 
    233   border: 0 } 
    234  
    235 ol.simple, ul.simple { 
    236   margin-bottom: 1em } 
    237  
    238 ol.arabic { 
    239   list-style: decimal } 
    240  
    241 ol.loweralpha { 
    242   list-style: lower-alpha } 
    243  
    244 ol.upperalpha { 
    245   list-style: upper-alpha } 
    246  
    247 ol.lowerroman { 
    248   list-style: lower-roman } 
    249  
    250 ol.upperroman { 
    251   list-style: upper-roman } 
    252  
    253 p.attribution { 
    254   text-align: right ; 
    255   margin-left: 50% } 
    256  
    257 p.caption { 
    258   font-style: italic } 
    259  
    260 p.credits { 
    261   font-style: italic ; 
    262   font-size: smaller } 
    263  
    264 p.label { 
    265   white-space: nowrap } 
    266  
    267 p.rubric { 
    268   font-weight: bold ; 
    269   font-size: larger ; 
    270   color: maroon ; 
    271   text-align: center } 
    272  
    273 p.sidebar-title { 
    274   font-family: sans-serif ; 
    275   font-weight: bold ; 
    276   font-size: larger } 
    277  
    278 p.sidebar-subtitle { 
    279   font-family: sans-serif ; 
    280   font-weight: bold } 
    281  
    282 p.topic-title { 
    283   font-family: sans-serif ; 
    284   font-weight: bold } 
    285  
    286 pre.address { 
    287   margin-bottom: 0 ; 
    288   margin-top: 0 ; 
    289   font-family: serif ; 
    290   font-size: 100% } 
    291  
    292 pre.literal-block, pre.doctest-block { 
    293   margin-left: 2em ; 
    294   margin-right: 2em } 
    295  
    296 span.classifier { 
    297   font-family: sans-serif ; 
    298   font-style: oblique } 
    299  
    300 span.classifier-delimiter { 
    301   font-family: sans-serif ; 
    302   font-weight: bold } 
    303  
    304 span.interpreted { 
    305   font-family: sans-serif } 
    306  
    307 span.option { 
    308   white-space: nowrap } 
    309  
    310 span.option-argument { 
    311   font-style: italic } 
    312  
    313 span.pre { 
    314   white-space: pre } 
    315  
    316 span.problematic { 
    317   color: red } 
    318  
    319 span.section-subtitle { 
    320   /* font-size relative to parent (h1..h6 element) */ 
    321   font-size: 80% } 
    322  
    323 table.citation { 
    324   border-left: solid 1px gray; 
    325   margin-left: 1px } 
    326  
    327 table.docinfo { 
    328   margin: 2em 4em } 
    329  
    330 table.docutils { 
    331   margin-top: 0.5em ; 
    332   margin-bottom: 0.5em } 
    333  
    334 table.footnote { 
    335   border-left: solid 1px black; 
    336   margin-left: 1px } 
    337  
    338 table.docutils td, table.docutils th, 
    339 table.docinfo td, table.docinfo th { 
    340   padding-left: 0.5em ; 
    341   padding-right: 0.5em ; 
    342   vertical-align: top } 
    343  
    344 td.num { 
    345   text-align: right } 
    346  
    347 th.field-name { 
    348   font-weight: bold ; 
    349   text-align: left ; 
    350   white-space: nowrap ; 
    351   padding-left: 0 } 
    352  
    353 h1 tt.docutils, h2 tt.docutils, h3 tt.docutils, 
    354 h4 tt.docutils, h5 tt.docutils, h6 tt.docutils { 
    355   font-size: 100% } 
    356  
    357 ul.auto-toc { 
    358   list-style-type: none } 
    359  
    360 </style> 
    361 </head> 
    362 <body bgcolor="white"> 
    363 <table class="navigation" cellpadding="0" cellspacing="0" 
    364        width="100%" border="0"> 
    365 <tr><td class="navicon" width="150" height="35"> 
    366 <!--<a href="http://www.python.org/" title="Python Home Page"> 
    367 <img src="http://www.python.org/pics/PyBanner015.gif" alt="[Python]" 
    368  border="0" width="150" height="35" /></a></td> 
    369 <td class="textlinks" align="left"> 
    370 [<b><a href="http://www.bittorrent.org/">bittorrent.org</a></b>]--> 
    371 [<b><a href="http://www.bittorrent.org/beps/">BEP Index</a></b>] 
    372 [<b><a href="./bep-0000.txt">BEP Source</a></b>] 
    373 </td></tr></table> 
    374 <div class="document"> 
    375 <table class="rfc2822 docutils field-list" frame="void" rules="none"> 
    376 <col class="field-name" /> 
    377 <col class="field-body" /> 
    378 <tbody valign="top"> 
    379 <tr class="field"><th class="field-name">BEP:</th><td class="field-body">0</td> 
    380 </tr> 
    381 <tr class="field"><th class="field-name">Title:</th><td class="field-body">Index of BitTorrent Enhancement Proposals</td> 
    382 </tr> 
    383 <tr class="field"><th class="field-name">Version:</th><td class="field-body">1</td> 
    384 </tr> 
    385 <tr class="field"><th class="field-name">Last-Modified:</th><td class="field-body"><a class="reference external" href="https://svn.bittorrent.com/trac.cgi/browser/dotorg/trunk/html/beps/bep_0000.rst">11-Jan-2008</a></td> 
    386 </tr> 
    387 <tr class="field"><th class="field-name">Author:</th><td class="field-body">David Harrison</td> 
    388 </tr> 
    389 <tr class="field"><th class="field-name">Status:</th><td class="field-body">Active</td> 
    390 </tr> 
    391 <tr class="field"><th class="field-name">Type:</th><td class="field-body">Process</td> 
    392 </tr> 
    393 <tr class="field"><th class="field-name">Created:</th><td class="field-body">10-Jan-2008</td> 
    394 </tr> 
    395 <tr class="field"><th class="field-name">Post-History:</th><td class="field-body"></td> 
    396 </tr> 
    397 </tbody> 
    398 </table> 
    399 <hr /> 
    400 <div class="contents topic" id="contents"> 
    401 <p class="topic-title first">Contents</p> 
    402 <ul class="simple"> 
    403 <li><a class="reference internal" href="#id13" id="id34">References</a></li> 
    404 </ul> 
    405 </div> 
    406 <p>The BitTorrent Community Forum coordinates the development of the 
    407 BitTorrent protocol suite and its reference implementation. It is the 
    408 wish of Bram Cohen that the BitTorrent mainline python implementation 
    409 remain open source and that the protocol development process be 
    410 modelled after the Python Enhancement Proposal~(PEP) process.</p> 
    411 <p>This document indexes all BitTorrent Enhancement Proposals (BEPs). 
    412 When a new proposal is submitted, one of the BitTorrent.org editors 
    413 assigns a BEP number and updates this index appropriately.  The process 
    414 is modelled after the PEP process used in the python community [#python].  Each 
    415 document has a number that never changes and the history of document is 
    416 maintained in subversion [#svn].</p> 
    417 <table border="1" class="docutils"> 
    418 <colgroup> 
    419 <col width="11%" /> 
    420 <col width="89%" /> 
    421 </colgroup> 
    422 <thead valign="bottom"> 
    423 <tr><th class="head">Num</th> 
    424 <th class="head">Title</th> 
    425 </tr> 
    426 </thead> 
    427 <tbody valign="top"> 
    428 <tr><td><a class="reference external" href="bep_0000.html">0</a> <a class="footnote-reference" href="#id14" id="id15">[14]</a></td> 
    429 <td>Index of BitTorrent Enhancement Proporsals</td> 
    430 </tr> 
    431 <tr><td><a class="reference external" href="bep_0001.html">1</a> <a class="footnote-reference" href="#id16" id="id17">[15]</a></td> 
    432 <td>The BEP Process</td> 
    433 </tr> 
    434 <tr><td><a class="reference external" href="bep_0002.html">2</a> <a class="footnote-reference" href="#id18" id="id19">[16]</a></td> 
    435 <td>The BitTorrent Protocol Specification</td> 
    436 </tr> 
    437 <tr><td><a class="reference external" href="bep_0003.html">3</a> <a class="footnote-reference" href="#id20" id="id21">[17]</a></td> 
    438 <td>Known Number Allocations</td> 
    439 </tr> 
    440 <tr><td><a class="reference external" href="bep_0004.html">4</a> <a class="footnote-reference" href="#id22" id="id23">[18]</a></td> 
    441 <td>DHT Protocol</td> 
    442 </tr> 
    443 <tr><td><a class="reference external" href="bep_0005.html">5</a> <a class="footnote-reference" href="#id24" id="id25">[19]</a></td> 
    444 <td>Fast Extension</td> 
    445 </tr> 
    446 <tr><td><a class="reference external" href="bep_0006.html">6</a> <a class="footnote-reference" href="#id26" id="id27">[20]</a></td> 
    447 <td>IPv6 Tracker Extension</td> 
    448 </tr> 
    449 <tr><td><a class="reference external" href="bep_0007.html">7</a> <a class="footnote-reference" href="#id28" id="id29">[21]</a></td> 
    450 <td>Tracker Peer Obfuscation</td> 
    451 </tr> 
    452 <tr><td><a class="reference external" href="bep_0008.html">8</a> <a class="footnote-reference" href="#id30" id="id31">[22]</a></td> 
    453 <td>Metadata Extension</td> 
    454 </tr> 
    455 <tr><td><a class="reference external" href="bep_0009.html">9</a> <a class="footnote-reference" href="#id32" id="id33">[23]</a></td> 
    456 <td>Extension Protocol</td> 
    457 </tr> 
    458 </tbody> 
    459 </table> 
    460 <table class="docutils footnote" frame="void" id="python" rules="none"> 
    461 <colgroup><col class="label" /><col /></colgroup> 
    462 <tbody valign="top"> 
    463 <tr><td class="label">[12]</td><td><a class="reference external" href="http://www.python.org/dev/peps/">http://www.python.org/dev/peps/</a></td></tr> 
    464 </tbody> 
    465 </table> 
    466 <table class="docutils footnote" frame="void" id="svn" rules="none"> 
    467 <colgroup><col class="label" /><col /></colgroup> 
    468 <tbody valign="top"> 
    469 <tr><td class="label">[13]</td><td><a class="reference external" href="http://svn.bittorrent.org">http://svn.bittorrent.org</a></td></tr> 
    470 </tbody> 
    471 </table> 
    472 <div class="section" id="id13"> 
    473 <h1><a class="toc-backref" href="#id34">References</a></h1> 
    474 <table class="docutils footnote" frame="void" id="id14" rules="none"> 
    475 <colgroup><col class="label" /><col /></colgroup> 
    476 <tbody valign="top"> 
    477 <tr><td class="label"><a class="fn-backref" href="#id15">[14]</a></td><td><a class="reference external" href="bep_0000.html">bep_0000.html</a></td></tr> 
    478 </tbody> 
    479 </table> 
    480 <table class="docutils footnote" frame="void" id="id16" rules="none"> 
    481 <colgroup><col class="label" /><col /></colgroup> 
    482 <tbody valign="top"> 
    483 <tr><td class="label"><a class="fn-backref" href="#id17">[15]</a></td><td><a class="reference external" href="bep_0001.html">bep_0001.html</a></td></tr> 
    484 </tbody> 
    485 </table> 
    486 <table class="docutils footnote" frame="void" id="id18" rules="none"> 
    487 <colgroup><col class="label" /><col /></colgroup> 
    488 <tbody valign="top"> 
    489 <tr><td class="label"><a class="fn-backref" href="#id19">[16]</a></td><td><a class="reference external" href="bep_0002.html">bep_0002.html</a></td></tr> 
    490 </tbody> 
    491 </table> 
    492 <table class="docutils footnote" frame="void" id="id20" rules="none"> 
    493 <colgroup><col class="label" /><col /></colgroup> 
    494 <tbody valign="top"> 
    495 <tr><td class="label"><a class="fn-backref" href="#id21">[17]</a></td><td><a class="reference external" href="bep_0003.html">bep_0003.html</a></td></tr> 
    496 </tbody> 
    497 </table> 
    498 <table class="docutils footnote" frame="void" id="id22" rules="none"> 
    499 <colgroup><col class="label" /><col /></colgroup> 
    500 <tbody valign="top"> 
    501 <tr><td class="label"><a class="fn-backref" href="#id23">[18]</a></td><td><a class="reference external" href="bep_0004.html">bep_0004.html</a></td></tr> 
    502 </tbody> 
    503 </table> 
    504 <table class="docutils footnote" frame="void" id="id24" rules="none"> 
    505 <colgroup><col class="label" /><col /></colgroup> 
    506 <tbody valign="top"> 
    507 <tr><td class="label"><a class="fn-backref" href="#id25">[19]</a></td><td><a class="reference external" href="bep_0005.html">bep_0005.html</a></td></tr> 
    508 </tbody> 
    509 </table> 
    510 <table class="docutils footnote" frame="void" id="id26" rules="none"> 
    511 <colgroup><col class="label" /><col /></colgroup> 
    512 <tbody valign="top"> 
    513 <tr><td class="label"><a class="fn-backref" href="#id27">[20]</a></td><td><a class="reference external" href="bep_0006.html">bep_0006.html</a></td></tr> 
    514 </tbody> 
    515 </table> 
    516 <table class="docutils footnote" frame="void" id="id28" rules="none"> 
    517 <colgroup><col class="label" /><col /></colgroup> 
    518 <tbody valign="top"> 
    519 <tr><td class="label"><a class="fn-backref" href="#id29">[21]</a></td><td><a class="reference external" href="bep_0007.html">bep_0007.html</a></td></tr> 
    520 </tbody> 
    521 </table> 
    522 <table class="docutils footnote" frame="void" id="id30" rules="none"> 
    523 <colgroup><col class="label" /><col /></colgroup> 
    524 <tbody valign="top"> 
    525 <tr><td class="label"><a class="fn-backref" href="#id31">[22]</a></td><td><a class="reference external" href="bep_0008.html">bep_0008.html</a></td></tr> 
    526 </tbody> 
    527 </table> 
    528 <table class="docutils footnote" frame="void" id="id32" rules="none"> 
    529 <colgroup><col class="label" /><col /></colgroup> 
    530 <tbody valign="top"> 
    531 <tr><td class="label"><a class="fn-backref" href="#id33">[23]</a></td><td><a class="reference external" href="bep_0009.html">bep_0009.html</a></td></tr> 
    532 </tbody> 
    533 </table> 
    534 </div> 
    535  
    536 </div> 
    537 </body> 
    538 </html> 
  • dotorg/trunk/html/beps/bep_0002.html

    r10505 r10506  
     1<?xml version="1.0" encoding="utf-8" ?> 
     2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
     3<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
     4<head> 
     5<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
     6<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" /> 
     7<title></title> 
     8<link rel="stylesheet" href="../css/screen.css" type="text/css" /> 
     9</head> 
     10<body> 
     11<div class="document"> 
     12 
     13<div id="upper" class="clear"> 
     14<div id="wrap"> 
     15<div id="header"> 
     16<h1><a href="./index.html">BitTorrent<span>.org</span></a></h1> 
     17</div> 
     18<div id="nav"> 
     19<ul> 
     20<li><a href="./index.html">Home</a></li> 
     21<li><a href="./introduction.html">For Users</a></li> 
     22<li><span>For Developers</span></li> 
     23<!-- <li><a href="./blog">Blog</a></li> --> 
     24<li><a href="./donate.html">Donate!</a></li> 
     25</ul> 
     26</div> <!-- nav --> 
     27<!-- ### Begin Content ### --> 
     28<div id="second"> 
     29 
     30 
     31 
     32<table class="rfc2822 docutils field-list" frame="void" rules="none"> 
     33<col class="field-name" /> 
     34<col class="field-body" /> 
     35<tbody valign="top"> 
     36<tr class="field"><th class="field-name">BEP:</th><td class="field-body">2</td> 
     37</tr> 
     38<tr class="field"><th class="field-name">Title:</th><td class="field-body">The BitTorrent Protocol Specification</td> 
     39</tr> 
     40<tr class="field"><th class="field-name">Version:</th><td class="field-body">2</td> 
     41</tr> 
     42<tr class="field"><th class="field-name">Last-Modified:</th><td class="field-body"><a class="reference external" href="https://svn.bittorrent.com/trac.cgi/browser/dotorg/trunk/html/beps/bep_0002.rst">11-Jan-2008</a></td> 
     43</tr> 
     44<tr class="field"><th class="field-name">Author:</th><td class="field-body">Bram Cohen &lt;bram&#32;&#97;t&#32;bittorrent.com&gt;</td> 
     45</tr> 
     46<tr class="field"><th class="field-name">Status:</th><td class="field-body">Final</td> 
     47</tr> 
     48<tr class="field"><th class="field-name">Type:</th><td class="field-body">Standard</td> 
     49</tr> 
     50<tr class="field"><th class="field-name">Created:</th><td class="field-body">10-Jan-2008</td> 
     51</tr> 
     52<tr class="field"><th class="field-name">Post-History:</th><td class="field-body"></td> 
     53</tr> 
     54</tbody> 
     55</table> 
     56<hr /> 
     57<div class="contents topic" id="contents"> 
     58<p class="topic-title first">Contents</p> 
     59<ul class="simple"> 
     60<li><a class="reference internal" href="#a-bittorrent-file-distribution-consists-of-these-entities" id="id2">A BitTorrent file distribution consists of these entities:</a></li> 
     61<li><a class="reference internal" href="#to-start-serving-a-host-goes-through-the-following-steps" id="id3">To start serving, a host goes through the following steps:</a></li> 
     62<li><a class="reference internal" href="#to-start-downloading-a-user-does-the-following" id="id4">To start downloading, a user does the following:</a></li> 
     63<li><a class="reference internal" href="#the-connectivity-is-as-follows" id="id5">The connectivity is as follows:</a></li> 
     64<li><a class="reference internal" href="#metainfo-files-are-bencoded-dictionaries-with-the-following-keys" id="id6">Metainfo files are bencoded dictionaries with the following keys:</a></li> 
     65<li><a class="reference internal" href="#tracker-get-requests-have-the-following-keys" id="id7">Tracker GET requests have the following keys:</a></li> 
     66<li><a class="reference internal" href="#all-non-keepalive-messages-start-with-a-single-byte-which-gives-their-type" id="id8">All non-keepalive messages start with a single byte which gives their type.</a></li> 
     67<li><a class="reference internal" href="#the-possible-values-are" id="id9">The possible values are:</a></li> 
     68</ul> 
     69</div> 
     70<p>BitTorrent is a protocol for distributing files. It identifies content 
     71by URL and is designed to integrate seamlessly with the web. Its 
     72advantage over plain HTTP is that when multiple downloads of the same 
     73file happen concurrently, the downloaders upload to each other, making 
     74it possible for the file source to support very large numbers of 
     75downloaders with only a modest increase in its load.</p> 
     76<div class="section" id="a-bittorrent-file-distribution-consists-of-these-entities"> 
     77<h1>A BitTorrent file distribution consists of these entities:</h1> 
     78<ul class="simple"> 
     79<li>An ordinary web server</li> 
     80<li>A static 'metainfo' file</li> 
     81<li>A BitTorrent tracker</li> 
     82<li>An 'original' downloader</li> 
     83<li>The end user web browsers</li> 
     84<li>The end user downloaders</li> 
     85</ul> 
     86<p>There are ideally many end users for a single file.</p> 
     87</div> 
     88<div class="section" id="to-start-serving-a-host-goes-through-the-following-steps"> 
     89<h1>To start serving, a host goes through the following steps:</h1> 
     90<ol class="arabic simple"> 
     91<li>Start running a tracker (or, more likely, have one running already).</li> 
     92<li>Start running an ordinary web server, such as apache, or have one already.</li> 
     93<li>Associate the extension .torrent with mimetype application/x-bittorrent on their web server (or have done so already).</li> 
     94<li>Generate a metainfo (.torrent) file using the complete file to be served and the URL of the tracker.</li> 
     95<li>Put the metainfo file on the web server.</li> 
     96<li>Link to the metainfo (.torrent) file from some other web page.</li> 
     97<li>Start a downloader which already has the complete file (the 'origin').</li> 
     98</ol> 
     99</div> 
     100<div class="section" id="to-start-downloading-a-user-does-the-following"> 
     101<h1>To start downloading, a user does the following:</h1> 
     102<ol class="arabic simple"> 
     103<li>Install BitTorrent (or have done so already).</li> 
     104<li>Surf the web.</li> 
     105<li>Click on a link to a .torrent file.</li> 
     106<li>Select where to save the file locally, or select a partial download to resume.</li> 
     107<li>Wait for download to complete.</li> 
     108<li>Tell downloader to exit (it keeps uploading until this happens).</li> 
     109</ol> 
     110</div> 
     111<div class="section" id="the-connectivity-is-as-follows"> 
     112<h1>The connectivity is as follows:</h1> 
     113<ul class="simple"> 
     114<li>Strings are length-prefixed base ten followed by a colon and the string. For example &lt;code&gt;4:spam&lt;/code&gt; corresponds to 'spam'.</li> 
     115<li>Integers are represented by an 'i' followed by the number in base 10 
     116followed by an 'e'. For example &lt;code&gt;i3e&lt;/code&gt; corresponds to 3 and 
     117&lt;code&gt;i-3e &lt;/code&gt;corresponds to -3. Integers have no size 
     118limitation. &lt;code&gt;i-0e&lt;/code&gt; is invalid. All encodings with a leading 
     119zero, such as &lt;code&gt;i03e&lt;/code&gt;, are invalid, other than 
     120&lt;code&gt;i0e&lt;/code&gt;, which of course corresponds to 0.</li> 
     121<li>Lists are encoded as an 'l' followed by their elements (also 
     122bencoded) followed by an 'e'. For example &lt;code&gt;l4:spam4:eggse&lt;/code&gt; 
     123corresponds to ['spam', 'eggs'].</li> 
     124<li>Dictionaries are encoded as a 'd' followed by a list of alternating 
     125keys and their corresponding values followed by an 'e'. For example, 
     126&lt;code&gt;d3:cow3:moo4:spam4:eggse&lt;/code&gt; corresponds to {'cow': 'moo', 
     127'spam': 'eggs'} and &lt;code&gt;d4:spaml1:a1:bee&lt;/code&gt; corresponds to 
     128{'spam': ['a', 'b']}. Keys must be strings and appear in sorted order 
     129(sorted as raw strings, not alphanumerics).</li> 
     130</ul> 
     131</div> 
     132<div class="section" id="metainfo-files-are-bencoded-dictionaries-with-the-following-keys"> 
     133<h1>Metainfo files are bencoded dictionaries with the following keys:</h1> 
     134<dl class="docutils"> 
     135<dt>announce</dt> 
     136<dd>The URL of the tracker.</dd> 
     137<dt>info</dt> 
     138<dd><p class="first">This maps to a dictionary, with keys described below.</p> 
     139<p>The &lt;code&gt;name&lt;/code&gt; key maps to a string which is the suggested name 
     140to save the file (or directory) as. It is purely advisory.</p> 
     141<p>&lt;code&gt;piece length&lt;/code&gt; maps to the number of bytes in each piece 
     142the file is split into. For the purposes of transfer, files are 
     143split into fixed-size pieces which are all the same length except for 
     144possibly the last one which may be truncated. &lt;code&gt;piece 
     145length&lt;/code&gt; is almost always a power of two, most commonly 2 18 = 
     146256 K (BitTorrent prior to version 3.2 uses 2 20 = 1 M as 
     147default).</p> 
     148<p>&lt;code&gt;pieces&lt;/code&gt; maps to a string whose length is a multiple of 
     14920. It is to be subdivided into strings of length 20, each of which is 
     150the SHA1 hash of the piece at the corresponding index.</p> 
     151<p>There is also a key &lt;code&gt;length&lt;/code&gt; or a key &lt;code&gt;files&lt;/code&gt;, 
     152but not both or neither. If &lt;code&gt;length&lt;/code&gt; is present then the 
     153download represents a single file, otherwise it represents a set of 
     154files which go in a directory structure.</p> 
     155<p>In the single file case, &lt;code&gt;length&lt;/code&gt; maps to the length of 
     156the file in bytes.</p> 
     157<p>For the purposes of the other keys, the multi-file case is treated as 
     158only having a single file by concatenating the files in the order they 
     159appear in the files list. The files list is the value 
     160&lt;code&gt;files&lt;/code&gt; maps to, and is a list of dictionaries containing 
     161the following keys:</p> 
     162<p>&lt;code&gt;length&lt;/code&gt; - The length of the file, in bytes.</p> 
     163<p>&lt;code&gt;path&lt;/code&gt; - A list of strings corresponding to subdirectory 
     164names, the last of which is the actual file name (a zero length list 
     165is an error case).</p> 
     166<p class="last">In the single file case, the name key is the name of a file, in the 
     167muliple file case, it's the name of a directory.</p> 
     168</dd> 
     169</dl> 
     170</div> 
     171<div class="section" id="tracker-get-requests-have-the-following-keys"> 
     172<h1>Tracker GET requests have the following keys:</h1> 
     173<dl class="docutils"> 
     174<dt>info_hash</dt> 
     175<dd>The 20 byte sha1 hash of the bencoded form of the info value from the 
     176metainfo file. Note that this is a substring of the metainfo 
     177file. This value will almost certainly have to be escaped.</dd> 
     178<dt>peer_id</dt> 
     179<dd>A string of length 20 which this downloader uses as its id. Each 
     180downloader generates its own id at random at the start of a new 
     181download. This value will also almost certainly have to be escaped.</dd> 
     182<dt>ip</dt> 
     183<dd>An optional parameter giving the IP (or dns name) which this peer is 
     184at. Generally used for the origin if it's on the same machine as the 
     185tracker.</dd> 
     186<dt>port</dt> 
     187<dd>The port number this peer is listening on. Common behavior is for a 
     188downloader to try to listen on port 6881 and if that port is taken try 
     1896882, then 6883, etc. and give up after 6889.</dd> 
     190<dt>uploaded</dt> 
     191<dd>The total amount uploaded so far, encoded in base ten ascii.</dd> 
     192<dt>downloaded</dt> 
     193<dd>The total amount downloaded so far, encoded in base ten ascii.</dd> 
     194<dt>left</dt> 
     195<dd>The number of bytes this peer still has to download, encoded in 
     196base ten ascii. Note that this can't be computed from downloaded and 
     197the file length since it might be a resume, and there's a chance that 
     198some of the downloaded data failed an integrity check and had to be 
     199re-downloaded.</dd> 
     200<dt>event</dt> 
     201<dd>This is an optional key which maps to &lt;code&gt;started&lt;/code&gt;, 
     202&lt;code&gt;completed&lt;/code&gt;, or &lt;code&gt;stopped&lt;/code&gt; (or 
     203&lt;code&gt;empty&lt;/code&gt;, which is the same as not being present). If not 
     204present, this is one of the announcements done at regular 
     205intervals. An announcement using &lt;code&gt;started&lt;/code&gt; is sent when a 
     206download first begins, and one using &lt;code&gt;completed&lt;/code&gt; is sent 
     207when the download is complete. No &lt;code&gt;completed&lt;/code&gt; is sent if 
     208the file was complete when started. Downloaders send an announcement 
     209using &lt;code&gt;stopped&lt;/code&gt; when they cease downloading.</dd> 
     210</dl> 
     211<p>Tracker responses are bencoded dictionaries. If a tracker response 
     212has a key &lt;code&gt;failure reason&lt;/code&gt;, then that maps to a human 
     213readable string which explains why the query failed, and no other keys 
     214are required. Otherwise, it must have two keys: &lt;code&gt;interval&lt;/code&gt;, 
     215which maps to the number of seconds the downloader should wait between 
     216regular rerequests, and &lt;code&gt;peers&lt;/code&gt;. &lt;code&gt;peers&lt;/code&gt; maps to 
     217a list of dictionaries corresponding to &lt;code&gt;peers&lt;/code&gt;, each of 
     218which contains the keys &lt;code&gt;peer id&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, and 
     219&lt;code&gt;port&lt;/code&gt;, which map to the peer's self-selected ID, IP 
     220address or dns name as a string, and port number, respectively. Note 
     221that downloaders may rerequest on nonscheduled times if an event 
     222happens or they need more peers.</p> 
     223<p>If you want to make any extensions to metainfo files or tracker 
     224queries, please coordinate with Bram Cohen to make sure that all 
     225extensions are done compatibly.</p> 
     226<p>BitTorrent's peer protocol operates over TCP. It performs efficiently 
     227without setting any socket options.</p> 
     228<p>Peer connections are symmetrical. Messages sent in both directions 
     229look the same, and data can flow in either direction.</p> 
     230<p>The peer protocol refers to pieces of the file by index as 
     231described in the metainfo file, starting at zero. When a peer finishes 
     232downloading a piece and checks that the hash matches, it announces 
     233that it has that piece to all of its peers.</p> 
     234<p>Connections contain two bits of state on either end: choked or not, 
     235and interested or not. Choking is a notification that no data will be 
     236sent until unchoking happens. The reasoning and common techniques 
     237behind choking are explained later in this document.</p> 
     238<p>Data transfer takes place whenever one side is interested and the 
     239other side is not choking. Interest state must be kept up to date at 
     240all times - whenever a downloader doesn't have something they 
     241currently would ask a peer for in unchoked, they must express lack of 
     242interest, despite being choked. Implementing this properly is tricky, 
     243but makes it possible for downloaders to know which peers will start 
     244downloading immediately if unchoked.</p> 
     245<p>Connections start out choked and not interested.</p> 
     246<p>When data is being transferred, downloaders should keep several 
     247piece requests queued up at once in order to get good TCP performance 
     248(this is called 'pipelining'.) On the other side, requests which can't 
     249be written out to the TCP buffer immediately should be queued up in 
     250memory rather than kept in an application-level network buffer, so 
     251they can all be thrown out when a choke happens.</p> 
     252<p>The peer wire protocol consists of a handshake followed by a 
     253never-ending stream of length-prefixed messages. The handshake starts 
     254with character ninteen (decimal) followed by the string 'BitTorrent 
     255protocol'. The leading character is a length prefix, put there in the 
     256hope that other new protocols may do the same and thus be trivially 
     257distinguishable from each other.</p> 
     258<p>All later integers sent in the protocol are encoded as four bytes 
     259big-endian.</p> 
     260<p>After the fixed headers come eight reserved bytes, which are all 
     261zero in all current implementations. If you wish to extend the 
     262protocol using these bytes, please coordinate with Bram Cohen to make 
     263sure all extensions are done compatibly.</p> 
     264<p>Next comes the 20 byte sha1 hash of the bencoded form of the info 
     265value from the metainfo file. (This is the same value which is 
     266announced as &lt;code&gt;info_hash&lt;/code&gt; to the tracker, only here it's raw 
     267instead of quoted here). If both sides don't send the same value, they 
     268sever the connection. The one possible exception is if a downloader 
     269wants to do multiple downloads over a single port, they may wait for 
     270incoming connections to give a download hash first, and respond with 
     271the same one if it's in their list.</p> 
     272<p>After the download hash comes the 20-byte peer id which is reported 
     273in tracker requests and contained in peer lists in tracker 
     274responses. If the receiving side's peer id doesn't match the one the 
     275initiating side expects, it severs the connection.</p> 
     276<p>That's it for handshaking, next comes an alternating stream of 
     277length prefixes and messages. Messages of length zero are keepalives, 
     278and ignored. Keepalives are generally sent once every two minutes, but 
     279note that timeouts can be done much more quickly when data is 
     280expected.</p> 
     281</div> 
     282<div class="section" id="all-non-keepalive-messages-start-with-a-single-byte-which-gives-their-type"> 
     283<h1>All non-keepalive messages start with a single byte which gives their type.</h1> 
     284</div> 
     285<div class="section" id="the-possible-values-are"> 
     286<h1>The possible values are:</h1> 
     287<ul class="simple"> 
     288<li>0 - choke</li> 
     289<li>1 - unchoke</li> 
     290<li>2 - interested</li> 
     291<li>3 - not interested</li> 
     292<li>4 - have</li> 
     293<li>5 - bitfield</li> 
     294<li>6 - request</li> 
     295<li>7 - piece</li> 
     296<li>8 - cancel</li> 
     297</ul> 
     298<p>'choke', 'unchoke', 'interested', and 'not interested' have no payload.</p> 
     299<p>'bitfield' is only ever sent as the first message. Its payload is a 
     300bitfield with each index that downloader has sent set to one and the 
     301rest set to zero. Downloaders which don't have anything yet may skip 
     302the 'bitfield' message. The first byte of the bitfield corresponds to 
     303indices 0 - 7 from high bit to low bit, respectively. The next one 
     3048-15, etc. Spare bits at the end are set to zero.</p> 
     305<p>The 'have' message's payload is a single number, the index which 
     306that downloader just completed and checked the hash of.</p> 
     307<p>'request' messages contain an index, begin, and length. The last 
     308two are byte offsets. Length is generally a power of two unless it 
     309gets truncated by the end of the file. All current implementations use 
     3102 15 , and close connections which request an amount greater than 2 
     31117.</p> 
     312<p>'cancel' messages have the same payload as request messages. They 
     313are generally only sent towards the end of a download, during what's 
     314called 'endgame mode'. When a download is almost complete, there's a 
     315tendency for the last few pieces to all be downloaded off a single 
     316hosed modem line, taking a very long time. To make sure the last few 
     317pieces come in quickly, once requests for all pieces a given 
     318downloader doesn't have yet are currently pending, it sends requests 
     319for everything to everyone it's downloading from. To keep this from 
     320becoming horribly inefficient, it sends cancels to everyone else every 
     321time a piece arrives.</p> 
     322<p>'piece' messages contain an index, begin, and piece. Note that they 
     323are correlated with request messages implicitly. It's possible for an 
     324unexpected piece to arrive if choke and unchoke messages are sent in 
     325quick succession and/or transfer is going very slowly.</p> 
     326<p>Downloaders generally download pieces in random order, which does a 
     327reasonably good job of keeping them from having a strict subset or 
     328superset of the pieces of any of their peers.</p> 
     329<p>Choking is done for several reasons. TCP congestion control behaves 
     330very poorly when sending over many connections at once. Also, choking 
     331lets each peer use a tit-for-tat-ish algorithm to ensure that they get 
     332a consistent download rate.</p> 
     333<p>The choking algorithm described below is the currently deployed 
     334one. It is very important that all new algorithms work well both in a 
     335network consisting entirely of themselves and in a network consisting 
     336mostly of this one.</p> 
     337<p>There are several criteria a good choking algorithm should meet. It 
     338should cap the number of simultaneous uploads for good TCP 
     339performance. It should avoid choking and unchoking quickly, known as 
     340'fibrillation'. It should reciprocate to peers who let it 
     341download. Finally, it should try out unused connections once in a 
     342while to find out if they might be better than the currently used 
     343ones, known as optimistic unchoking.</p> 
     344<p>The currently deployed choking algorithm avoids fibrillation by 
     345only changing who's choked once every ten seconds. It does 
     346reciprocation and number of uploads capping by unchoking the four 
     347peers which it has the best download rates from and are 
     348interested. Peers which have a better upload rate but aren't 
     349interested get unchoked and if they become interested the worst 
     350uploader gets choked. If a downloader has a complete file, it uses its 
     351upload rate rather than its download rate to decide who to 
     352unchoke.</p> 
     353<p>For optimistic unchoking, at any one time there is a single peer 
     354which is unchoked regardless of it's upload rate (if interested, it 
     355counts as one of the four allowed downloaders.) Which peer is 
     356optimistically unchoked rotates every 30 seconds. To give them a 
     357decent chance of getting a complete piece to upload, new connections 
     358are three times as likely to start as the current optimistic unchoke 
     359as anywhere else in the rotation.</p> 
     360</div> 
     361 
     362 
     363</div> 
     364        <div id="footer"> 
     365<hr/> 
     366<p>Copyright 2006 BitTorrent.org</p> 
     367</div> 
     368 
     369</div> 
     370</body> 
     371</html> 
  • dotorg/trunk/html/beps/bep_0003.html

    r10492 r10506  
    22<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    33<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
    4 <!-- 
    5 This HTML is auto-generated.  DO NOT EDIT THIS FILE!  If you are writing a new 
    6 BEP, see http://www.bittorrent.org/beps/bep_0001.html for instructions and links 
    7 to templates.  DO NOT USE THIS HTML FILE AS YOUR TEMPLATE! 
    8 --> 
    94<head> 
    10   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    11   <meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" /> 
    12   <title>BEP 3 -- Assigned Numbers</title> 
    13   <style type="text/css"> 
     5<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
     6<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" /> 
     7<title></title> 
     8<link rel="stylesheet" href="../css/screen.css" type="text/css" /> 
     9</head> 
     10<body> 
     11<div class="document"> 
    1412 
    15 /* 
    16 :Author: David Goodger 
    17 :Contact: goodger@python.org 
    18 :date: $Date: 2006-05-21 22:44:42 +0200 (Sun, 21 May 2006) $ 
    19 :version: $Revision: 4564 $ 
    20 :copyright: This stylesheet has been placed in the public domain. 
     13<div id="upper" class="clear"> 
     14<div id="wrap"> 
     15<div id="header"> 
     16<h1><a href="./index.html">BitTorrent<span>.org</span></a></h1> 
     17</div> 
     18<div id="nav"> 
     19<ul> 
     20<li><a href="./index.html">Home</a></li> 
     21<li><a href="./introduction.html">For Users</a></li> 
     22<li><span>For Developers</span></li> 
     23<!-- <li><a href="./blog">Blog</a></li> --> 
     24<li><a href="./donate.html">Donate!</a></li> 
     25</ul> 
     26</div> <!-- nav --> 
     27<!-- ### Begin Content ### --> 
     28<div id="second"> 
    2129 
    22 Default cascading style sheet for the BEP HTML output of Docutils. 
    23 */ 
    2430 
    25 /* "! important" is used here to override other ``margin-top`` and 
    26    ``margin-bottom`` styles that are later in the stylesheet or  
    27    more specific.  See http://www.w3.org/TR/CSS1#the-cascade */ 
    28 .first { 
    29   margin-top: 0 ! important } 
    3031 
    31 .last, .with-subtitle { 
    32   margin-bottom: 0 ! important } 
    33  
    34 .hidden { 
    35   display: none } 
    36  
    37 .navigation { 
    38   width: 100% ; 
    39   background: #99ccff ; 
    40   margin-top: 0px ; 
    41   margin-bottom: 0px } 
    42  
    43 .navigation .navicon { 
    44   width: 150px ; 
    45   height: 35px } 
    46  
    47 .navigation .textlinks { 
    48   padding-left: 1em ; 
    49   text-align: left } 
    50  
    51 .navigation td, .navigation th { 
    52   padding-left: 0em ; 
    53   padding-right: 0em ; 
    54   vertical-align: middle } 
    55  
    56 .rfc2822 { 
    57   margin-top: 0.5em ; 
    58   margin-left: 0.5em ; 
    59   margin-right: 0.5em ; 
    60   margin-bottom: 0em } 
    61  
    62 .rfc2822 td { 
    63   text-align: left } 
    64  
    65 .rfc2822 th.field-name { 
    66   text-align: right ; 
    67   font-family: sans-serif ; 
    68   padding-right: 0.5em ; 
    69   font-weight: bold ; 
    70   margin-bottom: 0em } 
    71  
    72 a.toc-backref { 
    73   text-decoration: none ; 
    74   color: black } 
    75  
    76 blockquote.epigraph { 
    77   margin: 2em 5em ; } 
    78  
    79 body { 
    80   margin: 0px ; 
    81   margin-bottom: 1em ; 
    82   padding: 0px } 
    83  
    84 dl.docutils dd { 
    85   margin-bottom: 0.5em } 
    86  
    87 div.section { 
    88   margin-left: 1em ; 
    89   margin-right: 1em ; 
    90   margin-bottom: 1.5em } 
    91  
    92 div.section div.section { 
    93   margin-left: 0em ; 
    94   margin-right: 0em ; 
    95   margin-top: 1.5em } 
    96  
    97 div.abstract { 
    98   margin: 2em 5em } 
    99  
    100 div.abstract p.topic-title { 
    101   font-weight: bold ; 
    102   text-align: center } 
    103  
    104 div.admonition, div.attention, div.caution, div.danger, div.error, 
    105 div.hint, div.important, div.note, div.tip, div.warning { 
    106   margin: 2em ; 
    107   border: medium outset ; 
    108   padding: 1em } 
    109  
    110 div.admonition p.admonition-title, div.hint p.admonition-title, 
    111 div.important p.admonition-title, div.note p.admonition-title, 
    112 div.tip p.admonition-title { 
    113   font-weight: bold ; 
    114   font-family: sans-serif } 
    115  
    116 div.attention p.admonition-title, div.caution p.admonition-title, 
    117 div.danger p.admonition-title, div.error p.admonition-title, 
    118 div.warning p.admonition-title { 
    119   color: red ; 
    120   font-weight: bold ; 
    121   font-family: sans-serif } 
    122  
    123 /* Uncomment (and remove this text!) to get reduced vertical space in 
    124    compound paragraphs. 
    125 div.compound .compound-first, div.compound .compound-middle { 
    126   margin-bottom: 0.5em } 
    127  
    128 div.compound .compound-last, div.compound .compound-middle { 
    129   margin-top: 0.5em } 
    130 */ 
    131  
    132 div.dedication { 
    133   margin: 2em 5em ; 
    134   text-align: center ; 
    135   font-style: italic } 
    136  
    137 div.dedication p.topic-title { 
    138   font-weight: bold ; 
    139   font-style: normal } 
    140  
    141 div.figure { 
    142   margin-left: 2em ; 
    143   margin-right: 2em } 
    144  
    145 div.footer, div.header { 
    146   clear: both; 
    147   font-size: smaller } 
    148  
    149 div.footer { 
    150   margin-left: 1em ; 
    151   margin-right: 1em } 
    152  
    153 div.line-block { 
    154   display: block ; 
    155   margin-top: 1em ; 
    156   margin-bottom: 1em } 
    157  
    158 div.line-block div.line-block { 
    159   margin-top: 0 ; 
    160   margin-bottom: 0 ; 
    161   margin-left: 1.5em } 
    162  
    163 div.sidebar { 
    164   margin-left: 1em ; 
    165   border: medium outset ; 
    166   padding: 1em ; 
    167   background-color: #ffffee ; 
    168   width: 40% ; 
    169   float: right ; 
    170   clear: right } 
    171  
    172 div.sidebar p.rubric { 
    173   font-family: sans-serif ; 
    174   font-size: medium } 
    175  
    176 div.system-messages { 
    177   margin: 5em } 
    178  
    179 div.system-messages h1 { 
    180   color: red } 
    181  
    182 div.system-message { 
    183   border: medium outset ; 
    184   padding: 1em } 
    185  
    186 div.system-message p.system-message-title { 
    187   color: red ; 
    188   font-weight: bold } 
    189  
    190 div.topic { 
    191   margin: 2em } 
    192  
    193 h1.section-subtitle, h2.section-subtitle, h3.section-subtitle, 
    194 h4.section-subtitle, h5.section-subtitle, h6.section-subtitle { 
    195   margin-top: 0.4em } 
    196  
    197 h1 { 
    198   font-family: sans-serif ; 
    199   font-size: large } 
    200  
    201 h2 { 
    202   font-family: sans-serif ; 
    203   font-size: medium } 
    204  
    205 h3 { 
    206   font-family: sans-serif ; 
    207   font-size: small } 
    208  
    209 h4 { 
    210   font-family: sans-serif ; 
    211   font-style: italic ; 
    212   font-size: small } 
    213  
    214 h5 { 
    215   font-family: sans-serif; 
    216   font-size: x-small } 
    217  
    218 h6 { 
    219   font-family: sans-serif; 
    220   font-style: italic ; 
    221   font-size: x-small } 
    222  
    223 hr.docutils { 
    224   width: 75% } 
    225  
    226 img.align-left { 
    227   clear: left } 
    228  
    229 img.align-right { 
    230   clear: right } 
    231  
    232 img.borderless { 
    233   border: 0 } 
    234  
    235 ol.simple, ul.simple { 
    236   margin-bottom: 1em } 
    237  
    238 ol.arabic { 
    239   list-style: decimal } 
    240  
    241 ol.loweralpha { 
    242   list-style: lower-alpha } 
    243  
    244 ol.upperalpha { 
    245   list-style: upper-alpha } 
    246  
    247 ol.lowerroman { 
    248   list-style: lower-roman } 
    249  
    250 ol.upperroman { 
    251   list-style: upper-roman } 
    252  
    253 p.attribution { 
    254   text-align: right ; 
    255   margin-left: 50% } 
    256  
    257 p.caption { 
    258   font-style: italic } 
    259  
    260 p.credits { 
    261   font-style: italic ; 
    262   font-size: smaller } 
    263  
    264 p.label { 
    265   white-space: nowrap } 
    266  
    267 p.rubric { 
    268   font-weight: bold ; 
    269   font-size: larger ; 
    270   color: maroon ; 
    271   text-align: center } 
    272  
    273 p.sidebar-title { 
    274   font-family: sans-serif ; 
    275   font-weight: bold ; 
    276   font-size: larger } 
    277  
    278 p.sidebar-subtitle { 
    279   font-family: sans-serif ; 
    280   font-weight: bold } 
    281  
    282 p.topic-title { 
    283   font-family: sans-serif ; 
    284   font-weight: bold } 
    285  
    286 pre.address { 
    287   margin-bottom: 0 ; 
    288   margin-top: 0 ; 
    289   font-family: serif ; 
    290   font-size: 100% } 
    291  
    292 pre.literal-block, pre.doctest-block { 
    293   margin-left: 2em ; 
    294   margin-right: 2em } 
    295  
    296 span.classifier { 
    297   font-family: sans-serif ; 
    298   font-style: oblique } 
    299  
    300 span.classifier-delimiter { 
    301   font-family: sans-serif ; 
    302   font-weight: bold } 
    303  
    304 span.interpreted { 
    305   font-family: sans-serif } 
    306  
    307 span.option { 
    308   white-space: nowrap } 
    309  
    310 span.option-argument { 
    311   font-style: italic } 
    312  
    313 span.pre { 
    314   white-space: pre } 
    315  
    316 span.problematic { 
    317   color: red } 
    318  
    319 span.section-subtitle { 
    320   /* font-size relative to parent (h1..h6 element) */ 
    321   font-size: 80% } 
    322  
    323 table.citation { 
    324   border-left: solid 1px gray; 
    325   margin-left: 1px } 
    326  
    327 table.docinfo { 
    328   margin: 2em 4em } 
    329  
    330 table.docutils { 
    331   margin-top: 0.5em ; 
    332   margin-bottom: 0.5em } 
    333  
    334 table.footnote { 
    335   border-left: solid 1px black; 
    336   margin-left: 1px } 
    337  
    338 table.docutils td, table.docutils th, 
    339 table.docinfo td, table.docinfo th { 
    340   padding-left: 0.5em ; 
    341   padding-right: 0.5em ; 
    342   vertical-align: top } 
    343  
    344 td.num { 
    345   text-align: right } 
    346  
    347 th.field-name { 
    348   font-weight: bold ; 
    349   text-align: left ; 
    350   white-space: nowrap ; 
    351   padding-left: 0 } 
    352  
    353 h1 tt.docutils, h2 tt.docutils, h3 tt.docutils, 
    354 h4 tt.docutils, h5 tt.docutils, h6 tt.docutils { 
    355   font-size: 100% } 
    356  
    357 ul.auto-toc { 
    358   list-style-type: none } 
    359  
    360 </style> 
    361 </head> 
    362 <body bgcolor="white"> 
    363 <table class="navigation" cellpadding="0" cellspacing="0" 
    364        width="100%" border="0"> 
    365 <tr><td class="navicon" width="150" height="35"> 
    366 <!--<a href="http://www.python.org/" title="Python Home Page"> 
    367 <img src="http://www.python.org/pics/PyBanner007.gif" alt="[Python]" 
    368  border="0" width="150" height="35" /></a></td> 
    369 <td class="textlinks" align="left"> 
    370 [<b><a href="http://www.bittorrent.org/">bittorrent.org</a></b>]--> 
    371 [<b><a href="http://www.bittorrent.org/beps/">BEP Index</a></b>] 
    372 [<b><a href="./bep-0003.txt">BEP Source</a></b>] 
    373 </td></tr></table> 
    374 <div class="document"> 
    37532<table class="rfc2822 docutils field-list" frame="void" rules="none"> 
    37633<col class="field-name" /> 
     
    40966</div> 
    41067<div class="section" id="bittorrent-org-for-developers-assigned-numbers"> 
    411 <h1><a class="toc-backref" href="#id2">BitTorrent.org » For Developers » Assigned Numbers</a></h1> 
     68<h1>BitTorrent.org » For Developers » Assigned Numbers</h1> 
    41269<p>This document describes the known bit allocations and message IDs for 
    41370the BitTorrent protocol.  To request a bit allocation contact 
    414 <a class="reference external" href="mailto:editor&#64;bittorrent.org">editor&#64;bittorrent.org</a>.  Contact the same address if you are aware of 
     71<a class="reference external" href="mailto:editor&#37;&#52;&#48;bittorrent&#46;org">editor<span>&#64;</span>bittorrent<span>&#46;</span>org</a>.  Contact the same address if you are aware of 
    41572any omissions.</p> 
    41673<div class="section" id="reserved-bit-allocations"> 
    417 <h2><a class="toc-backref" href="#id3">Reserved Bit Allocations</a></h2> 
     74<h2>Reserved Bit Allocations</h2> 
    41875<pre class="literal-block"> 
    41976reserved[0] 
     
    42986</div> 
    43087<div class="section" id="reserved-message-ids"> 
    431 <h2><a class="toc-backref" href="#id4">Reserved Message IDs</a></h2> 
     88<h2>Reserved Message IDs</h2> 
    43289<pre class="literal-block"> 
    43390Core Protocol: 
     
    457114</div> 
    458115 
     116 
     117</div> 
     118        <div id="footer"> 
     119<hr/> 
     120<p>Copyright 2006 BitTorrent.org</p> 
     121</div> 
     122 
    459123</div> 
    460124</body> 
  • dotorg/trunk/html/beps/bep_0006.rst

    r10505 r10506  
    1 BEP: 4 
     1BEP: 6 
    22Title: IPv6 Tracker Extension 
    33Version: 2 
  • dotorg/trunk/html/beps/bep_0007.rst

    r10505 r10506  
    1 BEP: 4 
     1BEP: 7 
    22Title: Tracker Peer Obfuscation 
    33Version: 3 
  • dotorg/trunk/html/beps/bep_0008.rst

    r10416 r10506  
    1 metadata extension 
    2 ================== 
     1BEP: 8 
     2Title: Metadata Extension 
     3Version: 3 
     4Last-Modified: 02-Feb-2008 
     5Author:  Greg Hazel <greg@bittorrent.com>, Arvid Norberg <arvid@bittorrent.com> 
     6Status:  Draft 
     7Type:    Standards Track 
     8Created: 31-Jan-2008 
     9Post-History: 
    310 
    411The purpose of this extension is to allow clients to join a swarm and 
     
    124131If no tracker is specified, the client SHOULD use the DHT to acquire peers. 
    125132 
    126 authors 
    127 ------- 
    128133 
    129 | `Greg Hazel`__ 
    130 | `Arvid Norberg`__ 
    131  
    132 .. __: mailto:greg@bittorrent.com 
    133 .. __: mailto:arvid@bittorrent.com 
    134  
  • dotorg/trunk/html/beps/bep_0009.rst

    r10416 r10506  
    1 extension protocol for bittorrent 
    2 ================================= 
     1BEP: 9 
     2Title: Extension Protocol 
     3Version: 3 
     4Last-Modified: 02-Feb-2008 
     5Author:  Arvid Norberg <arvid@bittorrent.com>, Ludvig Strigeus <ludde@utorrent.com> 
     6Status:  Draft 
     7Type:    Standards Track 
     8Created: 31-Jan-2008 
     9Post-History: 
     10 
    311 
    412The intention of this protocol is to provide a simple and thin transport 
     
    124132| ``p``             | 6881                             | 
    125133+-------------------+----------------------------------+ 
    126 | ``v``             | "Torrent 1.2"                   | 
     134| ``v``             | "µTorrent 1.2"                   | 
    127135+-------------------+----------------------------------+ 
    128136 
    129137and in the encoded form: 
    130138 
    131 ``d1:md11:LT_metadatai1e6:T_PEXi2ee1:pi6881e1:v13:\xc2\xb5Torrent 1.2e`` 
     139``d1:md11:LT_metadatai1e6:µT_PEXi2ee1:pi6881e1:v13:\xc2\xb5Torrent 1.2e`` 
    132140 
    133141To make sure the extension names do not collide by mistake, they should be 
     
    198206be a human readable protocol, so why bother. 
    199207 
    200 authors 
    201 ------- 
    202  
    203 | `Arvid Norberg`__ 
    204 | `Ludvig Strigeus`__ 
    205  
    206 .. __: mailto:arvid@bittorrent.com 
    207 .. __: ludde@utorrent.com 
    208  
     208 
  • dotorg/trunk/html/beps/makefile

    r10505 r10506  
    1313 
    1414%.html:%.rst 
    15         rstpep2html.py --template=../template.txt --cloak-email-addresses --link-stylesheet --stylesheet=../css/screen.css --no-toc-backlinks $? >$@ --traceback 
     15        rstbep2html.py --template=../template.txt --cloak-email-addresses --link-stylesheet --stylesheet=../css/screen.css --no-toc-backlinks $? >$@ --traceback 
    1616 
    1717        #~/docutils/tools/rst2html.py --template=../template.txt --cloak-email-addresses --link-stylesheet --stylesheet=../css/screen.css --no-doc-title --no-toc-backlinks $? >$@