莘县网站建设价格,小程序定制开发公司哪家好,北京住房建设厅网站,免费网站cms上篇我们介绍了服务网格 osm-edge 出口网关使用的 HTTP 隧道#xff0c;其处理方式与另一种代理有点类似#xff0c;就是今天要介绍的 SOCKS 代理。二者的主要差别简单来说就是前者使用 HTTP CONNECT 告知代理目的地址#xff0c;而后者则是通过 SOCKS 协议。值得一提的是其处理方式与另一种代理有点类似就是今天要介绍的 SOCKS 代理。二者的主要差别简单来说就是前者使用 HTTP CONNECT 告知代理目的地址而后者则是通过 SOCKS 协议。值得一提的是SOCKS 也是出口网关的可选协议之一。SOCKS 是一种网络传输协议是 Socket Secure 的缩写主要用于客户端与外网服务器之间通讯的中间传递。根据 OSI 模型SOCKS 是会话层的协议位于表示层与传输层之间。SOCKS 协议的最新版本是 SOCKS5在 SOCKS4 的基础上增加了 UDP、认证 和 IPv6 的支持。因此后面提到的 SOCKS 都是使用最广泛的 SOCKS5。先看一下 SOCKS 代理的工作流程。socks-proxy-process1. 协商阶段客户端与代理建立连接并进行协商包括协议版本、认证的方式等等。2. 连接阶段客户端告知代理要连接的目的地址和端口SOCKS 报文代理使用报文中的地址和端口与服务端创建连接并将结果作为状态返回给客户端。3. 数据传输阶段客户端向代理发送数据代理将数据发送到服务端然后将服务端返回的数据返回给客户端。Demosocks-proxy-demo还是使用上篇中的例子在防火墙后有个 TCP 服务端由于监听在 127.0.0.1:8081 还能在本地访问。同样使用 Pipy 来模拟这个服务。pipy().listen(127.0.0.1:8081).replaceData(() new Data(Hi, TCP!\n))接下来在服务端一侧建立一个 SOCKS 代理。socks-proxyPipyJS 编码我们的代理监听在 8000 端口使用 acceptSOCKS 过滤器[1] 来处理 SOCKS 协议报文从报文中获取目的地址和端口然后使用该地址和端口创建到服务端的连接。pipy({_host: null,_port: null,
})//socks.listen(8000).acceptSOCKS((host, port) (_host host,_port port,true // return true to accept the session)).to($ $.connect(() ${_host}:${_port}))测试在主机 192.168.1.110 上运行我们的代理以及服务端客户端 curl 运行在主机 192.168.1.11 上。使用下面的命令进行测试curl -x socks5://192.168.1.110:8000 telnet://127.0.0.1:8081test-socks-proxy引用链接[1] acceptSOCKS 过滤器: https://flomesh.io/pipy/docs/zh/reference/api/Configuration/acceptSOCKS