How does I2P work?
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.
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.
The I2P Project is committed to maintaining accurate, current documentation. If you find any inaccuracies in the documents linked below, please enter a ticket identifying the problem.
Index to Technical Documentation
Overview
- Technical Introduction
- A Less-Technical Introduction
- Threat model and analysis
- Comparisons to other anonymous networks
- Protocol stack chart
- Papers and Presentations on I2P
- Invisible Internet Project (I2P) Project Overview August 28, 2003 (pdf)
Application-Layer Topics
- Naming and Addressbook
- Plugins Overview
- Plugin Specification
- Router software updates
- Bittorrent over I2P
- I2PControl Plugin API
- hostsdb.blockfile Format
- Configuration File Format
Application Layer API and Protocols
High-level, easy-to-use APIs for applications written in any language to send and receive data.- Application Development Overview and Guide
- I2PTunnel
- SOCKS Proxy
- HTTP Proxy
- CONNECT Proxy
- IRC Proxy
- SOCKS IRC Proxy
- Streamr Proxy
- HTTP Bidir Proxy
- SAM Protocol
- SAMv2 Protocol
- SAMv3 Protocol
- BOB Protocol
End-to-End Transport API and Protocols
The end-to-end protocols used by clients for reliable and unreliable communication.Client-to-Router Interface API and Protocol
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.- I2CP I2P Control Protocol / API overview
- I2CP Specification
- I2CP API Javadoc
- Common data structures specification
- Data Structures Javadoc
End-to-End Encryption
How client messages are end-to-end encrypted by the router.Network Database
Distributed storage and retrieval of information about routers and clients.- Network database overview, details, and threat analysis
- Cryptographic hashes
- Cryptographic signatures
Router Message Protocol
I2P is a message-oriented router. The messages sent between routers are defined by the I2NP protocol.- I2NP I2P Network Protocol Overview
- I2NP Specification
- I2NP Javadoc
- Common data structures specification
- Data Structures Javadoc
Tunnels
Selecting peers, requesting tunnels through those peers, and encrypting and routing messages through these tunnels.- Peer profiling and selection
- Tunnel routing overview
- Garlic routing and "garlic" terminology
- Tunnel building and encryption
- ElGamal/AES for build request encryption
- ElGamal and AES cryptography details
- Tunnel building specification
- Low-level tunnel message specification
- Unidirectional Tunnels
- Peer Profiling and Selection in the I2P Anonymous Network 2009 paper (pdf), not current but still generally accurate
Transport Layer
The protocols for direct (point-to-point) router to router communication.- Transport layer overview
- NTCP TCP-based transport overview and specification
- SSU UDP-based transport overview
- SSU specification
- NTCP transport encryption
- SSU transport encryption
- Transport Javadoc
- NTCP Javadoc
- SSU Javadoc
Other Router Topics
- Native BigInteger Library
- Time synchronization and NTP
- Performance (not current)
- Configuration File Format
Developer's Guides and Resources
- New Developer's Guide
- New Translator's Guide
- Monotone Guide
- Developer Guidelines
- Javadocs (standard internet) Note: always verify that javadocs are current by checking the release number.
- Javadocs inside I2P: Server 1 Server 2 Server 3 Note: always verify that javadocs are current by checking the release number.
- Ports used by I2P
- Automatic updates to development builds inside I2P
- Updating the wrapper manually
- User forum (I2P internal)
- Developer forum inside I2P
- Bug tracker
- Viewmtn inside I2P.
- I2P Source exported to GitHub
- I2P Source Git Repo inside I2P
- Source translation at Transifex
- 0.9 roadmap wiki (not current)
- Old roadmap (not current)
- To Do List (not current)















