一、软件开发架构
1.简介
编写项目之前需要遵循的代码层面上的规范(代码运行的流程、环节、步骤)
2.常见软件开发架构
2.1.c/s架构
客户端与服务器端架构,这种架构也是从用户层面(也可以是物理层面)来划分的
c/s架构 | 描述 | 例子 |
---|---|---|
c(client) | 客户端 | 即将去消费的客人 |
s(server) | 服务端 | 提供服务的商店 |
客户端:泛指客户端应用程序(app软件),程序需要先安装才能运行在用户的电脑上,对用户的电脑操作系统环境依赖较大
服务端具备的特征:
- 24小时不间断提供服务
- 固定地址(不能经常改变)
- 可以同一时间服务很多人
2.2.b/s架构
浏览器端与服务器端架构,这种架构是从用户层面来划分,通过浏览器充当各个服务端的客户端,用于想要体验服务不需要下载指定的客户端
本质:c/s架构
b/s架构 | 描述 |
---|---|
b(broswer) | 浏览器 |
s(server) | 服务器 |
3.架构优劣势
3.1.c/s架构
-
优势:下载对应的客户端可以在客户端软件内高度定制相关服务
-
劣势:使用前必须先下载客户端,比较繁琐
3.2.b/s架构
-
优势:不需要下载客户端,可以快速体验服务
-
劣势:定制花里胡哨的功能较为繁琐
4.架构发展趋势
- 统一接口原则(方便用户使用,可以给自己圈用户便于后期收割
- c/s架构和b/s架构交错使用(避免各自劣势)
二、网络编程
1.简介
基于互联网编写代码,程序可以实现远程数据交互
1.1.网络编程目的
网络编程的本质是为了解决计算机之间的远程交互
1.2.网络编程意义
学习完网络编程之后,可以编写一个c/s架构的软件
1.3.网络编程起源
任何先进的技术一般都源于军事,网络编程由美国军方开发
没有网络编程的时候,如果两台计算机之间要交互数据只能用硬盘拷贝
2.网络编程要求
计算机之间要想实现远程数据交互,首要条件就是要有物理连接介质
例:
物品 | 物理连接介质 |
---|---|
早期电话 | 电话线 |
大屁股电脑 | 网线 |
笔记本电脑 | 网卡 |
三、OSI七层协议
规定了计算机涉及到数据远程交互时必须要经过的部件或流程(每一层都有各自的功能和规范),所有的计算机在涉及到网络传输必须要有相同的零部件
- 数据发送出去时,从上往下走
- 数据接收回来时,从下往上走
互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层
1.应用层
主要取决于程序员自己采用什么策略和协议
常见的协议:HTTP、HTTPS、FTP…
2.表示层
3.会话层
4.传输层
4.1.PORT协议
端口协议:规定了一台计算机上的每一个正在运行的应用程序都必须有一个端口号,端口号相当于是计算机用来管理多个应用程序的标记
端口号特征:
-
端口号范围:0-65535
- 0-1024:一般是操作系统内部需要使用的
- 1024-8000:一般是常见的软件已经使用了
- 8000+:我们平时写代码可以使用8000之后的端口号
-
端口号动态分配
-
同一时间同一台计算机端口号不能冲突
4.2.IP+PORT
- IP:用于标识全世界任意一台接入互联网的计算机
- PORT:用于标识一台计算机上的某个应用程序
- IP+PORT:用于标识全世界任意一台接入互联网的计算机上的某一个具体的程序
4.3.TCP协议与UDP协议
规定了数据传输所遵循的规则(数据传输遵循的协议很多,TCP和UDP是常见的两个)
- TCP类似于打电话:你一句我一句,有来有往
- UDP类似于发短信:只要发送了就什么都不管了
4.3.1.TCP协议
三次握手:建立双向通道,同时让大量的客户端朝服务端发送建立TCP连接的请求
四次挥手:断开双向通道,中间两步不能合并(需要有检查的时间)
- 优势:
- 基于TCP传输数据非常安全,因为有双向通道
- 基于TCP传输数据数据不容易丢失,因为有二次确认机制
- 劣势:每次发送数据都需要返回确认消息,否则在一定的时间会反复发送
4.3.2.UDP协议
-
优势:基于UDP协议发送数据,没有任何的通道也没有任何限制
-
劣势:UDP发送数据没有TCP安全,因为没有二次确认机制
5.网络层
5.1.IP协议
规定了任何接入互联网的计算机都必须有一个IP地址
5.2.IP地址
- IPV4:点分十进制
- 最小:0.0.0.0
- 最大:255.255.255.255
- 随着社会的发展,同时能够上网的人越来越多,上述地址不够分
- IPV6:能够给地球上每一粒沙分一个IP地址
5.3.IP特征
每个IP都自带定位(IP代理)
6.数据链路层
- 规定了电信号的分组方式
- 规定了每台计算机必须都有一块网卡
- 网卡上必须有一串记录:电脑的以太网地址(类似于人的身份证号)/mac地址
- 前6位:产商编号
- 后六位:生产流水线号
eg:可以根据mac地址查找计算机(基于mac地址实现)
7.物理连接层
保证物理连接介质的条件,传递电信号(主要研究插网线情况)
四、网络相关名词
1.交换机
能够让接入交换机的多台计算机实现彼此互联
2.以太网通信(mac通信)
原理:有了交换机之后,根据电脑的mac地址就可以实现数据交互
- 广播:先在交换机中吼,所有接入交换机的设备都能收到
- 单播:只有被查找设备才会回复相应信息
缺陷:
- mac地址通信仅限于局域网
- 接入交换机的设备过多可能会造成广播风暴(广播风暴:类似于所有人同时吼)
3.局域网
由某个固定区域组成的网络
4.广域网
可以看成是更大区域的局域网
5.路由器
将多个局域网连接到一起的设备
6.网址
网址(URL):统一资源定位符
URL本质:IP+PORT(ip:port)