在 Node 的 socks 包中使用 SOCKS5 UDP 关联
当 Node 应用需要通过代理使用 UDP 时,请使用 SOCKS5 关联和数据报分帧。
Node 的 socks 包使用 SocksClient 实例并通过 command: 'associate' 来处理 UDP。它便捷的 SocksClient.createConnection() 工厂方法处理的则是 TCP CONNECT。
项目中的关联示例把 SOCKS 客户端与一个独立的本地 UDP 套接字结合起来:
- 建立 UDP ASSOCIATE,并保留其 TCP 控制连接。
- 读取服务器返回的中继主机和端口。
- 使用
createUDPFrame()将传出负载与其目标地址一起封装成帧。 - 把数据报发送给中继,然后在交付负载给应用之前,对传入的中继帧使用
parseUDPFrame()。
Node 的 dgram 套接字提供 UDP 传输;它并不解析 SOCKS URL。关联与分帧在这些数据报周围提供代理协议。
服务器必须支持 UDP,并且中继端点必须可达。成功连接到初始代理端口并不检验这条路径。不再需要该关联时,请关闭控制资源和 UDP 资源。