C/S 模型

TCP/IP协议在设计和实现上并没有客户端和服务器的概念,在通信过程中所有机器都是对等的。但由于资源(视频、新闻、软件等)都被数据提供者所垄断,所以几乎所有的网络应用程序都很自然地采用了C/S模型图所示的C/S (客户端/服务器)模型:所有客户端都通过访问服务器来获取所需的资源。
采用C/S模型的TCP服务器和TCP客户端的工作流程如图所示。

C/S模型的逻辑很简单。服务器启动后,首先创建一个(或多个)监听socket, 并调用bind函数将其绑定到服务器感兴趣的端口上,然后调用listen函数等待客户连接。服务器稳定运行之后,客户端就可以调用connect函数向服务器发起连接了。由于客户连接请求是随机到达的异步事件,服务器需要使用某种I/O模型来监听这一事件。I/O模型有多种,工作流程图中,服务器使用的是I/O复用技术之一的select系统调用。当监听到连接请求后,服务器就调用accept函数接受它,并分配一个逻辑单元为新的连接服务。逻辑单元可以是新创建的子进程、子线程或者其他。工作流程图中,服务器给客户端分配的逻辑单元是由fork系统调用创建的子进程。逻辑单元读取客户请求,处理该请求,然后将处理结果返回给客户端。客户端接收到服务器反馈的结果之后,可以继续向服务器发送请求,也可以立即主动关闭连接。如果客户端主动关闭连接,则服务器执行被动关闭连接。至此,双方的通信结束。需要注意的是,服务器在处理一个客户请求的同时还会继续监听其他客户请求,否则就变成了效率低下的串行服务器了(必须先处理完前一个客户的请求,才能继续处理下一个客户请求)。工作流程图中,服务器同时监听多个客户请求是通过select系统调用实现的。

C/S模型非常适合资源相对集中的场合,并且它的实现也很简单,但其缺点也很明显:服务器是通信的中心,当访问量过大时,可能所有客户都将得到很慢的响应。

P2P 模型

P2P (Peer to Peer,点对点)模型比C/S模型更符合网络通信的实际情况。它摒弃了以服务器为中心的格局,让网络上所有主机重新回归对等的地位。P2P 模型如图两种P2P模型(1)图所示。

P2P模型使得每台机器在消耗服务的同时也给别人提供服务,这样资源能够充分、自由地共享。云计算机群可以看作P2P模型的一一个典范。但P2P模型的缺点也很明显:当用户之间传输的请求过多时,网络的负载将加重。

两种P2P模型(1)图所示的P2P模型存在一个显著的问题,即主机之间很难互相发现。所以实际使用的P2P模型通常带有一个专门的发现服务器,如图8-3b所示。这个发现服务器通常还提供查找服务(甚至还可以提供内容服务),使每个客户都能尽快地找到自己需要的资源。
从编程角度来讲,P2P 模型可以看作C/S模型的扩展:每台主机既是客户端,又是服务器。因此,我们仍然采用C/S模型来讨论网络编程。

