Skip to content

第三章:主要功能分析与建模

frp 最核心的功能就是通过反向代理实现内网穿透,关于 frps 与 frpc 之间建立连接的具体过程将在下一章节详细叙述。 这里我们先关注与该核心功能紧密相关的几个模块:

  • server
    • service
    • control
  • client
    • service
    • control
  • pkg
    • msg

下面将介绍这几个模块中的类,以及它们之间的关系。类图用工具 goplantuml 生成。

client 模块中的类

client.Service

client.Service

用途:负责与服务器建立连接,管理代理和访客配置,并提供代理服务。 同时,还管理客户端的配置信息、身份验证和服务终止操作。

client.Control

client.Control

用途:负责管理与服务器的控制连接,处理代理和访客的信息,以及处理消息的传输和分发。

server 模块中的类

server.Service

server.Service

用途:负责接受并处理来自客户端的连接请求,同时管理各种连接类型和相关组件。

server.Control

server.Control

用途:负责管理资源、代理和插件,验证客户端身份认证,处理消息传输和分发。

msg 模块中的类

因为 msg 模块中类数量众多,他们的作用都集中于服务端、客户端以及用户间消息的传递:

msg

其中,比较重要的是 Dispatcher ,它在应用程序中扮演关键角色,用于管理消息的发送和接收, 以及消息的处理分发。通过注册消息处理函数,可以根据不同类型的消息执行相应的操作, 实现消息的定制化处理

Dispatcher