IPFS is a modular suite of protocols and standards for organizing and moving data, designed from the ground-up with the principles of content addressing and peer-to-peer networking.
Here’s how the IPFS subsystems stack up:
| Purpose | Subsystem |
|---|---|
| Defining and organising the data | UnixFS, DAG-CBOR, DAG-JSON IPLD, MFS |
| Transferring Data | Bitswap, HTTP (IPFS Gateways), Graphsync, Sneakernet, and more in development |
| Content routing: linking between CID: IP addresses | Kademlia DHT, Delegated over HTTP, Bitswap (WANT), mDSN |
| Addressing for data & peers | Multiformats (CIDs, multiaddr) |
| Bridging between IPFS and HTTP | IPFS Gateways, Pinning API Spec |
| Establishing peer-to-peer connectivity | Libp2p (TCP, QUIC, WebRTC, WebTransport) |
| Mutability & Dynamic Naming | IPNS (Interplanetary Naming System) |
| DNSLink |
| Purpose | Part of the IPFS stack |
|---|---|
| Addressing data and peers | CIDs, IPNS, DNSLink |
| Defining Data | IPLD (UnixFS, CAR files, DAG-CBOR, DAG-JSON), MFS |
| Routing Data | DHT, Bitswap, mDNS, Delegated HTTP Routing |
| Transferring/Moving Data | Bitswap, IPFS HTTP Gateways |
| Establish connectivity between peers | Libp2p (TCP, QUIC, WebRTC, WebTransport) |