软件开发架构
开发软件,必须开发一套"客户端"与"服务端"
客户端
寻找服务,并享受
服务端
24小时不间断提供服务
软件开发架构分为两种
C/S架构
Client
客户端
Server
服务端
优点
软件的使用稳定,并且可以节省网络资源
缺点
- 若用户想在同一个设备上使用多个软件,必须下载多个客户端
- 软件的每一次更新,客户端也必须跟着重新下载更新
C/S架构的软件
例如:手机软件,电脑软件
B/S架构
Browser
浏览器(客户端)
Server
服务端
优点
以浏览器充当客户端,无需用户下载多个软件,也无需用户下载更新软件,直接在浏览器上访问需要使用的软件
缺点
消耗网络资源过大,当网络不稳定时,软件的使用也会不稳定
B/S架构的软件
例如:在浏览器(客户端)上输入某个软件的域名
网络编程
网络编程发展历史
所有先进技术都源自于军事,希望通过远程获取数据,所以出现了"网络编程"
早期远程通信
电话→电话线
大头电脑→网线,有线网卡
笔记本→网卡
实现通信必备
物理连接介质
网卡
互联网协议
人与人之间沟通的介质:交流语言
计算机之间沟通的介质:"互联网协议"
互联网协议
互联网协议又称为七层协议,OSI七层协议,OSI是一个世界标准组织
OSI七层协议
应用层
表示层
会话层
传输层
网络层
数据链路层
物理连接层
学习由下到上
需要优先了解的五层协议
物理链接层
基于电信号发送二进制的数据
数据链路层
数据链路层的"以太网协议",专门用于处理基于电信号发送的二进制的数据
以太网协议
- 规定好电信号数据的分组方式
- 每一台连接网线的电脑都必须要有一块"网卡"
网卡由不同厂商生产
每一块网卡都会有世界上独一无二的12位编号"mac"地址
前6位:厂商号
后6位:流水号
交换机
可以让多台电脑连接到一起
基于以太网协议发送数据
特点
广播
单播
弊端
广播风暴
局域网与局域网之间不能跨网通信
互联网
让局域网之间进行通信
网络层
IP地址
用于标识一台计算机(局域网)的唯一地址
IP
点分十进制:0.0.0.0~255.255.255.255
IPv4/IPv6
IPv4:一开始用电脑人不多,就出现IPv4
IPv6:IPv4不够用了,就出现IPv6,包含了IPv4内信息,用来扩展地址
本机IP
回环地址:127.0.0.1
传输层
TCP/UDP协议,他们都是基于端口工作的
端口号
标识电脑上的某一个软件
端口号范围
0~65535
注意:1.操作系统中,一般0~1024的端口都被默认使用了
2.尽量使用8000之后的端口
开发中常用软件的端口
mysql:3306
mongodb:27017
Django:8000
Tomcat:8080
Flask:5000
Redis:6379
若想服务端与客户端进行通信,必须要建立连接,产生两条管道
一条是客户端往服务端发送消息的
另一条是服务端往客户端发送消息的
应用层
http
ftp
总结
IP
用于标识具有唯一标识的某一台计算机的位置
port
端口用于确认计算机上的应用软件
IP+PORT
世界上某一台计算机上的软件
TCP协议工作原理
TCP协议是一个流式协议
三次握手,四次挥手(*******)
三次握手建连接
发送连接请求;反馈确认请求,并也发送连接请求;反馈确认连接;成功连接
建立双向通道,建立好连接
listen
监听
established
确认请求建立连接
发送数据
write
read
客户端往服务端发送数据,数据存放在内存中,需要服务端确认收到,数据才会在内存中释放掉.
否则,会隔一段时间在发送一次,让服务端返回确认收到.
在一段时间内,若服务端还是不返回确认收到,则取消发送,并释放内存中的数据.
四次挥手断连接
发送断连接信息,反馈信息;确认信息完整,发送同意断连接信息,反馈信息;连接断开.
TIME_WAIT
时间等待
Socket
什么是Socket
socket是一个模块,可以写一套C/S架构的套接字
为什么要使用socket
socket套接字会封装好各层协议的工作
优点
可以节省开发成本
怎么使用socket
python内置模块
直接import socket使用
注意
客户端与服务端必须遵循
一端send,另一端recv
不能两端一样