软件开发架构
客户端:用户安装的软件;
服务端:统一管理数据库的主机中的软件就叫做服务端,再后来服务端不只是管理数据,外加处理业务逻辑。
c/s架构
应用领域:
QQ
大型网络游戏
计算机发展初期用户去取数据,直接就去主机拿,从这里开始就分出了客户端和服务端。
架构要求:
- 用户操作系统安装客户端;产商操作系统部署服务端
- 每个用户需要独立安装软件、服务端升级也要每个用户升级
b/s架构
应用领域:
- 淘宝
- 京东
统一客户端即默认安装用户电脑中的浏览器,访问同种类的网站,具体业务的处理根据相应协议和标准提供通用的服务器程序,在不同的服务器处理。
网络编程
实现远程通信必须具备:
1.物理连接介质 ---》 网卡
2.互联网协议
互联网协议
互联网协议又称为网络七层协议,OSI七层协议,OSI是一个世界标准组织。
OSI
应用层: 应用层、表示层、会话层
Talent,FTP,SMTP,DNS,HTTP以及其他应用协议
传输层:TCP,UDP
网络层: IP,APP,RARP,ICMP
网络接口:数据链路层、物理层
各种通信网络接口(以太网等)(物理网络)
- 物理连接层 基于电信号发送二进制的数据0101010111。 010: 你 you 101: 我 I - 数据链路层 数据链路层的 "以太网协议",专门用于处理基于电信号发送二进制的数据。 以太网协议: 1.规定好电信号数据的分组方式。 2.每一台连接网线的电脑都必须要由一块 "网卡"。 - 网卡由不同厂商生产的 - 每块网卡都会有世界上独一无二12位的编号 "mac"地址。 - 前6位: 厂商号 - 后6位: 流水号 - 交换机: 可以让多台电脑连接到一起。 基于以太网协议发送数据: 特点: 广播、单播 弊端: 广播风暴、不能跨局域网通信。 - 互联网: 让局域网之间进行通信。 - 网络层 IP地址: 用于标识唯一的一台计算机(局域网)的地址。 IP: 点分十进制 最小值: 0.0.0.0 最大值: 255.255.255.255 IPV4(了解): 一开始用电脑的人不多,所以出现IPV4的协议版本。 IPV6(了解): 括号IP。 本机IP: 回环地址 127.0.0.1 ---> localhost - 传输层 TCP/UDP协议,他们都是基于端口工作的。 - 端口号: 标识电脑上某个一个软件。 - 端口号范围: 0-65535 注意: 1.操作系统中,一般0-1024的端口都被默认使用了(0-1024不要动) 2.尽量使用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: 时间等待
Socket
1.什么是Socket? socket是一个模块,可以写一套C/S架构的套接字。 2.为什么要使用Socket? socket套接字会封装好各层协议的工作。 好处: 可以节省开发成本。 3.如何使用 import socket 注意: 客户端与服务端必须尊循: 一端send,另一端recv 不同两端同时send或recv