惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Last Watchdog
The Last Watchdog
K
Kaspersky official blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Spread Privacy
Spread Privacy
T
Threatpost
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
MongoDB | Blog
MongoDB | Blog
V
Vulnerabilities – Threatpost
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Help Net Security
Help Net Security
Microsoft Azure Blog
Microsoft Azure Blog
GbyAI
GbyAI
小众软件
小众软件
Cloudbric
Cloudbric
The Hacker News
The Hacker News
阮一峰的网络日志
阮一峰的网络日志
Vercel News
Vercel News
人人都是产品经理
人人都是产品经理
Forbes - Security
Forbes - Security
Martin Fowler
Martin Fowler
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
AWS News Blog
AWS News Blog
Stack Overflow Blog
Stack Overflow Blog
N
News | PayPal Newsroom
P
Privacy & Cybersecurity Law Blog
TaoSecurity Blog
TaoSecurity Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园_首页
A
Arctic Wolf
www.infosecurity-magazine.com
www.infosecurity-magazine.com
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Scott Helme
Scott Helme
T
Tor Project blog
S
Secure Thoughts
Know Your Adversary
Know Your Adversary
P
Proofpoint News Feed
M
MIT News - Artificial intelligence
博客园 - 司徒正美
T
Threat Research - Cisco Blogs
C
Cyber Attacks, Cyber Crime and Cyber Security
Schneier on Security
Schneier on Security
B
Blog RSS Feed
AI
AI
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Attack and Defense Labs
Attack and Defense Labs
Webroot Blog
Webroot Blog
Google DeepMind News
Google DeepMind News
Project Zero
Project Zero
Hacker News: Ask HN
Hacker News: Ask HN

博客园 - ace--碳水化合物

韦达定理 韦达定理1 梯形1 总平均分 m1 曲线相关 曲线 不等式 抛硬币 错位排列"(全错位)问题 11 1 两圆阴影面积 English1 Tidio 官方帮助中心 ERP 相关系统介绍 蝉翼定理 选配法 利润最大化公式 写在失业的一段话 排列组合-组合 在线简历 概率论与数理统计学习章节 绝对值 比例五大定理 算术平均值与几何平均值 等价符号 公因数与最大公因数 容斥原理 英语2026 机器学习,深度学习,强化学习 分别是什么以及区别是什么 深度学习 监督学习 FAQ IVR TTS选择 k 近邻算法 kaldi 平稳核函数(stationary kernel) Karush-Kuhn-Tucker 条件 凸二次规划(convex quadratic programming) FunASR+FreeSwitch做坐席客服系统记录 freeswitch原理图 客服系统,第三方平台,对话转录音,这些可以不依赖第三方做么 Gun.js原理 游戏升级记 10 OBB 边界问题 关于yolo26是否可以通过结合java开发 opencv和yolo是一回事情吗 pytorch TorchVision - ace--碳水化合物 PyTorch 和 FashionMNIST 的关系 java record 游戏升级记 9 VibeVoice实现90分钟、多角色播客生成,拓展语音合成新边界 同 WiFi 下用 Claude Code 控制另一台 Windows 电脑 Numpy 1 游戏升级记 8 开源claudecode前端 github star 9k+ 向量数据库skill 游戏升级记 7 游戏升级记 6 关系型数据库,向量数据库,ES,缓存,列式数据库,时序数据库,图数据库等的区别和共同点列举table 多Agent可视化 Agent设计模式 中文 Hermes+Obsidian+LLM wkii,构建AI知识库 Claude Code 前端工程泄露代码开源 游戏升级记 5 ai记忆 Rag 1 游戏升级记 4 游戏升级记 3 游戏升级记 2 AI学习路线 关于hermes agent安装 1 游戏升级记 1 代码迷踪 十三 代码迷踪 十二 ai智能体工程 Rust vs Go 微信小程序实名认证 怎样制作一个街机游戏 跟Claude code说 深入思考 它会思考更深入. googlebusiness profile设置统一白名单的操作,要弹窗模式的 该怎样利用ollama自己训练一个编程大模型 中华AI智能体编程一站式基站构想 打包网站到exe和app 识别的内容一般是试题模板的题号和手写的答题答案(数字) opencv怎么训练 在线SaaS系统做接口版本滚动更新 stripe相关支付流程 流程示意图 error: linker `link.exe` not found | = note: program not found - rust 给我一份关于stripe平台的使用开发说明 c++学习记20260219 奥数-平面几何经典定理 奥数-组合数学 奥数-几何 奥数-代数 奥数-数论
STUN服务器
ace--碳水化合物 · 2026-05-20 · via 博客园 - ace--碳水化合物

