客户端-服务器 vs P2P(点对点):两种网络架构对比

互联网服务传输数据的两种基本方式,放在一起比一比。

什么是客户端-服务器架构

中央服务器统一管理数据,客户端(用户设备)在需要时向服务器发送请求并接收响应。浏览网页、收发邮件,以及绝大多数App服务都采用这种方式。

什么是P2P(点对点)架构

P2P网络没有中央服务器,参与网络的每台计算机(称为"节点"或"对等体")以平等的地位直接互相交换数据。每个节点既是发起请求的客户端,同时也扮演着为其他节点提供数据的服务器角色。

客户端-服务器架构的优点

数据和权限可以在中央统一管理,便于安全控制和更新,服务提供方也能清楚地掌控内容和政策。

客户端-服务器架构的缺点

用户一旦集中涌入就容易在服务器端形成瓶颈,而一旦服务器宕机,整个服务都会随之停摆,存在单点故障(SPOF)的问题。

P2P架构的优点

参与者越多,可供分摊的资源(带宽、存储空间)反而越多,扩展性较好;而且不存在单一的中心服务器,即使部分节点下线,整体网络也不会瘫痪,容错能力较强。

P2P架构的缺点

由于数据分散在众多节点上,很难从中央统一控制内容或保证质量,历史上P2P也曾被用于盗版文件共享或作为恶意软件的传播渠道。

典型应用场景

浏览网页、观看视频流媒体服务是客户端-服务器架构的典型代表,而BitTorrent之类的文件共享和区块链网络则是P2P架构的典型代表。

结合两者优点的混合架构

有些服务采用混合架构:由中央服务器帮助参与者互相发现并建立连接,实际的数据传输则在节点之间直接进行,从而同时获得两种架构各自的优点。

大多数日常服务明显偏向其中一种模式

我们每天使用的互联网服务大多建立在客户端-服务器架构之上——无论是打开网页还是使用聊天软件,自己的设备总是在向某台服务器发送请求并等待响应。P2P则是完全不同的思路,因为即使完全没有中央服务器,服务照样可以运转,这种去中心化本身就是目标的场景——比如文件共享或区块链网络——正是P2P大显身手的地方。

为什么P2P连接有时会建立失败

大多数家庭的互联网连接都处于执行NAT(网络地址转换)的路由器背后,这意味着节点设备通常无法被公网直接访问到,这正是P2P游戏或视频通话有时无法直接连通的原因。诸如NAT穿透之类的技术,以及在无法直连时改用中继服务器转发的做法,正是为了绕开这个问题而存在的。

常见问题

网络游戏到底是客户端-服务器还是P2P?

这要视具体游戏而定。许多网络游戏为了防止作弊、保证判定的一致性而采用客户端-服务器架构,但一些格斗对战游戏或较老的游戏,也会让玩家设备之间直接用P2P方式连接。

P2P是不是总是用于非法用途?

并非如此。快速分发大容量软件安装包的正规BT下载就是常见的合法用例,区块链网络和部分分布式存储服务也都合法地依赖P2P架构运行。