電腦網路與 Internet 通訊

單元 04A 單播、多播、廣播與 LAN 服務探索

學習目標與先備關係

先讀 04 的交換表及 VLAN。4A.1 至 4A.4 處理鏈路與多播;4A.5 在讀 05 的 DNS 後回讀,IPv6 細節與 11 互相參照。完成後應能追蹤不同交付方式、區分 FDB 與 MDB、解釋 IGMP/MLD 與 snooping,並定位「能以 IP 連線卻找不到印表機」的問題。

本文以「多播」稱 multicast,其他資料也常稱群播或組播。問題:交換器看到多播訊框,是否一定送到所有主機?

4A.1 先分交付語義,再看實際出口

類型目的與範圍交換器簡化行為
已知單播一個鏈路目的 MACFDB 命中時送目的埠
未知單播目的仍是單播 MACFDB 未命中時,同 VLAN 泛洪
廣播ff:ff:ff:ff:ff:ff同 VLAN 可轉送埠,排除入口
多播一個群組,可能零/一/多個接收者依成員、router port 及裝置政策決定

上表假設無埠隔離、ACL、鏡像及特殊控制訊框規則。泛洪是交換器的轉送動作,不會把單播目的改成廣播。接收端收到鏈路副本,也不表示 IP/socket 或應用一定接受。

IPv4 有限廣播 255.255.255.255 限制在本鏈路;子網導向廣播如 192.0.2.255/24 的語義不同,路由器預設不應轉送這類導向廣播。不要為了跨網段探索直接開啟廣播轉送。IPv6 沒有 broadcast 位址,以不同 scope 的 multicast 等機制完成相關功能。

ARP 請求通常用 Ethernet 廣播;但 ARP 本身不是 IP 資料報(EtherType 0x0806),既不是 IPv4 廣播也不是 IPv4 多播。NDP 是 ICMPv6,鄰居解析常送 solicited-node multicast;IGMP/MLD 管理接收成員,不能替 ARP/NDP 找單播鄰居。

4A.2 IP 群組與鏈路 MAC 不是一對一

IPv4 多播範圍 224.0.0.0/4;224.0.0.0/24 供本地網路控制,239.0.0.0/8 供管理範圍,實際邊界仍需路由與管理政策。IPv6 群組位址由 ff00::/8 開始,含 scope 欄位;ff02 是 link-local scope,不能只看它是 IPv6 就當作全球可路由。

Ethernet 上的 IPv4 多播 MAC 使用 01:00:5e 加上群組 IP 的低 23 bits,所以 32 個 IPv4 群組可以對映到同一 MAC。239.192.0.42 與 224.64.0.42 皆對映到 01:00:5e:40:00:2a;若設備只按 MAC 過濾,可能多送副本,IP 層仍需按群組過濾。IPv6 通常對映到 33:33 加目的位址低 32 bits,也可能別名。

多播發送者不必先加入接收群組;接收者透過 socket 加入指定介面的群組。群組不是可直接建立普通 TCP 連線的單一伺服器。多播資料常用 UDP,但管理封包 IGMP 或 ICMPv6 本身不使用 UDP 埠;不能將「多播只有 UDP」當成分層定義。

4A.3 成員管理、snooping 與路由三種工作

同 VLAN 中的 FDB、多播成員與 router port
同 VLAN 中的 FDB、多播成員與 router port
機制知道什麼負責什麼
FDB 來源學習VLAN、來源 MAC、入口埠單播鏈路轉送
IGMP/MLD某鏈路有接收者對哪些群組/來源有興趣主機向相鄰多播路由器報告
IGMP/MLD snooping、MDB群組對應成員埠,另記 router port交換器限制 LAN 內多播副本
多播路由/PIM 等跨鏈路的樹、上游與下游路由器跨子網轉送多播

IGMPv3 用於 IPv4,MLDv2 用於 IPv6 且屬 ICMPv6,兩者都支援來源篩選。ASM(any-source multicast)以群組 G 識別服務,接收送往 G 的任意來源,可再排除部分來源;SSM(source-specific multicast)以 (S,G) 識別通道,只接收指定來源 S 送往 G 的流量。來源篩選是協定能力,不等同 ASM/SSM 的定義本身。group membership 不提供密碼學身分驗證,也不代替防火牆。

現行規範 RFC 9776/9777 於 2025 年分別取代 3376/3810,協定仍是 IGMPv3/MLDv2。部署可能使用較早版本,snooping 支援也需看設備;不要因 RFC 號更新就宣稱所有交換器已支援新版功能。

一次成員生命週期

  1. B 的應用在指定介面加入群組 G;OS 更新接收狀態,依協定發送成員報告。
  2. snooping 交換器從控制訊息更新 B 所在埠的 MDB 狀態;router port 另由協定觀察或靜態設定取得。
  3. A 送 G 的資料;已知群組通常送成員埠與相關 router port,排除入口,不查普通單播 FDB 來找全部成員。
  4. Querier 發 Query,接收者回報仍需哪些流量;表項會依時間與規則更新。
  5. 應用 leave 或停止回報,不一定瞬間刪掉整個埠:埠後方可能還有其他接收者,需查詢/逾時或明確追蹤。Fast leave 只適合符合拓樸假設的部署。

沒有 querier 時,某些 snooping 環境會在老化後丟失成員狀態,呈現「剛開始正常,幾分鐘後不穩」。不同設備可能退回泛洪或丟棄;不能把症狀當唯一診斷。查 Query、Report、MDB、router port 與計時器才有證據。

