Changeset 151b852a187f502443b237071e2426fb5dbbc585
- Timestamp:
- 05/29/11 01:55:35 (2 years ago)
- Author:
- zzz@…
- Branches:
- i2p.www
- Children:
- 13ed6f5860610a604acc837a0467c523656a1157
- Parents:
- 276a86b0a158ef2327761388404e7b1c92bbc46f
- Message:
-
update
- Files:
-
Legend:
- Unmodified
- Added
- Removed
-
|
r4016..
|
r151b..
|
|
| 2 | 2 | {% block title %}Bittorrent over I2P{% endblock %} |
| 3 | 3 | {% block content %} |
| 4 | | Updated February 2011, current as of router version 0.8.4 |
| | 4 | Updated May 2011, current as of router version 0.8.6 |
| 5 | 5 | |
| 6 | 6 | |
| … |
… |
|
| 12 | 12 | </p> |
| 13 | 13 | <p> |
| 14 | | This page covers protocol details common to all clients and trackers. |
| | 14 | This page specifies protocol details common to all clients and trackers. |
| 15 | 15 | Specific clients and trackers may implement other unique features or protocols. |
| 16 | 16 | </p> |
| … |
… |
|
| 39 | 39 | </p> |
| 40 | 40 | <p> |
| | 41 | While all current Destinations for clients are exactly 387 bytes, a tracker should not |
| | 42 | presume that will always be so. A reasonable maximum to assume, for now, is 475 bytes. |
| | 43 | As the tracker must decode the Base64 to deliver compact responses (see below), |
| | 44 | the tracker should probably decode and reject bad Base64 when announced. |
| | 45 | </p> |
| | 46 | <p> |
| 41 | 47 | The default response type is non-compact. Clients may request a compact response with |
| 42 | 48 | the parameter compact=1. A tracker may, but is not required to, return |
| 43 | 49 | a compact response when requested. |
| 44 | 50 | </p> |
| | 51 | <p> |
| | 52 | Developers of new I2P clients |
| | 53 | are strongly encouraged to implemenent announces over their own tunnel rather than |
| | 54 | the HTTP client proxy at port 4444. Doing so is both more efficient and it allows |
| | 55 | destination enforcement by the tracker (see below). |
| | 56 | </p> |
| 45 | 57 | |
| 46 | 58 | |
| … |
… |
|
| 57 | 69 | <a href="common_structures_spec.html#struct_Destination">Destination</a>, as described above. |
| 58 | 70 | Trackers generally append ".i2p" to the Base 64 Destination if it wasn't in the announce ip, for compatibility with older clients. |
| 59 | | Trackers should not require an appended ".i2p". |
| | 71 | Clients should not require an appended ".i2p" in the responses. |
| 60 | 72 | </p> |
| 61 | 73 | <p> |
| … |
… |
|
| 74 | 86 | <a href="common_structures_spec.html#struct_Destination">Destinations</a> |
| 75 | 87 | of the peers. |
| | 88 | This hash must be computed by the tracker, unless destination enforcement |
| | 89 | (see below) is used, in which case the hash delivered in the X-I2P-DestHash |
| | 90 | or X-I2P-DestB32 HTTP headers may be converted to binary and stored. |
| 76 | 91 | The peers key may be absent, or the peers value may be zero-length. |
| 77 | 92 | </p> |
| … |
… |
|
| 93 | 108 | <p> |
| 94 | 109 | As several clients use the HTTP proxy instead of their own tunnel for announces, |
| 95 | | destination enforcement will prevent usage by those clients. |
| | 110 | destination enforcement will prevent usage by those clients unless or until |
| | 111 | those clients are converted to announcing over their own tunnel. |
| | 112 | </p> |
| | 113 | <p> |
| | 114 | Unfortunately, as the network grows, so will the amount of maliciousness, |
| | 115 | so we expect that all trackers will eventually enforce destinations. |
| | 116 | Both tracker and client developers should anticipate it. |
| 96 | 117 | </p> |
| 97 | 118 | |
| … |
… |
|
| 113 | 134 | |
| 114 | 135 | |
| 115 | | <h2>Cross-Network Operation</h2> |
| | 136 | <h2>Outbound Connections</h2> |
| | 137 | <p> |
| | 138 | I2P uses 387+ byte |
| | 139 | <a href="common_structures_spec.html#struct_Destination">Destinations</a> for addresses, as explained above. |
| | 140 | </p> |
| | 141 | <p> |
| | 142 | If the client has only the hash of the destination (such as from a compact response or PEX), it must perform a lookup |
| | 143 | by encoding it with Base 32, appending ".b32.i2p", and querying the Naming Service, |
| | 144 | which will return the full Destination if available. |
| | 145 | </p> |
| | 146 | <p> |
| | 147 | If the client has a peer's full Destination it received in a non-compact response, it should use it |
| | 148 | directly in the connection setup. |
| | 149 | Do not convert a Destination back to a Base 32 hash for lookup, this is quite inefficient. |
| | 150 | </p> |
| | 151 | |
| | 152 | |
| | 153 | |
| | 154 | <h2>Cross-Network Prevention</h2> |
| 116 | 155 | <p> |
| 117 | 156 | To preserve anonymity, |
| … |
… |
|
| 123 | 162 | To prevent usage by non-I2P clients via an HTTP inproxy, I2P trackers often |
| 124 | 163 | block accesses or announces that contain an X-Forwarded-For HTTP header. |
| | 164 | Trackers should reject standard network announcesw with IPv4 or IPv6 IPs, and not deliver them in responses. |
| 125 | 165 | </p> |
| 126 | 166 | |
| … |
… |
|
| 150 | 190 | Preliminary differences from |
| 151 | 191 | <a href="http://www.bittorrent.org/beps/bep_0005.html">BEP 5</a> |
| 152 | | are described below, subject to change. |
| | 192 | are described below, and are subject to change. |
| | 193 | Contact the I2P developers if you wish to develop a client supporting DHT. |
| 153 | 194 | </p> |
| 154 | 195 | <p> |