Libp2p protocols can be divided into 3 layers:
- Transport protocols use peer addresses to establish network connections.
- Connection protocols negotiate, authenticate, encrypt, create sessions, or multiplex streams.
- Application protocols exchange actual payloads once a session is active.
To contribute to the libp2p stack or build your own, check developing transport and connection protocols and the list of best practices.