软件开发架构

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

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. 【前端必会】单页应用-你的新朋友wepack

    背景 我们开发的功能可能是简单的,但是实现功能的代码行数却可能成千上万 出于易于维护.安全.服用,我们会根据我们的经验设计我们的代码,拆解成多个独立的功能模块(代码片段.更多的文件) JS的模块规范有 ...

  2. 分布式存储系统之Ceph集群RadosGW基础使用

    前文我们了解了MDS扩展相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16759585.html:今天我们来聊一聊RadosGW的基础使用相关话题: ...

  3. Stanford CoreNLP无法生成实例对象

    在服务器上运行Stanford,今日无法启动"StanfordCoreNLP"了,就是运行下面代码一直在运行,不结束,不报错. from stanfordcorenlp impor ...

  4. (Java初学篇)IDEA项目新建流程和软件配置优化以及怎么彻底删除项目

    相信很多小伙伴们在初学 Java 时都会出现这样的情况,就是在网上一顿搜索加捣鼓终于把 JDK 和IDEA 这两款软件安装配置好,但是发现面对这个陌生的软件此时却无从下手,那么接下来我就给大家简单地介 ...

  5. sql面试50题------(11-20)

    文章目录 11.查询至少有一门课与学号为'01'的学生所学课程相同的学生的学号和姓名 12.查询和'01'号同学所学课程完全相同的其他同学的学号 13.查询两门及其以上不及格课程的同学的学号,姓名及其 ...

  6. JavaScript基础&实战(2)js中的强制类型转换、运算符、关系运算符、逻辑运算符、条件运算符

    文章目录 1.强制类型转换Number 1.1 代码 1.2 测试结果 2.进制表示 2.1 代码 2.2 测试结果 3.强制类型转换为Boolea 3.1 代码 3.2 测试结果 4.运算符 4.1 ...

  7. day50-正则表达式01

    正则表达式01 5.1正则表达式的作用 正则表达式的便利 在一篇文章中,想要提取相应的字符,比如提取文章中的所有英文单词,提取文章中的所有数字等. 传统方法是:使用遍历的方式,对文本中的每一个字符进行 ...

  8. javascript编程单线程之同步模式

    javascript编程单线程之同步模式 主流的js 环境都是单线程吗模式执行js 代码, js采用为单线程的原因与最开始设计初衷有关,最早是运行在浏览器端的脚本语言,目的是为了实现页面上的动态交互, ...

  9. MongoDB - 简单了解

    什么是 NoSQL NoSQL 是一种非关系型数据库管理系统,不需要固定的架构,可以避免 JOIN 连接,并且易于扩展. NoSQL 常用于具有庞大数据存储需求的分布式数据存储,通常是大数据和实时 W ...

  10. mitmproxy抓包工具

    中文官网 https://ptorch.com/docs/10/mitmproxy-concepts-options mitmproxy抓包工具 1. mitmproxy 介绍与安装 需要安装pyth ...