软件开发架构
开发软件,必须要开发一套客户端与服务端
客户端与服务端的作用
服务端:
24小时不间断提供服务
客户端:
到服务端获得需要的服务
软件开发架构分为两种
C/S架构
Client:客户端
Server:服务端
优点:
软件的使用稳定,并且可以节省网络
缺点:
- 若用户想在同一个设备上使用多个软件,必须下载多个客户端
- 软件的每一次更新,客户端也必须更新
C/S构架的软件:
qq pycharm 微信 等...
B/S构架
Browser:浏览器(客户端)
Server:服务端
优点:
以浏览器充当客户端,无需用户下载多个软件,也无需用户下载更新软件版本,
直接在浏览器上访问需要使用的软件
缺点:
消耗网络资源过大,当网络不稳定时,软件的使用也会不稳定
B/S架构的软件:
例如在浏览器上输入某个软件的域名
互联网协议
七层协议
物理层
主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0
数据链路层
定义了电信号的分组方式
以太网协议
一组电信号构成一个数据报,叫做'帧',每一数据帧分成:报头head和数据data两部分
- head包含:(固定18个字节)
- 发送者/源地址,6个字节
- 接收者/目标地址,6个字节
- 数据类型,6个字节
- data包含:(最短46字节,最长1500字节)
head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送
每一台连接网线的电脑都必须要有一块网卡,每块网卡都会有世界上独一无二12位的编号mac地址,前6位:厂商号,后6位:流水号
网络层
IP地址:用于表示唯一的一台计算机(局域网)的地址
IP:点分十进制
最小值:0.0.0.0
最大值:255.255.255.255
本机IP:回环地址127.0.0.1----》localhost
传输层
TCP/UDP协议,他们都是基于端口工作的
- 端口号:表示电脑上某一个软件
- 端口号范围:0-65535
注意:
- 操作系统中,一般0-1024的端口都被默认使用了
- 尽量使用8000之后的端口号
常用的默认端口号:
mysql:3306
mongodb:27017
Django:8000
Tomcat:8080
Flask:5000
Redis:6379
应用层
应用层由来:用户使用的都是应用程序,均工作于应用层,互联网是开发的,大家都可以开发自己的应用程序,数据多种多样,必须规定好数据的组织形式
应用层功能:规定应用程序的数据格式。
- 例:TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了”应用层”
总结:
IP:用于唯一表示某一台计算机的位置。
port:端口用于确认计算机上的一个应用软件
IP+port:世界上某一台电脑上的一个应用软件
会话层
表示层
TCP协议的工作原理
TCP是一个流式协议
三次握手,四次挥手
三次握手建连接
建立双向通道,建立好连接
- listen:监听
- established:确认请求建立连接
发送数据
write
read
客户端往服务端发送数据,数据存放在内存中,需要服务端确认收到,数据才会在内存中释放掉。否则,会隔一段时间发送一次,让服务端返回确认收到。在一段时间内,若服务端还是不返回确认收到,则取消发送。并释放内存中的数据。
四次挥手断连接
- TIME_WAIT:时间等待
Socket
什么是socket
一个模块,可以写一套C/S架构的套接字
为什么要用socket
socket套接字会封装好各层协议的工作
可以节省开发成本
如何使用
import socket