1. 访问百度时发生了什么

🌐 先来看下图,下图是一个家庭网络中最简单的网络结构,从运营商那里接入宽带,运营商会给我们一个光猫,其实就是光电转换器,将光信号转为电信号,通常我们会在后面接一个路由器,家庭里面所有需要上网的设备,可以通过 Wifi 连接到路由器,也可以通过网线连接到路由器

  • 🤔 当我们在 PC1 上通过 Chrome 来访问百度时到底发生了什么?
    1. 首先,Chrome 知道我们要访问 baidu.com ,但是 Chrome 也很懵,它不知道这个网站在那里,因为域名是给人方便记忆的,但是计算机只知道 IP地址 ,所以 Chrome 去自己的浏览器缓存里寻找 baidu.com 对应的 IP地址 ,发现没有
    2. 然后 PC1 会在本机的 hosts 文件中去找,看有没有对应的地址映射记录,发现也没有
    3. 那没办法了,只好构造一个 DNS查询 的请求,发送给 PC1 默认的 DNS服务器,以上这种网络情况,PC1 默认的 DNS服务器 一般和网关相同,这里都是上一级的路由器。如果路由器有该网址对应的 IP地址 的记录,就可以直接告诉 PC1 ;如果没有的话,则再向上游的 DNS服务器 进行请求,最终 PC1 拿到了 baidu.com 域名对应的 IP地址 (下方是一个DNS查询,不是百度的,且默认网关有对应IP地址的记录)
    4. PC1 知道百度对应的 IP地址 后,再对百度的服务器发送请求,通过路由器,光猫,再经过运营商,最后达到百度服务器,百度服务器发现我们请求百度首页,然后将首页数据经过运营商,光猫和路由器,最终发送到我们的 PC1 上,我们就在 Chrome 上看到了百度的首页

🧠 以上只是一个简单笼统的例子,补充两个细节,一个是进行 DNS查询 时,我们的请求是明文的,所以按道理网络中都知道我们想访问哪个网站;另一个是访问网站时,大部分网站使用的是 HTTPS 协议,该协议基于 TCP ,所以,我们获取网站数据的过程中,会先进行 TCP的三次握手 ,然后再传输数据,数据传输完成后,在进行 TCP的四次挥手

2. 访问Google有什么不同

🏳️‍🌈 访问 Google 与访问 baidu 最大的不同,在于需要经过伟大的 GFW ,也就是墙,其简易示意图如下:

  • 🧱 GFW 的运行机制很复杂,没有人能完全说明白,这里说几个简单的:
    1. DNS污染: 上面说过了,查询 DNS 的请求是明文,所以网络中大家都知道你要访问的网站是啥。当你查询 google.com 域名对应的 IP 地址时,国内的 DNS服务器 没有记录,则需要到国外的 DNS服务器 上去查询,该请求经过 GFW 时,GFW 一看你要查询谷歌的地址,为了不让你访问,伪造了一个 假的IP地址 给你返回回去,IP 地址错误你仍然是访问不了的,这就是 DNS污染
    2. 此外,还有 关键字阻断GFW 查看到你的请求有 Google 这个记录在黑名单的关键字,就直接将你的请求拦截了;还有 端口阻断,一些协议走的一些默认端口,GFW 查看到该数据包是这些特定端口的,也直接拦截了;还有 IP封锁,通过长时间的运作,GFW 也知道一些 IP地址 干的是违法的事,也就直接将这些地址加入黑名单不予访问了

🧠 通过以上的概述,我们大概知道是哪些可能原因导致我们不能访问 Google 了,面对一些阻断方式,其归根结底还是因为我们的数据传输是 明文传输 的,GFW 很容易就知道我们想干什么,所以很容易就阻断了。

3. VPN是怎么翻过GFW的

🔗 VPN 的全称为 “Virtual Private Network” ,即 虚拟专用网络 。其发明之初并不是用来翻墙的,只是因为其数据是经过加密传输的,恰好让 GFW 无法知道我们网络数据包的信息,从而实现了翻墙

  • 🔗 通过 VPN 访问网络,主要有以下过程和特点:
    1. 首先我们电脑需要与VPN服务器建立连接,该过程是加密的,我们的 VPN服务器 不在 GFW 的拦截列表,也可能 GFW 为了防止误杀正常流量,总之让我们完成了连接过程
    2. 连接建立后,我们的所有数据通过点对点的加密隧道进行传输,因为数据加密,GFW 并不知道我们的数据包所包含的内容是什么,所以放行,VPN 服务器收到我们的数据进行解密,发现我们要访问 Google ,于是替我们向 Google 发送请求,并将 Google 返回的数据通过加密隧道发送给我们,从而实现了翻墙

🧠 以上只是一个简述,并不细致。可以了解 VPN 的一个大概,但最近几年,通过 VPN 翻墙的手段用得很少,取而代之的是 ssr、v2ray、vmee 等等,原因在于 VPN 的手段也容易被 GFW 封禁,根本原因在于 数据流量特征过于明显,虽然我们的数据通过加密,GFW 并不知道我们网络数据包的信息,但每次上网,都是与一个服务器建立一个连接,之后大量的数据通过该加密隧道进行传输,也没有其他网络访问的数据请求。这过于明显的 网络流量特征 ,正常人都很明显的能猜到你在干嘛,所以后面 GFW 就对具有该特征的网络流量直接进行了拦截

4. 现在更常用的机场订阅

🚀 上面说过 VPN 建立数据加密通道的方式网络流量特征过于明显,GFW 经过进化也能探测了。所以,现在我们更常用的 ss、ssr、v2ray、vmee 等协议,将加密拆分成了本地和服务器端两个部分,使得通过 GFW 的所有网络流量都是经过处理,已经没有明显的流量特征,从而实现了科学上网