CS、BS架构和网络通信协议

1. CS架构

CS架构其实在我们身边比比皆是,手机里的app大多都是CS架构,比如腾讯作为服务端为你提供视频,你得下个腾讯视频客户端才能看它的视频。

这里的腾讯视频是客服端client,腾讯也有一个自己的服务端server

这种自己开创一个客服端的方式叫做CS架构。

CS架构的好处是:可以自定义发送数据的格式与方式

2. BS架构

BS架构其实也是CS架构中的一种,只不过需要我们独立开发的客户端变成了浏览器,我们就不需要再去开发客服端了!

BS架构的好处是:省去了开发客户端,都是必须按照浏览器的

3. 网络通信协议

3.1 什么是网络

没有网络的话,如果我需要另一台电脑上的一些小视频、小音频,我就需要拿个U盘跑到那台机器上,把那台机器上的东西拷贝下来,这就有个问题,如果我离那台电脑很远,我就需要耗费很大的精力去到那台电脑旁边。

这样显示是很不方便的,网络的产生就是为了解决上述问题,网络=物流链接介质+互联网通信协议,网络间的通信能够实现跨地域传输数据

3.2 osi的七层协议(重点)

osi的七层分别是:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

我们一般只需要了解应用层、传输层、网络层、数据链路层、物理层这五层结构!!

每层的协议是指规定传输数据的组织格式
格式:头部+数据部分

这里其实可以把数据部分看成是一个包裹头部当成包裹上的面单,两台计算机之间的数据传输其实就是封包和拆包的过程。

1.物理层

一组物理层数据称之为:位(Bit)
物理层负责发送电信号0/1
单纯的电信号毫无意义,必须要对其进行分组

2.数据链路层:ethernet以太网协议

数据链路层定义了电信号分组的方式
数据链路层有几个规定:
规定1:一组数据组称之为一个数据帧
规定2:数据帧分为两部分——>头+数据
头部包含了源地址,目标地址,数据类型等等,头部的地址是mac地址
数据包含的是网络层传来的整体内容
规定3:但凡接入互联网的主机必须有一块网卡。每块网卡在出厂前都会烧制好一个全世界独一无二的mac地址
注意:计算机通信基本靠吼,即以太网协议的工作方式是广播

3.网络层:IP协议

网络层是用来划分广播域的
每一个广播域但凡需要接通到外部,一定需要一个网关帮内部的计算机转发包到公网
网关与外界通信走的是路由协议

网络层也有几项规定:

1.一组数据称之为一个数据包
2.数据包分为两部分——>头+数据
头部包含:源地址,目标地址,数据类型等等,头部的地址是ip地址
数据包含的是传输层传来的整体内容

总结:
1.ip地址+mac地址 =》标识世界上独一无二的一台计算机
2.ip地址也可以标识世界上独一无二的计算机
3.ip+(mac)+port 标识世界上独一无二的计算机上的基于网络通信的软件

4.传输层:tcp/udp协议=》基于端口的协议

端口的范围是0-65535,其中0-1023是系统占用端口

4.1 基于tcp通信协议

基于tcp协议通信之前,必须建立一个双向通信的链接,这就需要提供三次握手,建立链接为传输数据做准备,它是一个可靠的传输。

image

通信完毕时需要断开链接,这时需要四次挥手

image

image

4.2 基于udp的通信协议

不需要和服务端建立连接,直接发送数据,所以这种方式是不可靠的,数据容易丢失,一般像广播、直播这样的就是udp

5.应用层

在应用层可以自定义协议,格式为:头部+数据部分
头部的长度必须固定,因为接收端需要通过头部获取需要接收数据的详细信息

4.层级之间的流程图

image

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:CS、BS架构和网络通信协议 - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • git的介绍和使用

    git介绍 什么是git git是一种版本控制器 – 控制的对象是开发的项目代码 什么是版本控制器 完成 协同开发 项目,帮助程序员整合代码 i)帮助开发者合并开发的代码 ii)如果出现冲突代码的合并,会提示后提交合并代码的开发者,让其解决冲突 软件:SVN 、 GIT(都是同一个人的个人项目) github、gitee(两个采用git版本控制器管理代码的公…

    2023年4月2日
    00
  • 存储器详解

    存储器有五种类型,分别是寄存器、高速缓存、内存、磁盘、磁带。 他们访问读取的时间和容量如下图: 1.寄存器L1缓存 用的是与cpu一样的材质制成,读取和cpu一样快,容量<1KB 2.高速缓存L2缓存 存放的是cpu经常使用的数据 3.内存 内存又称RAM,ROM又称只读内存,ROM内存放着计算机厂商写死在计算机上的一段核心程序–BIOSCMOS:存…

    2023年4月2日
    00
  • while循环语法

    while循环 循环的基本语法和使用 count = 0 # 定义一个初始条件 while 条件: 代码1 代码2 … count += 1 # 额,每循环一次+1,用来结束循环 退出循环的两种方式 方式一:将while后面的条件改成false,退出循环!该方式就是基本语法的使用方式!注意:改成false提交后面的代码还会执行,直到第二次判断开始结束循环…

    Python开发 2023年4月2日
    00
  • django中的auth模块与admin后台管理

    1. auth模块 在创建完django项目之后,执行数据库迁移之后,数据库里会增加很多新表,其中有一张名为auth_user的表,当访问django自带的路由admin的时候,需要输入用户名和密码,其参照的就是auth_user表 使用python3 manage.py crataesupperuser 可以创建超级管理员用户,同时在auth_user表里…

    2023年4月2日
    00
  • 重构后台的django项目目录、配置开发环境、添加环境变量

    重构项目目录 celery_task: logs:项目运行时/开发时日志目录包 luffapi:项目同名文件夹 apps:项目所有应用的集合文件夹 libs:第三方类库的保存目录[第三方组件、模块] – 包 media:用户提交的文件目录文件夹 settings:配置目录,包含开发时的配置文件和上线时的配置文件 utils:多个模块[子应用]的公共函数类库[…

    2023年4月2日
    00
  • 数据库配置限)不用root用户操作数据库了(为数据库创建用户,并赋予权限)

    步骤 1.为路飞项目创建数据库 在mysql终端输入以下代码: create database luffy charset=utf8; 2.创建数据库用户 create user ‘username’@’host’ identified by ‘password’; 其中username为自定义的用户名;host为登录域名,host为’%’时表示为 任意IP…

    Python开发 2023年4月2日
    00
  • 基本运算符

    基本运算符 算术运算符 print(10+2) # 加减乘除运算符 print(10 / 3) print(10 // 3) # 只保留整数部分 print(10 % 3) # 取余数 print(10 ** 3) # 幂方运算 比较运算符 <、>、>=、<=、==、!= 赋值运算符 # =:变量赋值 # +=、-=、*=、**=、/…

    Python开发 2023年4月2日
    00
  • 过滤组件、排序组件、全局异常处理、自己封装的response对象

    过滤组件 查询所有才涉及到过滤,其他接口都不需要restful规范中有一条,请求地址中带过滤条件:分页、排序、过滤统称为过滤 内置过滤类 使用内置过滤类的步骤 from rest_framework.filters import OrderingFilter,SearchFilter 必须是继承GenericAPIView+ListModelMixin的之类…

    2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部