C/S模型与P2P模型

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

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模型来讨论网络编程。

目录
相关文章
|
10月前
|
搜索推荐 安全 UED
浅谈AARRR模型
浅谈AARRR模型
|
2月前
|
人工智能 算法 异构计算
用“吃火锅”来讲清楚大模型是什么
大语言模型就像一个超级聪明的“火锅AI服务员”,它通过海量数据训练,能根据你的需求推荐菜品、回答问题、甚至陪你聊人生哲学。它有超强的记忆力和灵活的应变能力,能接住各种奇葩问题,还会跟你玩梗互动。虽然偶尔会瞎编答案,但它绝对是个知识型选手。本文用轻松的“火锅局”方式,带你深入了解大语言模型的工作原理和特点。
51 1
|
2月前
|
人工智能 自然语言处理 算法
大模型 is all you need?
本文旨在通过对业务案例、prompt技巧、大模型原理等探讨,让大家能够更好地在实际业务中应用大模型。
100 16
|
7月前
|
搜索推荐 语音技术
SenseVoice模型建议
8月更文挑战第4天
591 1
|
6月前
|
人工智能 安全 测试技术
MetaLlama大模型
LLaMA 是一组基础语言模型,参数范围从 7B 到 65B,在大量公开数据上训练而成,性能优异。Llama 2 为 LLaMA 的升级版,参数规模扩大至 70 亿至 700 亿,特别优化了对话功能。Code Llama 基于 Llama 2 开发,专注于代码生成,提供不同参数规模的模型。这些模型可在多种平台上运行,包括官方 API、第三方封装库如 llama.cpp 和 ollama,以及通过 Hugging Face 的 transformers 库使用。此外,还提供了详细的模型申请及使用指南,便于开发者快速上手。相关链接包括 Meta 官方页面和 GitHub 仓库。
MetaLlama大模型
|
7月前
|
人工智能 算法 搜索推荐
你觉得大模型时代该出现什么?
【8月更文挑战第11天】大模型时代展望关键技术与基础设施升级,如量子计算支持、模型优化及专用芯片;模型层面探索多模态融合与自我解释能力;应用场景涵盖智能医疗、教育及城市管理等;社会人文领域则涉及新职业培训与伦理法规建设。
|
6月前
|
机器学习/深度学习
什么是领域大模型?
什么是领域大模型?
386 0
|
10月前
|
机器学习/深度学习 传感器 人工智能
世界模型是什么?
【2月更文挑战第9天】世界模型是什么?
1017 3
世界模型是什么?
|
10月前
|
自然语言处理 知识图谱
你了解SCQA模型吗?
你了解SCQA模型吗?
661 0
你了解SCQA模型吗?
|
10月前
使用xxmix9realistic_v40.safetensors模型
使用xxmix9realistic_v40.safetensors模型
386 0