网络编程:软件开发架构、架构总结、网络编程前戏、OSI七层协议简介、OSI七层协议之物理连接层、数据链路层、网络相关专业名词、OSI七层协议之网络层、OSI七层协议之传输层
一、软件开发架构
1.什么是软件开发架构
- 编写项目之前需要遵循的代码层面上的规范(代码运行的流程 环节 步骤)
- eg:回想ATM三层架构 选课系统三层架构
2.软件开发架构
架构方式一:c/s架构
- 计算机上下载的各个互联网公司的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