1.69 KB
Newer Older
3b7ameed's avatar
3b7ameed committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
tags: ["kovri"]
terms: ["Message", "Messages"]
summary: "The mechanisms in which information travels within I2P"

{% include untranslated.html %}
### The Basics

*Messages* (which exist on top of the @transports layer), contain varying types of information that are needed for the network but, most importantly, everything you see, do, send, or receive, will come and go in the form of *messages*.

There are 2 essential types of *messages* in @I2P:

- @Tunnel messages
- @I2NP messages

Essentially: *@tunnel messages* **contain** @I2NP **message fragments** which are then [reassembled]( at certain points within a @tunnel's path.

### In-depth information

@I2NP messages have a close relationship with @tunnel @messages so it is easy to get the term *messages* confused when reading @Java-I2P specifications:

1. First, the tunnel gateway accumulates a number of I2NP messages and preprocesses them into tunnel messages for delivery.
2. Next, that gateway encrypts that preprocessed data, then forwards it to the first hop.
3. That peer, and subsequent tunnel participants, unwrap a layer of the encryption, verifying that it isn't a duplicate, then forward it on to the next peer.
4. Eventually, the tunnel messages arrive at the endpoint where the I2NP messages originally bundled by the gateway are reassembled and forwarded on as requested.

### Notes

- @I2NP @messages need to be fragmented because they are variable in size (from 0 to almost 64 KB) and @tunnel @messages are fixed-size (approximately 1 KB).
- For details and specifications, visit the [I2NP spec]( and [Tunnel Message spec](