软件开发架构

规定了程序的请求逻辑、功能分块

C/S架构

Client: 客户端 我们使用计算机下载下来的一个个app本质是个大互联网公司的客户端软件

Server: 服务端 通过这些客户端软件我们就可以体验到各个互联网公司给我们提供的服务

eg:

​ 下载淘宝客户端 打开 体验淘宝服务端提供的购物服务

​ 下载抖音客户端 打开 体验抖音服务端提供的视频服务

ps: 一般情况下客户端与服务端交互需要互联网 但是有些不需要(因为客户端和服务端都在一台计算机上)

客户端:即将要去消费的客人

服务端:给客人提供服务的店

作为服务端必备的多个条件:

  1. 24小时不间断提供服务
  2. 固定的地址
  3. 能够服务多个客人(高并发)

B/S架构

Browser:浏览器

Server:服务器/端

浏览器可以从当所有服务端的客户端

ps:B/S架构本质还是C/S架构

C/S架构

优势:不同公司的客户端由不同的公司独立开发 可以高度定制化客户端功能

劣势:需要下载才能使用

B/S架构

优势:不用下载直接访问

劣势:无法高度定制化 并且需要遵守很多的规则

构架总结

​ ATM:三层构架

​ 选课系统:三层架构

​ 本质也属于软件开发架构的范畴

​ 软件设计的大小方向>>>: 统一的接口

​ 微信小程序

​ 支付宝小程序

网络编程前戏

  1. 什么是网络编程

    基于网络编写代码 能够实现数据的远程交互

  2. 学习网络编程的目的

    能够开发CS架构的软件

  3. 网络编程的起源

    最早起源于美国军事领域、想实现计算机之间的数据的交互、最早的时候只能用硬盘拷贝、之后发明了网络编程

  4. 网络编程必备条件

    数据的远程交互

    1. 早期的电话 靠电话线
    2. 早期的大屁股电脑 靠网络
    3. 笔记本电脑、移动电话 靠网卡

    ps: 实现数据的远程交互必备的基础条件是物理连接介质

OSI七层协议简介

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           OSI七层协议规定:规定了所有的计算机在远程数据交互的时候必须经过相同的处理流程、在制造过程中必须拥有相同的功能硬件
应用层
表示层
会话层
传输层
网络层
数据链路层
物理连接层
ps: 应、表、会、传、网、数、物 常见的是整合之后五层或者四层
五层:
应用层
传输层
网络层
数据链路层
物理连接层
四层:
应用层
传输层
网络层
网络接口层
'''
接收网络消息 数据由下往上传递
发送网络消息 数据由上往下传递
'''

OSI七层协议值之物理连接层

​ 只要用于确保计算机之间的物理连接介质 接收数据(bytes类型、二进制)

OSI七层协议之数据链层

  1. 规定了电信号的分组方式

  2. 以太网协议

    规定了计算机在出厂的时候都必须有一块网卡、网卡上有一串数字

    该数字相当于是计算机的身份证号码是独一无二的

    该数字的特征:12位16进制数据 前6位产商编号 后6位流水线号

    该数字也称为:以太网地址/MAC地址

网络相关专业名词

计算机之间要想要实现数据交互必须要‘连接’到一起

两台计算机通过mac地址插一根网线就可以连接了,但是如果要与更多的计算机交互呢?

为了解决一台计算机连接多台计算机 难道一台计算机插几百根网线吗?

所以出现了交换机:

交换机:

  1. 能够将所有接入交换机的计算机彼此互联起来
  2. 由交换机组成的网络叫局域网(一个区域)

广播:

  • 首次查找接入同一个交换机的其他计算机 需要朝交换机里面吼一嗓子

    在交换机里所有的计算机都可以接受到这个信息!

单播:

  • 首次被查找的计算机回应查找它的计算机 并附带自己的mac地址

    比如:只有服务器1听到之后才会回复 诶我在这 我的mac地址(恰个w)传给你 你就不用再吼了!

广播风暴:

  • 接入同一台交换机的多台计算机同时发广播

    大家都在吼!谁都听不见,都晕了!交换机同一时间出现太多广播操作,导致交换机瘫痪

网络层

局域网:可以简单的理解为有单个交换机组成的网络 在局域网内可以直接使用mac地址通信

广域网:可以简单的理解为范围更大的局域网

互联网:由所有的局域网、广域网连接到一起形成的网络

路由器:不同的局域网计算机之间是无法直接实现数据交互的 需要路由器连接

手机的4G 5G 也是连接路由器(基站) 访问别的局域网计算机

