软件开发架构、网络编程简介、OSI七层协议以及网络相关设施
软件开发架构
软件开发架构的定义
软件开发架构就是我们在编写项目之前需要遵循的代码层面的规范(代码的流程,环节,步骤)
比如我们之前的ATM三层架构,选课系统的三层架构
软件开发架构的分类
1.软件开发架构可以分为:C/S
架构 和B/S
架构两种
C/S
架构
C:Client(客户端)
S:Server(服务端)
B/S
架构
B:Broswer(浏览器)
S:Server(服务器)
B/S
架构本质也是C/S
架构,通过浏览器来充当各个服务器的客户端
我们计算机或者手机上下载的app软件,本质就是客户端,下载一个个客户端的目的说白了就是为了体验对应服务端的服务。
服务端具备的特征:
-
365天24小时不停,因为一旦服务器停止,客户端就无法访问,造成客户流失,体验差。
-
固定的ip地址(即域名地址解析后的IP地址不能经常改变)
-
可以同一时间服务很多用户(高并发,高可用)
2.架构优劣势
C/S
架构:
优势:下载对应的客户端,可以在客户端软件内高度定制相关服务。
劣势:使用必须先下载客户端,比较繁琐
B/S
架构:
优势:不需要下载客户端,能够快速体验服务
劣势:定制花里胡哨的功能较为繁琐
架构发展趋势
上诉的架构与我们之前所学的三层架构其实一样
发展趋势:统一接口原则
-
微信:里面有很多小程序,可以直接体验其他服务
-
支付宝:里面有很多小程序,可以直接体验其他服务
后续就是C/S
和B/S
交错使用,避免各自的劣势!
网络编程简介
网络编程的定义:基于互联网编写代码,程序可以实现远程数据交互
网络编程的目的:网络编程的本质是为了解决计算机之间远程数据交互
网络编程的本质:学习完网络编程之后,我们就可以编写一个c/s架构的软件
网络编程的起源:任何先进的技术一般都来源于军事
网络编程由美国军方开发,没有网络编程的时候,如果两台计算机之间要交互数据,只能使用硬盘拷贝,如果一个人在中国一个人在非洲,那就拿着硬盘坐飞机。
要求:
1.早期的电话:必须要有电话线
2.大屁股电脑:必须要有网线
3.笔记本电脑:必须要有网卡
注意:计算机之间要想实现远程数据交互,首要条件就是要有物理连接介质
OSI七层协议
OSI七层协议规定了计算机涉及到数据远程交互的时候,必须要经过的部件/流程,所有的计算机在涉及到网络传输这块必须要有相同的零部件
- 应用层
- 表示层
- 会话层
- 传输层
- 网络层
- 数据链路层
- 物理链接层
计算机要想实现远程通信交互,必须按照OSI七层协议的标准进行硬件软件配置。有时候我们也可以将上述合并成五层或者四层
每层运行常见物理设备
各层特征01
数据发送出去的时候,OSI协议的经过流程是从上往下走
数据接收回来的时候,OSI协议的经过流程是从下往上走
我们按照从下往上的顺序研究
1.物理链接层
保证物理连接介质的条件,传递电信号(主要研究插网线情况)
2.数据链路层
规定了电信号的分组方式
规定了每台计算机都必须有一块网卡,网卡上必须有一串数字,也就是mac地址(以太网地址),相当于计算机的'身份证号'
mac地址:由12位16进制数组成。前6位是厂商编号,后6位是生产流水线号
既然mac地址相当于电脑的身份证号,也就意味着可以根据该地址查找计算机(可以基于mac地址实现数据交互)
网络相关名词
-
交换机
能够让接入交换机的计算机实现彼此互联
-
以太网通信(mac通信)
原理:有了交换机之后,根据电脑的mac地址就可以实现数据交互
广播:先在交换机中吼,所有接入交换机的设计都能收到
单播:只有被查找设备,才会回复相应信息
缺陷:
-
mac地址通信仅限于局部网
-
接入交换机的设备过多,可能会造成广播风暴(广播风暴:同一时间交换机接入的设备过多)
-
-
局域网
有某个固定区域组成的网络,广域网可以看成是更大区域的局域网 -
路由器
将多个局域网连接到一起的设备
如下图我们就可以看成是某个局域网下的网络布置图
各层特征02
3.网络层
-
IP协议:规定了任何接入互联网的计算机都必须要有一个IP地址
-
IP地址目前分为两种:
-
IPV4:点分十进制,最小0.0.0.0,最大255.255.255.255
-
IPV6:能够给地球上每粒沙分一个IP地址
-
-
IP特征:每个IP都自带定位
4.传输层
-
PORT协议(端口协议)
规定了一台计算机上的每一个正在运行的应用程序都必须有一个端口号,端口号相当于是计算机用来管理多个应用程序的标记
-
端口号特征:
端口号范围:0~65535
端口号是动态分配的,0-1024:一般是操作系统内部需要使用的;1024-8000:一般是常见的软件已经使用了;8000+:我们平时写代码可以使用8000之后的端口号
同一时间同一台计算机端口号不能冲突
IP+PORT
IP:用于标识全世界任意一台接入互联网的计算机
PORT:用于标识一台计算机上的某个应用程序
IP+PORT:用于标识全世界任意一台接入互联网的计算机上的某一个具体的程序- 什么是网址
网址(URL):统一资源定位符 - URL的本质
其实就是IP+PORT(ip:port)
- 什么是网址