自我总结22
软件开发框架
开发软件必须要开发一套 客户端
与 服务端
客户端
24小时不间断提供服务
服务端
如果想要找服务,就去寻找服务并享受
c/s架构
Client: 客户端
``Server: 服务端`
优点:
软件的使用稳定,并且可以节省网络资源。
缺点:
1.若用户想在同一个设备上使用多个软件,必须下载多个客户端。
2.软件的每一次更新,客户端也必须跟着重新下载更新。
例如:
电脑上的QQ、Pycharm等...
(移动端)的微信、王者荣耀等...
b/s架构
Browser: 浏览器
Server: 服务端
优点:
以浏览器充当客户端,无需用户下载多个软件,也无需用户下载更新软件版本,
缺点:
消耗网络资源过大,当网络不稳定时,软件的使用也会不稳定。
例如: 在浏览器(客户端)上输入某个软件的域名
网络编程
网络编程发展历史
所有先进的技术都源自于军事,希望通过远程获取数据,所以出现了“网络编程”
早期如何实现远程通信:
打电话--->电话线
纯平电脑(打屁股电脑)--->网线,有线网卡
笔记本电脑 --->网卡,无线网卡
要实现远程通信必须具备:
-
物理连接介质 --->网卡....
-
互联网协议
人与人之间恶的沟通:中文、英文
计算机之间沟通的介质:“互联网协议”
互联网协议
互联网协议又称为网络七层协议,OSI七层协议,OSI是一个世界标准组织
OSI七层协议:
应用层
表示层
会话层
传输层
网路层
数据链路层
物理链接层
学习由下到上(需要先了解的协议 一共五层)*
物理连接层
基于电信号发送二进制的数据01010101111
数据链路层
数据链路层的"以太网协议",专门用于处理基于电信号发送二进制的数据
以太网协议:
-
规定好电信号数据的分组方式
-
每一台链接网络的电脑都必须要有一块“网卡”
网卡由不同厂商生产
每个网卡都会有世界上独一无二12位的编程
前六位:厂商号
后六位:流水号
交换机
可以让多台电脑连接在一起
基于以太网协议发送数据
特点:广播、单播
弊端:广播风暴、不能跨局域网通信
互联网:
让局域网直接进行通信
网络层
IP地址:用于唯一标识计算机(局域网)的地址
IP:点分十进制
最小值:0,0,0,0
最大值:255,255,255,255
IPV4
一开始用电脑的人不多,所以出现IPV4的协议版本
IPV6 括号IP
本机IP 回环地址 127.0.0.1--->localhost
传输层
TCP/UDP协议,基于端口工作
端口号:标尺电脑上某一个软件
端口号范围:0-65535
注意:
-
操作系统中,一般0-1024的端口都被默认使用了
-
尽量使用8000之后的端口号 8001
开发中常用软件的默认端口号:
软件 端口 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: 时间等待
注意: 客户端与服务端必须尊循:
一端send,另一端recv
不同两端同时send或recv
Socket
-
什么是Socket?
socket是一个模块,可以写一套C/S架构的套接字。
为什么要使用Socket?
-
socket套接字会封装好各层协议的工作。
好处: 可以节省开发成本。
-
如何使用
import socket