Blogs
    62 posts
NPS 代理实现:SOCKS5 协议深度解析
引言 在 NPS 系列文章的前几篇中,我们已经对 NPS 的整体架构、服务端核心以及 TCP 隧道和 HTTP 代理的实现有了初步了解。本篇文章将深入 NPS 的另一个重要代理模式——SOCKS5 代理。我们将通过分析 nps/server/proxy/socks5.go 文件,详细剖析 SOCKS5 协议在 NPS 中的实现细节,包括认证机制、请求处理以及 UDP 转发。 SOCKS5 协议简介 SOCKS5 是一种网络代理协议,它允许客户端通过代理服务器间接访问其他服务器。与 HTTP 代理不同,SOCKS5 是一种更底层的协议,它不关心应用层协议(如 HTTP、FTP),而是直接转发 TCP 或 UDP 数据包。这使得 SOCKS5 代理更加通用,可以用于各种网络应用。 ......
NPS 代理实现:TCP 隧道与 HTTP 代理
引言 在上一篇文章中,我们深入探讨了 nps/server/proxy/base.go 中定义的通用代理基础和流量控制机制。本篇文章将聚焦于 NPS 最常用也是最基础的两种代理模式:TCP 隧道和 HTTP 代理。我们将通过分析 nps/server/proxy/tcp.go 文件,揭示这两种模式的具体实现细节。 tcp.go:TCP 隧道与 HTTP 代理的实现 tcp.go 文件主要定义了 TunnelModeServer 结构体,它是实现 TCP 隧道和 HTTP 代理的核心。此外,该文件还包含了 WebServer 结构体,用于启动 NPS 的 Web 管理界面。 TunnelModeServer:通用隧道模式服务器 TunnelModeServer 结构体继承了 BaseServer,并增加了两个特定于隧道模式的字段: type TunnelModeServer struct { BaseServer process process listener net.Listener } BaseServer:继承了 base.go 中定义的通用功能,如流量统计、安全检查等。 process process:这是一个函数类型 type process func(c *conn.Conn, s *TunnelModeServer) error,它定义了如何处理传入的客户端连接。不同的代理模式会传入不同的 process 函数。 listener net.Listener:用于监听传入连接的网络监听器。 NewTunnelModeServer() 函数用于创建并初始化一个 TunnelModeServer 实例。 ......
NPS 代理实现:通用基础与流量控制
引言 在 NPS 服务端核心解析中,我们了解了 server.go 如何作为服务端的“大脑”,协调各项任务。本篇文章将深入 NPS 的代理实现细节,从 nps/server/proxy/base.go 文件入手,剖析所有代理服务共用的基础结构、接口定义以及流量控制、安全检查等通用逻辑。理解这些通用组件,有助于我们更好地把握 NPS 多样化代理模式的实现原理。 base.go:代理服务的基石 base.go 文件定义了 NPS 中所有代理服务的基础抽象和通用功能。它确保了不同代理模式(如 TCP、UDP、SOCKS5、HTTP 等)能够遵循统一的接口规范,并共享一些核心的辅助功能。 ......