FRP 原理解析:为什么 XTCP 比 TCP 快?
你所经历的延迟巨大差异,本质上是 流量路径 的不同造成的。
我们可以把你的 本地服务器 比作 你家,把 公网服务器 (154.x.x.x) 比作 邮局,把 访问者 (你自己) 比作 收件人。
1. TCP 模式 (普通模式) —— "中转"
核心逻辑:所有数据必须经过公网服务器。
在 TCP 模式下,你的公网服务器不仅是信号塔,还是搬运工。
流量路径图
[ 访问者 ] <===数据===> [ 公网服务器 (154.x.x.x) ] <===数据===> [ 本地服务器 (你) ]
为什么慢?
-
绕路 (Detour):
假设你在上海,你的本地服务器也在上海,但你的公网服务器在 美国 (或者网络线路较差的地方)。
-
当你访问时,数据必须:上海 -> 美国 -> 上海。
-
这一来一回,物理距离导致了巨大的光速延迟(Ping 值高)。
-
-
带宽瓶颈 (Bottleneck):
公网服务器通常有带宽限制(比如 5Mbps)。所有流量都要流经它,它就像一个漏斗,限制了你的速度。
-
消耗流量:
不仅慢,还消耗你公网服务器的流量费。
2. XTCP 模式 (P2P 模式) —— "打洞直连"
核心逻辑:公网服务器只负责牵线搭桥,数据直接传输。
XTCP (eXtra TCP) 实际上利用了 P2P (Peer-to-Peer) 技术和 UDP 打洞 (Hole Punching) 技术。
流量路径图
阶段一:握手 (极短时间)
[ 访问者 ] ---(我想连他)---> [ 公网服务器 ] <---(有人想连你)--- [ 本地服务器 ]
公网服务器此时只是一个“介绍人”,它告诉双方对方的真实 IP 和端口。
阶段二:直连 (持续传输)
[ 访问者 ] <=================数据直连=================> [ 本地服务器 ]
(完全不经过公网服务器,即使拔掉公网服务器网线可能都不影响现有连接)
为什么快?
-
不绕路:
如果访问者和本地服务器都在同一个城市(甚至同一个运营商),数据直接在城域网内传输,延迟极低(这就是你感觉像本地的原因)。
-
不限速:
速度只取决于你家宽带的上行和访问者宽带的下行,不再受公网服务器 5Mbps 的限制。
-
省流量:
公网服务器只处理几十 KB 的握手数据,后续的大流量视频/文件传输都不经过它。
3. 深度技术原理:NAT 打洞 (Hole Punching)
你可能会问:“既然能直连,为什么还需要 FRP?为什么不直接连?”
因为有 NAT (网络地址转换) 和 防火墙。你的本地服务器藏在路由器后面,没有公网 IP,外人找不到你。
XTCP 的工作流程如下:
-
侦测:FRPC (本地) 和 访问者端 向 FRPS (公网) 发送数据包。FRPS 从而知道了双方路由器对外的 公网 IP 和 临时端口。
-
交换:FRPS 偷偷把对方的 IP 和端口告诉另一方。
-
打洞 (Punching):
-
访问者 尝试直接向 本地服务器 的路由器的那个端口发包。
-
本地服务器 也尝试直接向 访问者 的路由器的那个端口发包。
-
虽然第一波包会被路由器防火墙拦截,但这个动作会在路由器上留下“痕迹”(映射记录)。
-
-
建立通道:
-
双方路由器看到对方发来的包符合刚才留下的痕迹,误以为是合法的回包,于是放行。
-
“洞”打通了! 此时双方建立了一条加密的隧道,就像拉了一根直连网线。
-
4. XTCP 的优缺点总结
|
特性 |
TCP 模式 (中转) |
XTCP 模式 (P2P 直连) |
|
速度 |
慢 (受限于公网服务器带宽) |
极快 (取决于双方宽带) |
|
延迟 |
高 (数据绕行服务器) |
低 (两点直线传输) |
|
服务器压力 |
高 (消耗 CPU 和 流量) |
极低 (只负责握手) |
|
稳定性 |
高 (只要服务器活着就能连) |
中 (极度依赖网络环境) |
|
成功率 |
100% |
非 100% (某些企业/校园网打洞会失败) |
为什么不是所有人都在用 XTCP?
因为 打洞不一定总能成功。
如果你的宽带运营商是 Symmetric NAT (对称型 NAT),或者有极其严格的企业防火墙,打洞就会失败。此时,FRP 通常会回退到 STCP 模式或者无法连接。
但只要打洞成功,XTCP 就是无敌的。
266

被折叠的 条评论
为什么被折叠?



