1. 访问百度时发生了什么
🌐 先来看下图,下图是一个家庭网络中最简单的网络结构,从运营商那里接入宽带,运营商会给我们一个光猫,其实就是光电转换器,将光信号转为电信号,通常我们会在后面接一个路由器,家庭里面所有需要上网的设备,可以通过 Wifi
连接到路由器,也可以通过网线连接到路由器
- 🤔 当我们在
PC1
上通过Chrome
来访问百度时到底发生了什么?- 首先,
Chrome
知道我们要访问baidu.com
,但是Chrome
也很懵,它不知道这个网站在那里,因为域名是给人方便记忆的,但是计算机只知道IP地址
,所以Chrome
去自己的浏览器缓存里寻找baidu.com
对应的IP地址
,发现没有 - 然后
PC1
会在本机的hosts
文件中去找,看有没有对应的地址映射记录,发现也没有 - 那没办法了,只好构造一个
DNS查询
的请求,发送给PC1
默认的DNS服务器
,以上这种网络情况,PC1
默认的DNS服务器
一般和网关相同,这里都是上一级的路由器。如果路由器有该网址对应的IP地址
的记录,就可以直接告诉PC1
;如果没有的话,则再向上游的DNS服务器
进行请求,最终PC1
拿到了baidu.com
域名对应的IP地址
(下方是一个DNS查询,不是百度的,且默认网关有对应IP地址的记录) - 当
PC1
知道百度对应的IP地址
后,再对百度的服务器发送请求,通过路由器,光猫,再经过运营商,最后达到百度服务器,百度服务器发现我们请求百度首页,然后将首页数据经过运营商,光猫和路由器,最终发送到我们的PC1
上,我们就在Chrome
上看到了百度的首页
- 首先,
🧠 以上只是一个简单笼统的例子,补充两个细节,一个是进行 DNS查询
时,我们的请求是明文的,所以按道理网络中都知道我们想访问哪个网站;另一个是访问网站时,大部分网站使用的是 HTTPS
协议,该协议基于 TCP
,所以,我们获取网站数据的过程中,会先进行 TCP的三次握手
,然后再传输数据,数据传输完成后,在进行 TCP的四次挥手
2. 访问Google有什么不同
🏳️🌈 访问 Google
与访问 baidu
最大的不同,在于需要经过伟大的 GFW
,也就是墙,其简易示意图如下:
- 🧱
GFW
的运行机制很复杂,没有人能完全说明白,这里说几个简单的:- DNS污染: 上面说过了,查询
DNS
的请求是明文,所以网络中大家都知道你要访问的网站是啥。当你查询google.com
域名对应的IP
地址时,国内的DNS服务器
没有记录,则需要到国外的DNS服务器
上去查询,该请求经过GFW
时,GFW
一看你要查询谷歌的地址,为了不让你访问,伪造了一个假的IP地址
给你返回回去,IP
地址错误你仍然是访问不了的,这就是DNS污染
- 此外,还有 关键字阻断,
GFW
查看到你的请求有Google
这个记录在黑名单的关键字,就直接将你的请求拦截了;还有 端口阻断,一些协议走的一些默认端口,GFW
查看到该数据包是这些特定端口的,也直接拦截了;还有 IP封锁,通过长时间的运作,GFW
也知道一些IP地址
干的是违法的事,也就直接将这些地址加入黑名单不予访问了
- DNS污染: 上面说过了,查询
🧠 通过以上的概述,我们大概知道是哪些可能原因导致我们不能访问 Google
了,面对一些阻断方式,其归根结底还是因为我们的数据传输是 明文传输
的,GFW
很容易就知道我们想干什么,所以很容易就阻断了。
3. VPN是怎么翻过GFW的
🔗 VPN
的全称为 “Virtual Private Network” ,即 虚拟专用网络 。其发明之初并不是用来翻墙的,只是因为其数据是经过加密传输的,恰好让 GFW
无法知道我们网络数据包的信息,从而实现了翻墙
- 🔗 通过
VPN
访问网络,主要有以下过程和特点:- 首先我们电脑需要与VPN服务器建立连接,该过程是加密的,我们的
VPN服务器
不在GFW
的拦截列表,也可能GFW
为了防止误杀正常流量,总之让我们完成了连接过程 - 连接建立后,我们的所有数据通过点对点的加密隧道进行传输,因为数据加密,
GFW
并不知道我们的数据包所包含的内容是什么,所以放行,VPN
服务器收到我们的数据进行解密,发现我们要访问Google
,于是替我们向Google
发送请求,并将Google
返回的数据通过加密隧道发送给我们,从而实现了翻墙
- 首先我们电脑需要与VPN服务器建立连接,该过程是加密的,我们的
🧠 以上只是一个简述,并不细致。可以了解 VPN
的一个大概,但最近几年,通过 VPN
翻墙的手段用得很少,取而代之的是 ssr、v2ray、vmee
等等,原因在于 VPN
的手段也容易被 GFW
封禁,根本原因在于 数据流量特征过于明显,虽然我们的数据通过加密,GFW
并不知道我们网络数据包的信息,但每次上网,都是与一个服务器建立一个连接,之后大量的数据通过该加密隧道进行传输,也没有其他网络访问的数据请求。这过于明显的 网络流量特征
,正常人都很明显的能猜到你在干嘛,所以后面 GFW
就对具有该特征的网络流量直接进行了拦截
4. 现在更常用的机场订阅
🚀 上面说过 VPN
建立数据加密通道的方式网络流量特征过于明显,GFW
经过进化也能探测了。所以,现在我们更常用的 ss、ssr、v2ray、vmee
等协议,将加密拆分成了本地和服务器端两个部分,使得通过 GFW
的所有网络流量都是经过处理,已经没有明显的流量特征,从而实现了科学上网