﻿---
title: "点对点网络"
description: "点对点网络让每个节点维护一组有限且不断变化的直接对等节点，用于发现、广播和请求-响应交换；它不会形成单一全局视图，也不会把消息接受变成共识。"
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 点对点网络

> 仅供教育参考，不构成投资建议；投资可能产生损失。

<a id="answer"></a>

## 直接答案

点对点网络让每个节点发现并维护一组有限的直接对等节点，交换经过认证的协议消息，并在不经单一中央服务器转发所有内容的情况下建立本地视图。它不是完全图、全局内存池，也不是自身即可作为事实来源。某个对等节点接收、验证或转发对象，并不能证明所有节点均已看到、区块已将其纳入或共识已将其最终确定。

合并后的以太坊使用两个独立的点对点网络。执行客户端使用节点发现、RLPx 和有版本的 `eth` 能力进行同步与交易交换；共识客户端使用 discv5 发现节点，并通过 libp2p 广播和请求-响应协议交换信标区块、见证及其他共识对象。两个客户端在本机通过经过认证的 Engine API 协作；钱包通常通过 JSON-RPC 提交交易，但不会因此成为参与广播的节点。

<a id="mechanism"></a>

## 运作机制

1. 锁定链、网络、创世块和分叉配置、执行与共识客户端版本、节点身份和观察时间。将执行客户端、共识客户端、可选验证者、本地 Engine API 和面向用户的 RPC 画成独立组件。
2. 检查每条发现路径：内置引导节点、DNS 列表、静态或可信对等节点、ENR 或 enode 身份、公布端点与序列号、网络兼容性、NAT 和入站可达性。签名 ENR 将记录绑定到密钥，但不证明诚实、同步状态或当前可达性。
3. 分别记录连接与协议协商。执行层对等节点建立 RLPx 会话并协商 `eth` 等能力；共识层对等节点在 discv5 发现后协商 libp2p 传输、安全与协议 ID。找到端点不等于应用协议兼容。
4. 按真实路径追踪每个对象。交易可能从 RPC 提交进入本地验证与执行层内存池，再通过 `eth` 公告和请求传播。共识对象采用特定主题的广播验证，而缺失区块可通过请求-响应取回。
5. 在本地接纳或转发前执行有界解码、去重、速率限制、签名、语法与状态检查。记录无效、忽略、不可用和资源受限结果；对等节点评分和断开策略是本地实现决策，并非共识信誉。
6. 将接收、验证、转发、交易纳入、执行结果、分叉选择、合理化与最终确定视为不同状态与时钟。当本地池、链头或历史响应不完整、冲突或过时时，对比多个对等节点或节点。
7. 监控入站和出站对等节点的多样性、运营者、IP 前缀与 ASN 集中度、流失、延迟、丢包、带宽、队列、无效流量、时钟健康度和 RPC 依赖。演练引导节点丢失、NAT 故障、网络分区、日蚀攻击、过载与恢复，但不要声称绝对抵抗能力。

对等节点发现、传输安全和应用有效性解决不同问题。引导节点负责介绍候选节点，不转发普通流量，也不选择规范链。加密保护会话内容与认证，但对等节点仍能获知网络端点和时间；远程 RPC 提供商还可观察查询、地址和提交的交易。

传播并发进行且取决于拓扑。扇出、重复路径、带宽串行化、验证 CPU、排队、丢包、重传、对等节点评分及对象特定规则共同决定到达时间的分布与尾部。`delay = hops * perHopTime` 之类公式只是明确假设串行处理的教学模型，而非网络保证。

<a id="example"></a>

## 计算示例

- **串行路径与流水线。** 在一条教学路径中有 `4 hops`，每跳网络时间为 `80 ms`，验证时间为 `20 ms`。完全串行处理得到 `4 * (80 + 20) = 400 ms`。若验证与下一次传输重叠，简化下限为 `4 * 80 + 20 = 340 ms`。两者都不是全网传播时间。
- **交易公告与取回。** 节点收到 `20` 个交易哈希，已有 `6` 个，因此缺少 `20 - 6 = 14` 个交易正文。若教学请求最多携带 `8` 个，则需要 `ceil(14 / 8) = 2 batches`。每批往返 `120 ms`、验证 `30 ms`，串行完成时间为 `2 * (120 + 30) = 300 ms`，理想并行为 `150 ms`。实际限制取决于协商的 `eth` 版本和客户端。
- **简化日蚀概率。** 若 `8` 个出站对等节点各自独立抽样，恶意候选占 `25%`，全部为恶意节点的概率为 `0.25^8 = 0.0000152587890625 = 0.00152587890625%`。发现偏差、女巫身份、IP 与 ASN 相关性和对等节点保留策略会破坏独立性假设，因此这不是安全保证。
- **验证过载。** 入站广播为 `900 messages/s`；`4` 个工作线程各验证 `250 messages/s`，总能力为 `1,000 messages/s`，富余能力为 `100 messages/s`，利用率为 `90%`。攻击流量达到 `1,400 messages/s` 时，每秒积压 `400 messages/s`，累积 `6,000 messages` 需要 `15 seconds`。若忽略服务时间方差，`5,000-message` 队列会在丢弃或限流前的 `5,000 / 400 = 12.5 seconds` 内填满。

