Blogs
    62 posts
NPS 代理实现:WebSocket 代理与 HTTP 反向代理
引言 在 NPS 系列文章的前几篇中,我们已经探讨了 NPS 的整体架构、服务端核心以及多种代理模式(TCP 隧道、HTTP 代理、SOCKS5 代理、P2P 代理和 UDP 代理)。本篇文章将深入 NPS 的 WebSocket 代理和 HTTP 反向代理实现。我们将通过分析 nps/server/proxy/websocket.go 文件,揭示 NPS 如何处理这两种特殊的 HTTP 流量,实现更灵活的网络穿透。 WebSocket 与 HTTP 反向代理的需求 WebSocket:提供客户端和服务器之间的全双工通信通道,常用于实时应用,如聊天、在线游戏、股票行情等。传统的 HTTP 代理无法直接处理 WebSocket 协议的升级和持续连接。 HTTP 反向代理:将客户端的 HTTP 请求转发到后端服务器,并返回后端服务器的响应。它通常用于负载均衡、SSL 卸载、缓存和安全防护等。 websocket.go:WebSocket 与 HTTP 反向代理的实现 websocket.go 文件主要定义了 HttpReverseProxy 和 ReverseProxy 两个结构体,它们共同协作来处理 HTTP 反向代理和 WebSocket 连接。 ......
NPS 代理实现:UDP 代理与数据转发
引言 在 NPS 系列文章中,我们已经探讨了 NPS 的整体架构、服务端核心以及多种 TCP 相关的代理模式(TCP 隧道、HTTP 代理、SOCKS5 代理)和 P2P 代理。本篇文章将聚焦于 NPS 的 UDP 代理实现。我们将通过分析 nps/server/proxy/udp.go 文件,揭示 NPS 如何处理 UDP 流量,实现内网 UDP 服务的穿透。 UDP 代理的需求与挑战 UDP(User Datagram Protocol)是一种无连接的传输协议,常用于对实时性要求较高、允许少量丢包的应用,如 DNS 查询、在线游戏、音视频通话等。由于 UDP 的无连接特性,其代理实现与 TCP 代理有所不同,主要挑战在于: ......
NPS 代理实现:P2P 协议与 UDP 打洞
引言 在 NPS 系列文章中,我们已经探讨了 NPS 的整体架构、服务端核心以及 TCP 隧道、HTTP 代理和 SOCKS5 代理的实现。本篇文章将深入 NPS 的另一个高级代理模式——P2P 代理。我们将通过分析 nps/server/proxy/p2p.go 文件,揭示 NPS 如何利用 UDP 打洞技术,实现客户端之间的直接连接,从而在某些场景下提供更高效、更低延迟的内网穿透服务。 P2P 代理的优势与挑战 传统的内网穿透通常依赖于服务器进行数据中转,这会引入额外的延迟和带宽消耗。P2P(Peer-to-Peer)代理的目标是让内网中的两个客户端能够直接建立连接,绕过服务器中转,从而实现更高效的数据传输。 ......