Protocol Stack

Overview of the I2P protocol stack layers

The I2P stack is a layered design enabling anonymous communication. Each layer adds specific capabilities on top of those below it. See the Technical Documentation Index for additional details on each component.

Internet Layer

IP - Internet Protocol allows addressing hosts on the regular internet and routing packets across the internet using best-effort delivery.

Transport Layer

  • TCP - Transmission Control Protocol allows reliable, in-order delivery of packets
  • UDP - User Datagram Protocol allows unreliable, out-of-order delivery of packets

I2P Transport Layer

Encrypted router-to-router connections (not yet anonymous):

  • NTCP2 - NIO-based TCP transport
  • SSU2 - Secure Semi-reliable UDP transport

I2P Tunnel Layer

Provides full anonymous encrypted tunnel connections:

  • Tunnel messages - Encrypted I2NP messages and encrypted instructions for their delivery
  • I2NP messages - Protocol messages with layered encryption for multi-hop anonymous routing

I2P Garlic Layer

Provides encrypted and anonymous end-to-end I2P message delivery:

I2P Client Layer

  • I2CP - I2P Control Protocol allows applications to access the I2P network without having to use the router API directly

I2P End-to-End Transport Layer

I2P Application Interface Layer

Optional interfaces for application developers:

  • I2PTunnel - Tunnels TCP connections into and out of I2P
  • SAMv3 - Simple Anonymous Messaging protocol for non-Java applications

I2P Application Proxy Layer

Proxies for standard internet protocols:

  • HTTP - Web browsing proxy
  • IRC - Internet Relay Chat proxy
  • SOCKS - SOCKS4/4a/5 proxy
  • Streamr - UDP streaming proxy

Applications

Applications can interface with I2P at various layers:

Streaming/Datagram Applications:

  • I2P-native applications using the streaming or datagram libraries directly

SAM Applications:

  • Applications in any language using the SAM protocol

I2P-Specific Applications:

  • Applications designed specifically for I2P (I2PSnark, SusiMail, etc.)

Standard Internet Applications:

  • Regular applications using I2P proxies (web browsers, IRC clients, etc.)

Stack Diagram

I2P Protocol Stack

Note: SAM can use both the streaming library and datagrams.

Was this page helpful?