C/S模型与P2P模型相关推荐

  1. jms pub/sub模型_JMS消息传递模型:点对点和发布/订阅

    jms pub/sub模型 In this post, we are going to discuss Messaging Models supported by Java Messaging Sys ...

  2. 【计算机网络】应用层 : 网络应用模型 ( 应用层概述 | 客户端 / 服务器 模型 | P2P 模型 )

    文章目录 一.应用层概述 二.网络应用模型 三.客户 / 服务器 模型 四.P2P 模型 一.应用层概述 应用层作用 : 对 应用程序 的 通信 提供服务 ; 应用层定义 : 报文类型 : 应用进程 ...

  3. TF之p2p:基于TF利用p2p模型部分代码实现提高图像的分辨率

    TF之p2p:基于TF利用p2p模型部分代码实现提高图像的分辨率 目录 一.tfimage.py文件功能解释 二.process.py添加一个新操作 一.tfimage.py文件功能解释 1.此处的c ...

  4. 王道考研 计算机网络20 应用层 客户端/服务器C/S模型 P2P模型 DHCP协议 域名解析系统DNS 文件传送协议FTP 万维网 超文本传输协议HTTP

    应用层概述 FTP:文件传输协议(File Transfer Protocol)是用于在网络上进行文件传输的一套标准协议. SMTP:是一种提供可靠且有效的电子邮件传输的协议. POP3 ,全名为&q ...

  5. NCRE四级网络工程师考题详解----对等计算模型(P2P)

    对等计算模型(P2P): 在这种模型中,所有的计算机都可以当服务器.用中心服务器存放各个资源的目录.持续运转.以Napster为代表. 分布式非结构化P2P网络,没有中心服务器,采用泛洪方式,负载很重 ...

  6. SPSS用KMEANS(K均值)、两阶段聚类、RFM模型在P2P网络金融研究借款人、出款人行为数据规律...

    全文下载链接:http://tecdat.cn/?p=27831 随着P2P网络金融平台的交易量的激增,其交易数据不能得到充分有效地利用.将聚类分析引入到P2P网络金融平台的管理之中,利用聚类分析技术 ...

  7. 判别模型和生成模型的区别

    20210703 https://www.zhihu.com/question/20446337 机器学习"判定模型"和"生成模型"有什么区别? 重点 http ...

  8. Keras框架下的保存模型和加载模型

    在Keras框架下训练深度学习模型时,一般思路是在训练环境下训练出模型,然后拿训练好的模型(即保存模型相应信息的文件)到生产环境下去部署.在训练过程中我们可能会遇到以下情况: 需要运行很长时间的程序在 ...

  9. 基于YOLOv5模型压缩、模型量化、模型剪枝

    基于YOLOv5模型压缩.模型量化.模型剪枝 代码下载地址:下载地址 Requirements pip install -r requirements.txt Pruning for YOLOs Mo ...

  10. 动机模型_一个模型教你如何激发学习动机

    作为青少年生涯导师,经常被问到通过生涯规划能够提分吗?怎么去通过生涯规划达成提升成绩,我通常比较关注的是激发学生的学习动机,如何唤醒学习动机和激发学习动机是我经常探索思考的课题. 什么是学习动机? 说 ...

最新文章

  1. php http面向对象编程实例,PHP面向对象编程——PHP对象引用实例代码
  2. 计算机英语多层,多层式结构,multi-layer structure,在线英语词典,英文翻译,专业英语...
  3. 测试常用shell语句——数值,数组类型;函数创建
  4. 单日2000W+订单,如何忙中不错?美团外卖业务异常检测实践详解
  5. Screen返回选择界面的问题
  6. 定时修改列表 服务器版,Unity定时回调(服务端不依赖Update)
  7. Keras Data augmentation(数据扩充)
  8. win7蓝屏0x000000f4修复_注意:关于近期多数电脑蓝屏的处理和预防方法
  9. wsadata wsadata;为什么不通过_注册公司之公司名称核准,知道为什么你的核名一直不通过吗?...
  10. c++如何使用json配置文件
  11. java轻量级和重量级_Java 偏向锁、轻量级锁和重量级锁
  12. 全站最全NLP中英文停用词表(包含标点符号,可直接复制)
  13. win7下面用超级终端不能输入命令原因
  14. Lesson 6: CronTrigger
  15. PhotoShop CS5制作残旧的印章效果
  16. EPUB电子书阅读必备
  17. 潇潇六月雨 input file里的JQ change() 事件的只生效一次
  18. iOS开发证书/发布证书不受信任
  19. linux下的c语言实现象棋,用C语言实现中国象棋
  20. Java面试官:兄弟,你确定double精度比float低吗?

热门文章

  1. 脱壳进阶篇——IAT修复与解密
  2. i7 8700 服务器系统,i7 8700k 云服务器
  3. 彻底关闭Windows DefenderWindows 更新
  4. (五)作业Job和实例Instance | 普罗米修斯(Prometheus)
  5. mysql根据出生日期计算年龄并查询
  6. 替代YY语音,自行搭建语音实时服务器
  7. gwt 同步和异步_使用GWT和RESTful Web服务构建动态的组织树
  8. gitlab CI/CD 持续集成 部署 一文到底
  9. Floyd-Warshall算法过程中矩阵计算方法—十字交叉法(转)
  10. (P57-P61)正则表达式