IPFS(InterPlanetary File System,星际文件系统) 是一套开源的点对点超媒体协议与分布式文件系统,核心理念是用内容寻址替代传统的位置寻址。它让数据以“它是什么”而非“它在哪”被唯一标识、发现与传输,从而构建一个更抗审查、可验证、可长期保存的互联网数据层。
Juan Benet 于 2014 年提出并创立 Protocol Labs 推动。名称致敬 Licklider 的“星际计算机网络”构想——即使在高延迟(如地球与火星之间)环境下,也能按内容可靠获取数据。IPFS 可被理解为“全球共享的单一 BitTorrent 群 + Git 风格的 Merkle DAG”。
1. 为什么需要 IPFS?传统 Web 的痛点
传统 HTTP/HTTPS 以服务器位置为中心:
- 内容依赖单一或少数源站,易受宕机、审查、链接失效影响。
- 相同内容被重复传输与存储。
- 完整性依赖服务器与证书体系,中间人可篡改。
- 网页平均寿命仅约 100 天,历史极易丢失。
IPFS 的目标不是立刻替换 HTTP,而是提供一个可互操作的分布式层:内容可被任意节点缓存与服务,哈希自证完整性,永久链接通过 CID 实现。
graph LR
subgraph HTTP["传统 HTTP 模式"]
C1[客户端] -->|请求 URL| S1[单一服务器]
S1 -->|返回内容| C1
end
subgraph IPFS["IPFS 模式"]
C2[客户端] -->|请求 CID| N1[节点 A]
C2 -->|请求 CID| N2[节点 B]
C2 -->|请求 CID| N3[节点 C]
N1 & N2 & N3 -->|任意持有者返回| C2
end
2. 核心技术原理
2.1 内容寻址与 CID
数据被切成块(默认约 256 KB),每个块通过哈希(通常 SHA-256)+ 元数据生成 CID(Content Identifier)。相同内容永远产生相同 CID,内容一改 CID 即变。
CID 使用 Multiformats 设计,支持版本(CIDv0/CIDv1)、编解码器、多哈希等,具备向前兼容性。
flowchart TD
A[原始文件] --> B[切块 256KB]
B --> C[每块计算哈希]
C --> D[生成块级 CID]
D --> E[用 IPLD/UnixFS 链接成 Merkle DAG]
E --> F[根 CID = 文件/目录唯一标识]
F --> G[可验证、可去重、可永久引用]
2.2 Merkle DAG 与 IPLD
IPFS 的数据模型是 Merkle DAG(默克尔有向无环图):节点之间的链接是目标内容的哈希。这带来:
- 自认证(任何节点可独立验证)。
- 去重(相同块只存一份)。
- 可组合(文件、目录、任意数据结构)。
- 不可变(改一处即新 CID)。
IPLD(InterPlanetary Linked Data)是通用的内容寻址链接数据框架;UnixFS 是其面向文件/目录的具体实现;CAR 文件则是可传输的内容寻址归档。
graph TD
Root[根节点 CID<br/>QmXxx...] --> Dir1[目录节点]
Root --> FileA[文件 A 元数据]
Dir1 --> FileB[文件 B]
FileA --> Block1[数据块 1]
FileA --> Block2[数据块 2]
FileB --> Block3[数据块 3]
Block1 -.->|相同内容可复用| Shared[共享块]
2.3 发现与传输:DHT + Bitswap
- Kademlia DHT:分布式哈希表,存储“哪个 Peer 提供哪个 CID”的提供者记录。节点通过 DHT 查找持有数据的对等节点。
- Bitswap:核心块交换协议。节点维护 want-list,优先向已连接对等节点询问/交换块(类似 BitTorrent,但跨文件、全局群),找不到时再查 DHT。同时承担路由与传输职责。
- 底层由 libp2p 提供连接管理、加密、身份与多种传输(TCP、QUIC、WebRTC 等)。本地发现可用 mDNS。
sequenceDiagram
participant Client as 请求节点
participant Peers as 已连接 Peers
participant DHT as Kademlia DHT
participant Provider as 数据持有者
Client->>Peers: Bitswap want-have / want-list(根 CID)
alt 本地 Peers 有
Peers-->>Client: 返回块 + 后续子块
else 无
Client->>DHT: 查询 Provider Records
DHT-->>Client: 返回 PeerID + 多地址
Client->>Provider: 建立连接并请求块
Provider-->>Client: Bitswap 传输块
end
Note over Client: 递归获取子块直到完整 Merkle DAG
2.4 可变命名:IPNS 与 DNSLink
内容本身不可变,但可用 IPNS(基于公钥的可变指针)或 DNSLink 把人类可读名称指向最新 CID,实现“可更新的永久链接”。
3. 子系统全景
| 职责 | 主要组件 | 说明 |
|---|---|---|
| 数据表示与组织 | CID、IPLD、UnixFS、MFS、CAR | 内容寻址与结构化 |
| 内容路由 | Kademlia DHT、Bitswap、委托路由、mDNS | 找到谁有数据 |
| 数据传输 | Bitswap、HTTP Gateways、Graphsync | 实际搬数据 |
| 连接层 | libp2p | P2P 基础 |
| 可变命名 | IPNS、DNSLink | 解决不可变与更新矛盾 |
| HTTP 桥接 | Gateways、Pinning API | 兼容现有 Web |
4. 持久性:Pinning 与 Filecoin
关键认知:ipfs add 不等于永久保存。节点会垃圾回收未 pin 内容。
- Pinning:明确告诉节点“不要删除这个 CID”。可本地 pin,或使用远程 Pinning 服务。
- Pinning 服务(Pinata、Filebase、Storacha 等):付费专业节点帮你 pin,并通常提供专用网关。适合 NFT、静态站。
- Filecoin:激励存储市场。存储提供者用密码学证明持续持有数据,用户付费购买。IPFS 负责快速发现与传输,Filecoin 负责可验证长期持久化。2026 年已有成熟的 IPFS → Filecoin 迁移工具,CID 保持不变。
flowchart LR
A[上传文件] --> B[生成 CID]
B --> C{需要持久?}
C -->|短期/热数据| D[本地 Pin 或 Pinning 服务]
C -->|长期/可验证| E[Filecoin 存储交易]
D & E --> F[多节点/多服务冗余]
F --> G[通过网关或原生节点访问]
5. 现有实现与生态
- Kubo(原 go-ipfs):最成熟的 Go 完整实现,含 daemon、CLI、网关、RPC。适合服务器与桌面。
- Helia:轻量模块化 JS/TS 实现,适合嵌入浏览器或应用,启动快、资源占用低。
- 其他:Boxo(Go 组件库)、Nabu 等。
注意:2026 年 9 月底,原核心维护方 Shipyard(Protocol Labs 资助)结束对 Kubo、Helia 及部分公共网关的专职维护。社区与新 steward 正在接管,网络仍持续运行,ProbeLab 监测显示 DHT 相关在线节点规模在数千量级。
6. 典型应用场景
- NFT 与 Web3 资产:元数据、图片、视频存 IPFS,合约只存 CID。
- 去中心化前端与静态站:dApp、文档、镜像。
- 抗审查存档:维基百科镜像、新闻、科研数据。
- 离线优先与协作:科学数据共享、游戏资源分发、个人知识库。
- 与 AI/企业结合:Filecoin 2026 年推出企业与代理友好产品,支持 IPFS 内容迁移与可验证存储。
7. 实践建议与常见坑
- 永远多 pin:至少两个独立服务或自有节点 + 备份。
- 冷内容延迟:首次获取可能慢于直接 HTTP,缓存后接近或更好。
- 网关依赖:生产环境应评估专用网关或原生节点,而非只依赖公共网关。
- 可变数据:用 IPNS/DNSLink,或接受“新版本新 CID”。
- 隐私:IPFS 默认公开;敏感数据需加密后再上传。
- 监控:使用 ProbeLab 等工具观察网络健康,或自建节点监控。
简单上手流程:
# 安装 Kubo 后
ipfs init
ipfs daemon
ipfs add myfile.txt # 得到 CID
ipfs pin add <CID> # 本地钉住
# 通过网关访问:https://ipfs.io/ipfs/<CID>8. 优势、挑战与未来
优势:完整性自证、抗单点、内容去重、可移植 CID、与区块链天然契合。
挑战:无默认永久、性能波动、网关中心化倾向、维护可持续性、可变数据不友好。
IPFS 已证明内容寻址 + P2P 在真实互联网中可行,并成为 Web3 与去中心化应用的重要基础设施。它的真正价值在于提供“可验证、可移植、抗失效”的数据层,而非取代一切中心化服务。结合 Filecoin 的激励存储与社区持续演进,它正从“实验协议”走向更稳健的生产级数据基础设施。
延伸阅读:官方文档 docs.ipfs.tech、原始白皮书、ProbeLab 网络监测、Filecoin 文档。
原文 https://blog.csdn.net/2301_79518550/article/details/149944879
跳到内容