IPFS protocol messages

Hello everyone, good night.

I am doing a course conclusion paper and my teacher asked me about the messaging on IPFS. I need to know how the connection is done between computers and what messages are exchanged in this process. I need to know yet what messages are exchanged on file transfer process in the protocol.

For example, in HTTP to retrieve a text or file, we need to do a GET request, and the server responds 200 OK.

Where can I access this kind of documentation?
Where can I find the IPFS header like on TCP or IP.

Regards, Pedro.

IPFS is a pretty big onion, it has lots of layers.

digraph G {
    subgraph cluster_IPFS {
        label = "IPFS";

    subgraph cluster_Libp2p {
        label = "Libp2p";

    IPLD -> Bitswap;
    Bitswap -> Host;
    Bitswap -> DHT;
    DHT -> Host;
    Host -> Transports;
    Transports -> Other_NodeA;
    Transports -> Other_NodeB;
    Transports -> Other_NodeC;

Is a graphviz of the minimal layers to get a decent IPFS experience.

(I’ve omited the API, in the end the API would build a graph walker or something like that, and call IPLD)

There is many documentions about the different layers. But not so much about how they communicate (it’s made that way, you could somewhat easly swap a layer for an other blindly, so for example if you don’t like the DHT and want to use centralised servers instead, that would be really easy to do, just implement your client, follow the interface, import it in IPFS, and it just works).

How IPFS Works - Steven Allen - YouTube Is a really good video.

If you have any less broad questions I would happely answer them, but just like that, no :smiley: IPFS isn’t http it’s way too wide or it would just take 1 hour to write everything, and probably thrice more including that this explaination would be inunderstandable.
Just watch : “How IPFS Works” and comme for questions after. :slight_smile:

BTW, where do you study to get courses on IPFS :smiley: ? Sounds like an awesome place to study.