I2P协议栈是一个分层设计,能够实现匿名通信。每一层都在下层功能的基础上增加特定的能力。有关每个组件的更多详细信息,请参阅技术文档索引 。
互联网层
IP - Internet Protocol(互联网协议)允许对常规互联网上的主机进行寻址,并使用尽力而为的传输方式在互联网上路由数据包。
传输层
- TCP - 传输控制协议,允许可靠、有序的数据包传输
- UDP - 用户数据报协议,允许不可靠、无序的数据包传输
I2P 传输层
加密的 router 到 router 连接(尚未匿名):
I2P Tunnel 层
提供完全匿名的加密tunnel连接:
- Tunnel messages - 加密的I2NP消息和用于传递的加密指令
- I2NP messages - 具有分层加密的协议消息,用于多跳匿名路由
I2P Garlic Layer
提供加密和匿名的端到端 I2P 消息传递:
- Garlic messages - 用于匿名传输的封装I2NP消息
I2P 客户端层
- I2CP - I2P Control Protocol 允许应用程序访问 I2P 网络,无需直接使用 router API
I2P 端到端传输层
- Streaming Library - 提供类似于TCP的可靠、有序传输
- Datagram Library - 提供类似于UDP的不可靠传输
I2P 应用接口层
应用程序开发者的可选接口:
I2P 应用代理层
标准互联网协议的代理:
- HTTP - 网页浏览代理
- IRC - Internet Relay Chat 代理
- SOCKS - SOCKS4/4a/5 代理
- Streamr - UDP 流媒体代理
应用程序
应用程序可以在不同层次与I2P进行接口连接:
流式/数据报应用程序: - 直接使用流式或数据报库的I2P原生应用程序
SAM 应用程序: - 使用 SAM 协议的任何语言编写的应用程序
I2P专用应用程序: - 专门为I2P设计的应用程序(I2PSnark、SusiMail等)
标准互联网应用程序: - 使用I2P代理的常规应用程序(网页浏览器、IRC客户端等)
协议栈图

注意:SAM 可以同时使用流库和数据报。