STUN 服务器是帮助浏览器发现自己的公网 IP 和端口,并判断 NAT 类型的服务。它是 WebRTC P2P 能够“打洞”成功的核心基础设施。


为什么需要 STUN?

你在家上网时,设备被分配的是内网 IP(比如 192.168.1.5)。当你想跟洛杉矶的朋友直连,你需要知道:“在公网上,别人看到我的地址是什么?”

STUN 就像是一个“镜子服务器”:

浏览器 A:“STUN 服务器,告诉我,在你眼里我长什么样?”
STUN:“我看到的你是 203.0.113.45:52134,你的 NAT 类型是锥形。”
浏览器 A:“好,我把我这个公网身份告诉信令服务器,让 B 来连我。”

如果没有 STUN,浏览器没法知道自己的公网地址,P2P 直连就无从谈起。


STUN 在 WebRTC 里怎么用?

在 WebRTC 的配置里,STUN 服务器是这样设置的:

const peerConnection = new RTCPeerConnection({
  iceServers: [
    {
      urls: 'stun:stun.l.google.com:19302'  // Google 的免费 STUN
    }
  ]
})

只需要这样一行,浏览器就会自动在建立连接时查询 STUN,获取自己的公网地址。

常用的免费 STUN 服务器

  • stun:stun.l.google.com:19302(Google)
  • stun:stun1.l.google.com:19302
  • stun:stun.cloudflare.com:3478(Cloudflare)

STUN vs TURN:两个容易搞混的服务器

对比维度 STUN 服务器 TURN 服务器
作用 告诉浏览器“你的公网地址是什么” 当 P2P 打洞失败时,中转数据
数据流 不传数据,只回答一个问题 传输数据,所有流量经过它
成本 几乎免费,轻量 贵,需要带宽和服务器性能
成功率 配合其他机制,85%-92% 的 P2P 能建立 兜底方案,100% 能连,但走中转

一个完整的 WebRTC ICE 配置通常同时配 STUN 和 TURN:

const peerConnection = new RTCPeerConnection({
  iceServers: [
    { urls: 'stun:stun.l.google.com:19302' },  // 免费 STUN
    { 
      urls: 'turn:turn.example.com:3478',      // 自建或付费 TURN
      username: 'user',
      credential: 'password'
    }
  ]
})

STUN 本身也是服务器

这里有一个很关键的认知:STUN 服务器也是服务器。虽然它极轻量、不传数据、只回答一个查询,但它依然需要一个公网可达的地址来提供服务。

所以,即使你用了 WebRTC + STUN 实现 P2P 直连,你依然依赖 STUN 服务器的存在。只不过这个服务器:

  • 不存任何数据
  • 不接触你的通信内容
  • 每次只交互几个字节
  • 有 Google、Cloudflare 提供的免费公共节点

这是你之前在追求“完全不依赖服务器”时遇到的那个“最后一公里”——STUN 是必须有的,但它已经是你能找到的代价最小、最无感的“服务器”了。


回到你的场景

之前聊到 Bugout 和 WebRTC 方案时,底层其实都在用 STUN。当你写 new RTCPeerConnection() 时,浏览器默认就会用自己的 STUN 服务器列表去查询公网地址。

所以整个链路是:

  1. STUN:告诉你你是谁(公网地址)
  2. 信令服务器:帮你们交换名片(Bugout 用 DHT 替代了这一步)
  3. WebRTC Data Channel:数据直接走 P2P

这样,你们的数据真正实现了端到端直传,而 STUN 这个“服务器”只在最初帮了你们一把。