Index to Technical Documentation (I2P)
Posted: Wed Jan 10, 2024 1:45 pm
# Introduction
Source: http://i2p-projekt.i2p/en/docs, January 10, 2024. Checking the links (internal/external) is the responsibility of the user.
This page was last updated in 2022-08 and is accurate for router version 0.9.55.
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
High-level, easy-to-use APIs for applications written in any language to send and receive data.
The end-to-end protocols used by clients for reliable and unreliable communication.
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.
How client messages are end-to-end encrypted by the router.
Distributed storage and retrieval of information about routers and clients.
I2P is a message-oriented router. The messages sent between routers are defined by
the I2NP protocol.
Selecting peers, requesting tunnels through those peers, and encrypting and routing messages through these tunnels.
The protocols for direct (point-to-point) router to router communication.
# Part 2: About I2P
== Guide to I2P Software
+++ Applications
+++ Help
:::: Comparisons
+++ Verify I2P
+++ Contributor Guides
:::: Develop Software
== Community
+++ Research
+++ Docs
:::: How does it work?
:::: API
:::: Protocols
:::: Transports
:::: Tunnels
:::: Meetings, Roadmap
:::: Contact and Team
:::: Social Internetworks
Source: http://i2p-projekt.i2p/en/docs, January 10, 2024. Checking the links (internal/external) is the responsibility of the user.
This page was last updated in 2022-08 and is accurate for router version 0.9.55.
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 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
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)
The end-to-end protocols used by clients for reliable and unreliable communication.
- Streaming Protocol Overview
- Streaming Protocol Specification
- Streaming Javadoc
- Datagrams
- Datagram Javadoc
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
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
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
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
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
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
- Router software updates
- Router reseed specification
- Native BigInteger Library
- Time synchronization and NTP
- Performance
- Configuration File Format
- GeoIP File Format
- 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
- English
- Deutsch
- Castellano
- Français
- Russian Русский язык
- Chinese 中文
- Arabic العربية
- Bahasa Indonesia
- Chinese 中文 (繁體中文, 台灣)
- Greek Ελληνικά
- Hebrew עברית
- Hungarian
- Italiano
- Japanese 日本語
- Korean 한국말
- Fiteny Malagasy
- Nederlands
- Persian فارسی
- Polski
- Português
- Português do Brasil
- Română
- Suomi
- Svenska
- Türkçe
- Ukrainian Українська
# Part 2: About I2P
== Guide to I2P Software
+++ Applications
+++ Help
:::: Comparisons
+++ Verify I2P
+++ Contributor Guides
:::: Develop Software
- New developers
- Using an IDE with I2P
- Developer guidelines and coding style
- Git
- Translate I2P into more Languages
== Community
+++ Research
- Academic research
- Open research questions
- Vulnerability Response Process
- Academic papers and peer review
+++ Docs
:::: How does it work?
- Gentle intro
- Tech intro
- Threat model
- Garlic routing
- Network database
- Tunnel routing
- Peer selection
- Cryptography
- ElGamal/AES+SessionTags
- Specifications
- Proposals
:::: API
:::: Protocols
:::: Transports
:::: Tunnels
- Tunnel implementation
- Unidirectional tunnels
- Old implementation
- Naming and Address Book
- Plugins
- Strict Countries
:::: Meetings, Roadmap
:::: Contact and Team
:::: Social Internetworks
- Gitlab Develop
- Mastodon
- I2P Metrics