网络体系结构的分类

现代网络应用程序有两种主流的体系结构: 客户机/服务器体系结构和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

博客目录

【目录】 你好! 我是博客总目录

【计算机网络】 网络体系结构分类: 客户机/服务器体系和P2P的更多相关文章

  1. TCP客户机-服务器

    1 僵尸进程 2 信号处理 信号: 1 由一进程发往另一进程 2 由内核发往某进程   僵尸状态: 父进程取回子进程的相关信息,进程的ID,终止状态,子进程的资源利用信息   编程时: 1 当派生子进 ...

  2. RPC 编程 使用 RPC 编程是在客户机和服务器实体之间进行可靠通信的最强大、最高效的方法之一。它为在分布式计算环境中运行的几乎所有应用程序提供基础。

    RPC 编程 使用 RPC 编程是在客户机和服务器实体之间进行可靠通信的最强大.最高效的方法之一.它为在分布式计算环境中运行的几乎所有应用程序提供基础.本文介绍 RPC 客户机和服务器之间基本的事件流 ...

  3. 如何配置 Oracle VirtualBox 中的客户机与物理机网络

    当你在 Oracle VirtualBox 虚拟机软件 中安装了各种操作系统时,你可能需要实现物理机与虚拟机之间的相互访问. 在这篇文章中,我们将会以最简单明了的方式来说明如何配置客户机与 Linux ...

  4. 如何配置 VirtualBox 中的客户机与宿主机之间的网络连接

    如何配置 VirtualBox 中的客户机与宿主机之间的网络连接 作者: Aaron Kili 译者: LCTT rusking | 2017-03-01 13:40   评论: 3 收藏: 3 当你 ...

  5. 如何为MySQL服务器和客户机启用SSL

    本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: mysql5.7后有ssl新特性 自己搭建mysql ent ...

  6. 01_Weblogic课程之概念篇:代理服务器,web服务器,应用程序服务器,JNDI概念,JTA概念,Java消息服务,Java验证和授权(JAAS),Java管理扩展,Web客户机,客户机应用程序

     1 什么是服务器 Weblogic中服务器分为两种,一种是受管服务器,另外一种是管理服务器. Weblogic课程(Weblogic是Oracle公司的,最开始的是BEA公司的) 一 系统管理 ...

  7. 正向代理 forward proxy、反向代理 reverse proxy、透明代理 transparent proxy nginx反向代理原理和配置讲解 防止外部客户机获取内部内容服务器的重定向 URL 缓存命中

    [大型网站技术实践]初级篇:借助Nginx搭建反向代理服务器 - Edison Chou - 博客园http://www.cnblogs.com/edisonchou/p/4126742.html 图 ...

  8. 【计算机网络】ISO/OSI 网络体系结构

    ISO/OSI 网络体系结构 计算机网络是相当复杂的系统,相互通信的两个计算机系统必须高度协调才能正常工作.为了设计这样复杂的计算机网络,人们提出了将网络分层的方法.分层可将庞大而复杂的问题转换为若干 ...

  9. wincc的服务器-客户机模式具体做法(全抄-未测试)

    一.原来的工作方式:在同一工作组中4台计算机其windows名分别为A.B.C.D且都已安装好wincc5.0+sp2,原来在每台计算机上运行的均是单用户,4台计算机上实际运行的是一个相同的项目,最先 ...

随机推荐

  1. jdk8 tomcat7

    今天想使用jdk8+tomcat7来个写程序,但是一运行始终提示连接不到数据库 提示:Could not obtain connection metadata org.apache.tomcat.db ...

  2. [html]Sublime Text添加插件

    今天想在Sublime Text(简称ST)内编写HTML后直接使用浏览器看效果,想添加View in Browser插件,然后遇到奇怪的问题添加插件直接报"找不到有用的插件" 一 ...

  3. optimizer_switch引起的诡异问题

    参数描述 MySQL中不同的版本优化器会有很多新特性,比如MRR.BKA等,optimizer_switch这个参数就是控制查询优化器怎样使用这些特性.很多情况下我们会根据自身的需求去设置optimi ...

  4. Vue.directive基础,在Vue模块开发中使用

    这是从网上找到的一个案例,由于网上的案例有坑,所以我在这里从新上传一次! 首先在main.js里引入两个自定义指令 import {focus, drag} from './components/da ...

  5. js生成条形码插件

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. javaScript正则表达式的使用

    今天看了一个正则的写法,回想一下,对于正则都忘记得差不多了,称这个时间整理一下,收集了一些以前的资料和查看了一些别人的资料,做一个小小的总结,方便自己以后查看,也希望能帮助到大家!!   欢迎指正,欢 ...

  7. 3-具体学习git--reset回到过去的版本(commit间穿梭),checkout单个文件穿梭

    git log --oneline 命令可以在一块儿显示做过的改动. 我在change 2时忘了一条,想在change 1后再添加一个语句或一个操作,然后这个状态再提交仍作为change 2.将这个s ...

  8. ueditor+word粘贴上传

    公司做的项目要用到文本上传功能. 网上找了很久,大部分都有一些不成熟的问题,终于让我找到了一个成熟的项目. 下面就来看看: 1.打开工程: 对于文档的上传我们需要知道这个项目是否符合我们的初衷. 运行 ...

  9. Raft协议学习笔记

    目录 目录 1 1. 前言 1 2. 名词 1 3. 什么是分布式一致性? 3 4. Raft选举 3 4.1. 什么是Leader选举? 3 4.2. 选举的实现 4 4.3. Term和Lease ...

  10. 开源C++版本CGI库CGICC入门

    原发布在ChinaUnix,但未自动搬迁过来:http://blog.chinaunix.net/uid-20682147-id-4895772.html PDF版本:https://files-cd ...