day 26 网络编程
01.软件开发架构
- 开发软件,必须要开发一套客户端与服务端
- 服务端;24小时不间断提供服务
- 客户端;用户使用,寻找服务端,获取服务
- 软件开发架构;
- C/S架构;
- Client;客户端
- Server;服务端
- 优点;软件的使用稳定,并且可以节省网络资源
- 缺点;
- 若用户想在同一个设备上使用多个软件,必须下载多个客户端
- 软件的每一次更新,客户端也必须跟着重新下载更新
- C/S架构软件;
- 电脑上的QQ、Pycharm等,移动端的微信、天猫等。。。
- B/S架构;
- Browser;浏览器
- Server;服务端
- 优点;
- 以浏览器充当客户端,无需下载多个软件
- 也无需版本更新,直接在浏览器上访问需要使用的软件
- 缺点;
- 消耗网络资源过大,当网络不稳定时,软件的使用也不稳定
- B/S架构的软件;
- 在浏览器(客户端)上输入某个域名比如京东(https://www.jd.com)
- C/S架构;
02.网络编程
- 网络编程发展历史;
- 所有先进技术都来自军事,通过远程获取数据,所以出现了‘网络编程’。
- 早期如何实现远程通信;
- 打电话——>电话线
- 电脑——>网卡——>网线
- 笔记型电脑——>无线网卡——>移动网络
- 要实现远程通信必须具备;
- 物理连接介质;网卡
- 互联网协议;计算机与计算机沟通的介质,相当于计算机之间说话的语言
- 互联网协议
- 互联网协议又称之为网络七成协议
- OSI七层协议;数据传输从上到下运行,接收则从下往上运行
- 应用程
- 表示层
- 会话层
- 传输层
- 网络层
- 数据链路层
- 物理连接层
- 物理连接层;基于电信号发送二进制的数据
- 数据链路层;‘以太网协议’专门处理基于电信号发送到二进制数据
- 以太网协议;
- 规定好的数据分组方式
- 每一台连接网线的电脑都必须要由一有‘网卡’
- 每一块网卡都拥有世界上独一无二的编号
- 前六位;场上编号
- 后六位;流水线号
- 交换机;可以让多台电脑连接到一起
- 以太网;广播,单播;
- 弊端;广播风暴、不能跨局域网通信。
- 互联网;让局域网之间可以通信
- 以太网协议;
- 网络层;
- IP地址;用于唯一标识计算机(局域网)的地址
- IP地址;点分十进制
- 最小值;0.0.0.0
- 最大值;255.255.255.255
- IPv4;一开始用电脑人数少时,出现的协议版本,地址长度为32位
- IPv6;用来扩展IPv4,地址长度为128位,允许协议进行扩充
- 本机IP;回环地址 :127.0.0.1——>localhost
- 传输层;
- TCP/UDP协议;他们都是基于端口
- 端口号;表示电脑上的某一个软件,相当于软件的IP地址
- 端口号范围;0~65535
- 操作系统中;一般0~1024的端口都被默认使用了(尽量不要动),推荐尽量使用8000之后的端口号
- 开发中常用软件的默认端口号
- mysql;3306
- nibgidb;27017
- Django;8000
- Toncat;8080
- Flask;5000
- Redis;6379
- 若想服务端与客户端进行通行,必须建立连接,产生两条管道
- 一条是客户端往服务端发送消息的
- 一条是服务端往客户端发送消息的
- TCP协议的工作原理;TCP协议是流式协议
- 反馈机制;(正反相同)
- 客户端往服务端发送消息(存放于内存中),服务端接收到消息后,必须要给客户端返回一个确认收到。
- 否则客户端会在某个时间段内,不停的发送,超过该时间释放内存,删掉该信息。
- 三次握手;建连接
- 发送链接请求
- 发送收到该请求,发送同意该请求
- 发送收到已同意请求
- 发送数据
- write
- read
- 四次挥手;断连接
- 发送断开链接请求
- 发送收到该请求
- TIME_WAIT;等待时间
- 确认再没有消息传来,发送同意该请求
- 发送收到已同意请求
- 反馈机制;(正反相同)
- 应用层
- http
- ftp
03.Socket
- Socket在python中是一个模块,可以写一套C/S架构的套接字。
- Socket套接字会封装好隔层协议的工作,可以节省开发成本。
- import socket # socket为python内置模块