2008-01-31 20:38:37 +00:00
|
|
|
{% extends "_layout.html" %}
|
|
|
|
{% block title %}I2CP{% endblock %}
|
2008-02-10 14:17:56 +00:00
|
|
|
{% block content %}
|
2008-02-10 22:43:33 +00:00
|
|
|
<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
|
2008-03-30 21:52:15 +00:00
|
|
|
<a href="package-client.html">Client SDK</a>).
|
2004-07-20 23:23:23 +00:00
|
|
|
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>
|
|
|
|
|
2008-04-24 13:38:12 +00:00
|
|
|
<p>Actually, I2CP end-to-end encryption was disabled in I2P release 0.6,
|
|
|
|
leaving in place the end-to-end garlic encryption.
|
|
|
|
However, client libraries must still implement public/private key signing
|
|
|
|
for leasesets, and key management.
|
|
|
|
</p>
|
|
|
|
|
2008-02-10 14:17:56 +00:00
|
|
|
<p>While the I2CP has been quite stable since its inception in
|
|
|
|
August of 2003, there have been minor modifications on occasion.
|
2008-03-20 02:47:11 +00:00
|
|
|
Here is the
|
|
|
|
<a href="/_static/pdf/I2CP_spec.pdf">I2CP Protocol Specification Version 0.9</a>
|
|
|
|
(pdf) dated August 28, 2003.
|
2008-03-30 21:52:15 +00:00
|
|
|
That document also references the
|
|
|
|
<a href="/_static/pdf/datastructures.pdf">Common Data Structures Specification Version 0.9</a>.
|
2008-03-20 02:47:11 +00:00
|
|
|
There may have been undocumented changes to the protocol since that time.
|
2008-02-10 14:17:56 +00:00
|
|
|
</p>
|
|
|
|
|
2008-03-16 16:17:05 +00:00
|
|
|
<p>In a standard I2P installation, port 7654 is used by java clients to communicate
|
|
|
|
with the local router via I2CP.
|
|
|
|
</p>
|
|
|
|
|
2008-03-30 21:52:15 +00:00
|
|
|
<p>
|
|
|
|
I2CP Definition
|
|
|
|
<p>
|
|
|
|
<i>Note</i> - The following information is extracted from the current (2008) code base,
|
|
|
|
however it may be incomplete and/or inaccurate. Check the code to be sure.
|
|
|
|
<p>
|
|
|
|
<table border=1>
|
|
|
|
<tr><td>Message<td>Type
|
|
|
|
<tr><td>
|
|
|
|
CreateLeaseSetMessage
|
|
|
|
<td align=right>4
|
|
|
|
<tr><td>
|
|
|
|
CreateSessionMessage
|
|
|
|
<td align=right>1
|
|
|
|
<tr><td>
|
2009-01-05 23:20:20 +00:00
|
|
|
DestLookupMessage <i>(new in release 0.7)</i>
|
|
|
|
<td align=right>34
|
|
|
|
<tr><td>
|
|
|
|
DestReplyMessage <i>(new in release 0.7)</i>
|
|
|
|
<td align=right>35
|
|
|
|
<tr><td>
|
2008-03-30 21:52:15 +00:00
|
|
|
DestroySessionMessage
|
|
|
|
<td align=right>3
|
|
|
|
<tr><td>
|
|
|
|
DisconnectMessage.java
|
|
|
|
<td align=right>30
|
|
|
|
<tr><td>
|
|
|
|
GetDateMessage.java
|
|
|
|
<td align=right>32
|
|
|
|
<tr><td>
|
|
|
|
MessagePayloadMessage
|
|
|
|
<td align=right>31
|
|
|
|
<tr><td>
|
|
|
|
MessageStatusMessage
|
|
|
|
<td align=right>22
|
|
|
|
<tr><td>
|
|
|
|
ReceiveMessageBeginMessage
|
|
|
|
<td align=right>6
|
|
|
|
<tr><td>
|
|
|
|
ReceiveMessageEndMessage
|
|
|
|
<td align=right>7
|
|
|
|
<tr><td>
|
|
|
|
ReportAbuseMessage
|
|
|
|
<td align=right>29
|
|
|
|
<tr><td>
|
|
|
|
RequestLeaseSetMessage
|
|
|
|
<td align=right>21
|
|
|
|
<tr><td>
|
|
|
|
SendMessageMessage
|
|
|
|
<td align=right>5
|
|
|
|
<tr><td>
|
|
|
|
SessionStatusMessage
|
|
|
|
<td align=right>20
|
|
|
|
<tr><td>
|
|
|
|
SetDateMessage
|
|
|
|
<td align=right>33
|
|
|
|
</table>
|
|
|
|
|
2008-02-10 14:17:56 +00:00
|
|
|
{% endblock %}
|