Links IPFS blocks using CIDs through a DAG (specifically a Merkle DAG).

It provides “consistent serialization for data across 2-3 serialized forms (JSON, protobuf, or CBOR)” (per Chris Joel)

This allows IPFS:

  1. to work with arbitrary data types
  2. basic structure, serializiation and traversal of content-addressed data
  3. Interoperable protocols
  4. Easy upgradeability
  5. Backwards compatibility

More info: https://ipld.io/docs/intro/primer/