Overview
frp turns an outbound connection from a private-side frpc into selected reachability through a public frps rendezvous. The series follows login and work-connection allocation, compares TCP/UDP, HTTP(S), tcpmux, and private visitor contracts, then examines multiplexing, pools, health feedback, and XTCP’s conditional NAT traversal. It separates registration, proxy admission, audience, confidentiality, and operations, and places the SSH gateway, alpha VirtualNet, and v2 vision in context. The inspected 0.71.0 repository supports deliberate trade-offs, not universal speed, NAT success, VPN behavior, or deployment safety.
Learning outcomes
- frp exposes selected private services through an owned outbound client relationship, not an entire private network by default.
- Exposure modes should match protocol semantics and audience: raw ports, HTTP routes, shared listeners, or authorized visitors have different surfaces.
- Multiplexing, pools, limits, and health checks trade setup cost, shared failure scope, reserved capacity, and measured availability.
- XTCP can move payloads directly when NAT conditions allow, but coordination, authorization, fallback, and deployment limits remain.
Keywords
Preview every chapter · Unlock full text, audio, and video from chapter 4
PlansFAQ
What does frp actually make reachable?
frp makes a configured private service reachable through a public frps rendezvous; it does not automatically route an entire private network or replace a VPN.
Is frp traffic always relayed through frps?
No. Ordinary modes relay payloads through frps, while XTCP can attempt a direct KCP or QUIC path between clients; coordination and authorization still use frps, and fallback may be needed.
How should an frp exposure mode be chosen?
Choose TCP or UDP for opaque transport, HTTP or HTTPS for host-and-path routing, tcpmux for named services sharing a listener, and STCP for an authorized visitor without an ordinary public port.
Does frp authentication protect application data?
No. Registration authentication identifies an frpc session; TLS, control-channel AEAD, per-proxy protection, visitor secrets, and application authentication cover different boundaries.