diff --git a/www.i2p2/image_design/protocol_stack.svg b/www.i2p2/image_design/protocol_stack.svg new file mode 100644 index 00000000..61a6db2d --- /dev/null +++ b/www.i2p2/image_design/protocol_stack.svg @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/www.i2p2/pages/protocols.html b/www.i2p2/pages/protocols.html index 0b5dfa13..921e5d47 100644 --- a/www.i2p2/pages/protocols.html +++ b/www.i2p2/pages/protocols.html @@ -4,91 +4,104 @@

Here is the protocol stack for I2P. -See also theIndex to Technical Documentation. +See also the Index to Technical Documentation. Updated August 2010, current for router version 0.8.

- - - - - - - - - - - - - - - - - -
Standard Apps -Jetty, Apache, Monotone, CVS, browsers -  +

+Each of the layers in the stack provides extra capabilities. +The capabilities are listed below, starting at the bottom of the protocol stack. +

    +
  • + Internet Layer: +
    + IP: Internet Protocol, allow addressing hosts on the regular internet and routing packets across the internet using best-effort delivery. +
  • +
  • + Transport Layer: +
    + TCP: Transmission Control Protocol, allow reliable, in-order delivery of packets across the internet. +
    + UDP: User Datagram Protocol, allow unreliable, out-of-order delivery of packets across the internet. +
  • +
  • + I2P Transport Layer: provide encrypted connections between 2 I2P routers. These are not anonymous yet, this is strictly a hop-to-hop connection. + Two protocols are implemented to provide these capabilities. NTCP builds on top of TCP, while SSU uses UDP. +
    + NTCP: NIO-based TCP +
    + SSU: Secure Semi-reliable UDP +
  • +
  • + I2P Tunnel Layer: provide full encrypted tunnel connections. +
    + Tunnel messages: tunnel messages are large messages containing encrypted I2NP (see below) messages and encrypted instructions for their delivery. + The encryption is layered. The first hop will decrypt the tunnel message and read a part. Another part can still be encrypted (with another key), + so it will be forwarded. +
    + I2NP messages: I2P Network Protocol messages are used to pass messages through multiple routers. These I2NP messages are combined in tunnel messages. +
  • +
  • + I2P Garlic Layer: provide encrypted and anonymous end-to-end I2P message delivery. +
    + I2NP messages: I2P Network Protocol messages are wrapped in each other and used to ensure encryption between two tunnels and are passed along from source to destination, keeping both anonymous. +
  • +
+

-
Other I2P Apps -Syndie, EepGet, plugins -  +

+The following layers are strictly speaking no longer part of the I2P Protocol stack, they are not part of the core 'I2P router' functionality. +However, each of these layers adds additional functionality, to allow applications simple and convenient I2P usage. +

    +
  • + I2P Client Layer: allow any client to use I2P functionality, without requiring the direct use of the router API. +
    + I2CP: I2P Client Protocol, allows secure and asynchronous messaging over I2P by communicating messages over the I2CP TCP socket. +
  • +
  • + I2P End-to-end Transport Layer: allow TCP- or UDP-like functionality on top of I2P. +
    + Streaming Library: an implementation of TCP-like streams over I2P. This allows easier porting of existing applications to I2P. +
    + Datagram Library: an implementation of UDP-like messages over I2P. This allows easier porting of existing applications to I2P. +
  • +
  • + I2P Application Interface Layer: additional (optional) libraries allowing easier implementations on top of I2P. +
    + I2PTunnel +
    + SAM/SAMv2/SAMv3(*), + BOB +
  • +
  • + I2P Application Proxy Layer: proxy systems. +
    + HTTP Client/Server, IRC Client, SOCKS, Streamr +
  • +
+

+

+Finally, what could be considered the 'I2P application layer', is a large number of applications on top of I2P. +We can order this based on the I2P stack layer they use. +

    +
  • Streaming/datagram applications: i2psnark, Syndie, i2phex...
  • +
  • SAM/BOB applications: IMule, i2p-bt, i2prufus, Robert...
  • +
  • Other I2P applications: Syndie, EepGet, plugins...
  • +
  • Regular applications: Jetty, Apache, Monotone, CVS, browsers, e-mail...
  • +
+

-
SAM/BOB Apps - -IMule, i2p-bt, i2prufus, Robert +
+
+ I2P Network stack +

+ Figure 1: The layers in the I2P Network stack. +
+
+
-
Proxy Apps -HTTP Client/Server, IRC Client, SOCKS -Streamr - -
Interface Apps -I2PTunnel -SAM -/ -SAMv2 -/ -SAMv3 -(*), BOB - -
Java Apps -i2psnark, Syndie, i2phex -  - -
End-to-End Transport -Streaming Lib -Datagrams - -
Client Protocol -I2CP - -
Network Protocol -I2NP - -
Garlic Encryption -ElGamal/AES+SessionTag - -
Tunnel Messages -Tunnel Messages - -
Tunnel Message Encryption -AES256/CBC - -
Transports -NTCP -SSU - -
Transport Encryption -AES256/CBC - -
-Java NIO TCP -UDP - -
OS -TCP - -

* Note: SAM/SAMv2 can use both the streaming lib and datagrams. +

{% endblock %} diff --git a/www.i2p2/static/images/protocol_stack.png b/www.i2p2/static/images/protocol_stack.png new file mode 100644 index 00000000..147f330c Binary files /dev/null and b/www.i2p2/static/images/protocol_stack.png differ