@startuml title 内网穿透 actor 访客 package "客户端"{ node "Netty客户端" { component [客户端当前通道]{ [客户端心跳通道] component [客户端代理通信通道]{ [客户端通信通道读数据] [客户端通信通道返回数据] } } ' [客户端当前通道] <...right... [客户端真实代理通道]: 返回真实服务请求结果 ' [客户端当前通道] ...right..> [客户端真实代理通道]: 转发二进制请求到真实服务通道 } node “客户端真实服务”{ component [客户端需要代理的真实服务A]{ [客户端真实通道读数据] [客户端真实通道返回数据] } } ' [客户端真实代理通道] ...right...> [客户端真实服务]: 发送真实二进制请求到真实服务 } package "服务端"{ node "Netty服务端" { component [Netty服务端通道] { component [服务端心跳通道]{ } component [服务端代理通信通道]{ [服务端通信通道读数据] [服务端通信通道返回数据] } } component [Netty服务端绑定访客端口] { component [服务端访客真实通道]{ [服务端访客真实通道读数据] [服务端访客真实通道返回数据] } } } } [服务端心跳通道] <----> [客户端心跳通道]:长连接channel [访客] ..> [服务端访客真实通道读数据]: 访客访问数据 [服务端访客真实通道读数据] ...> [服务端通信通道读数据]: 服务端访客数据转发到通信通道 [服务端通信通道读数据] ..down..> [客户端通信通道读数据]: 服务端通信将数据转发到客户端通信通道 [客户端通信通道读数据] ..down..> [客户端真实通道读数据]: 客户端通信通道将数据转发道客户端端真实代理通道 [客户端真实通道读数据] ..left..> [客户端真实通道返回数据]: 处理数据。。。 [客户端真实通道返回数据] ..up..> [客户端通信通道返回数据]: 客户端真实服务返回数据 [客户端通信通道返回数据] ..up..> [服务端通信通道返回数据]: 将客户端返回的数据发送给访客真实通道 [服务端通信通道返回数据] ..up..> [服务端访客真实通道返回数据]: 返回数据 @enduml