OSI七层协议之网络层

IP协议:

规定了所有'''接入互联网'''的计算机都必须有一个IP地址 类似于身份证号
mac地址是物理地址可以看成永远无法修改
IP地址是'''动态分配'''的 不同的场所IP是不同的
可以取决于所接的网线,你换跟根网线IP地址就变了。

IP地址特征:

IPV4:点分十进制
0.0.0.0
255.255.255.255
IPV6:能够给地球上每一粒沙分一个IP地址
IP地址可以跨局域网传输

IP地址分为公网IP和私网IP:

公网IP是需要花钱购买的!并且需要实名认证并备案
小网站 非法网站在国外注册备案

arp协议:

处于数据链路层 可以把IP协议转成mac地址 所以说最终两台计算机联系还是要有一个唯一的物理地址

ps: IP地址可以用来标识全世界独一无二的一台计算机

OSI七层协议之传输层

'''PORT协议(端口协议):'''
一台计算机上面可以运行很多数据交互软件 比如微信、qq、钉钉
不同的软件 都是从内存中获取数据 为什么不会错乱 比如你微信收到QQ发来的信息!
是因为端口协议的存在!!!
规定了某一个应用程序必须有一个固定的号码。
把内存划分出很多小的区域供使用 一个应用程序就在一个小的内存区域中存取数据。
用于标识一台计算机上面正在运行的应用程序(端口号类似于手牌号) '''端口号的范围、端口号动态分配(重要)'''
# 端口号的范围
0-65535
一台计算机最多同时运行 65536 个应用程序(理论上)
0-1024:系统经常使用的端口号
1024-8000:常用软件端口号
我们写项目用 8000 之后的!
# 动态分配
1.同一时间同一计算机上面端口号只能给一个应用程序用
2.端口号是动态分配的
隐喻:去洗浴中心,端口号是一个箱子,里面装了很多手牌,来了就拿一个手牌,走了手牌要归还。
# 举例
软件启动的时候 是可以指定端口号的 没有指定端口号就动态分配
微信关了再打开,可能分配的就是另外一个端口号
多QQ号登录 是两个端口 肯定不一样 一样就数据冲突了 '''URL的本质'''
# URL
网址的本质是IP和PORT组成的!!!
1. IP+PORT (重要)
IP地址:用于标识全世界独一无二的一台接入互联网的计算机
PORT号:用于表示一台计算机上面的某一个应用程序
IP+PORT 能够标识全世界独一无二的一台计算机上面的某一应用程序
访问网址 其实就是访问某一台计算机上的某个应用程序
我们日常生活使用浏览器访问的各个网址其实就是IP+PORT
比如:14.215.177.39:80
遵循格式:ip:port
2. 无需指定端口
很多常见的服务端都不需要指定端口 比如百度!
只要访问了ip地址 内部会自动映射 不需要指定端口了
eg:或者服务端只开放了一个80端口 '''DNS域名解析'''
我们通过IP地址就可以访问网站了!但是为什么网址长这样:
www.baidu.com # 好记
14.215.177.39:80 # 难记
我们之所以不直接使用IP+PORT的原因是太难记 所以发明了域名(网址)
域名解析:将网址解析成IP+PORT

