Files
i2p.www/i2p2www/pages/site/docs/index.html
str4d 15426a8eed propagate from branch 'i2p.www' (head e3db0e6a87a9bdf9505016ef90069beb21cadb69)
to branch 'i2p.www.revamp' (head 6b55da3ed369752ad914f36b972ab52e6652af88)
2012-12-06 02:20:35 +00:00

231 lines
9.7 KiB
HTML

{% extends "global/layout.html" %}
{% block title %}Index to Technical Documentation{% endblock %}
{% block content %}
<h1>How does I2P work?</h1>
<p>
Following is an index to the technical documentation for I2P.
This page was last updated in May 2012 and is accurate for router version 0.9.
</p><p>
This index is ordered from the highest to lowest layers.
The higher layers are for "clients" or applications;
the lower layers are inside the router itself.
The interface between applications and the router is the I2CP (I2P Control Protocol) API.
</p><p>
The I2P Project is committed to maintaining accurate, current documentation.
If you find any inaccuracies in the documents linked below, please
<a href="http://trac.i2p2.de/report/1">enter a ticket identifying the problem</a>.
</p>
<h2>Index to Technical Documentation</h2>
<h3>Overview</h3>
<ul class="helplist">
<li><a href="{{ site_url('docs/how/techintro') }}">Technical Introduction</a></li>
<li><a href="{{ site_url('docs/how/intro') }}">A Less-Technical Introduction</a></li>
<li><a href="{{ site_url('docs/how/threatmodel') }}">Threat model and analysis</a></li>
<li><a href="{{ site_url('docs/how/networkcomparisons') }}">Comparisons to other anonymous networks</a></li>
<li><a href="{{ site_url('docs/protocols') }}">Protocol stack chart</a></li>
<li><a href="papers.html">Papers and Presentations on I2P</a></li>
<li><a href="{{ url_for('static', filename='pdf/i2p_philosophy.pdf') }}">Invisible Internet Project (I2P) Project Overview</a> August 28, 2003 (pdf)</li>
</ul>
<h3>Application-Layer Topics</h3>
<ul>
<li><a href="naming.html">Naming and Addressbook</a></li>
<li><a href="plugins.html">Plugins Overview</a></li>
<li><a href="plugin_spec.html">Plugin Specification</a></li>
<li><a href="updates.html">Router software updates</a></li>
<li><a href="{{ site_url('docs/applications/bittorrent') }}">Bittorrent over I2P</a></li>
<li><a href="{{ site_url('docs/api/i2pcontrol') }}">I2PControl Plugin API</a></li>
<li><a href="blockfile.html">hostsdb.blockfile Format</a></li>
<li><a href="configuration.html">Configuration File Format</a></li>
</ul>
<h3>Application Layer API and Protocols</h3>
High-level, easy-to-use APIs for applications written in any language to send and receive data.
<ul><li>
<a href="{{ site_url('develop/applications') }}">Application Development Overview and Guide</a>
</li><li>
<a href="{{ site_url('docs/api/i2ptunnel') }}">I2PTunnel</a>
</li><li>
<a href="{{ site_url('docs/api/socks') }}">SOCKS Proxy</a>
</li><li>
HTTP Proxy
</li><li>
CONNECT Proxy
</li><li>
IRC Proxy
</li><li>
SOCKS IRC Proxy
</li><li>
Streamr Proxy
</li><li>
HTTP Bidir Proxy
</li><li>
<a href="{{ site_url('docs/api/sam') }}">SAM Protocol</a>
</li><li>
<a href="{{ site_url('docs/api/samv2') }}">SAMv2 Protocol</a>
</li><li>
<a href="{{ site_url('docs/api/samv3') }}">SAMv3 Protocol</a>
</li><li>
<a href="{{ site_url('docs/api/bob') }}">BOB Protocol</a>
</li></ul>
<h3>End-to-End Transport API and Protocols</h3>
The end-to-end protocols used by clients for reliable and unreliable communication.
<ul><li>
<a href="{{ site_url('docs/api/streaming') }}">Streaming Library</a>
</li><li>
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/client/streaming/package-summary.html">Streaming Javadoc</a>
</li><li>
<a href="datagrams.html">Datagrams</a>
</li><li>
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/client/datagram/package-summary.html">Datagram Javadoc</a>
</li></ul>
<h3>Client-to-Router Interface API and Protocol</h3>
The lowest-level API used for clients (applications) to send and receive traffic to a router.
Traditionally used only by Java applications and higher-level APIs.
<ul><li>
<a href="i2cp.html">I2CP</a> I2P Control Protocol / API overview
</li><li>
<a href="i2cp_spec.html">I2CP Specification</a>
</li><li>
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/client/package-summary.html">I2CP API Javadoc</a>
</li><li>
<a href="common_structures_spec.html">Common data structures specification</a>
</li><li>
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/data/package-summary.html">Data Structures Javadoc</a>
</li></ul>
<h3>End-to-End Encryption</h3>
How client messages are end-to-end encrypted by the router.
<ul>
<li><a href="{{ site_url('docs/how/elgamalaes') }}">ElGamal/AES+SessionTag</a> encryption</li>
<li><a href="{{ site_url('docs/how/cryptography') }}">ElGamal and AES cryptography details</a></li>
</ul>
<h3>Network Database</h3>
Distributed storage and retrieval of information about routers and clients.
<ul>
<li><a href="{{ site_url('docs/how/networkdatabase') }}">Network database overview, details, and threat analysis</a></li>
<li><a href="{{ site_url('docs/how/cryptography') }}#SHA256">Cryptographic hashes</a></li>
<li><a href="{{ site_url('docs/how/cryptography') }}#DSA">Cryptographic signatures</a></li>
</ul>
<h3>Router Message Protocol</h3>
I2P is a message-oriented router. The messages sent between routers are defined by the I2NP protocol.
<ul><li>
<a href="i2np.html">I2NP</a> I2P Network Protocol Overview
</li><li>
<a href="i2np_spec.html">I2NP Specification</a>
</li><li>
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/data/i2np/package-summary.html">I2NP Javadoc</a>
</li><li>
<a href="common_structures_spec.html">Common data structures specification</a>
</li><li>
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/data/package-summary.html">Data Structures Javadoc</a>
</li></ul>
<h3>Tunnels</h3>
Selecting peers, requesting tunnels through those peers, and encrypting and routing messages through these tunnels.
<ul>
<li><a href="{{ site_url('docs/how/peerselection') }}">Peer profiling and selection</a></li>
<li><a href="{{ site_url('docs/how/tunnelrouting') }}">Tunnel routing overview</a></li>
<li><a href="{{ site_url('docs/how/garlicrouting') }}">Garlic routing and "garlic" terminology</a></li>
<li><a href="tunnel-alt.html">Tunnel building and encryption</a></li>
<li><a href="{{ site_url('docs/how/elgamalaes') }}">ElGamal/AES</a> for build request encryption</li>
<li><a href="{{ site_url('docs/how/cryptography') }}">ElGamal and AES cryptography details</a></li>
<li><a href="tunnel-alt-creation.html">Tunnel building specification</a></li>
<li><a href="tunnel_message_spec.html">Low-level tunnel message specification</a></li>
<li><a href="unidirectional-tunnels.html">Unidirectional Tunnels</a></li>
<li><a href="{{ url_for('static', filename='pdf/I2P-PET-CON-2009.1.pdf') }}">Peer Profiling and Selection in the I2P Anonymous Network</a>
2009 paper (pdf), not current but still generally accurate</li>
</ul>
<h3>Transport Layer</h3>
The protocols for direct (point-to-point) router to router communication.
<ul><li>
<a href="{{ site_url('docs/transport') }}">Transport layer overview</a>
</li><li>
<a href="{{ site_url('docs/transport/ntcp') }}">NTCP</a> TCP-based transport overview and specification
</li><li>
<a href="{{ site_url('docs/transport/ssu') }}">SSU</a> UDP-based transport overview
</li><li>
<a href="{{ site_url('docs/transport/ssu/spec') }}">SSU specification</a>
</li><li>
<a href="{{ site_url('docs/how/cryptography') }}#tcp">NTCP transport encryption</a>
</li><li>
<a href="{{ site_url('docs/how/cryptography') }}#udp">SSU transport encryption</a>
</li><li>
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/router/transport/package-summary.html">Transport Javadoc</a>
</li><li>
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/router/transport/ntcp/package-summary.html">NTCP Javadoc</a>
</li><li>
<a href="http://docs.i2p-projekt.de/javadoc/net/i2p/router/transport/udp/package-summary.html">SSU Javadoc</a>
</li></ul>
<h3>Other Router Topics</h3>
<ul><li>
<a href="jbigi.html">Native BigInteger Library</a>
</li><li>
Time synchronization and NTP
</li><li>
<a href="performance.html">Performance</a> (not current)
</li><li>
<a href="configuration.html">Configuration File Format</a></li>
</li></ul>
<h3>Developer's Guides and Resources</h3>
<ul><li>
<a href="{{ site_url('volunteer/guides/newdevelopers') }}">New Developer's Guide</a>
</li><li>
<a href="{{ site_url('volunteer/guides/newtranslators') }}">New Translator's Guide</a>
</li><li>
<a href="monotone.html">Monotone Guide</a>
</li><li>
<a href="{{ site_url('volunteer/guides/devguidelines') }}">Developer Guidelines</a>
</li><li>
<a href="http://docs.i2p-projekt.de/javadoc/">Javadocs</a> (standard internet)
Note: always verify that javadocs are current by checking the release number.
</li><li>
Javadocs inside I2P:
<a href="http://i2p-javadocs.i2p">Server 1</a>
<a href="http://i2pdocs.str4d.i2p/i2p.i2p/javadoc/">Server 2</a>
<a href="http://echelon.i2p/javadoc/">Server 3</a>
<!--
<a href="http://docs.i2p2.i2p/javadoc/">Server 4 - out of date, incomplete</a>
-->
Note: always verify that javadocs are current by checking the release number.
</li><li>
<a href="ports.html">Ports used by I2P</a>
</li><li>
<a href="http://update.killyourtv.i2p/mtn/">Automatic updates to development builds inside I2P</a>
</li><li>
<a href="manualwrapper.html">Updating the wrapper manually</a>
</li><li>
<a href="http://forum.i2p">User forum (I2P internal)</a>
</li><li>
<a href="http://zzz.i2p/">Developer forum inside I2P</a>
</li><li>
<a href="http://trac.i2p2.de/report/1">Bug tracker</a>
</li><li>
<a href="http://stats.i2p/cgi-bin/viewmtn/">Viewmtn inside I2P</a>.
</li><li>
<a href="https://github.com/i2p/i2p.i2p">I2P Source exported to GitHub</a>
</li><li>
<a href="http://git.repo.i2p/w/i2p.i2p.git">I2P Source Git Repo inside I2P</a>
</li><li>
<a href="https://www.transifex.net/projects/p/I2P/">Source translation at Transifex</a>
</li><li>
<a href="http://trac.i2p2.de/09roadmap">0.9 roadmap wiki</a> (not current)
</li><li>
<a href="{{ site_url('volunteer/roadmap') }}">Old roadmap</a> (not current)
</li><li>
<a href="{{ site_url('volunteer/guides/todo') }}">To Do List</a> (not current)
</li></ul>
{% endblock %}