Files
i2p.www/www.i2p2/pages/i2cp.html

38 lines
2.0 KiB
HTML
Raw Normal View History

2008-01-31 20:38:37 +00:00
{% extends "_layout.html" %}
{% block title %}I2CP{% endblock %}
{% block content %}
<p>The I2P Client Protocol (I2CP) exposes a strong separation of concerns between
2004-07-20 23:23:23 +00:00
the router and any client that wishes to communicate over the network. It enables
secure and asynchronous messaging by sending and receiving messages over a
single TCP socket, yet never exposing any private keys and authenticating itself
to the router only through signatures. With I2CP, a client application tells the
router who they are (their "destination"), what anonymity, reliability, and
latency tradeoffs to make, and where to send messages. In turn the router uses
I2CP to tell the client when any messages have arrived, to request authorization
for some tunnels to be used, and, if necessary, to notify the client that the
router is under attack and unable to operate safely.</p>
<p>As the I2CP requires all client libraries to provide an implementation of the
end to end encryption (including <a href="how_elgamalaes">ElGamal/AES+SessionTag</a>),
the protocol itself isn't likely to be adopted for normal client applications
(except for those implemented in Java that can use the existing I2P
<a href="http://www.i2p.net/javadoc/net/i2p/client/package-summary.html">SDK</a>).
Instead, applications can take advantage of the base I2CP plus the
<a href="ministreaming">streaming</a> and <a href="datagrams">datagram</a> libraries
by using the <a href="sam">Simple Anonymous Messaging</a> protocol (which does not
require clients to deal with any sort of cryptography).</p>
<p>While the I2CP has been quite stable since its inception in
August of 2003, there have been minor modifications on occasion.
Here is the
<a href="/_static/pdf/I2CP_spec.pdf">I2CP Protocol Specification Version 0.9</a>
(pdf) dated August 28, 2003.
There may have been undocumented changes to the protocol since that time.
</p>
<p>In a standard I2P installation, port 7654 is used by java clients to communicate
with the local router via I2CP.
</p>
{% endblock %}