软件开发架构、构架趋势、OSI七层协议的更多相关文章

  1. 软件开发架构与网络之OSI七层协议(五层)

    本期内容概要 python回顾 软件开发架构 网络理论前瞻 osi七层协议(五层) 以太网协议 IP协议 port协议 交换机 路由器 局域网 广域网 TCP协议 三次握手 四次挥手 UDP协议 内容 ...

  2. 1、网络并发编程--简介、软件开发架构、OSI七层协议

    python复习 变量与常量 基本数据类型 内置方法 字符编码.文件操作 函数 函数参数.闭包函数.装饰器 面向对象 封装.继承.多态 """ 什么是对象 数据与功能的结 ...

  3. OSI七层协议&TCP协议(三次握手四次挥手)

    今日内容 python 基础回顾 软件开发架构 网络理论前戏 OSI 七层协议(五层) TCP协议 三次握手与四次挥手 UDP协议 内容详细 一.python 基础回顾 1.基本数据类型 整型 int ...

  4. 软件开发架构介绍||OSI七层协议之物理层、数据链路层、网络层、传输层(mac地址、ip协议、断开协议、tcp协议之三次握手四次挥手)

    一.网络编程 软件开发架构 C/S架构 C:客户端 想体验服务的时候才会去找服务端体验服务 S:服务端   24小时不间断的提供服务,即时监听,随时待命 B/S架构 B:浏览器    想体验服务的时候 ...

  5. python网络编程-Json序列化功能扩展-软件开发架构-OSI七层协议-TCP-01

    面向对象补充知识点(面向对象的应用) 扩展json序列化所支持的数据类型(分析源码) import json from datetime import datetime, date # ------- ...

  6. 开发架构+osi七层协议+socket(day26)

    目录 软件开发架构 C/S架构 B/S架构 网络编程 互联网协议/OSI七层协议 传输层 网络层 数据链路层 物理连接层 socket 什么是socket 为什么用socket 如何使用 软件开发架构 ...

  7. 网络编程之网络架构及其演变过程、互联网与互联网的组成、OSI七层协议、socket抽象层

    目录 网络架构及其演变过程 单机架构 CS架构 BS架构 BS架构和CS架构的区别 C/S架构的优缺点: B/S架构的优缺点: 互联网与互联网的组成 互联网的组成(教科书版) 互联网的组成(科普版) ...

  8. day28——C/S与B/S架构、网络通信原理、osi七层协议、UDP、TCP协议、TCP的三次握手与四次挥手

    day28 C/S B/S架构 C:client 客户端 B:browse浏览器 S:server 服务端 C/S C/S架构:基于客户端与服务端之间的通信 ​ QQ.游戏.皮皮虾 ​ 优点:个性化设 ...

  9. Day09: socket网络编程-OSI七层协议,tcp/udp套接字,tcp粘包问题,socketserver

    今日内容:socket网络编程    1.OSI七层协议    2.基于tcp协议的套接字通信    3.模拟ssh远程执行命令    4.tcp的粘包问题及解决方案    5.基于udp协议的套接字 ...

  10. 8.6 day27 网络编程 osi七层协议 Time模块补充知识 TCP协议

    Time模块补充知识 date和datetime区别是什么? date 就是年月日 datetime就是年月时时分秒 以下代码为什么会报错? import json from datetime imp ...

随机推荐

  1. Educational Codeforces Round 106 (Rated for Div. 2)

    就ac了2题... A题一开始题意模模糊糊的似懂非懂,然后自己按样例推出了题意,简单题很容易ac了.还是自己的英语水平太菜了.... B题根据0和1的位置关系能看出来,因为0不能在1后面, 所以有00 ...

  2. C++运算符重载(简单易懂)

    转载:https://www.cnblogs.com/liuchenxu123/p/12538623.html 运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型. 你 ...

  3. Java学习之路:HelloWorld

    2022-10-08 16:13:57 HelloWorld   1. 随便新建一个文件夹,存放代码   2. 新建一个Java文件 文件后缀名为.java hello.java 注意:系统没有显示后 ...

  4. 后端框架的学习----mybatis框架(8、lombok)

    8.lombok #测试环境搭建 1.导入lombok 2.新建实体类Teacher,Student 3.建立mapper接口 4.建立mapper.xml文件 5.在核心配置文件中绑定注册mappe ...

  5. 复杂场景数据处理的 OLTP 与 OLAP 融合实践

    本文首发于 NebulaGraph 公众号 Dag Controller 介绍 Dag Controller 是 NebulaGraph 企业版的系统,经过反复测试无误后进行了发布,它主要解决的是 O ...

  6. C语言客房管理&酒店管理

    #include<iostream> #include<string.h> #include<stdlib.h> #include<iomanip> # ...

  7. 二、redis介绍

    二.redis介绍 2.1.定义 Redis(Remote Dictionary Server ,远程字典服务) 是一个使用ANSI C编写的开源.支持网络.基于内存.可选持久性的键值对存储数据库,是 ...

  8. 1分钟完成在线测试部署便捷收集班级同学文件的web管理系统

    最近CSDN推出了一个新功能[云IDE],个人对这个新功能(比赛奖金 )挺感兴趣的,于是瞬速地拿之前自己搞的一个便捷收集班级同学文件的web管理系统(下面简称该项目为cfile)体验了一下,发现功能还 ...

  9. 基于案例分析 MySQL Group Replication 的故障检测流程

    故障检测(Failure Detection)是 Group Replication 的一个核心功能模块,通过它可以及时识别集群中的故障节点,并将故障节点从集群中剔除掉.如果不将故障节点及时剔除的话, ...

  10. Codeforces Round #791(Div 2)——D

    D Problem - D - Codeforces 题意: 给定一个有向图,每个点有自己的点权,求一条长度为K的路径使得路径上的最大点权最小,输出该条路径上的最大点权. 思路:(二分+拓扑排序) 最 ...