携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情
软件开发架构
### 1.什么是软件开发架构
编写项目之前需要遵循的代码层面上的规范:代码运行的流程、环节 、步骤。例如:我们编写ATM系统时,所遵循的软件开发目录规范以及三层架构。
### 2.软件开发架构分类
C/S 架构: c:client----客户端 s:server----服务端
计算机上下载的各个互联网公司的app软件 本质其实是客户端。下载一个个客户端的目的说白了就是为了体验对应服务端的服务。比如:下载淘宝就是为了体验淘宝服务端提供的购物服务。
客户端可以看成是即将消费的客人,服务端可以看成给顾客提供服务的店。但这是个'店'比较特殊,需要满足以下特征:
1.24小时不间断提供服务
2.固定的地址(不能经常改变)
3.可以同一时间服务很多人
B/S 架构: b:broswer----浏览器 s:server----服务器
b/s架构本质也是c/s架构。通过浏览器来充当各个服务端的客户端 用于想要体验服务不需要下载指定的客户端。
### 3.两种架构优劣势比较
c/s架构:
优势:下载对应客户端,可以在客户端软件内高度定制相关服务
劣势:必须下载客户端,比较繁琐
b/s架构:
优势:不需要下载客户端 ,打开网页就能够快速体验服务
劣势:不能随意定制各种花里胡哨的功能
### 4.架构发展趋势
发展趋势:统一接口原则。
例如:微信和支付宝,里面有很多小程序 可以不用下载其他软件,直接体验其他服务。
后续就是cs和bs架构交错使用,避免各自的劣势。
ps:可以方便用户使用 更重要的是可以给自己圈用户便于后期收割(植入广告)
网络编程简介
1.概念:基于互联网编写代码 程序可以实现远程数据交互
2.目的:网络编程的本质是为了解决计算机之间远程数据交互
3.意义:学习完网络编程之后 我们就可以编写一个c/s架构的软件
4.起源:网络编程由美国军方开发
没有网络编程的时候 如果两台计算机之间要交互数据,只能使用硬盘拷贝 如果一个人在中国一个人在非洲,那就拿着硬盘坐飞机。但这样效率太低了,由此引出了网络编程。
5.网络编程的要求:
5.1.早期的电话:必须要有电话线
5.2.大屁股电脑:必须要有网线
5.3.笔记本电脑:必须要有网卡
ps:计算机之间要想实现远程数据交互 首要条件就是要有物理连接介质
OSI七层协议
1.作用:
规定了计算机涉及到数据远程交互的时候 必须要经过的部件/流程。所有的计算机在涉及到网络传输这块必须要有相同的零部件。
2.具体协议名称
应用层
表示层
会话层
传输层
网络层
数据链路层
物理连接层
可以将表示层和会话层囊括到应用层里面,合并成五层:
应用层
传输层
网络层
数据链路层
物理连接层
网络编程相关名词
1.交换机
能够让接入交换机的多台计算机实现彼此互联
2.以太网通信(mac通信)
原理:有了交换机之后 根据电脑的mac地址就可以实现数据交互
广播:先在交换机中吼一嗓子 所有接入交换机的设备都能收到
单播:只有被查找的设备 才会回复相应信息
缺陷:
1.mac地址通信仅限于局域网
2.接入交换机的设备过多 可能会造成广播风暴
广播风暴:类似于所有人同时吼!!!
3.局域网
定义:有某个固定区域组成的网络
广域网可以看成是更大区域的局域网
4.路由器
将多个局域网连接到一起的设备
OSI七层协议主要内容
1.物理连接层
保证物理连接介质的条件 传递电信号(主要研究插网线情况)
2.数据链路层
2.1.规定了电信号的分组方式
2.2.规定了每台计算机都必须有一块网卡
网卡上必须有一串记录>>>:电脑的以太网地址(身份证号) mac地址
以太网地址\mac地址:由12位16进制数组成的
前6位:产商编号 后6位:生产流水线号
ps:既然mac地址相当于电脑的身份证号 也就意味着可以根据该地址查找计算机(可以基于mac地址实现数据交互)
3.网络层
3.1.IP协议:规定了任何接入互联网的计算机都必须有一个IP地址(护照)
3.2.IP地址:
IPV4:点分十进制。 最小: 0.0.0.0 最大: 255.255.255.255
IPV6:能够给地球上每一粒沙分一个IP地址
ps:随着社会的发展 同时能够上网的人越来越多 IPV4地址不够分,就由此产生了IPV6。(号称可以给地球上的每一粒沙子都编一个身份证号)
3.3.IP特征:每个IP都自带定位
4.传输层
PORT协议:也叫端口协议
端口协议:规定了一台计算机上的每一个正在运行的应用程序都必须有一个端口号,端口号相当于是计算机用来管理多个应用程序的标记
端口号特征
4.1.端口号范围:0-65535
4.2.端口号是动态分配的
4.3.同一时间同一台计算机端口号不能冲突
4.4.常见端口号:
0-1024:一般是操作系统内部需要使用的
1024-8000:一般是常见的软件已经使用了
8000+:我们平时写代码可以使用8000之后的端口号
4.5.IP+PORT
IP:用于标识全世界任意一台接入互联网的计算机
PORT:用于标识一台计算机上的某个应用程序
IP+PORT:用于标识全世界任意一台接入互联网的计算机上的某一个具体的程序。
4.6.什么是网址:网址(URL):统一资源定位符
url的本质:其实就是IP+PORT(ip:port)
例如: www.baidu.com 的url为 124.12.11.232