I2P is a secure data exchange protocol running over the usual TCP / IP protocol (in fact, UDP is primarily used, and if it can not be used, TCP). Its first task is to do so that it would be impossible to calculate the IP address of the server on which the site operates. The second task is to get rid of the centralized storage of domain names, many servers act as DNS servers. And the third task is to completely encrypt data packets when transferring them from the user to the server and back, making it meaningless to intercept packets. Thanks to this application on the user side, there is no longer any sense in encryption, it is already implemented by the I2P protocol. In the course of the matter, one more problem is solved: anonymization. Using I2P you can go to the regular Internet under other people’s IP addresses, thus avoiding blocking sites in a single country.The principle of the I2P protocol is as follows. Let the user need to contact a certain server. While we leave aside the question of how the user found the server, while I will only say that IP addresses are not used for identification, complex identifiers are used instead. The first thing a user needs to do is create a tunnel from himself to the server. A tunnel is a chain of intermediate servers through which packets will be sent from the user to the end server. As such intermediate servers, other users can act (and, as a rule, act).The I2P protocol works in a special way. In this case, each packet that needs to be transmitted is encrypted and then packaged into a large packet that contains several more such packets for transmission to different nodes. Thus, when a user receives a common, extracts from him only packets destined for him, and the rest passes on. Since all packages are encrypted, only the one to whom the package is intended knows what to do with it. Intermediate nodes do not know what will happen with this or that packet further, at the next node, and whether it is finite. Thanks to this, using only interception and packet analysis, it is very difficult (but impossible) to determine the physical location of the server, and the server, in turn, knows nothing about the user that accesses it.Interception is also complicated by the fact that each user changes the tunnel (the chain through which data is transmitted) after a certain period of time (10 minutes by default).Thus, anonymity of servers and user is solved, as well as traffic encryption.