未知多播是否泛洪取決於設備與政策;router port、控制群組及版本相容性也會影響轉送。IPv4 的 224.0.0.x 非 IGMP 資料在 RFC 4541 建議下應送所有相關埠,不能一律按普通群組的 MDB 裁切。因此「開 snooping 後 mDNS 只到已加入者」不是通用保證。

4A.4 多播跨 VLAN 需要另一層設計

同 VLAN 的橋接不減少 IP TTL/Hop Limit;路由轉送則要處理跳數與 scope。snooping 不建立跨 VLAN 多播路徑。若目標是跨子網送同一資料流,需合適的多播路由、接收成員、來源路由、RPF 檢查及安全政策;PIM 是常見控制協定家族,不等於所有多播部署都必須用 PIM。

許多服務探索採本鏈路 scope;即使網路支援一般多播路由,也不代表能直接轉送這些探索訊息。AP 的多播轉單播、用戶端隔離、無線省電/速率策略會改變鏈路現象。先描述自己的 VLAN 與 AP 模式,再解讀擷取。

完整轉送例題

A、B、C、R 在 VLAN 10 的埠 1、2、3、4;D 在 VLAN 20 的埠 5。G=239.192.0.42,MDB 已知 B 與 C 是成員,R 是 router port;無其他過濾。

A 傳入埠 1 的訊框出口判斷
已知單播 B2FDB 命中
未知單播 X2、3、4同 VLAN 泛洪,目的仍單播
廣播2、3、4不送 VLAN 20
已知 G 多播2、3、4成員埠加 router port
C 離開後的 G,假設成員移除已確認2、4不再送 3,仍送 router port
mDNS 224.0.0.251本例 2、3、4link-local 控制範圍採泛洪政策

這是明示政策的紙上模型,並非所有交換器的逐條保證。IGMP 控制訊息有自己的轉送規則,不以此資料訊框表替代規範。

4A.5 mDNS 與 DNS-SD:發現不等於連得上

mDNS 將本鏈路名稱查詢/回覆送到 224.0.0.251 或 ff02::fb 的 UDP 5353;.local 是重要的本地名稱空間。協定也包含可要求單播回覆等情況,所以看到單播 UDP 5353 不必立即判定異常。RFC 6762 §11 建議 mDNS 回應(含單播回應)以 IP TTL/Hop Limit 255 發送,以相容早期實作。對送往本鏈路目的位址的查詢,查詢端須只接受本鏈路回應:送至 224.0.0.251/ff02::fb 的回應視為來自本鏈路;單播回應另檢查來源是否屬於本地子網/on-link 前綴。本鏈路限制不靠把 TTL 設成 1。IP TTL/Hop Limit 與 DNS record TTL 是不同欄位,前者管封包跳數/協定檢查,後者管記錄快取。

DNS-SD 描述如何用 DNS 記錄尋找服務:PTR 列出服務實例,SRV 給主機與埠,TXT 提供屬性,A/AAAA 得到位址。它可使用 mDNS,也可用普通單播 DNS;不能把 DNS-SD 與 mDNS 當同義詞。

例:查詢 _ipp._tcp,PTR 得到「Lab Printer」實例,SRV 指向 printer.local:631,TXT 描述能力,再查 A/AAAA 並連線。探索訊息使用多播,不表示列印資料也用多播;後續連線可能是單播 TCP,且仍需路由、ACL 與服務端接受。

現象優先蒐集的證據
手動 IP 可連但列表沒有印表機VLAN、5353 收送、AP 隔離、服務廣告與快取
列表有實例但連線失敗SRV 埠、A/AAAA 可達、服務、防火牆與名稱驗證
跨 VLAN 突然能發現大量裝置reflector/gateway 的範圍、允許服務與信任邊界
VPN 開啟後本地探索消失群組出口介面、5353 政策、scope、路由與應用支援

跨 VLAN 可評估 mDNS reflector 或具政策的 discovery gateway,或改用單播 DNS-SD;它們有不同快取、可見範圍與實作限制。只把 LAN 單播路由排除出 VPN,不能保證探索也正常。HTTP CONNECT/普通 SOCKS CONNECT 不會自動搬運二層廣播或多播;TAP、TUN、WireGuard 等也要依其轉送單位、路由與實作能力另外分析,不能僅靠名稱保證。

不要將看見服務廣告視為端點可信;完成連線後的名稱/憑證驗證與存取控制仍是獨立工作。

實驗、習題與檢核

做 L16,改變 MDB、成員老化、router port、VLAN 與未知多播政策,先預測再執行。讀 05 後完成 DNS-SD 資料表;Linux bridge 觀察是延伸,未列為本機實測。

  1. 未知單播送到多埠,為何仍不是廣播?
  2. 239.192.0.42 與 224.64.0.42 為何可能共用 MAC?它們是否因此是同一群組?
  3. snooping、querier 與 PIM 各解決哪個問題?
  4. B 離開群組時,為何不能立即刪除整個共享埠?
  5. 印表機跨 VLAN 可 ping 卻未顯示列表,提出兩個可區分假設及證據。
  6. 已發現 printer.local:631 但 HTTPS 名稱驗證失敗,發現成功能否取代身分驗證?

檢核:能分開記錄目的 IP/MAC、VLAN、FDB、MDB、router port、應用實例與實際連線;知道本模型未實作 IGMP 封包。解答見 answers/lan-solutions.md。

來源(查閱 2026-10-06):RFC 1112、RFC 2464、RFC 4291、RFC 2365、RFC 2644、RFC 9776 IGMPv3、RFC 9777 MLDv2、RFC 4541 snooping、RFC 4607 SSM、RFC 6762 mDNS、RFC 6763 DNS-SD、Linux bridge。RFC 4541 為 Informational 建議,不代替每款交換器的規格。