1 . 软件开发的架构
我们所涉及的两个程序之间的通讯大致可以分为两种:
第一种应用类 , qq, 微信, 网盘, 优酷这一类是属于需要安装的桌面应用.
第二种web类 : 百度, 知乎 , 博客园, 等使用浏览器访问就可以直接使用的应用.
这些应用的本质其实就是两个程序之间的通讯, 而这两个分类又对应了两个软件开发的架构.
1, c/s架构 : client 与 server, 中文意思: 客户端与服务器架构,这种架构是从用户层面(也可以是物理层面来划分.),这里的客户端一般是指客户端应用 程序exe, 程序需要安装后,才能运行在用户的电脑上,对用户的电脑依赖较大.
2, b/s架构 : browser与server, 中文意思 : 浏览器与服务器架构, 从用户层面划分的.浏览器,其实也是一种客户端, 只是这个客户端不需要大家安装什么程序, 只需在浏览器上通过http请求服务器相关的资源.
2. 通信的事情
两个py文件进行通信 : 打开一个文件
两个电脑进行通信 : 连一个网线
多个电脑进行通信:
ex : 电脑1(源)要找电脑2(目标)
电脑1首先发送一个请求帧,期中包含(我的ip是192.168.1.1,我的mac地址是xxxxxxxx,我要找ip地址为192.168.1.2的主机),将此请求发送给交换机.
交换机要广播这条消息给其他所有的主机
目标主机接收到消息后,对比发现自己就是被找的主机,回复给交换机信息(我的ip地址是192.168.1.2,我的mac地址是yyyyyyyyy,请回复给ip地址为192.168.1.1,mac地址为xxxxxxx的主机)
交换机单播形式返回给源主机
3 mac地址 : 是一个物理地址,全球唯一, 类似于身份证
4 ip地址: 是一个四位点分十进制,它标识了计算机在网络中的位置.类似于 学号
5 交换机的通信方式:
广播 : 吼一嗓子
单播 : 一对一
组播 : 一对多
6 arp协议 : 通过目标ip地址获取目标mac地址的一个协议.
7 端口 : 操作系统为本机上每一个运行的程序都随机分配一个端口,其他电脑上的程序可以通过端口获取到这个程序
ip地址 + 端口 能唯一找到某台电脑上的某一个服务程序
8 路由器 : 连接不同网段 , 路由
9 网关 : 类似于一个局域网的出口和入口
10 网段 : 一个局域网内的ip地址范围
11 子网掩码 : 子网掩码 & ip地址 得到网段
12 osi 五层模型:
应用层 : http,https,ftp
传输层 : tcp / udp 四层交换机 四层路由器
网络层 : ip协议 路由器 三层交换机
数据链路层 : arp协议 以太网交换机 网卡 网桥
物理层 : 传输电信号 集线器 网线 光纤
13 路由器与交换机的区别:
交换机的主要功能是组织局域网, 经过交换机内部处理解析信息之后, 将信息以点对点,点对多的形式发给固定端.
路由器的主要功能 : 进行跨网段进行数据传输, 路由选择最佳路径
ex: 如果你需要将多台电脑连接到一根网线, 用交换机即可
如果你只有一个外网ip, 但是你有好多台电脑需要上网, 用路由器即可.
14 socket模块 介绍
socket是一个模块, 又叫套接字, 是介于用户层与传输层之间的抽象层.
15 tcp协议与udp之间的区别:
tcp协议 : 面向连接的,可靠地, 面向字节流形式的传输方式,不允许一个服务器与多个客户端通信, 出现黏包.
udp协议 : 不可靠的, 不面向连接的, 面向数据报的传输方式, 快.允许一个服务器同时和多个客户端通信.
16 tcp协议的三次握手 与 四次挥手
(tcp协议通信过程中有一个ack, 确认收到消息的一个标识.)
三次握手 : 一定是客户端先发起请求
a : 客户端发起请求连接服务器
b : 客户端返回 : 接收到请求, 并连接客户端
c : 客户端回复: 可以连接
四次挥手: 谁先发起断开连接的请求都ok
a : 客户端发起断开连接的请求 (我没有数据要发送了,如果你要有数据要发, 我可以继续接收.)
b : 服务器回复 : 我接收到你的请求了
c : 服务器发送 : 我已经准备好断开连接了.
d :客户端回复 : 收到你的信息, 可以断开连接了.
17 实现两个数字的交换的三种方式
1 a,b = b, a
2 c = a a = b b = c
3 a = a + b, b = b - a, a = a - b
18 什么是黏包, 解决黏包的方案
黏包 : 接收方不知道接收多少数据, 造成黏包数据.
解决方案 : 引入了一个模块struct, 就是发送方把一个数字打包成一个四字节的bytes, 接收方通过还原数据,这样就知道接收方可以接收多少数据了.