联机使用的内网穿透、P2P 的网络原理,你真的理解了吗?(中)
上一部分讲完了 NAT、局域网结构与“联机为什么难”的根源;——它们到底在底层是怎么工作的,又为什么能突破那些看似无形的网络边界。
上一部分讲完了 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 打洞”:
-
双方都向一个中继服务器(称为 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 的流量,都会先经过它:
[应用层程序] → [虚拟网卡] → [加密隧道] → [VPN 服务器] → [互联网]
VPN 客户端做的事情其实只有三步:
-
接管流量:
拦截系统或应用发出的数据包,统一交给虚拟网卡处理。 -
封装与加密:
把数据包再包上一层新的头部(封装),并对内容加密。
这层包的目标地址不是最终网站,而是 VPN 服务器的地址。 -
转发与解密:
服务器收到后解密,再把原始数据转发到真正的目标。
于是,在整个网络传输链上,外部设备看到的只是:
你 ↔ 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 从诞生至今,始终有三个最重要的用途:
-
远程办公
公司员工在外地登录企业 VPN,即可像在公司内网一样访问文件、打印机、数据库。 -
安全通信
公共 Wi-Fi 环境下使用 VPN,可以防止中间人窃听、流量嗅探。 -
虚拟局域网游戏或协作
一些老游戏(如《红警2》、《帝国时代2》、《饥荒联机版》)
原本只支持局域网模式,通过 VPN 或虚拟组网,就能让身处异地的玩家像在同一网段一样对战。
换句话说,VPN 并不是某种“神秘工具”,
它只是提供了一种安全、抽象化、跨网络的通信手段。
它的真正价值,在于让复杂网络环境下的通信变得像“本地连接”一样简单。
更多推荐
所有评论(0)