网络开发的两大架构:CS架构,BS架构(c是client客户端,s是server服务端,b是brower浏览器)
BS架构(Browser/Server Architecture)
定义
BS架构,即浏览器/服务器架构,是一种基于Web的分布式计算模型,其中浏览器作为客户端,服务器作为服务端。在这种架构中,浏览器负责向服务器发送请求,并接收服务器返回的响应。服务器则负责处理浏览器的请求,并返回相应的结果。BS架构通常用于构建Web应用程序,如在线购物网站、社交媒体平台、在线银行系统等。
工作原理
- 客户端发送请求:用户在浏览器页面提交表单操作或点击链接等,向服务器发送请求,等待服务器响应。
- 服务器端处理请求:服务器端接收并处理请求。Web服务器解析请求后,调用相应的业务逻辑进行处理,并生成响应数据。
- 服务器端发送响应:服务器端将处理后的响应数据(如网页文件、图片、声音等)返回给浏览器。
- 浏览器解释执行HTML文件:浏览器接收到响应数据后,解释执行HTML文件,呈现用户界面供用户查看。
分层结构
BS架构通常分为三层:
- 表现层:即客户端,主要负责用户界面的显示和用户输入的收集。由于用户无需安装客户端,因此表现层面向的是大范围的用户,界面设计得相对简单且通用。在B/S架构中,浏览器充当了客户端的角色,用户通过浏览器向服务器发送请求并接收服务器的响应。
- 逻辑层:即Web服务器,扮演着信息传送的角色。当用户想要访问数据库时,会首先向Web服务器发送请求。Web服务器收到请求后,会解析请求并调用相应的业务逻辑进行处理,然后向数据库服务器发送访问数据库的请求。这个请求通常是以SQL语句的形式实现的。
- 数据层:即数据库服务器,负责存储和管理系统的数据。当数据库服务器收到Web服务器的请求后,会对SQL语句进行处理,并将返回的结果发送给Web服务器。Web服务器再将收到的数据结果转换为HTML文本形式发送给浏览器,供用户查看。
优势
- 简化客户端:由于所有的业务逻辑都由服务器完成,客户端只需负责界面的显示和用户输入的收集,因此大大简化了客户端的开发和维护。
- 跨平台性:B/S架构基于Web技术,因此具有跨平台的特性。用户只需通过浏览器即可访问系统,无需考虑操作系统的差异。
- 易于维护和扩展:由于系统的核心部分集中在服务器上,因此维护和扩展变得更加容易。只需对服务器进行升级或添加新功能,即可实现系统的整体升级和扩展。
- 降低成本:B/S架构无需安装客户端软件,因此降低了用户的成本。同时,由于系统的开发和维护都集中在服务器上,也降低了开发成本。
缺点
- 表现性较差:要达到C/S程序的程度需要一定的精力。
- 在速度和安全性设计上成本较高:B/S架构最大的问题。
- 客户端服务器端的交互是请求 - 响应形式:常常动态刷新页面,响应速度明显减少(Ajax能够一定程度上处理这个问题)。没办法实现分页显示,给数据库访问导致较大的压力。
- 功能弱化:难以实现传统形式下的特殊功能需要。
CS架构(Client/Server Architecture)
定义
CS架构,即客户端/服务器架构,是一种分布式计算模型,其中客户端和服务器之间通过网络进行通信。在这种架构中,客户端负责向服务器发送请求,并接收服务器返回的响应。服务器则负责处理客户端的请求,并返回相应的结果。CS架构通常用于构建大型的网络应用程序,如Web应用程序、电子邮件系统、数据库管理系统等。
工作原理
在C/S结构中,应用程序分为两部分:服务器部分和客户端部分。服务器部分是多个用户共享的信息与功能,执行后台服务,如控制共享数据库的操作等;客户端部分为用户所专有,负责执行前台功能,在出错提示、在线帮助等方面都有强大的功能,并且可以在子程序间自由切换。客户端通过局域网与服务器相连,接受用户的请求,并通过网络向服务器提出请求,对数据库进行操作。服务器接受客户端的请求,将数据提交给客户端,客户端将数据进行计算并将结果呈现给用户。服务器还要提供完善安全保护及对数据完整性的处理等操作,并允许多个客户端同时访问服务器,这就对服务器的硬件处理数据能力提出了很高的要求。
分层结构
CS架构可以有两层结构或三层结构:
- 两层结构:客户端层和数据库层。这种分层结构简单,易于理解,代码编写相对容易。但存在可扩展性差、可维护性差、安全性差、稳定性差等缺点。例如,若数据库地址发生变化,所有客户端配置都需要修改;没有任何安全保障,一旦中毒,后果不堪设想;代码逻辑混合在一起,bug容易增多,且不好复现。
- 三层结构:表示层、功能层和数据层。表示层是应用的用户接口部分,用于检查用户从键盘等输入的数据,并显示应用输出的数据;功能层相当于应用的本体,将具体的业务处理逻辑编入程序中;数据层就是数据库管理系统,负责管理对数据库数据的读写。三层结构具有易扩展、易维护、安全性高、稳定性强等优点,但代码复杂,需要较高的编码水平,且不易迁移。
优势
- 性能高效:由于客户端直接与服务器进行数据交换,没有中间层的延迟,因此响应速度快,能够处理大量数据和复杂业务逻辑。
- 界面丰富:客户端可以提供高度定制化的用户界面和操作体验,支持更复杂的图形界面和操作功能。
- 安全性较高:可以通过自定义协议和多层认证机制确保数据传输的安全性,尤其是在局域网环境中更为安全。
- 离线操作:在设计允许的情况下,客户端可以在离线状态下工作,之后同步数据到服务器,适合无网络或网络不稳定环境。
- 协议灵活:开发者可以自由选择或设计通信协议,以适应特定需求,提高系统效率和安全性。
- 支持分布式、并发环境:C/S架构支持分布式、并发环境,可以有效地提高资源的利用率和共享程度。
- 服务器端管理:服务器集中管理资源,有利于权限控制和系统安全。
缺点
- 高昂的维护成本:每次更新或升级软件时,都需要在每个客户端上单独进行,部署和维护工作量大。
- 依赖性强:客户端必须安装特定软件,对硬件和操作系统可能有特定要求,限制了使用的灵活性。
- 扩展性有限:对于远程访问或大规模分布式部署不够友好,通常更适合于局域网环境。
- 资源消耗:客户端需要相对较高的系统资源来运行应用程序,特别是在功能复杂的情况下。
- 用户入门门槛:用户需要安装客户端软件,对于非技术用户可能存在一定的使用障碍。
- 开发和测试成本高:由于客户端的不同操作系统和硬件环境导致开发和测试成本较高。
- 表达能力较弱:在大多数C/S风格的系统中,构件之间的连接通过(远程)过程调用,接近于代码一级,表达能力较弱。
- 跨平台性差:C/S架构的客户端软件通常需要针对特定的操作系统进行开发,因此跨平台性较差。
B/S(Browser/Server,浏览器/服务器)架构和C/S(Client/Server,客户端/服务器)架构是两种常见的软件架构模式,它们在现代软件开发中都有广泛的应用。虽然它们在设计理念、实现方式和应用场景上有所不同,但也存在一些联系和相互影响的关系。
一、B/S架构与C/S架构的对比
对比维度 | C/S架构 | B/S架构 |
---|---|---|
交互方式 | 专用客户端软件交互 | 通过浏览器进行交互 |
维护更新 | 客户端需单独更新和维护 | 服务器端统一更新,客户端无需特别操作 |
安全性 | 安全性较高,可实现复杂的安全控制 | 安全性相对较低,需要通过各种安全措施加以强化 |
扩展性 | 扩展性较差,需在每个客户端上进行软件更新 | 扩展性强,只需在服务器端部署新功能即可 |
适用场景 | 企业内部应用,客户端功能复杂 | 广泛用于Web应用开发和互联网服务 |
对硬件环境要求 | 客户端和服务器端都需要一定硬件资源,客户端需具备计算能力和存储空间,服务器端需高性能CPU、大容量内存等 | 客户端只需一个浏览器,对硬件要求低,服务器端需要较高计算能力和存储空间 |
个性化能力 | 强 | 低 |
响应速度 | 快 | 较慢 |
跨平台性 | 依赖客户端软件,跨平台性较差 | 基于Web技术,跨平台性强 |
软件重用性 | 构件重用性不如B/S架构下的构件 | 构件相对独立,重用性较好 |
系统维护 | 维护和管理难度较大,升级难 | 维护简单,系统开销小 |
二、B/S架构与C/S架构的联系
-
B/S架构是对C/S架构的改进
- B/S架构是随着Internet技术的兴起,对C/S架构的一种变化或者改进的架构。
- 在B/S架构下,用户工作界面通过WWW浏览器来实现,而C/S架构中客户端通常有专门的用户界面程序。例如,早期的企业管理系统多采用C/S架构,客户端程序功能丰富但维护成本高,后来随着Web技术发展,部分功能迁移到服务器端,形成B/S架构,降低了客户端维护成本。
-
二者都有客户端 - 服务器的交互模式
- 无论是B/S架构还是C/S架构,都存在客户端和服务器端的交互。在C/S架构中,客户端向服务器发送请求,服务器处理请求并返回结果,如数据库客户端软件向数据库服务器请求数据。在B/S架构中,浏览器作为客户端向服务器发送请求,服务器处理后将结果返回给浏览器,如用户在浏览器中访问网页时,浏览器向Web服务器请求页面内容。
-
在某些场景下的融合应用
- 一些大型企业应用可能会同时采用B/S和C/S架构的特点。例如,企业内部的办公系统,对于一些核心业务功能,如数据处理、复杂的业务逻辑计算等,可能采用C/S架构来保证性能和安全性;而对于一些信息查询、简单的流程审批等功能,可以采用B/S架构,方便员工通过浏览器随时随地访问,提高系统的易用性和可维护性。
-
技术发展促使二者相互借鉴
- 随着技术的发展,B/S架构和C/S架构也在不断演变和融合。例如,B/S架构中的一些技术,如Ajax(Asynchronous JavaScript and XML)技术,可以在一定程度上提高B/S架构应用的响应速度和用户体验,这是借鉴了C/S架构中客户端本地处理的优势;而C/S架构也在向更加模块化、可维护性强的方向发展,借鉴了B/S架构中服务器端集中管理的优点。
B/S架构和C/S架构各有优缺点,没有绝对的哪种更好,而是在不同的应用场景下各有优势。以下是两种架构的对比:
对比维度 | B/S架构 | C/S架构 |
---|---|---|
维护成本 | 低,只需更新服务器端 | 高,每次更新需更新所有客户端 |
跨平台性 | 强,只需浏览器支持 | 差,需针对不同操作系统开发 |
个性化能力 | 低,界面相对简单 | 高,界面丰富,操作体验好 |
响应速度 | 较慢,受网络影响大 | 快,客户端处理能力强 |
安全性 | 较低,数据存储在服务器 | 高,可实现多层认证 |
适用场景 | 企业官网、电子商务平台等 | 企业内部系统、金融交易系统等 |
开发成本 | 相对较低,无需开发多个客户端版本 | 高,需针对不同客户端开发 |
离线操作 | 差,依赖网络 | 强,可离线工作 |
对服务器要求 | 高,数据处理在服务器端 | 低,客户端分担数据处理 |
部署难度 | 低,只需部署服务器端 | 高,需在每个客户端安装软件 |
从上表可以看出,B/S架构在维护成本、跨平台性、开发成本和部署难度上具有优势,适合企业官网、电子商务平台等场景;而C/S架构在个性化能力、响应速度、安全性和离线操作上表现更好,适合企业内部系统、金融交易系统等场景。
选择建议
-
B/S架构的适用场景
- 当需要广泛的跨平台支持、较低的维护成本和快速部署时,B/S架构是更好的选择。例如,一个面向全球用户的在线教育平台,用户可以通过各种设备和操作系统访问,B/S架构能够满足这种需求。
-
C/S架构的适用场景
- 当需要高度个性化的用户界面、快速响应速度、强大的离线功能和高安全性时,C/S架构更为合适。例如,银行的网上银行系统,需要处理大量的交易数据,对安全性和响应速度要求极高,C/S架构能够更好地满足这些需求。
-
综合考虑
- 在实际应用中,也可以考虑结合两种架构的优点,采用混合架构。例如,对于一个大型企业的信息系统,可以在内部使用C/S架构来保证数据处理的效率和安全性,同时提供B/S架构的外部接口,方便外部用户访问部分信息。
基础概念
#一台主机有两个重要标识:
(1)mac地址:标记一台机器的物理地址 (不可变)
(2)ip 地址:#标记一台机器的逻辑地址 (可变)
#IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。ip地址用来标记网络上的每一台主机,方便在收发数据,网络请求时能够找到响应;
#ip地址分为两种 ipv4 和 ipv6: 分类ipv4 和 ipv6:
ipv4地址是一个32位的二进制数
ipv6地址是一个128位的二进制数
ipv4: 以4段点分十进制表示 X.X.X.X => 范围
0.0.0.0 ~ 255.255.255.255 地址范围2^32-1
ipv6 : 以8段冒分十六进制表示 X:X:X:X:X:X:X:X => 范围
0:0:0:0:0:0:0:0 ~ FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF 地址范围2^128-1
ip地址的最后一位0或者255 两个数字不能用,一般最后一位0表达的是网段,255代表广播地址
#网段 : 网段的作用,主要用来划分同一区域里的某些机器是否能够互相通信。在一个网段里可以不通过因特网,直接对话
判别的依据:如果IP地址和子网掩码相与得到的值相同就是同一网段
#内网 : 以下地址为预留地址,永远不会被当做公网ip来分配
192.168.0.0 - 192.168.255.255
172.16.0.0 - 172.31.255.255
10.0.0.0 - 10.255.255.255
#外网 :
在任何地方都可以访问的就是外网(排除防火墙的因素)
#子网掩码:区分网段和主机
255.255.255.0 / 255.255.0.0 / 255.0.0.0
ip1:192.168.10.12 ip2:192.168.1.16
#端口:"端口"是英文port的意译,是具体某个程序与外界通讯的出口。 取值范围:0~65535
使用时至少8000以上 访问地址加端口:192.168.2.1:8000
#局域网:在同一区域内由多台计算机互联形成通讯。【具有可重复的内网ip】
#广域网:在不同区域内有多台计算机互联形成通讯。【具有唯一的公网ip】
#交换机:对同一网段的不同机器之间进行数据转发的设备 [每一台机器和交换机相连,形成通信]
#路由器:对不同网段的不同机器之间进行数据转发的设备 [每一个局域网和路由器相连,形成通信]
#arp协议:每台主机都有arp缓存表 ,主要作用通过ip找mac的一个协议规则
【实现方式:通过交换机一次广播,一次单播找到的】
osi七层模型
人们按照分工不同把互联网协议从逻辑上划分了层级: osi4层,osi5层,osi7层 三类模型
局域网模型
局域网内,各个主机的通讯
广域网模型
广域网内,各个主机的通讯
# # ### 1.网络开发两大架构
# 网络开发两大架构:<BS>和<CS>架构
# c是<client>,s是<server>,b是<brower>
#
# 早期数据交互的格式是<没有网络>的
#
#
# 两个文件之间的数据交互需要通过<第三个文件>
# a,b文件同时和c文件交互,
# a文件把数据先存放c文件中
# b文件从c文件取,反之亦然
#
# <socket> (<套接字>) 是一个<收发数据的工具>
#
# 有了网络之后
# a文件中的数据,通过网络协议,转化101010...二进制进行发送
# a文件借助socket发送数据
# b文件借助socket接受数据
#
# # 二大架构
# c/s 架构 :
# c => client (客户端)
# 王者荣耀 微信 qq wow dnf ...
# s => server (服务端)
# 天河三号 (百亿亿次)
#
# B/S 架构 :
# b => Brower (浏览器)
# 谷歌,火狐,360,ie
# 通过输入网址,访问对方的服务器,对方服务器响应之后,把数据返回,浏览器通过返回的数据,渲染页面,看到最后的结果
# s => server (服务端)
# 一旦开启,永不关机(除非宕机)
#
# 在未来,更倾向于使用<B/s架构>,成为新的趋势
# 小程序: 微信小程序, 支付宝小程序
# (1) 省去复杂下载安装环节,节省手机电脑的空间
# (2) 因为手机带来的便捷性,随时随地使用到想要的应用,提升用户的满意度
#
#
# # ### 2.网络的概念
# """
# 网段的作用:
# 主要用来划分同一区域里的某些机器是否能够互相通信。
# 在一个网段里可以不同过因特网,直接对话
# 判别的依据:
# 如果IP地址和子网掩码相与得到的值相同就是同一网段
# """
# """
# 逻辑与
# 全真则真,一假则假
# 逻辑或
# 一真则真,全假则假
# """
#
# ip1: 192.168,11.251
# 子网掩码:255.255.255.0
# 11000000 10101000 00001011 11111011
# 11111111 11111111 11111111 00000000
# 11000000 10101000 00001011 00000000 => 192.168.11.0 (网段)
#
# ip2: 192.168,12.35
# 子网掩码:255.255.255.0
# 11000000 10101000 00001100 00100011
# 11111111 11111111 11111111 00000000
# 11000000 10101000 00001100 00000000 => 192.168.12.0 (网段)
#
#
# ip1: 192.168,11.251
# 子网掩码:255.255.0.0
# 11000000 10101000 00001011 11111011
# 11111111 11111111 00000000 00000000
# 11000000 10101000 00000000 00000000 => 192.168.0.0 (网段)
#
# ip2: 192.168,12.35
# 子网掩码:255.255.0.0
# 11000000 10101000 00001011 11111011
# 11111111 11111111 00000000 00000000
# 11000000 10101000 00000000 00000000 => 192.168.0.0 (网段)
# 下面的网络相同,意味着可以互相通信;
#
# # ### (3) 端口
# """端口:具体某个程序与外界通讯的出口 取值范围:0~65535 """
# 192.168.2.1:8000 访问这个世界上任何一个电脑里的任何一个软件
# 自定义端口时,最好命名8000以上的端口号
# https://blog.csdn.net/l_smalltiger/article/details/81951824
#
#
# 20 : FTP文件传输协议(默认数据口)
# 21 : FTP文件传输协议(控制)
# 22 : SSH远程登录协议
# 25 : SMTP服务器所开放的端口,用于发送邮件
# 80 : http用于网页浏览,木马Executor开放此端口
# 443: 基于TLS/SSL的网页浏览端口,能提供加密和通过安全端口传输的另一种HTTP => HTTPS
# 3306:MySQL开放此端口
#
# # ### (4) osi 网络七层模型
# 应用层 (应用层,表示层,会话层)
# 封装数据:
# 根据不同的协议,封装不同格式的数据
# http (超文本传输协议)
# HTTPS (加密传输的超文本传输协议)
# FTP (文件传输协议)
# SMTP (调子邮件传输协议)
#
# 传输层:
# 封装端口:
# 指定传输协议(TCP协议/UDP协议)
#
# 网络层:
# 封装ip:
# ipv4版本 / ipv6
#
# 数据链路层:
# 封装mac地址:
# 指定mac地址(arp协议[ip->mac] / rarp协议[mac->ip])
#
# 物理层:
# 打成数据包,变成二进制的字节流,通过网络进行传输
#
# # ### (5) 交换机与路由器 , 发送数据包流程
# 交换机: 从下到上拆2层,拆到数据链路层
# 路由器: 从下到上拆3层,拆到网络层(得到对应的网段)
#
# arp协议: 通过ip -> mac
# rarp协议: 通过mac -> ip
# """arp协议整体是通过: 一次广播 + 一次单播 实现"""
#
# # arp协议的完整过程:
# 电脑a发现目标主机没有mac,先发送arp广播包,把mac标记成全F的广播地址
# 交换机接受到arp的广播包,进行从下到上拆包,拆2层,拆到数据链路层看到全F广播地址,开始广播
# 把这个广播包发送给每一台主机
# 每台主机得到广播包后,都开始拆包,如果该数据包找寻的主机不是自己,自动舍弃
# 路由器得到arp广播包后,从下到上拆包,拆3层,拆到网络层,得到网段信息
# 通过路由器的对照信息表,找到网段对应的网关(接口)
# 对应网关的这台交换机得到arp广播包后,从下到上拆包,拆2层,发现全F广播地址进行广播
# 数据库主机收到广播包后,依次从下到上拆包,发现自己是目标要找的那台主机,
# 把自己的ip->mac对照信息封装,变成arp响应包,发送给对应的交换机
# 交换机得到arp响应包之后,依次进行单播,返回给最终的原主机
# 在回来的过程中,所有得到过相应arp广播包的主机都会自动更新自己的arp解析表,方便下次使用
#
#
#
# # ### (6) TCP/UDP协议:
# # tcp
# TCP(Transmission Control Protocol)一种面向连接的、可靠的、传输层通信协议(比如:打电话)
# 优点:可靠,稳定,传输完整稳定,不限制数据大小
# 缺点:慢,效率低,占用系统资源高,一发一收都需要对方确认
# 应用:Web浏览器,电子邮件,文件传输,大量数据传输的场景
#
#
# # udp
# UDP(User Datagram Protocol)一种无连接的,不可靠的传输层通信协议(比如:发短信)
# 优点:速度快,可以多人同时聊天,耗费资源少,不需要建立连接
# 缺点:不稳定,不能保证每次数据都能接收到
# 应用:IP电话,实时视频会议,聊天软件,少量数据传输的场景
#
#
# # TCP 三次握手
# 客户端发送一个请求消息,与服务端建立连接
# 服务端接受这个请求,发出响应消息,回应客户端,也要与客户端a建立连接(看下a是否同意)
# 客户端接受服务端的响应消息之后,发送回复消息(表达同意,到此客户端与服务端建立连接成功)
#
# # TCP 发送数据
# 每次发送一次数据,都会对应一个回执消息,如果发送方没有接受到回执消息,那么该数据包在发送一次;
#
#
# # TCP 四次挥手
# 客户端向服务端发送一个断开连接请求(代表客户端没有数据给服务端)
# 服务端接受请求,发出响应
# 等到服务端所有数据发送完毕之后
# 服务端向客户端发送断开连接请求
# 客户端接受请求,发出响应
#
# 等到2msl,msl(最大报文段生存时间)这么长时间之后
# 客户端与服务端彻底断开连接
TCP/UDP协议:
TCP(Transmission Control Protocol)一种面向连接的、可靠的、传输层通信协议(比如:打电话)
优点:可靠,稳定,传输完整稳定,不限制数据大小
缺点:慢,效率低,占用系统资源高,一发一收都需要对方确认
应用:Web浏览器,电子邮件,文件传输,大量数据传输的场景
UDP(User Datagram Protocol)一种无连接的,不可靠的传输层通信协议(比如:发短信)
优点:速度快,可以多人同时聊天,耗费资源少,不需要建立连接
缺点:不稳定,不能保证每次数据都能接收到
应用:IP电话,实时视频会议,聊天软件,少量数据传输的场景
客户端和服务端在建立连接时: 三次握手
客户端和服务端在断开连接时: 四次挥手
SYN 创建连接
ACK 确认响应
FIN 断开连接
三次握手:
四次挥手:
MSL为最大报文段生存时间
默认规定MSL为2分钟,但实际应用中常用的是30秒,1分钟和2分钟等。
整体缩略图
socket
socket的意义:通络通信过程中,信息拼接的工具(中文:套接字)
标签:架构,请求,网段,05,计算机网络,概念,服务器,浏览器,客户端 From: https://www.cnblogs.com/wumouhao/p/18596259关于计算机网络直接看谢希仁 计算机网络得了吧,这东西说不重要也挺重要的,后面
打算讲这本书看完并且完成练习,之前在学校上课的时候都不好好听,哈哈哈。