SOCKS5代理服务器 | 青训营笔记

358 阅读3分钟

这是我参与「第五届青训营」伴学笔记创作活动的第 3 天

本堂重点

了解TCP协议,了解SOCKS5代理服务器的工作原理。

SOCKS5代理服务器介绍

本节我们学习SOCKS5代理服务器的工作原理,首先,提到代理服务器我们第一就是想到翻墙,然而SOCKS5协议虽是代理协议,但是它不能直接用来翻墙,其协议是明文阐述的,历史久远,诞生于互联网早期,其用途是,如果某些企业的内网,为了确保安全性,可能配置了很严格的防火墙,但带来的副作用就是,哪怕你是管理员,你访问某些资源也会很麻烦,SOCKS5就相当于是在防火墙内部开了个口子,让授权的用户可以通过单个端口访问内部的所有资源,实际上很多翻墙软件最终暴露的也会是一个SOCKS5协议的端口给某一浏览器使用,

SOCKS5代理的原理

SOCKS5工作的原理如下:

正常浏览器访问一个网站,若不经过代理服务器的话,要先和对方的网站建立TCP连接,也就是三次握手,在握手结束后正常发起HTTP请求,然后服务器返回HTTP响应,这个过程比较简单,如果设置代理服务器的话,流程就会复杂一些。

image.png

首先,浏览器要和SOCKS5代理服务器建立TCP连接,代理服务器再与真正的服务器建立TCP连接,这里总共可以分为四个阶段,第一个是,协商(或者叫握手阶段),第二个阶段,认证阶段,第三个阶段,请求阶段,第四个阶段,relay阶段。

第一个阶段,协商阶段,用户的浏览器会像SOCKS5发起请求,去发送一个报文,这个报文里面包括一个协议版本号,一般就是v5,和支持认证的种类,然后服务器会返回一个支持认证的方式,建议客户端使用某种方式,然后做认证流程(若为00则无需认证)。

第二个阶段此处不做详解,因为我们先是了解不加密的SOCKS5代理服务器。

认证通过之后,客户端会向代理服务器发送下一个报文,包括协议版本号、请求类型等,代理服务器收到响应后就会真正地向后端服务器建立TCP连接,然后返回一个报文告诉用户已成功建立连接了。

第四个阶段是relay阶段,此时客户端正常发送请求,代理服务器收到请求之后,会直接把请求转换到真正的服务器上,若真正的服务器有返回响应的话,也会把响应转发到浏览器这边。

实际上,代理服务器并不关心流量的细节,这里可以是HTTP流量也可以是其他TCP流量。

这就是SOCKS5协议的工作原理。

课后反思与总结

在我看来,SOCKS5代理服务器主要也就是起了“代理”作用,起到一个中间者的效果,主要理解了TCP协议的本质,其实SOCKS5协议也就能够有很清楚的认识了。