Understanding libp2p


I am looking for resources in order to help me understand libp2p better.
I want to use the rust-libp2p library in order to use IPFS within desktop and mobile applications.

The first step, as I understand it, is to use it to connect to IPFS nodes and talk the correct protocols. Is there any documentation on how libp2p is used to create/connect to IPFS nodes?