计算机网络:应用层 —— 网络应用模式
文章目录
- 客户—服务器方式和对等方式
- 客户/服务器方式 (C/S方式)
- 工作流程
- 特点
- 对等方式 (P2P方式)
- 工作流程
- P2P 应用
- 特点
客户—服务器方式和对等方式
网络应用程序运行在处于网络边缘的不同的端系统上,通过彼此间的通信来共同完成某项任务。
开发一种新的网络应用首先要考虑的问题,就是网络应用程序在各种端系统上的组织方式和它们之间的关系,目前流行的主要有以下两种:
-
客户/服务器(Client/Server,
C/S
)方式 -
对等(Peer-to-Peer,
P2P
)方式
客户/服务器方式 (C/S方式)
在客户 - 服务器方式(C/S 模式)中有明确的服务提供者(服务器)和服务请求者(客户)。
-
客户和服务器是指通信中所涉及的两个应用进程。
-
客户/服务器方式所描述的是进程之间服务和被服务的关系。
-
客户是服务请求方,服务器是服务提供方。
-
服务器总是处于运行状态,并等待客户的服务请求。服务器具有固定端口号(例如HTTP服务器的默认端口号为80),而运行服务器的主机也具有固定的IP地址。
C/S
方式是因特网上传统的、同时也是最成熟的方式,很多我们熟悉的网络应用采用的都是 C/S
方式。包括万维网WWW、电子邮件、文件传输FTP等。
基于 C/S
方式的应用服务通常是服务集中型的,即应用服务集中在网络中比客户计算机少得多的服务器计算机上。
由于一台服务器计算机要为多个客户机提供服务,在 C/S
应用中,常会出现服务器计算机跟不上众多客户机请求的情况。为此,在 C/S
应用中,常用计算机群集(或服务器场)构建一个强大的虚拟服务器。
工作流程
-
首先,客户程序需要知道服务器的 IP 地址和端口号。以网页浏览为例,当用户在浏览器(客户程序)中输入一个网址(如http://www.example.com)时,浏览器会通过 DNS(域名系统)查询得到对应的 Web 服务器的 IP 地址。
-
浏览器(客户)向 Web 服务器(服务端)的 80 端口(HTTP 服务默认端口)发送一个 HTTP 请求,请求获取网页内容。
-
服务器接收到请求后,根据请求的内容进行处理,比如从服务器的文件系统中找到对应的网页文件,然后将文件内容封装成 HTTP 响应发送回客户。
-
最后,客户(浏览器)收到响应后,对内容进行解析和显示,如将 HTML 文本解析成可视化的网页呈现给用户。
特点
-
功能分工明确:服务器专注于提供特定的服务,它通常具有强大的计算资源、存储资源和网络带宽,以满足多个客户同时请求服务的需求。
客户则相对简单,主要负责向服务器发送请求和接收、处理服务器返回的结果。例如,在文件服务器系统中,服务器负责存储和管理大量的文件,而客户只是在需要时向服务器请求下载或上传文件。
-
可扩展性和集中管理性较好:可以通过增加服务器的硬件资源(如内存、硬盘、CPU 等)或者增加服务器的数量(如采用服务器集群)来满足不断增长的客户请求。同时,服务器端的服务和资源可以进行集中管理,例如可以方便地对服务器上的文件系统进行备份、更新软件版本等操作。
-
安全性较高:服务器可以对客户进行身份认证和访问控制,确保只有合法的客户才能访问服务。例如,在银行系统中,客户需要通过用户名、密码或者数字证书等方式进行身份验证后,才能访问自己的账户信息和进行交易操作。
对等方式 (P2P方式)
对等方式 (P2P
方式) 是指,网络中的每个节点(计算机或设备)既是客户端又是服务器,它们在地位上是平等的,没有专门的服务器和客户端之分。
在 P2P
方式中,没有固定的服务请求者和服务提供者,分布在网络边缘各端系统中的应用进程是对等的,被称为对等方。对等方相互之间直接通信,每个对等方既是服务的请求者,又是服务的提供者,它们在地位上是平等的。
工作流程
以 P2P
文件共享为例:
-
当一个节点(用户 A)想要获取一个文件时,它首先会在自己连接的
P2P
网络中发送一个文件查找请求。这个请求会在网络中的其他节点之间传播,每个节点会检查自己是否拥有该文件。 -
如果某个节点(用户 B)拥有这个文件,它就会与请求节点(用户 A)建立连接,并将文件的部分或者全部发送给用户 A。
-
在这个过程中,节点之间的连接可能是直接的,也可能通过其他中间节点进行转发,具体取决于
P2P
网络的拓扑结构和路由算法。
P2P 应用
目前,在因特网上流行的 P2P
应用主要包括 P2P
文件共享、即时通信、P2P
流媒体、分布式存储等。
基于 P2P
的应用是服务分散型的,因为服务不是集中在少数几个服务器计算机中,而是分散在大量对等计算机中,这些计算机并不为服务提供商所有,而可是为个人控制的桌面计算机和笔记本电脑,它们通常位于住宅、校园和办公室中。
特点
-
自组织和高扩展性:
P2P
方式的最突出特性之一就是它的可扩展性,因为系统每增加一个对等方,不仅增加的是服务的请求者,同时也增加了服务的提供者,系统性能不因规模的增大而降低。 -
分布式资源共享:
P2P
模式充分利用了网络中各个节点的资源,实现了资源的分布式存储和共享。它不需要像C/S
模式那样依赖集中式的服务器,因此可以避免单点故障问题。 -
成本优势:
P2P
方式具有成本上的优势,因为它通常不需庞大的服务器设施和服务器带宽。为了降低成本,服务提供商对于将P2P
方式用于应用的兴趣越来越大。
相关文章:

计算机网络:应用层 —— 网络应用模式
文章目录 客户—服务器方式和对等方式客户/服务器方式 (C/S方式)工作流程特点 对等方式 (P2P方式)工作流程P2P 应用特点 客户—服务器方式和对等方式 网络应用程序运行在处于网络边缘的不同的端系统上,通过彼此间的通信来共同完成某项任务。 开发一种新的网络应用…...
@Repository注解和@mapper的区别
1. Repository 注解 通俗解释: 你可以把 Repository 注解想象成是一个专门负责管理数据库操作的 “仓库管理员”。这个管理员主要负责和数据库打交道,就像管理一个大仓库一样,他会进行各种操作,比如把货物(数据&#x…...

解锁成长密码:探寻刻意练习之道
刻意练习,真有那么神? 在生活中,你是否有过这样的困惑:每天苦练英语口语,可一到交流时还是支支吾吾;埋头苦学吉他,却总是卡在几个和弦转换上;工作多年,业务能力却似乎陷入…...

cuda-cuDnn
cuda sudo /bin/sh cuda_11.7.0_515.43.04_linux.run cudnn cuDNN Archive | NVIDIA Developer Linux 系统 CUDA 多版本共存以及切换 – 颢天 安装cuda # 如果已经安装过驱动,驱动不需要再安装,取消勾选 安装cuDNN,cuda-cuDNN对应关系见…...
如何使用Python和PIL库生成带竖排文字的封面图像
在今天的博客中,我们将学习如何使用Python和PIL(Pillow)库生成一个简单而有创意的封面图像。我们将创建一个背景图像,并在其上绘制带有竖排文字的标题和副标题,最后再添加一些装饰性元素如星星和萤火虫。这个教程适合初…...
低代码开发 实战转型案例一览
数字浪潮澎湃,企业应用开发需求呈井喷之势。传统全栈开发虽底蕴深厚,然其漫长周期与高昂成本,难以追赶市场快速交付的急切步伐。无代码与低代码平台顺势崛起,宛如暗夜明灯,吸引非技术人员纷至沓来,投身应用…...
SQL Server中FIRST_VALUE和 LAST_VALUE窗口函数允许在一个指定的窗口内返回第一个或最后一个值
在 SQL Server 中,FIRST_VALUE 和 LAST_VALUE 是用于窗口函数(Window Functions)的两个非常有用的函数。它们允许你在一个指定的窗口内返回第一个或最后一个值。这两个函数通常与 OVER 子句一起使用,以定义窗口的范围和排序规则。…...

机器学习-高斯混合模型
文章目录 高斯混合模型对无标签的数据集:使用高斯混合模型进行聚类对有标签的数据集:使用高斯混合模型进行分类总结 高斯混合模型 对无标签的数据集:使用高斯混合模型进行聚类 对有标签的数据集:使用高斯混合模型进行分类 总结...

微信V3支付报错 平台证书及平台证书序列号
1.平台证书及平台证书序列号设置错误报错: 错误1: Verify the response’s data with: timestamp1735184656, noncea5806b8cabc923299f8db1a174f3a4d0, signatureFZ5FgD/jtt4J99GKssKWKA/0buBSOAbWcu6H52l2UqqaJKvrsNxvodB569ZFz5G3fbassOQcSh5BFq6hvE…...

41.欠采样技术下变频不能用与跨两个nyquist的情况下
当接收到的信号位于同一nyquist区间时,信号被成功的折叠到了第一Nyquist区间中。 当接收信号位于两个或多个采样区间时,最后多个区间的信号都会被折叠到第一Nyquist区间中造成信号的重叠。...

20241227通过配置nomodeset参数解决更新grub之后,ubuntu20.04.5无法启动的问题
20241227通过配置nomodeset参数解决更新grub之后,ubuntu20.04.5无法启动的问题 2024/12/27 17:34 0.397475]pci0000:00:07.0:DPC:RPPI0 l0gsize 0 is invalid dev/nvmeon1p9:clean,251849/4276224 files,3266309/17089792 blocks 缘起:公司电脑要安装加密…...

从 GitLab.com 到 JihuLab.com 的迁移指南
本文分享从 GitLab.com 到 JihuLab.com 的迁移指南。 近期,GitLab Inc. 针对其 SaaS 产品做了限制,如果被判定为国内用户,则会建议使用其在国内的发布版本极狐GitLab。从 GitLab SaaS 产品(GitLab.com)迁移到极狐GitL…...

深度学习中的并行策略概述:2 Data Parallelism
深度学习中的并行策略概述:2 Data Parallelism 数据并行(Data Parallelism)的核心在于将模型的数据处理过程并行化。具体来说,面对大规模数据批次时,将其拆分为较小的子批次,并在多个计算设备上同时进行处…...

Python大数据可视化:基于Python对B站热门视频的数据分析与研究_flask+hive+spider
开发语言:Python框架:flaskPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 管理员登录 管理员功能界面 排行榜界面 系统管理界面 看板展示 摘要 本项目以对B站热…...
利用 Python 编写一个 VIP 音乐下载脚本
在这篇博客中,我们将介绍如何使用 Python 编写一个简单的 VIP 音乐下载脚本,利用网页爬虫技术从一个音乐网站下载歌曲。通过解析网页,获取歌曲的真实下载链接,并将音乐文件保存到本地。我们将使用 requests 和 BeautifulSoup 库来实现这个过程。 目标 本脚本的主要功能是…...
linux内核如何实现TCP的?
TCP(传输控制协议)是网络通信中的核心协议之一,实现了可靠的、面向连接的、基于字节流的通信。在Linux内核中,TCP的实现相对复杂,涉及多个模块和层次。以下是一些关键概念和机制: 1. 协议栈 Linux 内核中的网络协议栈(Network Stack)是分层设计的,包括链路层、网络层…...
【Spring】基于XML的Spring容器配置——FactoryBean的使用
随着Spring框架应用程序的复杂性增加,开发者需要更加灵活和强大的工具来创建和管理Bean。FactoryBean是Spring提供的一种强大机制,它允许开发者自定义Bean的创建过程。这种机制不仅提高了Bean的创建灵活性,还可以简化复杂对象的构建过程。 在…...

Docker使用——国内Docker的安装办法
文章目录 参考资料前言Mac安装办法Homebrew 安装1. 直接下报错2. 安装homebrew, 用国内镜像3. 安装Docker4. 启动docker服务5. 测试是否安装成功 参考资料 鸣谢大佬文章。 macOS系统中:Docker的安装:https://blog.csdn.net/sulia1234567890…...

电商会员门店消费数据分析
导包 import os import sqlite3 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from IPython.display import display_htmlpd.set_option(max_colwidth,200)%matplotlib inline前期准备 转义路径 # 获取Windows系统下的路…...
Vue.js 入门与进阶:打造高效的前端开发体验
Vue.js 是一款渐进式的 JavaScript 框架,凭借其轻量、易用、灵活的特点,已经成为了前端开发者的首选之一。从简单的交互到复杂的单页应用(SPA),Vue 为开发者提供了一套高效且易于上手的工具。在本文中,我们…...

聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...