上一部分讲完了 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),
它会向你的远程服务器(假设在阿里云)发起一个长期连接。

于是:

你的电脑 <====> 阿里云服务器 <====> 外部玩家

所有外部的访问请求都通过阿里云这台服务器中转回来。
阿里云就像一个“公共邮箱”——别人把信放进去,你再来取。
虽然比直接通信慢一点,但至少能通。


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 打洞”:

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

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

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

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

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

这就是“打洞成功”。

但事情当然不会总这么顺利。
因为 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 的流量,都会先经过它:

[应用层程序] → [虚拟网卡] → [加密隧道] → [VPN 服务器] → [互联网]

VPN 客户端做的事情其实只有三步:

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

  2. 封装与加密
    把数据包再包上一层新的头部(封装),并对内容加密。
    这层包的目标地址不是最终网站,而是 VPN 服务器的地址。

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

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

你 ↔ 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 在传输时要经过:

你 → VPN服务器 → 游戏服务器

相比直接访问:

你 → 游戏服务器

显然中间多了一跳转发节点。
加上加密/解密带来的 CPU 开销,自然可能变慢。

当然,也有例外:
如果 VPN 服务商使用了更优的传输路径(比如更好的国际出口或中转路由),
那整体延迟反而可能更低。

这也是为什么有些专门的“游戏加速器”看起来像 VPN,
但其实在内部采用了专线中继 + 路由优化算法,而不是单纯的隧道转发。


6.5 VPN 在现代网络中的正当角色

VPN 从诞生至今,始终有三个最重要的用途:

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

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

  3. 虚拟局域网游戏或协作
    一些老游戏(如《红警2》、《帝国时代2》、《饥荒联机版》)
    原本只支持局域网模式,通过 VPN 或虚拟组网,就能让身处异地的玩家像在同一网段一样对战。

换句话说,VPN 并不是某种“神秘工具”,
它只是提供了一种安全、抽象化、跨网络的通信手段
它的真正价值,在于让复杂网络环境下的通信变得像“本地连接”一样简单

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