网络应用模型:C/S 与 P2P

应用层的协议要先回答一个问题:通信的两端谁主动、谁被动。C/S 模型里角色是固定的,P2P 模型里每个节点既是客户又是服务器。2019 年真题考的就是这两个模型的特点。

本页 1 道错题:P2P 网络是逻辑上的覆盖网络,不是另建一张物理网络。

机制

6.1.1 客户/服务器模型

在客户/服务器(Client/Server,C/S)模型中,有一个总是打开的主机称为服务器,它服务于许多来自其他称为客户机的主机请求。其工作流程如下(C/S 模型和 P2P 模型的特点 2019 年考过):

  1. 服务器处于接收请求的状态。
  2. 客户机发出服务请求,并等待接收结果。
  3. 服务器收到请求后,分析请求,进行必要的处理,得到结果并发送给客户机。

服务器上运行着专门用来提供某种服务的程序,可以同时处理多个远程或本地客户的请求。客户程序必须知道服务器程序的地址;服务器启动后就一直不断地运行着,被动等待并接收来自各地客户的请求,因此服务器程序不需要知道客户程序的地址。

客户/服务器模型最主要的特征是:客户是服务请求方,服务器是服务提供方。使用客户/服务器模型的常见应用包括 Web、文件传输协议(FTP)、远程登录和电子邮件等。

客户/服务器模型的主要特点还有:

  1. 网络中各计算机的地位不平等,服务器可通过对用户权限的限制来达到管理客户机的目的。整个网络的管理工作由少数服务器负责,因此网络的管理非常集中和方便。
  2. 客户机相互之间不直接通信。 例如,在 Web 应用中两个浏览器并不直接通信。
  3. 可扩展性不佳。 受服务器硬件和网络带宽的限制,服务器支持的客户机数量有限。

6.1.2 P2P 模型

在 C/S 模型中,服务器性能的好坏决定了整个系统的性能,当大量用户请求服务时,服务器就必然成为系统的瓶颈。P2P 模型的思想是整个网络中的传输内容不再被保存在中心服务器上,每个节点都同时具有下载、上传的功能,其权利和义务都是大体对等的。

在 P2P 模型中,各计算机没有固定的客户和服务器划分。相反,任意一对计算机——称为对等方(Peer),直接相互通信。实际上,P2P 模型从本质上来看仍然使用客户/服务器模型,每个节点既作为客户访问其他节点的资源,又作为服务器提供资源给其他节点访问。

与 C/S 模型相比,P2P 模型的优点主要体现如下:

  1. 减轻了服务器的计算压力,消除了对某个服务器的完全依赖,可以将任务分配到各个节点上,因此大大提高了系统效率和资源利用率。
  2. 多个客户机之间可以直接共享文档。
  3. 可扩展性好,传统服务器有响应和带宽的限制,因此只能接受一定数量的请求。
  4. 网络健壮性强,单个节点的失效不会影响其他部分的节点。

P2P 模型也有缺点:在获取服务的同时,还要给其他节点提供服务,因此会占用较多的内存,影响整机速度;经常进行 P2P 下载还会对硬盘造成较大的损伤。据某互联网调研机构统计,某些年份 P2P 程序占了互联网 50%~90% 的流量,使网络变得非常拥塞,因此各大 ISP 通常都对 P2P 应用持反对态度。

两种模型的对照

C/S 模型P2P 模型
角色固定:客户请求、服务器提供每个节点既是客户又是服务器
谁主动客户主动发起,服务器被动等待任意对等方之间直接通信
客户之间不能直接通信可以直接通信、共享文档
地址客户必须知道服务器地址,服务器不必知道客户地址——
可扩展性不佳,服务器是瓶颈好,节点越多资源越多
健壮性服务器失效则服务中断单个节点失效不影响整体
分发一个文件给多用户服务器逐个发送,耗时长任务分配给多个节点并行下载,时间更短(2019)

边界

错题复盘:P2P 网络是构建在 IP 网络之上的覆盖网络,不是另建的物理网络

王道 6.1.3 第 5 题:以下关于 P2P 概念的描述中,错误的是(A. P2P 是网络节点之间采取对等方式直接交换信息的工作模型 B. P2P 通信模式是指 P2P 网络中对等节点之间的直接通信能力 C. P2P 网络是指与互联网并行建设的、由对等节点组成的物理网络 D. P2P 实现技术是指为实现对等节点之间直接通信的功能所需要设计的协议、软件等)。答案 C。

P2P 可以理解为一种通信模型、一种逻辑网络模型。物理网络是指网络中由各种设备(主机、交换机等)和介质(双绞线等)连接而形成的网络,它看得见摸得着;而这个网络中所使用的协议,或网络结构,都是靠逻辑网络来划分的。P2P 网络是一个构建在 IP 网络上的覆盖网络,是一种动态的逻辑网络。 对等节点之间具有直接通信的能力是 P2P 的显著特点。

判断这类”是不是物理网络”的题,看它需不需要新的线缆和设备:P2P 只是在现有互联网上换了一套软件和协议,一根网线都不用加。

P2P 本质上仍是客户/服务器方式。 每个节点轮流扮演两种角色,并不是出现了第三种通信范型(王道 6.1.2 原文)。

C/S 模型中客户之间不能直接通信。 这是 2019 年真题的错误项(第 6 题 B):Web 应用中两个浏览器之间不能直接通信。

连接建立后,服务器也能主动发送数据。 “客户端是请求方”说的是谁发起连接,不是说服务器此后不能主动发消息(王道 6.1.3 第 3 题,只有 Ⅳ 错)。

客户机面向用户,服务器面向任务。 说反了就是第 4 题的错误项。

口径差异:今天的 P2P 与 CDN

教材口径:P2P 中不再有中心服务器,各大 ISP 对 P2P 持反对态度。

工程口径:实际的 P2P 系统大多仍需要少量中心设施——BitTorrent 早期依赖 Tracker 服务器,后来用分布式哈希表(DHT)把”谁有哪一块”的索引也分散掉;区块链网络则是纯 P2P 的典型。另一方面,今天的大规模内容分发主要靠 CDN(内容分发网络):把内容复制到靠近用户的边缘服务器上,本质仍是 C/S,但解决了单点带宽瓶颈,这也是 ISP 更愿意接受的方式。

考试按教材口径作答。

对照速查

说法对错
C/S 模型中客户是服务请求方✅
服务器程序需要知道客户程序的地址❌
C/S 模型中两个客户机之间可以直接通信❌(2019)
连接建立后服务器不能主动发送数据❌
客户机是面向任务的,服务器是面向用户的❌(反了)
P2P 中每个节点既下载又上传✅
P2P 网络是与互联网并行建设的物理网络❌(构建在 IP 网络上的覆盖网络)
P2P 从本质上看仍使用客户/服务器模型✅
向多用户分发一个文件时,P2P 通常比 C/S 快✅(2019)
P2P 的可扩展性比 C/S 好✅

考点

  • C/S:服务器总是打开、客户主动请求;客户之间不直接通信;管理集中、可扩展性不佳
  • P2P:节点对等、既下载又上传;逻辑上的覆盖网络;本质仍是 C/S 方式
  • P2P 四个优点与缺点;分发文件时更快(2019)

链接