11月15日内容总结——软件开发架构、网络编程介绍和OSI七层协议介绍
一、软件开发架构
1.什么是软件开发架构
- 编写项目之前需要遵循的代码层面上的规范(代码运行的流程 环节 步骤)
- eg:回想ATM三层架构 选课系统三层架构
2.软件开发架构
架构方式一:c/s架构
c:client 客户端
s:server 服务端
计算机上下载的各个互联网公司的app软件,本质其实是客户端。
而我们下载一个个不同的客户端就是为了体验不同服务端提供的服务。
eg:
下载淘宝就是为了体验淘宝服务端提供的购物服务
下载抖音就是为了体验抖音服务端提供的视频服务
ps:一般情况下客户端与服务端交互需要互联网 但是有些不需要(因为客户端和服务端都在一台计算机上,比如我们玩的一些单机游戏)
类比:
- 客户端可以看成是即将去消费的客人
- 服务端可以看成是给你提供服务的店
作为服务端必备的多个条件
1.24小时不间断提供服务
2.固定的地址
3.能够服务多个客人(高并发)
架构方式二:b/s架构
b:broswer 浏览器
s:server 服务器
b/s架构本质也是c/s架构
通过浏览器来充当各个服务端的客户端,想要体验服务时不需要下载指定的客户端
架构优劣势
cs架构
- 优势:不同公司的客户端由不同公司独立开发,可以高度定制化客户端功能
- 劣势:使用必须先下载客户端,比较繁琐
bs架构
- 优势:不需要下载客户端,能够快速体验服务
- 劣势:无法高度定制化,并且需要遵守很多规则
架构发展趋势
二、架构总结
再次申明: 上述架构与我们之前所学的三层架构其实一样
当我们实际使用的时候跟面向对象和面向过程一样。c/s和b/s是交替使用,互相穿插的
发展趋势:统一接口原则
微信
- 当我们使用微信的时候需要下载微信客户端,但是在微信中有很多的小程序,可以让我们体验其他软件(客户端)才有的服务和功能,这些小程序的编写的时候采用的就是统一接口,这样都可以加入到微信的小程序中供人使用。
支付宝
里面同样也有很多的小程序,可以使用其他功能
后续就是cs和bs交错使用 避免各自的劣势!!!
ps:可以方便用户使用 更重要的是可以给自己圈用户便于后期收割
三、网络编程前戏
1.什么是网络编程
- 基于网络编写代码 能够实现数据的远程交互
2.学习网络编程的目的
能够开发cs架构的软件
3.网络编程的起源
任何先进的技术一般都来源于军事,淘汰后才进去民用领域
网络编程是由美国军方开发的,没有网络编程的时候,如果两台计算机之间要交互数据,只能使用硬盘拷贝。如果一个人在中国一个人在非洲,那就拿着硬盘坐飞机去拷贝数据。
4.网络编程的要求
数据的远程交互
1.早期的电话
必须要有电话线
2.大屁股电脑
必须要有网线
3.笔记本电脑
必须要有网卡
通过上面的例子我们得知计算机之间要想实现远程数据交互,首要条件就是要有物理连接介质
四、OSI七层协议简介
OSI七层协议:规定了所有的计算机在远程数据交互的时候必须经过相同的处理流程、在制造过程中必须拥有相同的功能硬件
具体名称如下:
应用层
表示层
会话层
传输层
网络层
数据链路层
物理连接层
ps:应、表、会、传、网、数、物(记忆方法)
'''通过整合之后可以变成五层或者四层'''
五层:
应用层(应用层、表示层、会话层整合在一起)
传输层
网络层
数据链路层
物理连接层
四层:
应用层
传输层
网络层
网络接口层(数据链路层、物理连接层)
ps:
接收网络消息 数据由下往上传递
发送网络消息 数据由上往下传递
五、OSI协议之物理连接层
在网络变成前戏中我们提到了数据的远程交互必须要有物理介质,在OSI七层协议中就指的是物理连接层,同时我们也要知道数据在传输的时候全是二进制、bytes类型。
六、OSI七层协议之数据链路层
作用:
1.规定了电信号的分组方式
2.规定了每台计算机都必须有一块网卡
同时网卡上必须有一串记录>>>:电脑的以太网地址(身份证号) 也叫mac地址
以太网地址\mac地址:由12位16进制数组成的
前6位:产商编号
后6位:生产流水线号
ps:既然mac地址相当于电脑的身份证号 也就意味着可以根据该地址查找计算机(可以基于mac地址实现数据交互)
七、网络相关专业名词
计算机之间要想实现数据交互必须要'连接'到一起
1.交换机
在最早的时候,直接使用网线连接,进行数据交互
当服务器多了之后导致了连接变得麻烦,因此有了交换机
- 能够将所有接入交换机的计算机彼此互联起来
2.广播
原理
有了交换机之后,根据电脑的mac地址就可以实现数据交互
广播:
先在交换机中吼,所有接入交换机的设备都能收到
单播:
只有被查找设备 才会回复相应信息
也就是向当前交换机连接的所有服务器发送请求,然后只有被查找的对象才会对查找对象进行单独的回应(也可以看成在群聊里找人,被找的人通过私聊联系查找的人),这里需要注意,只有第一次查找的时候需要广播,后面就可以根据mac地址直接访问对方
缺陷
1.mac地址通信仅限于局域网
2.接入交换机的设备过多 可能会造成广播风暴
广播风暴:类似于所有人同时吼!!!
3.单播
首次被查找的计算机回应查找它的计算机 并附带自己的mac地址
4.广播风暴
接入同一台交换机的多台计算机同时发广播,广播数据充斥网络无法处理,并占用大量网络带宽,导致正常业务不能运行,甚至彻底瘫痪,这就发生了“广播风暴”。
5.局域网
局域网的覆盖范围一般是方圆几千米之内,其具备的安装便捷、成本节约、扩展方便等特点。
可以简单的理解为由单个交换机组成的网络(交换机也分大型和小型)
在局域网内可以直接使用mac地址通信
6.广域网
广域网又称广域网、外网、公网。是连接不同地区局域网或城域网计算机通信的远程网。通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个地区、城市和国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络。广域网并不等同于互联网。可以简单的理解为范围更大的局域网
ps:所谓的广域网跟局域网其实是相对的,比如中国是一个很大的局域网,这时候因为中国这个局域网很大,我们也可以说他是广域网
7.互联网
由所有的局域网、广域网连接到一起形成的网络
8.路由器
不同的局域网计算机之间是无法直接实现数据交互的 需要路由器连接
八、OSI七层协议之网络层
IP协议:规定了所有接入互联网的计算机都必须有一个IP地址 类似于身份证号
mac地址是物理地址可以看成永远无法修改
IP地址是动态分配的,不同的场所IP是不同的
IPV4(32位二进制)编址方式:点分十进制法(0、1组成)
IPV6(128位二进制)编址方式:冒分十六进制法
完整IP地址:IP地址+子网掩码
IP地址:网络位+主机位
地址分类:(转二进制看位数 )
A类地址:第一位固定为0
0XXX XXXX---0-127(1-126),子网掩码默认为255.0.0.0
B类地址:第一位固定为10
10XX XXXX---128-191,子网掩码默认为255.255.0.0
C类地址:第一位固定为110
110X XXXX---192-223,子网掩码默认为255.255.255.0
D类地址:第一位固定为1110
1110 XXXX---224-239,子网掩码默认为255.255.255.255
E类地址:第一位固定为1111
1111 XXXX---240-255,科研地址
特殊地址:
1、0.X.X.X 无效地址(保留地址),0.0.0.0无效地址,用于占位
2、127.0.0.1 回路地址,用于本地测试
3、网络号,主机位全为0,用于描述一个网段
4、255.255.255.255为受限广播地址
5、主机位全为1,定向广播地址
6、本地链路地址:link-local (169.254.0.0 255.255.00)
公有地址:具有全球唯一性标识地址
私有地址:不具唯一标识地址
10.0.0.0 255.255.0.0
172.[16,31].0.0 255.255.0.0
192.168.X(0,255).0 255.255.0.0
ps:IP地址可以跨局域网传输,因此IP地址可以用来标识全世界独一无二的一台计算机
九、OSI七层协议之传输层
PORT协议(端口协议)
端口的作用:用来标识一台计算机上面的某一个应用程序
范围:0-65535
特征:动态分配(洗浴中心号码牌)
也就是说你需要用到的时候,我就临时给你分配,使用结束就回收这个端口号。
建议:
0-1024 系统默认需要使用
1024-8000 常见软件的端口号
8000之后的 通常我们使用的都是8000之后的
常见端口号(<256):
21端口号:FTP 文件传输服务
22端口号:SSH 远程登录(安全性较高 加密认证)- TCP
23端口:Telnet 远程登录服务 TCP
25端口:SMTP 简单邮件传输服务
53端口:DNS 域名解析服务 TCP和UDP
80端口:HTTP 超文本传输协议 TCP
110端口:POP3 “邮局协议版本”使用的端口
443端口:HTTPS 加密的超文本传输协议 TCP
520端口:RIP UDP
URL:统一资源定位符(网址)
网址本质是有IP和PORT组成的!!!
IP+PORT:能够定位全世界独一无二的一台计算机上面的某一个应用程序
DNS域名解析:
将网址解析成IP+PORT(域名,也就是网址,是由IP+端口号组成的)
我们之所以不直接使用IP+PORT的原因是太难记 所以发明了域名(网址)
www.baidu.com # 好记
14.215.177.39:80 # 难记
IP:PORT 实际使用冒号连接
114.55.205.139:80
11月15日内容总结——软件开发架构、网络编程介绍和OSI七层协议介绍的更多相关文章
- 软件开发架构,网络编程简介,OSI七层协议,TCP和UDP协议
软件开发架构 什么是软件开发架构 1.软件架构是一个系统的草图. 2.软件架构描述的对象是直接构成系统的抽象组件. 3.各个组件之间的连接则明确和相对细致地描述组件之间的通讯. 4.在实现阶段,这些抽 ...
- 2016年11月15日 星期二 --出埃及记 Exodus 20:6
2016年11月15日 星期二 --出埃及记 Exodus 20:6 but showing love to a thousand of those who love me and keep my c ...
- 本周MySQL官方verified/open的bug列表(11月15日至11月21日)
本周MySQL verified的bug列表(11月15日至11月21日) 1. Bug #70923 Replication failure on multi-statement INSERT ...
- 北京Uber优步司机奖励政策(11月9日~11月15日)
用户组:人民优步“关羽组”(适用于11月9日-11月15日)奖励政策: 滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月 ...
- 软件开发架构与网络之OSI七层协议(五层)
本期内容概要 python回顾 软件开发架构 网络理论前瞻 osi七层协议(五层) 以太网协议 IP协议 port协议 交换机 路由器 局域网 广域网 TCP协议 三次握手 四次挥手 UDP协议 内容 ...
- 1、网络并发编程--简介、软件开发架构、OSI七层协议
python复习 变量与常量 基本数据类型 内置方法 字符编码.文件操作 函数 函数参数.闭包函数.装饰器 面向对象 封装.继承.多态 """ 什么是对象 数据与功能的结 ...
- 软件开发架构介绍||OSI七层协议之物理层、数据链路层、网络层、传输层(mac地址、ip协议、断开协议、tcp协议之三次握手四次挥手)
一.网络编程 软件开发架构 C/S架构 C:客户端 想体验服务的时候才会去找服务端体验服务 S:服务端 24小时不间断的提供服务,即时监听,随时待命 B/S架构 B:浏览器 想体验服务的时候 ...
- python网络编程-Json序列化功能扩展-软件开发架构-OSI七层协议-TCP-01
面向对象补充知识点(面向对象的应用) 扩展json序列化所支持的数据类型(分析源码) import json from datetime import datetime, date # ------- ...
- 开发架构+osi七层协议+socket(day26)
目录 软件开发架构 C/S架构 B/S架构 网络编程 互联网协议/OSI七层协议 传输层 网络层 数据链路层 物理连接层 socket 什么是socket 为什么用socket 如何使用 软件开发架构 ...
- 软件开发架构、网络基础知识、osi七层模型
一.软件开发的架构 涉及到两个程序之间通讯的应用大致可以分为两种: 第一种是应用类:qq.微信.网盘.优酷这一类是属于需要安装的桌面应用 第二种是web类:比如百度.知乎.博客园等使用浏览器访问就可以 ...
随机推荐
- python中展示json数据不换行(手动换行)
https://blog.csdn.net/chichu261/article/details/82784904 Settings ->keymap -> 在搜索框输入 wraps -&g ...
- kubernetes之kubectl与YAML详解1
k8s集群的日志,带有组件的信息,多看日志. kubectl命令汇总 kubectl命令汇总 kubectl命令帮助信息 [root@mcwk8s04 ~]# kubectl -h kubectl c ...
- Django的简单使用
Django 基础简介 基础简介 1. 软件框架 一个公司是由公司中的各部部门来组成的,每一个部门拥有特定的职能,部门与部门之间通过相互的配合来完成让公司运转起来. 一个软件框架是由其中各个软件模块组 ...
- Unity之"诡异"的协程
为什么说是诡异的协程呢?首先从一个案例说起吧,示例如下: 游戏目标:让小车进入到对应颜色屋子里,即可获得一分.(转弯的道路可控) 为了让小车能够平滑转弯,小车的前进方向需要和车子的位置与圆心组成的 ...
- 嵌入式-C语言基础:联合体和共用体的概念
有时候同一块内存空间存放类型不同,不同类型的变量共享一块空间. 结构体和共用体的区别: (1)结构体元素有各自单独空间,共用体元素共享空间,空间大小由最大类型确定. (2)结构体元素互不影响共用体赋值 ...
- mindxdl---common--test_tools.go
// Copyright (c) 2021. Huawei Technologies Co., Ltd. All rights reserved.// Package common define co ...
- 23、有一个字符串,包含n个字符,编写一函数,将此字符串中从第m个字符开始的全部字符串复制成另一个字符串
/* 有一个字符串,包含n个字符,编写一函数,将此字符串中从第m个字符开始的全部字符串复制成另一个字符串 */ #include <stdio.h> #include <stdlib ...
- Python冷知识:如何找出新版本增加或删除了哪些标准库?
"内置电池"是 Python 最为显著的特性之一,它提供了 200 多个开箱即用的标准库.但是,历经了 30 多年的发展,很多标准库已经成为了不得不舍弃的历史包袱,因为它们正在&q ...
- 基于python的数学建模---分支定界算法
zip函数 a = [1,2,3,4]b = [5,6,7,8]i = sum(x * y for x, y in zip(a, b))print(i)70 floor and ceil 函数 imp ...
- vue3响应式原理以及ref和reactive区别还有vue2/3生命周期的对比,第二天
前言: 前天我们学了 ref 和 reactive ,提到了响应式数据和 Proxy ,那我们今天就来了解一下,vue3 的响应式 在了解之前,先复习一下之前 vue2 的响应式原理 vue2 的响应 ...