【计算机网络】 网络体系结构分类: 客户机/服务器体系和P2P

网络体系结构的分类

现代网络应用程序有两种主流的体系结构: 客户机/服务器体系结构和P2P体系结构(peer to peer “对等”)

一 . 客户机/服务器体系结构

客户机/服务器体系结构是最为喜闻乐见的网络体系结构,它的最大特点是“一台服务器 — 多个客户机”,  客户机通常充当发起请求的角色,而服务器则通常充当接收请求,提供响应的角色。

这种网络体系结构还有以下几个特点;

1. 服务器主机是总是打开的, 客户机主机则并不总是打开

2. 服务器是处理所有逻辑的中心

3. 基于2的原因,两个客户机一般是不能直接通信的, 要进行通信必须经过服务器

4. 虽然客户机/服务器体系结构的特征是“一对多”,但是服务器却并不总是一台,因为有的时候要处理海量的客户机的请求, 一台服务器很快就会不堪重负,所以这个时候常用服务器集群技术(server clustering)创建强大的虚拟服务器。所以这里“一对多”的一要理解为一组服务器组成的“一”个整体的意思。

5. 由于4的原因,客户机/服务器体系的应用服务通常是基础设施密集的(infrastructure intensive),也就是说,提供该服务的互联网商家,例如搜索引擎(百度),网络商务(淘宝)通常要为服务器场的购买,安装和维护投入巨额的费用。

二. P2P体系结构

和客户机/服务器体系结构截然不同的是P2P体系结构(对等结构), 在P2P中,进行通信的的并不是客户机/服务器,而是两台客户机。

进行通信的可能是两台用户的电脑,两个手机,或者一台电脑和一个手机,总之,进行通信的任意一对都被称为“对等方”

我们结合以下这副图来说明P2P体系结构讨人欢喜的优点

1.客户机间的直接通信使得P2P有了强大的自扩展性(self-calability),什么意思呢? 假设上面这幅图是一个发送文件(上载/下载)文件的过程,我们可以看到,从上至下,接收文件的主机的数量是指数递增的,系统的服务能力在逐渐增强,而且越来越强。

2.P2P体系结构对基础设施服务器有最小的依赖, 这是和基础设施密集的客户机/服务器体系结构是截然相反的。

我们假设在上图的P2P结构中增加一个服务器,并且要求在客户机/服务器结构和P2P结构间做一个发送文件的能力的对比: 要求是每个客户机都成功下载一个文件,那么

  • 在客户机/服务器结构上,一个服务器要向7台客户机上载这个文件,共上载7次,而P2P结构下,服务器最少只要上载文件一次就够了。 相比之下, 前者服务器不堪重负,后者服务器则毫无压力
  • 事实上,完成这个任务。P2P会比客户机/服务器结构的应用快的多

对服务器依赖小就意味着投入建设的成本会大大减小,正因此许多互联网公司尤其喜欢P2P。 但话虽如此,但实际上具体的还是要看应用的具体业务,上面的表述仍然只是很单方面的对比。

两种网络体系结构各自的应用

许多我们常见的应用层协议,都是以客户机/服务器体系结构为基础的,例如http, FTP ,SMTP。从明天开始,我将发布一系列关于应用层协议的文章,以作为自己学习的总结

【完】

参考书籍

《计算机网络-自顶向下》  作者 James F. Kurose

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏玉树芝兰

如何用Python做Web开发?——Django环境配置

用Python做Web开发,Django框架是个非常好的起点。如何从零开始,配置好Django开发环境呢?本文带你一步步无痛上手。

782
来自专栏程序人生 阅读快乐

Linux Shell编程与编辑器使用详解

本书由浅入深,全面、系统地介绍了Linux技术,书中提供了大量实例,供读者实战演练。另外,本书有很多关于Linux下的命令操作内容,所以对于每个命令、每个管理设...

541
来自专栏腾讯Bugly的专栏

Android 插件技术实战总结

前言 安卓应用开发的大量难题,其实最后都需要插件技术去解决。 现今插件技术的使用非常普遍,比如微信、QQ、淘宝、天猫、空间、携程、大众点评、手机管家等等这些大家...

3486
来自专栏施炯的IoT开发专栏

ZigBee On Windows Mobile--3.模拟器和实物调试

    继续前两篇” ZigBee On Windows Mobile--1.背景和结构”和” ZigBee On Windows Mobile--2.硬件和软...

17110
来自专栏数据和云

实战技巧:Python爬取OEM 12C上的告警信息并推送至微信企业号

作者 | 徐美兰 ,邮政软件开发工程师,广东、湖南邮政金融数据中心任职多年,擅长Oracle数据库性能诊断与调优,对基于Python的数据分析与挖掘开发具有浓厚...

1154
来自专栏机器之心

初学机器学习的你,是否掌握了这样的Linux技巧?

选自alexpetralia 机器之心编译 Linux 因其稳定性获得了不少开发者的青睐,同时也成为大多数服务器的操作系统,对于机器学习开发者来说,使用 Mac...

27411
来自专栏互联网杂技

AngularJS与服务器端MVC比较

这是一篇讨论客户端MVC和服务器端MVC的比较文章。 首先分离关注是架构设计的一个基本原则,多层架构中:数据存储 服务层 API层和表现层各层之间应该最小依赖...

3374
来自专栏小詹同学

Python 实现京东自动登录领京豆

今天带大家进行模拟京东登录,并进行签到获取京豆,1000 个京豆 = 10 元,是不是一个发现了一个「发家致富」的好路子?

1763
来自专栏Android 开发者

Android 9 Pie 兼容性常见问题及注意事项

使用了系统的 ClassLoader 加载 org.apache.http.* 的库

1172
来自专栏FreeBuf

漏洞预警 | FFmpeg曝任意文件读取漏洞

最近有白帽在HackerOne平台上报了ffmpeg漏洞,该漏洞利用ffmpeg的HLS播放列表处理方式,可导致本地文件曝光。 漏洞描述 6月24日,Hacke...

3405

扫码关注云+社区