Following is an index to the technical documentation for I2P.
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 specifications linked below are currently supported in the network. See the Proposals page for specifications in discussion or development.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
- Specifications
- Protocol stack chart
- Papers on I2P
- Presentations, articles, tutorials, videos, and interviews
- Invisible Internet Project (I2P) Project Overview August 28, 2003 (pdf)
Application-Layer Topics
- Application Development Overview and Guide
- Naming and Address Book
- Address Book Subscription Feed Commands
- Plugins Overview
- Plugin Specification
- Managed Clients
- Embedding the router in your application
- 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
- I2PTunnel Configuration
- SOCKS Proxy
- HTTP Proxy
- CONNECT Proxy
- IRC Proxy
- SOCKS IRC Proxy
- Streamr Proxy
- HTTP Bidir Proxy
- SAM Protocol (Deprecated)
- SAMv2 Protocol (Deprecated)
- SAMv3 Protocol
- BOB Protocol (Deprecated)
End-to-End Transport API and Protocols
The end-to-end protocols used by clients for reliable and unreliable communication.- Streaming Protocol Overview
- Streaming Protocol Specification
- Streaming Javadoc
- Datagrams
- Datagram Javadoc
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.- ECIES-X25519-AEAD-Ratchet encryption for destinations
- ECIES-X25519 encryption for routers
- ElGamal/AES+SessionTag encryption
- ElGamal and AES cryptography details
Network Database
Distributed storage and retrieval of information about routers and clients.- Network database overview, details, and threat analysis
- Cryptographic hashes
- Cryptographic signatures
- Red25519 signatures
- Router reseed specification
- Base32 Addresses for Encrypted Leasesets
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
- Encrypted Leaseset 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 (ElGamal)
- Tunnel building specification (ECIES-X25519)
- 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
- NTCP2 specification
- SSU UDP-based transport overview
- SSU specification
- SSU2 specification
- NTCP transport encryption
- SSU transport encryption
- Transport Javadoc
- NTCP Javadoc
- SSU Javadoc
Other Router Topics
- Router software updates
- Router reseed specification
- Native BigInteger Library
- Time synchronization and NTP
- Performance
- Configuration File Format
- GeoIP File Format
Developer's Guides and Resources
- New Developer's Guide
- New Translator's Guide
- Monotone Guide
- Developer Guidelines
- Javadocs on the standard internet: Server 1 Server 3 Note: always verify that javadocs are current by checking the release number.
- Javadocs inside I2P: Server 3 Note: always verify that javadocs are current by checking the release number.
- Proposals
- Embedding the router in your application
- How to Set up a Reseed Server
- Ports used by I2P
- Updating the wrapper manually
- User forum
- Developer forum inside I2P
- Bug tracker
- I2P Source exported to GitHub
- I2P Source Git Repo inside I2P
- Source translation at Transifex
- Roadmap
- To Do List (not current)
- Ancient invisiblenet I2P documents (2003)
- The ancient I2P mailing list 2004-07 to 2006-10