Contents

输入网址按下回车会发生什么?(科学上网版)

Contents

今天又看到有人在社交媒体上,说起一个经典的问题:

在浏览器的地址栏输入网址,按下回车键之后会发生什么?

这里我不想讨论经典的八股文,我会在这个问题增加一个条件:

SOCKS5 代理的情况下,在浏览器的地址栏输入网址,按下回车键之后会,会发生什么?

OK!趣味性其实没有什么,知识多了一个小知识点。但是可以考察一下一个人:

平时是否科学上网进行搜索?

还在使用某度进行搜索的,在那种有蛊的环境下得到的信息本来就是二手的。

是可以看出一个人的技术品味的,是静做井底之蛙,还是追崇最新的,一手的,靠近时代前沿的技术。


这里重点讨论网络连接,数据传输部分,忽略缓存,断开连接部分。其实我今天只想讨论代理这部分,八股文请自行搜索 >_<

  • 首先和 SOCKS5 代理服务器进行 TCP 连接,里面包括三次握手,之后是认证阶段(如果有的话);如果使用的是 UDP 的话,更简单,直接下一步;
  • 认证通过(如果开启各种认证的话)之后,由浏览器发出的请求转发到 SOCKS5 代理服务器,包括请求协议,版本号,目标服务器的域名等等一些建立连接需要的必要信息;
  • SOCKS5 代理服务器会和目标服务器建立连接(其中有必不可少的 DNS),返回的响应,由 SOCKS5 代理服务器会转发回来;
  • 之后的请求都会被发送给代理服务器,再由代理服务器将响应发回来。
/images/tech/udp02.png
image from Gost

再加点保险?

/images/tech/udp03.png
image from Gost

SOCKS5 的巧妙就在于,它工作在 OSI 的第五层,会话层。

SOCKS is a de facto standard for circuit-level gateways (level 5 gateways).

SOCKS5 还支持 UDP,也就是说可以实现 TCP-over-UDP,也就是通过 UDP 来转发 TCP 的包,这样做的好处自然是很多的,不用维护连接,也没有重传,拥塞控制这些 TCP 的“顽疾”了。


Reference:

英文搜索 SOCKS5 proxy principles 竟然全是 VPN 广告,OMG…