软件开发架构

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

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. flutter系列之:深入理解布局的基础constraints

    目录 简介 Tight和loose constraints 理解constraints的原则 总结 简介 我们在flutter中使用layout的时候需要经常对组件进行一些大小的限制,这种限制就叫做c ...

  2. Codeforces Round #822 (Div. 2) A-F

    比赛链接 A 题解 知识点:贪心. 注意到任意三根木棍的相等最优解是最长减最小,因此从小到大排序,三个三个取,取最小值. 时间复杂度 \(O(n\log n)\) 空间复杂度 \(O(n)\) 代码 ...

  3. PAT甲级英语单词整理

    proper 正确 合适 vertex(vertices)顶点 respectively 个别 分别 indices 指标 索引 shipping 运输 incompatible 不相容 oxidiz ...

  4. acwing346 走廊泼水节 (最小生成树)

    完全图就是每两个点都有直接相连的边. 模拟Kruskal算法的过程,每选择一条边加入时,他两端端点在同一个集合中就跳过,否则考虑合并两个集合,合并时需要增加的每条边的权值至少是edge[i]+1,这才 ...

  5. leetcode刷题记录之25(集合实现)

    题目描述: 给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表. k 是一个正整数,它的值小于或等于链表的长度.如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原 ...

  6. 会话跟踪技术 - Cookie 和 Session 快速上手 + 登陆注册案例

    目录 1. 会话跟踪技术概述 2. Cookie 2.1 Cookie的概念和工作流程 2.2 Cookie的基本使用 2.3 Cookie的原理分析 2.4 Cookie的使用细节 2.4.1 Co ...

  7. 深入浅出TCP与IP协议笔记

    TCP/IP 4层结构:应用层 传输层 网络层 链路层   探索过程问题:一个主机的数据要经过哪些过程才到达对方的主机上 一组电信号就是一个数据包,一个数据包称为一帧,制定这个规则的就是以太网协议   ...

  8. Mysql 用户远程登录数据库

    其实这个技术不难.我只是站在巨人的肩膀上.梳理一下我遇见的问题. 方法有两种.修改当前用户的host 为 %.或者直接授权(推荐) 直接授权: # mysql -u root -proot  // 登 ...

  9. 微服务组件--限流框架Spring Cloud Hystrix分析

    Hystrix的介绍 [1]Hystrix是springCloud的组件之一,Hystrix 可以让我们在分布式系统中对服务间的调用进行控制加入一些调用延迟或者依赖故障的容错机制. [2]Hystri ...

  10. RDD(弹性分布式数据集)及常用算子

    RDD(弹性分布式数据集)及常用算子 RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是 Spark 中最基本的数据 处理模型.代码中是一个抽象类,它代表一个 ...