上一部分讲完了 NAT、局域网结构与“联机为什么难”的根源;

从这一部分开始,我们就要进入“真正能让联机发生”的三种关键技术:

内网穿透、P2P 连接、VPN

——它们到底在底层是怎么工作的,又为什么能突破那些看似无形的网络边界。

第四章:内网穿透——让世界看到你的一条缝如果你玩过 Minecraft、Terraria、饥荒联机版、CS 1.6,

那你大概率听过这几个词:“frp”“ngrok”“ZeroTier”“花生壳”。

它们的共同目标是——让别人能连上你的电脑。

4.1 问题的根源:NAT 的一层墙在上一章里我们提到,NAT(网络地址转换)是 IPv4 时代的权宜之计。

它让一个局域网的多台设备共用一个公网 IP 出口。

可是 NAT 也带来了一个致命的特性:

从内往外的连接容易建立,从外往内的连接基本不可能。

原因其实很简单。

假设你家路由器的公网地址是 120.45.67.89,而你的电脑是内网 192.168.1.5。

当你访问一个网站时(比如 baidu.com),

路由器会在 NAT 表里建立一条映射:

内网IP:端口

公网IP:端口

目标IP:端口

状态

192.168.1.5:51234

120.45.67.89:40000

220.181.38.148:443

已建立

于是返回的数据就能被路由器准确地“送回”给你。

但如果此时另一个人(比如你的朋友)想主动访问 120.45.67.89:40000,

路由器并不知道这是谁的连接请求——

除非你手动在路由器上设置“端口映射”。

而绝大多数家庭用户 根本没有公网IP,

更别说能登录运营商网关去配映射了。

这就导致:

“我开了服务器,别人连不上。”

这就是内网穿透要解决的问题。

4.2 穿透的本质:找个“中间人”那我们没有公网 IP 怎么办?

办法其实很“人类”:

——找个有公网 IP 的服务器帮你转发。

这就是“内网穿透”的基本原理。

举个例子:你在家运行了一个游戏服务器,

比如 Minecraft 监听在本地 127.0.0.1:25565。

这时你启动一个内网穿透客户端(比如 frp),

它会向你的远程服务器(假设在阿里云)发起一个长期连接。

于是:

代码语言:javascript代码运行次数:0运行复制你的电脑 <====> 阿里云服务器 <====> 外部玩家所有外部的访问请求都通过阿里云这台服务器中转回来。

阿里云就像一个“公共邮箱”——别人把信放进去,你再来取。

虽然比直接通信慢一点,但至少能通。

4.3 几种常见的穿透方式技术方案

原理简述

优点

缺点

端口映射 (Port Forwarding)

路由器层面手动设置端口转发

无中间服务器

一般用户无权限设置

FRP / ngrok

内网客户端与公网节点保持 TCP 隧道,由中继转发流量

稳定、简单

有延迟、带宽受限

UPnP / NAT-PMP

向路由器自动申请端口映射

自动化方便

并非所有路由器支持

P2P 穿透

双方互相“打洞”,通过中继协调后点对点直连

高效

打洞成功率受 NAT 类型影响

在游戏中,我们一般使用的 联机软件(如联机宝、联机对战平台、Steam Remote Play),

底层要么是 P2P NAT 打洞,要么干脆就开 VPN 隧道。

P2P 穿透和 VPN 看似不同,但在本质上都绕过了 NAT 限制。

接下来,我们进入更有意思的部分。

第五章:P2P——让每个玩家都成为“服务器”P2P(Peer-to-Peer)这个概念并不新。

从最早的 Napster(音乐分享)、BT 下载,到今天的游戏联机、区块链节点,

它的本质始终没变:

去中心化的数据传输。

5.1 游戏中的 P2P:玩家即主机当你在玩《Among Us》《使命召唤:战区》《CS:GO》的时候,

很多联机模式其实并没有真正的“中央服务器”。

它们依赖的是玩家之间的直连通信。

比如《Among Us》里一个玩家创建房间,其他人加入;

实际上,这个创建者就是“主机”,其他人连他。

问题是,如果主机在内网怎么办?

这时 P2P 的“打洞”技术登场。

5.2 打洞的原理:穿过 NAT 的奇技淫巧我们刚刚说 NAT 阻止外部主动连接。

但是 NAT 是有“漏洞”的:

当两台内网设备几乎同时向同一个公网地址发起连接时,

它们的 NAT 表项中往往会产生一个可预测的映射模式。

P2P 利用这个特性做“UDP 打洞”:

双方都向一个中继服务器(称为 Signaling Server)汇报自己的外网 IP 和端口。

中继服务器将双方的外网地址告诉对方。

双方几乎同时向对方外网地址发送 UDP 数据包。

NAT 检测到有来自相同目标的返回包,认为是“会话的一部分”,放行!

从此以后,双方就能 直连 通信。

这就是“打洞成功”。

但事情当然不会总这么顺利。

因为 NAT 类型千差万别:

有的动态端口分配不可预测、有的会严格屏蔽陌生请求、

有的运营商还在外面再套一层 CGNAT(运营商级 NAT)。

所以打洞的成功率在 60%~90% 不等。

这时候,P2P 程序通常会“回退”到中继模式(Relay)——

也就是还是通过服务器转发。

Steam、Epic、WeGame 等平台的联机服务都采用这种“优先直连,失败则中继”的模式。

5.3 P2P 的利与弊优点

缺点

延迟低(若打洞成功)

打洞失败率高

不依赖中心服务器

安全性差(泄露公网 IP)

带宽利用率高

NAT 兼容复杂

维护成本低

很难穿越防火墙或企业网络

