<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>RTC 简介 on Techunder</title>
    <link>https://techunder.tech/docs/10-rtc-intro/</link>
    <description>Recent content in RTC 简介 on Techunder</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    <atom:link href="https://techunder.tech/docs/10-rtc-intro/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>什么是 RTC</title>
      <link>https://techunder.tech/docs/10-rtc-intro/01-rtc-intro/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://techunder.tech/docs/10-rtc-intro/01-rtc-intro/</guid>
      <description>&lt;!-- Copyright © 2026 Techunder (Guanhua Liu) | All Rights Reserved | https://techunder.tech | Email: techunder@163.com --&gt;&#xA;&lt;div class=&#34;page-title&#34;&gt;什么是 RTC&lt;/div&gt;&#xA;&lt;div class=&#34;page-info&#34;&gt;&#xA;   &lt;span class=&#34;organized-tag&#34;&gt;整理&lt;/span&gt;&#xA;  发布时间：2026-06-26 | 更新时间：2026-06-30&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h1 id=&#34;概念&#34;&gt;概念&lt;a class=&#34;anchor&#34; href=&#34;#%e6%a6%82%e5%bf%b5&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;在音视频流媒体通信领域，我们经常听到&lt;strong&gt;P2P&lt;/strong&gt;，&lt;strong&gt;WebRTC&lt;/strong&gt;，&lt;strong&gt;RTC&lt;/strong&gt;这个三个概念，我们先来弄清楚它们的关系。&lt;/p&gt;&#xA;&lt;h2 id=&#34;p2p&#34;&gt;P2P&lt;a class=&#34;anchor&#34; href=&#34;#p2p&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;P2P 全称为 Peer-to-Peer，点对点的网络架构，通信双方直接建立连接，通信数据不经过服务器转发，去中心化。&#xA;但 NAT 防火墙穿透困难，必须依靠 STUN 做地址探测，甚至只能降级为使用 TURN 中继。&#xA;多人通话时，每个客户端都要上传 N-1 路流，4 人以上时容易导致卡顿。&lt;/p&gt;&#xA;&lt;h2 id=&#34;webrtc&#34;&gt;WebRTC&lt;a class=&#34;anchor&#34; href=&#34;#webrtc&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.w3.org/TR/webrtc/&#34;&gt;WebRTC&lt;/a&gt; 全称为 Web Real-Time Communication，是一套开源实时音视频通信技术标准，包括客户端和服务端的规范，底层优先使用 &lt;strong&gt;P2P&lt;/strong&gt; 通信，由谷歌主导推出，浏览器原生支持，不需要安装插件，目前是 &lt;strong&gt;W3C 标准&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;h2 id=&#34;rtc&#34;&gt;RTC&lt;a class=&#34;anchor&#34; href=&#34;#rtc&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;RTC 是 Real-Time Communication 实时通信的统称，指端到端延迟 &amp;lt; 400ms 的双向音视频/数据传输能力。&#xA;RTC 是一个完整的解决方案，通常包含：信令、媒体协商、网络传输、编解码、回声消除、降噪、QoS 等十几个模块。&#xA;声网 RTC、百度 RTC、腾讯 TRTC、阿里 RTC 都是常见的 RTC 服务商。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;P2P&lt;/strong&gt;，&lt;strong&gt;WebRTC&lt;/strong&gt;，&lt;strong&gt;RTC&lt;/strong&gt;这个三者的关系为：&lt;/p&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;stateDiagram-v2&#xA;    direction LR&#xA;&#xA;    rtc : RTC（实时通信服务/产品）&#xA;    webrtc : WebRTC（标准协议，1v1）&#xA;    p2p : P2P（通信技术）&#xA;    sfu : SFU（私有协议）&#xA;    turn : TURN（中继服务）&#xA;    stun : STUN（NAT 穿透服务）&#xA;    signaling : 信令服务&#xA;&#xA;    state rtc {&#xA;        direction LR&#xA;        state webrtc {&#xA;            p2p&#xA;            stun&#xA;            turn&#xA;            signaling&#xA;        }&#xA;        sfu&#xA;    }&#xA;    style turn    fill:#d9f0e0,stroke:#5a9a6e&#xA;    style stun  fill:#d9f0e0,stroke:#5a9a6e&#xA;    style signaling  fill:#d9f0e0,stroke:#5a9a6e&#xA;    style rtc      fill:#fff3cd,stroke:#d48806,stroke-width:2px&#xA;    style sfu      fill:#fff3cd,stroke:#d48806,stroke-width:2px&lt;/pre&gt;&lt;h1 id=&#34;rtc-架构演进&#34;&gt;RTC 架构演进&lt;a class=&#34;anchor&#34; href=&#34;#rtc-%e6%9e%b6%e6%9e%84%e6%bc%94%e8%bf%9b&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;P2P 只是 RTC 连接方式之一，事实上 RTC 服务里的连接架构有好几种演进：&lt;/p&gt;</description>
    </item>
    <item>
      <title>P2P</title>
      <link>https://techunder.tech/docs/10-rtc-intro/02-p2p/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://techunder.tech/docs/10-rtc-intro/02-p2p/</guid>
      <description>&lt;!-- Copyright © 2026 Techunder (Guanhua Liu) | All Rights Reserved | https://techunder.tech | Email: techunder@163.com --&gt;&#xA;&lt;div class=&#34;page-title&#34;&gt;Peer-to-Peer&lt;/div&gt;&#xA;&lt;div class=&#34;page-info&#34;&gt;&#xA;   &lt;span class=&#34;original-tag&#34;&gt;原创&lt;/span&gt;&#xA;  发布时间：2026-07-02 | 更新时间：2026-07-02&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;Peer-to-Peer 是去中心化的点对点通信技术，数据不经过服务器转发。但因为对端（Peer）通常都藏在 NAT 网关后面，无法直接触达对端，需要服务器协助完成 NAT 网关的穿透。&lt;/p&gt;&#xA;&lt;p&gt;但并不是所有类型的 NAT 网关都能穿透成功的，得分情况讨论。&lt;/p&gt;&#xA;&lt;h1 id=&#34;nat-分类&#34;&gt;NAT 分类&lt;a class=&#34;anchor&#34; href=&#34;#nat-%e5%88%86%e7%b1%bb&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;blockquote class=&#39;book-hint note&#39;&gt;&#xA;&lt;p&gt;话说未来的某一天，每个人对个人隐私都非常注重，人人都隐藏了自己的具体家庭地址（别人最多知道住宅所在小区），不能通过地址直接寄送东西。所有住宅区都实行了全封闭管理，来往物流受到了严格的管控。如果要寄送物品，得&lt;strong&gt;先短时租用小区门口快递柜的一个格口&lt;/strong&gt;，填入收件人地址（通常都是公开的公共地址）和收件人电话号码，把物品放入格口寄送出去。在寄送的物品发出后，&lt;strong&gt;短期内该快递格口仍归租用人使用&lt;/strong&gt;，可以用于接收短时要回寄的物品。如果要接收快递，也得先短时租用一个快递格口，并主动向对方寄出一封信，让对方知道自己的快递格口信息，以便接收快递。不同的住宅小区实行了不同的快递柜使用规则。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;NAT 网关的工作方式是，只要发起方来自局域网内部，就会把内网的源IP和端口映射到网关的外网 IP 和端口上，以便把对方的回复转发回内网的主机上。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;例如 NAT 网关的外网 IP 为 &lt;code&gt;121.197.216.227&lt;/code&gt;，内网主机 &lt;code&gt;192.168.1.100&lt;/code&gt; 以源端口 &lt;code&gt;34567&lt;/code&gt; 通过 NAT 网关访问公网服务 &lt;code&gt;1.2.3.4:443&lt;/code&gt;，请求会在 NAT 网关上被映射到源端口 &lt;code&gt;45678&lt;/code&gt; 访问公网。&#xA;（&lt;code&gt;192.168.1.100:34567&lt;/code&gt; ↔ &lt;code&gt;121.197.216.227:45678&lt;/code&gt; ↔ &lt;code&gt;1.2.3.4:443&lt;/code&gt;）&lt;/p&gt;&#xA;&lt;p&gt;NAT 的类型有：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;全锥 NAT&lt;/li&gt;&#xA;&lt;li&gt;IP 受限锥 NAT&lt;/li&gt;&#xA;&lt;li&gt;IP:Port 受限锥 NAT&lt;/li&gt;&#xA;&lt;li&gt;对称 NAT&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;全锥-nat&#34;&gt;全锥 NAT&lt;a class=&#34;anchor&#34; href=&#34;#%e5%85%a8%e9%94%a5-nat&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Full Cone NAT&lt;/p&gt;</description>
    </item>
    <item>
      <title>WebRTC</title>
      <link>https://techunder.tech/docs/10-rtc-intro/03-webrtc/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://techunder.tech/docs/10-rtc-intro/03-webrtc/</guid>
      <description>&lt;!-- Copyright © 2026 Techunder (Guanhua Liu) | All Rights Reserved | https://techunder.tech | Email: techunder@163.com --&gt;&#xA;&lt;div class=&#34;page-title&#34;&gt;WebRTC&lt;/div&gt;&#xA;&lt;div class=&#34;page-info&#34;&gt;&#xA;   &lt;span class=&#34;original-tag&#34;&gt;原创&lt;/span&gt;&#xA;  发布时间：2026-06-30 | 更新时间：2026-06-30&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h1 id=&#34;概述&#34;&gt;概述&lt;a class=&#34;anchor&#34; href=&#34;#%e6%a6%82%e8%bf%b0&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;名词解释&#34;&gt;名词解释&lt;a class=&#34;anchor&#34; href=&#34;#%e5%90%8d%e8%af%8d%e8%a7%a3%e9%87%8a&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;SDP&lt;/strong&gt;: Session Description Protocol（会话描述协议）&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;ICE&lt;/strong&gt;: Interactive Connectivity Establishment（交互式连接建立）&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;STUN&lt;/strong&gt;: Session Traversal Utilities for NAT（NAT 穿透服务）&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;TURN&lt;/strong&gt;: Traversal Using Relays around NAT（中继服务）&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;SFU&lt;/strong&gt;: Selective Forwarding Unit（媒体分发服务）&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;MCU&lt;/strong&gt;: Multipoint Control Unit（多点控制单元）&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;分层结构&#34;&gt;分层结构&lt;a class=&#34;anchor&#34; href=&#34;#%e5%88%86%e5%b1%82%e7%bb%93%e6%9e%84&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;客户端三层：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;媒体采集层：MediaStream&lt;/li&gt;&#xA;&lt;li&gt;连接管理层：RTCPeerConnection&lt;/li&gt;&#xA;&lt;li&gt;数据通道层：RTCDataChannel&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;服务端三层：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;信令层：WebSocket &lt;strong&gt;信令服务&lt;/strong&gt;（交换 SDP+ICE）&lt;/li&gt;&#xA;&lt;li&gt;ICE 穿透层：&lt;strong&gt;STUN&lt;/strong&gt;（公网探测）+ &lt;strong&gt;TURN&lt;/strong&gt;（流量中继）&lt;/li&gt;&#xA;&lt;li&gt;媒体分发层：&lt;strong&gt;SFU&lt;/strong&gt;（多人会议，开源实现 MediaSoup，可选）&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;整体流程&#34;&gt;整体流程&lt;a class=&#34;anchor&#34; href=&#34;#%e6%95%b4%e4%bd%93%e6%b5%81%e7%a8%8b&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;A 打开摄像头，创建 RTCPeerConnection，生成 &lt;strong&gt;Offer SDP&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;A 通过 WebSocket &lt;strong&gt;信令服务&lt;/strong&gt;把 Offer 发给 B&lt;/li&gt;&#xA;&lt;li&gt;B 收到 Offer，生成 &lt;strong&gt;Answer SDP&lt;/strong&gt;，再回传给 A&lt;/li&gt;&#xA;&lt;li&gt;两端同时向 &lt;strong&gt;STUN 服务&lt;/strong&gt;请求公网地址，收集 &lt;strong&gt;ICE 候选&lt;/strong&gt;（&lt;strong&gt;Candidate&lt;/strong&gt;），互相交换地址&lt;/li&gt;&#xA;&lt;li&gt;RTCPeerConnection 尝试按照 ICE 优先级建立 UDP P2P 直连&lt;/li&gt;&#xA;&lt;li&gt;直连失败，自动切换到 &lt;strong&gt;TURN 中继&lt;/strong&gt;模式&lt;/li&gt;&#xA;&lt;li&gt;连通后，音视频以 RTP 包直接传输（P2P or TURN）&lt;/li&gt;&#xA;&lt;li&gt;多人会议场景：所有流推送到 &lt;strong&gt;SFU&lt;/strong&gt;，再由 SFU 分发定订阅方（可选）&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;sequenceDiagram&#xA;    actor A as 🖥️ A&#xA;    actor B as 🖥️ B&#xA;    participant Sig as 📨 Signaling&#xA;    participant STUN as 🔍 STUN&#xA;    participant TURN as 🚚 TURN&#xA;&#xA;    Note over A,TURN: SDP (Session Description Protocol)&#xA;    autonumber 1&#xA;    A-&amp;gt;&amp;gt;A: Generate Offer SDP&#xA;    A-&amp;gt;&amp;gt;Sig: Offer SDP&#xA;    Sig-&amp;gt;&amp;gt;B: Offer SDP&#xA;    B-&amp;gt;&amp;gt;B: Generate Answer SDP&#xA;    B-&amp;gt;&amp;gt;Sig: Answer SDP&#xA;    Sig-&amp;gt;&amp;gt;A: Answer SDP&#xA;&#xA;    Note over A,TURN: ICE (Interactive Connectivity Establishment)&#xA;    autonumber 1&#xA;    A-&amp;gt;&amp;gt;STUN: ICE request&#xA;    STUN-&amp;gt;&amp;gt;A: candidate1&#xA;    A-&amp;gt;&amp;gt;Sig: send candidate1&#xA;    Sig-&amp;gt;&amp;gt;B: send candidate1&#xA;&#xA;    autonumber 1&#xA;    B--&amp;gt;&amp;gt;STUN: ICE request&#xA;    STUN--&amp;gt;&amp;gt;B: candidate2&#xA;    B--&amp;gt;&amp;gt;Sig: send candidate2&#xA;    Sig--&amp;gt;&amp;gt;A: send candidate2&#xA;&#xA;    Note over A,TURN: Data Travesal&#xA;    autonumber off&#xA;    alt NAT Traversal&#xA;        A&amp;lt;&amp;lt;-&amp;gt;&amp;gt;B: Media&#xA;        B&amp;lt;&amp;lt;-&amp;gt;&amp;gt;A: Media&#xA;    else Traversal Using Relays&#xA;        A&amp;lt;&amp;lt;-&amp;gt;&amp;gt;TURN: Media&#xA;        TURN&amp;lt;&amp;lt;-&amp;gt;&amp;gt;B: Media&#xA;    end&lt;/pre&gt;&lt;h1 id=&#34;客户端&#34;&gt;客户端&lt;a class=&#34;anchor&#34; href=&#34;#%e5%ae%a2%e6%88%b7%e7%ab%af&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;完整流程：&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
