一、软件开发架构
1、c/s架构
c/s架构
c:client 客户端
s:serber 服务端
'''
将客户端看成是去店里消费的客人
将服务端看成是提供服务的店面
eg:
服务端需要具备的三大特征
1、24小时不间断提供服务(24小时监听)
2、固定的地址(ip地址)
3、能够服务多个用户(高并发)
'''
2、b/s架构
b/s架构
b:browser 浏览器
s:server 服务器
'''
浏览器统一充当各个服务端的客户端
本质:b/s架构本质上也是cs架构
'''
统一:各大互联网巨头正在做的事情
eg:
微信小程序(微信提供开发微信小程序的软件)
支付宝小程序(各大程序接口)
# 总结
网络编程学习完就可以开发cs架构的软件(简易版本)
并发编程、前段、数据库、后端框架就可以开发b/s架构软件(任何类型软件)
二、OSI七层协议
-
互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层
# 在计算机中都必须要有这七层
1、应用层
2、表示层
3、会话层
4、传输层
5、网络层
6、数据链路层
7、物理连接层
# 开发层面可以归纳为五层
1、应用层
2、传输层
3、网络层
4、数据链路层
5、物理连接层
"""
首先,用户感知到的只是最上面一层应用层,自上而下每层都依赖于下一层,所以我们从
最下一层开始切入,比较好理解每层都运行特定的协议,越往上越靠近用户,越往下越靠
近硬件
这个从下往上研究
"""
1、物理连接层
-
物理层由来:孤立的计算机之间要想一起玩,就必须接入internet,言外之意就是计算机之间必须完成组网
-
物理层功能:主要负责发送电信号,用高低电平模拟二进制数0101,高电平对应数字1,低电平对应数字0
2、数据链路层
-
数据链路层由来:单纯的电信号0和1没有任何意义,必须规定电信号多少位一组,每组什么意思
-
数据链路层的功能:定义了电信号的分组方式
①数据链路层
1.以太网协议 规定了计算机必须有一块网卡 并且网卡上面要有一个固定的一串数字 12位16进制数 前六位:产商编号 后六位:流水线号 上述的数字也称之为计算机的mac地址(类似于身份证号) 2、常见硬件 交换机:能够使接入该机器的所有计算机之间彼此互联 局域网:有交换机组成的网络 互联网:可以简单的理解为是多个局域网之间彼此互联 """ 基于mac地址的数据传输 1.广播风暴 2.mac地址不能跨局域网传输 """ 路由器:能够连接多个局域网并实现局域网之间的数据传输
3、网络层
- 网络层的由来:必须找出一种方法来区分哪些计算机属于同一广播域,哪些不是,如果是就采用广播的方式发送,如果不是,就采用路由的方式(向不同广播域/子网分发数据包),mac地址是无法区分的,它只跟厂商有关
- 网络层功能:引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址
IP协议:规定了接入互联网的计算机都必须有一个IP地址用于唯一标识
IPV4版本
最小 0.0.0.0
最大 255.255.255.255
IPV6版本
能够表示出地球上每一粒沙子
# IP地址能够唯一标识接入互联网的一台独一无二的计算机
公网IP与私网IP
公网IP需要花钱购买并申请
私网IP自带的但是无法直接基于互联网访问
"""
arp协议
将IP地址转换成mac地址(基于网络请求)
"""
4、传输层(端口协议)
- 传输层的由来:网络层的ip帮我们区分子网,以太网层的mac帮我们找到主机,然后大家使用的都是应用程序,你的电脑上可能同时开启qq,暴风影音,等多个应用程序,那么我们通过ip和mac找到了一台特定的主机,如何标识这台主机上的应用程序,答案就是端口,端口即应用程序与网卡关联的编号。
- 传输层功能:建立端口到端口的通信
TCP协议 UDP协议 暂且忽略
端口协议
范围:0~65535
特性:动态分配
eg:第一次运行微信 系统随机取一个端口号2022
然后关闭微信重新启动 系统随机取一个端口号
端口号基本使用
0~1024系统默认需要使用的端口号
1024~8000常见软件端口号
以后我们开发的软件最后使用8000之后的端口号
# 端口号(port):能够唯一标识一台计算机上面正在运行的一款应用程序
"""
端口号在同一台计算机同一时刻不能重复
"""
总结
ip+port 127.0.0.1:8080
"""
能够唯一标识世界上某一台接入互联网的计算机上面的某一个正在运行的应用程序
"""
①TCP协议
- TCP协议遵循3次握手4次挥手原则,每次传输数据需等到对方回应后才会把数据从内存中删除,是一种可靠协议
- TCP协议工作原理(基于tcp通信之前必须建立一个双向通信的链接)
流式协议 可靠协议
三次握手 建立链接
重要状态
listen监听态:等待对方发请求
syn_rcvd态:忙于恢复确认建立请求
# 洪水攻击:服务端在同一时间接收到了大量的要求建立链接的请求
四次挥手 断开链接
不能合并成三次
"""该类知识需要课后再花时间研究(如果想要大厂)"""
注: 先了解一下概念:
SYN(synchronous)是TCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立
正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN+ACK应答表示接
收到了这个消息,最后客户机再以ACK消息响应。这样在客户机和服务器之间才能建立起
可靠的TCP连接,数据才可以在客户机和服务器之间传递。
ACK (Acknowledgement)即是确认字符,在数据通信中,接收站发给发送站的一种传输
类控制字符。表示发来的数据已确认接收无误。在TCP/IP协议中,如果接收方成功
的接收到数据,那么会回复一个ACK数据。通常ACK信号有自己固定的格式,长度大
小,由接收方回复给发送方。
建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:
②UDP协议
- 不可靠协议
不可靠协议
数据发送没有通道的概念 发送出去了就不管了
"""
TCP协议相当于打电话 你一句我一句 你侬我侬
UDP协议相当于发短信 发了就完事 管你看不看
"""
早期的QQ使用的就是UDP
5、应用层
-
负责应用程序之间的沟通。网络编程主要针对的就是应用层。
-
应用层由来:用户使用的都是应用程序,均工作于应用层,互联网是开发的,大家都可以开发自己的应用程序,数据多种多样,必须规定好数据的组织形式。
-
应用层功能:规定应用程序的数据格式。
-
传输层和网络层的封装在操作系统完成。应用层的封装在应用程序中完成。
-
数据链路层和物理层的封装在设备驱动程序与网络接口中完成。
-
# 都是人为自定义的协议标准 可遵循可不遵循
# HTTP协议 FTP协议 ...