软件开发架构

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

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. day42-反射01

    Java反射01 1.反射(reflection)机制 1.1反射机制问题 一个需求引出反射 请看下面问题: 根据配置文件 re.properties 指定信息,创建Cat对象并调用方法hi clas ...

  2. mapboxgl加载tiff

    缘起 近期在项目中遇到这么一个需求,需要在地图上展示一组格网数据,格网大小为2m*2m,地图api用的mapboxgl.起初拿到这个需要感觉很easy,在地图上添加一个fill图层就好啦.把格网面数据 ...

  3. 基于雪花算法的增强版ID生成器

    sequence 基于雪花算法的增强版ID生成器 解决了时间回拨的问题 无需手动指定workId, 微服务环境自适应 可配置化 快速开始 依赖引入 <dependency> <gro ...

  4. Xray

    Xray基础操作 代理设置 运行xray.exe xray.exe genca 运行后会生成ca.crt和cr.key 浏览器导入证书 设置代理7777端口 第一次启动 xray 之后,当前目录会生成 ...

  5. 齐博x1标签实例:调用多个圈子同时调用贴子

    下面讲解,在首页,如何调用圈子的同时也调用他们相关的贴子. 单单调用圈子,就像调用文章一样,很多人都能轻松实现,比如下面的代码 {qb:tag name="xxx" type=&q ...

  6. 驱动开发:内核封装WSK网络通信接口

    本章LyShark将带大家学习如何在内核中使用标准的Socket套接字通信接口,我们都知道Windows应用层下可直接调用WinSocket来实现网络通信,但在内核模式下应用层API接口无法使用,内核 ...

  7. Java单例模式,看这一篇就够了

    在创建型设计模式中,我们第一个学习的是单例模式(Singleton Pattern),这是设计模式中最简单的模式之一. 单例是什么意思呢? 单例就是单实例的意思,即在系统全局,一个类只创建一个对象,并 ...

  8. ES6 学习笔记(十一)迭代器和生成器函数

    1.前言 JavaScript提供了许多的方法来获取数组或者对象中的某个元素或者属性(迭代).从以前的for循环到之后的filter.map再到后来的for...in和for...of的迭代机制.只要 ...

  9. @confirguration(proxyBeanMethods = false)的作用,如何选择Full模式和Lite模式

    @Configuration(proxyBeanMethods = false) //告诉SpringBoot这是一个配置类 == 配置文件 public class MyConfig { @Bean ...

  10. 通过jmeter,造50个单位的并发用户数据(用户从上至下每50个单位依次排序)

    单位数据:loginfoll.csv         #50个单位的信息(agencyCode,passwd,agencyname,rgcode) 用户数据:50个单位,每个单位200个用户(用户名为 ...