网络编程
一、软件开发架构
1.什么是软件开发架构
其实跟我们之前所讲的软件开发目录规范是一样的
我们编写代码的时候要遵循代码层面上的规范(代码运行流程、环节、步骤)
2.C\S架构
C\S就是Client和Server
Client: 客户端
Server: 服务端
''' 在计算机上下载的各种APP其实就是客户端 下载各种APP说白了就是为了体验对应服务端的功能 eg: 下载抖音app就是为了体验抖音服务端的视频服务 下载淘宝app就是我了体验淘宝服务端的购物服务
不过是手机上的app还是电脑上的app都一样 客户端就可以看成即将去消费的客人 服务端就可以看成为你服务的一个店 所以我们可以思考怎么样才能具备一个服务端? 1.需要24小时不间断提供服务 2.需要固定的地址(不能经常改变) 3.可以同一时间服务多个人 '''
3.B\S架构
B\S架构其实就是 Broswer和Server
Broswer: 浏览器
Server: 服务端
''' b\s机构本质跟c\s架构是一样的 只不过是通过浏览器来充当各个服务端的客户端 对于用户来说如果想要体验想要的服务端服务不需要在下载对应的客户端了 只需要在浏览器上访问服务端即可 '''
4.两种架构的优劣
''' c\s 架构 优势:下载对应的客户端, 可以在客户端软件内高度定制相关服务 劣势:想要使用服务端的服务 必须下载app 比较繁琐 b\s架构 优势:不需要下载客户端 能够快速体验服务 劣势:不能够享受高度定制相关服务 '''
二、架构发展趋势
''' 发展趋势: 统一接口原则 微信: 微信中有很多小程序 可以直接体验其他服务 支付宝: 字符包也有很多小程序 也可以直接体验其他服务 后续就是cs和bs交替使用 避免各自的劣势 ps:为了方便用户使用 更重要的还是圈用户掌握流量便于后期割韭菜 '''
三、网络编程简介
''' 1.如何理解网络编程 基于网络编写代码 程序可以实现远程数据交互 2.网络编程的目的 网络编程的本质其实就是为了解决计算机之间远程数据交互 3.网络编程的意义 学完为了编程 其实我们就可以编写一个简单的c\s架构 4.网络编程的起源 其实现在市面上的高等技术一般都是从军方发展出来的 网络编程是由美国军方开发的 没有网络编程的时候 两台计算机想要实现远程数据交互是做不到的 只能使用硬盘拷贝 这样的话会很麻烦 就比如一个人在中国一个人在美国 如果想要彼此先要那数据 那么只能坐飞机去拷贝然后在坐飞机回来 有可能这个数据只有1mb 所以会很麻烦 然后到现在的笔记本发展了很多 5.网络编程的要求 1.早期的电话 必须要使用电话线 2.然后到大屁股电脑 必须要使用网线 3.在到现在的笔记本电脑 必须要有网卡 所以计算机之间先要实现远程数据的交互 是要条件就是要有物理链接介质 '''
四、OSI七层协议
''' 规定了计算机涉及到数据远程交互的时候 必须要经过的部件\流程 所有的计算机在涉及到网络传输这块必须要有相同的零部件 OSI七层: 应用层 表示层 会话层 传输层 网络层 数据联络层 物理连接层 (必须要记住) 记忆小技巧>>>:应、表、会、传、网、数、物 其实根据上面的七层可以简单的划分为五层: 应用层 传输层 网络层 数据联络层 物理连接层 (就是把表示层和会话层都表示为应用层) 还有划分为四层: 应用层 传输层 网络层 网络接口层 (就是把数据联络成和物理连接层合并为网络接口层) '''
五、各层特征1
数据在发送出去的时候是 从上往下走的
数据在接收回来的时候是 从下往上走的
我们按照从下往上的顺序研究
1.物理链接层
物理层规定了激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性。该层为上层协议提供了一个传输数据的物理媒体
保证了物理链接介质的条件
2.数据联络层
基于网络传输的数据都是二进制 但是怎么规定它们的单位呢
就是数据联络层规定了它们的单位
1.规定了电信号的分组方式
规定:
一组点消耗构成一个数据包,叫做 帧
每一数据帧分成:报头 head 和数据 data 两部分
head包含(固定 18 个字节)
发送者/源地址,6个字节
接受者/目标地址,6个字节
数据类型,6个字节
data包含(最短46个字节,最长1500字节)
数据包的具体内容
head 长度 + data 长度 = 最短 64字节,最长1518字节,超过最大限制就分片发送
2.规定了每台计算机上必须有一块网卡
网卡上必须有一串记录>>>电脑的以太网地址(身份证号) mac地址
以太网地址\mac地址:有12位6进制数组成
前6位:厂商编号
后6位:流水线编号
ps:既然mac地址相当于计算机的身份证 那么也就意味着可以通过地址来查找计算机(可以基于mac地址实现数据交互)
六、网络相关名词
1.网线
早期计算机与计算机之间想要实现远程数据交互必须要有网线
而如果每个计算机都想要访问服务器2的话那么就要在服务器2开很多个端口 这样肯定是实现不了的 所以就有了交换机
2.交换机
每台计算只要一根网线即可 然后接入到交互机的多台计算机就可以实现彼此互联
3.以太网(mac)通信
原理:在有了交换机之后 根据电脑的mac地址就可以实现数据的交互
广播:
网络对其中每一台主机发出的信号都进行无条件复制并转发,所有主机都可以接收到所有信息(不管你是否需要)
单播:
只有被查找设备 才会回复对应的信息
缺陷:
1.mac地址通信仅限于局域网
2.接入交互机设备过多 有看呢过找出广播风暴
广播风暴: 就是在同一时间所有的计算机都在发送信息 造成错乱 网络崩溃
4.局域网
由每个区域组成的网络 就是多台计算机链接到一个交互机上
广域网可以看成是更大区域的局域网
5.路由器
将多个局域网链接到一起的设备
七、各层特征2
1.网络层
1.IP协议
规定了每台计算机接入到互联网的时候都需要一个IP地址(护照)
2.IP地址
IP地址有两种
IPV4:点分十进制
最小 : 0.0.0.0
最大: 255.255.255.255
随着世界的发展能够上网的人数也在上升 上述的地址已经不够用了
IPV6:
IPV6可以给地球上的每一粒沙子分一个IP地址 反正就是很多这辈子下下辈子都用不完
2.传输层
1.PORT协议
PORT协议其实就是端口协议: 规定了一台计算机上的每一个正在运行的应用程序都必须有一个端口号,端口号相当于是计算机用来管理多个应用程序的标记
2.端口号特征
1.端口号范围: 0~65535
2.端口号是动态分配的
3.同一时间同一台的计算机端口号不能冲突
4.当应用程序关闭的时候端口号就会回收
5.
0~1024: 一般是操作系统内部需要自己使用的
1024~8000:一般是常见的软件已经使用了
8000+:我们以后编写软件可以使用8000以后的端口号
6.I+PORT
IP:用于标识全世界任意一台接入互联网的计算机
PORT:用于标识一台计算机上的某个应用程序
IP+PORT:用于标识全世界任意一台接入互联网的计算机上的某个应用程序
7.什么是网址
网址(URL): 统一资源定位符
8.url的本质
其实就是IP+PORT
eg:
www.baidu.com
其实就是IP+PORT 真要编写的话就是 IP:PORT
但是为了好记所以就用一串英文代替了