所以你会看到,一些大型游戏虽然宣称“P2P 匹配”,

但实际还是在云上有大量的中继节点做 backup。

第六章:VPN——用“假网络”连接真实世界我们常听到“开 VPN 联机更稳定”、“公司 VPN 让你远程办公像在办公室一样”,

但很多人并不真正理解 VPN 到底是怎么做到的。

在技术层面,VPN(Virtual Private Network,虚拟专用网络)

的核心理念很朴素:在公共互联网之上,搭建一条专属于你的“私有隧道”。

这条隧道并不会真的挖穿什么墙壁,它只是在网络层面上建立了一个“虚拟的局域网”,

让远在天南海北的设备,看起来像在同一个本地网络中。

6.1 VPN 的本质:虚拟隧道当你启动 VPN 客户端时,系统中会多出一张虚拟网卡(TUN/TAP 设备)。

这张网卡不是物理硬件,而是操作系统虚拟出来的“假网卡”。

所有需要经过 VPN 的流量,都会先经过它:

代码语言:javascript代码运行次数:0运行复制[应用层程序] → [虚拟网卡] → [加密隧道] → [VPN 服务器] → [互联网]VPN 客户端做的事情其实只有三步:

接管流量:

拦截系统或应用发出的数据包,统一交给虚拟网卡处理。

封装与加密:

把数据包再包上一层新的头部(封装),并对内容加密。

这层包的目标地址不是最终网站,而是 VPN 服务器的地址。

转发与解密:

服务器收到后解密,再把原始数据转发到真正的目标。

于是,在整个网络传输链上,外部设备看到的只是:

代码语言:javascript代码运行次数:0运行复制你 ↔ VPN服务器 ↔ 目标网站对目标来说,请求来自 VPN 服务器;

对你来说,就像自己和世界“直连”了一样。

这就是“虚拟专用网络”的意义——

让分散在不同网络环境下的设备,通过加密隧道组成一个逻辑上的私有网络。

6.2 VPN 为什么能“像在一个局域网里”要理解 VPN 的妙处,可以先回忆一下公司或校园网的体验:

局域网(LAN)内的设备互相能直接通信,不需要公网 IP。

而 VPN 的做法,就是在逻辑上模拟出这样的环境。

当你连上 VPN 后,系统会被分配一个来自 VPN 服务端的“虚拟内网地址”,

所有通过它传输的数据,都像在同一个虚拟交换机下。

对于游戏或办公软件来说,这一点非常重要——

它们往往并不关心真实的网络路径,只要能 ping 通、能发现彼此就行。

这也是为什么很多联机工具(例如 Hamachi、ZeroTier、Tailscale)

能让两台电脑“隔着路由器也能看到彼此”。

它们的底层,本质上就是一个 VPN + 节点发现系统的组合。

6.3 VPN、P2P、内网穿透:殊途同归虽然 VPN、P2P 和内网穿透的实现方式完全不同,

但它们都在解决同一个问题:如何让两个位于不同网络的主机互相通信。

技术

工作原理

典型场景

特点

内网穿透

内网主机主动向外网节点建立连接,通过中继转发请求

远程桌面、Web服务、自建游戏服务器

部署灵活,延迟略高

P2P 打洞

双方协商 NAT 映射表,通过打洞直接建立连接

语音通话、文件传输、游戏联机

高效、低延迟,但对网络环境敏感

VPN 隧道

在客户端与服务器之间建立加密虚拟通道

企业办公、远程协作、虚拟局域网、游戏

稳定、安全、可控

三者不是竞争关系,而是互为补充。

例如:

Steam 的多人联机系统在理想情况下使用 P2P 打洞;

一旦失败,就回退到 中继(类似内网穿透)。

ZeroTier 则在底层使用 VPN 的隧道机制,再辅以 P2P 节点发现与加速,

形成“能直连就直连,打不通就中继”的混合架构。

现代联机系统的核心理念就是这三者的融合:

即通过虚拟化网络、自动化打洞、中继兜底,

在任何复杂环境下都能保证通信可达。

6.4 VPN 并非“加速器”,为什么有时更慢?有时候,玩家会发现开了 VPN 之后游戏反而更卡,这其实是由网络路径决定的。

VPN 在传输时要经过:

代码语言:javascript代码运行次数:0运行复制你 → VPN服务器 → 游戏服务器相比直接访问:

代码语言:javascript代码运行次数:0运行复制你 → 游戏服务器显然中间多了一跳转发节点。

加上加密/解密带来的 CPU 开销,自然可能变慢。

当然,也有例外:

如果 VPN 服务商使用了更优的传输路径(比如更好的国际出口或中转路由),

那整体延迟反而可能更低。

这也是为什么有些专门的“游戏加速器”看起来像 VPN,

但其实在内部采用了专线中继 + 路由优化算法,而不是单纯的隧道转发。

6.5 VPN 在现代网络中的正当角色VPN 从诞生至今,始终有三个最重要的用途:

远程办公

公司员工在外地登录企业 VPN,即可像在公司内网一样访问文件、打印机、数据库。

安全通信

公共 Wi-Fi 环境下使用 VPN,可以防止中间人窃听、流量嗅探。

虚拟局域网游戏或协作

一些老游戏(如《红警2》、《帝国时代2》、《饥荒联机版》)

原本只支持局域网模式,通过 VPN 或虚拟组网,就能让身处异地的玩家像在同一网段一样对战。

换句话说,VPN 并不是某种“神秘工具”,

它只是提供了一种安全、抽象化、跨网络的通信手段。

它的真正价值,在于让复杂网络环境下的通信变得像“本地连接”一样简单。