🕸️ 该篇内容的引入问题为:为什么
Clash for Window
打开了全局代理,但我的UWP
应用仍然无法走代理?
1. 网络的基本层级
🌐 OSI 网络七层模型是基本,但实际应用过程中对该模型进行了简化,改为了一个四层模型,包含:应用层、传输层、网络层、链路层。省略了表示层和会话层,将物理层和数据链路层进行了合并。
- 🤔 我们简单的理解以下数据通过最上层逐层往下都发生了什么
- 应用层:为应用程序提供网络服务和功能
- ✍ 比如你要访问百度,那封装一个向百度的请求数据
- 表示层:对数据进行加密
- 会话层:负责管理和协调不同设备之间的会话(略过,暂不理解
- 传输层:负责提供可靠的端到端通信和数据传输服务
- ✍ 上层访问百度的请求数据经过加密后来到这一层,这一层会添加对应的
端口号
- ✍ 上层访问百度的请求数据经过加密后来到这一层,这一层会添加对应的
- 网络层:负责在不同网络之间进行数据的路由和转发
- ✍ 在上层数据的基础上,该层会添加
源IP
和目的IP
,此外还有一些控制字段和额外信息,如协议类型、数据包长度、TTL等。其中TTL
全称是 Time to Live,用于设置数据包在网络中的存活时间,即该数据包最多能经过多少跳,超过该数值就丢弃了
- ✍ 在上层数据的基础上,该层会添加
- 数据链路层:该层会对数据包进行分帧,包括帧头和帧尾,帧头包含一些控制字段,用于标识帧的开始和帧的接收方;帧尾则包含了用于错误检测的校验和信息,确保数据在传输过程中的完整性
- ✍ 我的简单理解会添加物理设备的
MAC
地址
- ✍ 我的简单理解会添加物理设备的
- 物理层:将比特流转化为电信号或光信号,并将其发送到物理媒介上,以及接收并解析接收到的信号
- 应用层:为应用程序提供网络服务和功能
2. 网关 & NAT & DHCP服务
☁️ 子网,怎么样的网络算一个子网,也就是在一个同局域网内。将 设备IP地址 & 子网掩码 ,如果两个设备与的结果相同,那就属于同一子网
🪁 网关的作用就是 连接两个不同的子网。如下图:
- 🔗 当
PC1
访问192.168.24.20
时,也就是PC2
,路由器会发现它们属于同一个子网,不用进行NAT
,这时的路由器就相当于一个交换机。也因为访问的设备处于同一个子网,网关也是不发挥作用的 - 🔗 当
PC1
访问PC3
时,其数据包中的目的IP其实会是路由器WAN口的IP,为简化我们就相当于是PC3
的 IP地址,数据包从PC1
发出,发现该地址不属于该子网,这个时候就会发送给默认的网关,一般情况下默认网关就是默认的路由器地址,这时数据包来到路由器,路由器发现访问的是外网的设备,就经过NAT
,然后通过路由器的 WAN 口将数据发出,最后经过互联网到达路由器2,再到达PC3
,之后将访问的数据发回,就完成了访问
🍎 简单总结网关的作用:访问不同子网的设备,数据包就需要发送到网关设备处理
📋 上面说到的 NAT
,是路由器最主要的功能,全称是 Network Address Translation,即网络地址转换。如下图访问百度:
PC1
上的一个应用,运行在本机的 9000 端口,其要访问百度首页,那其发出的数据包,在网络层写入的 IP 和传输层添加的 PORT 就是 192.168.24.10:9000
,因为百度服务器和 PC1 不在一个子网,所以数据发送到默认的网关设备,也就是路由器1,路由器 LAN口 收到该数据包一看,要访问百度,但是内网的 IP 只在内网使用,所以路由器对数据包的数据进行了一个更改,将数据包的 源IP地址 改为自己 WAN口
的 IP地址,端口号也可能改为其它端口,假设为10000,那从 WAN口
发出的数据包的信息就为 89.45.21.5:10000
,为了防止数据发回时路由器不知道要将数据转发给谁,路由器就自己内建了一个关系对应表,将转换前的信息和转换后的信息对应起来,这样数据返回时,路由器根据该表的记录,就可以将数据正确的转发给 PC1
,这就是 NAT
🛰️ 最后一个 DHCP
的概念,全称为 Dynamic Host Configuration Protocol,即动态主机配置协议,其主要作用是 自动分配和管理网络设备的IP地址、子网掩码、网关等网络配置信息。一个子网中,一般路由器会自动运行一个 DHCP服务
,为连接路由器的设备自动配置这些信息。
3. 网络协议 & 回答引子
🙋 先回答一下前面提到的问题,原因在于
Clash for Window
处于应用层,当你设置了全局代理后,可以在Window
设置里面看到开启了系统代理,这个时候,符合系统代理规范的应用,其网络浏览就会通过代理软件处理,但UWP
应用其层级低于应用层,处于更低的系统层,这个时候其网络浏览是不会通过处于应用层的Clash for Window
进行处理的
典型的网络协议如上表,我自己了解得也不多,映像较深的是 ARP
,该协议是将 IP地址 转为实际设备的 MAC 地址