<a id="risks"></a>

## 风险

- 链、创世块或分叉配置错误
- 执行客户端、共识客户端或 Engine API 不匹配
- 引导节点和 DNS 发现集中或被劫持
- 端点元数据过时、伪造或不可达
- NAT、防火墙或端口配置阻碍预期可达性
- 日蚀攻击过滤节点的本地视图
- 女巫身份及 IP、ASN、运营者或云服务集中
- 过度依赖静态或可信对等节点
- 交易审查或选择性转发
- 公开与私有订单流分化
- 本地内存池接纳、替换与逐出策略分化
- 无效广播耗尽验证 CPU
- 超大请求、解压、带宽、内存或磁盘耗尽
- 对等节点评分被操纵或错误惩罚
- 队列背压丢弃时间敏感消息
- 延迟、丢包或时钟偏差造成临时链头分歧
- 协议版本或分叉摘要不兼容
- 将已裁剪历史或资源不可用响应误读为对象不存在
- IP、时间、查询和交易来源隐私泄露
- 集中或暴露的 RPC 导致跟踪、视图过时、审查或失陷

<a id="misconceptions"></a>

## 常见误区

- **每个节点都直接连接其他所有节点。** 每个节点只有有限且不断变化的本地对等节点集，不同节点可能暂时看到不同消息与链头。
- **引导节点是可信区块来源或共识参与者。** 它通常只负责初始对等节点介绍；链有效性和分叉选择在别处验证。
- **交易被一个对等节点接受后便会全网广播并保证纳入。** 接纳与转发均属本地行为，构建者或提议者可不纳入该交易。
- **广播验证等于共识与最终确定。** 它只是早期的本地网络关卡；分叉选择、合理化和最终确定是独立状态机。
- **更多对等节点或加密传输会自动提供匿名性与日蚀攻击抵抗力。** 多样性与选择方式同样重要，而对等节点和 RPC 提供商仍可关联端点、时间与活动。

<a id="related"></a>

## 相关主题

- [全节点](/zh-cn/crypto/full-node/)
- [内存池](/zh-cn/crypto/mempool/)
- [抗审查性](/zh-cn/crypto/censorship-resistance/)

<a id="sources"></a>

## 资料来源

- [Networking layer](https://ethereum.org/developers/docs/networking-layer) - Ethereum.org（查阅日期：2026-08-13）
- [Ethereum Wire Protocol (ETH)](https://github.com/ethereum/devp2p/blob/master/caps/eth.md) - Ethereum devp2p（查阅日期：2026-08-13）
- [The RLPx Transport Protocol](https://github.com/ethereum/devp2p/blob/master/rlpx.md) - Ethereum devp2p（查阅日期：2026-08-13）
- [Node Discovery Protocol v5 - Wire Protocol](https://github.com/ethereum/devp2p/blob/master/discv5/discv5-wire.md) - Ethereum devp2p（查阅日期：2026-08-13）
- [Phase 0 -- Networking](https://github.com/ethereum/consensus-specs/blob/master/specs/phase0/p2p-interface.md) - Ethereum Consensus Specs（查阅日期：2026-08-13）
- [gossipsub v1.1: Security extensions to improve on attack resilience and bootstrapping](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.1.md) - libp2p（查阅日期：2026-08-13）
- [Connecting To The Network](https://geth.ethereum.org/docs/fundamentals/peer-to-peer) - go-ethereum（查阅日期：2026-08-13）
- [Spin up your own Ethereum node](https://ethereum.org/developers/docs/nodes-and-clients/run-a-node/) - Ethereum.org（查阅日期：2026-08-13）

Source: https://wiki.fcontext.com/zh-cn/crypto/peer-to-peer-network/index.mdx
