主頁 / P2P 連線功能是什麼?
P2P 連線功能是什麼?
許多 IP 攝影機及 NVR 都標榜支援「P2P」(Point-to-Point,點對點)功能,用戶只需掃描二維碼或輸入裝置序號,手機便可隨時隨地觀看鏡頭畫面,完全不需要向電訊商申請固定 IP,也不需要在路由器設定端口轉發。本頁講解 P2P 背後的 NAT 穿透、UDP 打洞(Hole Punching)與雲端中繼伺服器的運作原理。
為何一般家居寬頻無法直接被外部連接?
絕大部分家居及中小企寬頻採用的是私有 IP 位址,路由器透過網絡位址轉譯(NAT,Network Address Translation)技術,將內部多部裝置共用一個對外的公網 IP 位址。NAT 的作用是將內部裝置的私有位址轉換為公網位址,讓內部裝置可以主動連上互聯網,但外部裝置一般無法主動連入內部網絡,因為 NAT 沒有自動機制判斷一個外來連線應該轉發給哪一部內部裝置。
換言之,若攝影機安裝在一般家居或店舖的路由器之後,手機在外面的流動網絡想直接連上該攝影機觀看畫面,理論上會被 NAT 擋在外面。P2P 功能存在的意義,正是要解決這個「外部連不入」的問題,而不需要用戶自行更改路由器設定。
NAT 穿透:讓內外裝置互相找到對方
解決 NAT 阻擋問題的技術統稱為 NAT 穿透(NAT Traversal) 。攝影機廠商一般會在裝置與手機 App 之間,加入一台公網伺服器協助雙方交換連線所需的位址資訊,讓兩端可以繞過 NAT 的限制直接建立通道。常見的相關標準協議包括:
技術/協議 作用
STUN(Session Traversal Utilities for NAT) 協助裝置得知自己在 NAT 對外的公網位址與端口,是進行 UDP 打洞的基礎方法
UDP 打洞(UDP Hole Punching) 透過雙方同時向對方位址發送封包,令各自的 NAT 在轉換表建立對應項目,從而讓後續封包可以直接雙向通過
TURN(Traversal Using Relays around NAT) 當直接打洞失敗(例如對稱型 NAT)時,由雲端伺服器全程轉發雙方數據的中繼協議
ICE(Interactive Connectivity Establishment) 整合 STUN 與 TURN,自動嘗試多種路徑並揀選最佳可用連線方式的完整框架
攝影機廠商的 P2P 服務,實際上是在裝置韌體與手機 App 中內建了上述其中一套或混合機制的簡化實作,用戶完全不需要理解技術細節,掃碼綁定即可使用。
UDP 打洞的運作流程
UDP 打洞是 P2P 連線最核心的技術,原理是利用 NAT 裝置「見過對方位址便放行」的特性,讓攝影機與觀看端各自向對方的公網位址發送封包,從而在雙方的 NAT 上「打開」一條通道:
各自向公網伺服器登記 ——攝影機(A)與手機 App(B)分別向廠商的公網伺服器(S)發起連線,S 因此得知 A 與 B 各自經 NAT 轉換後的公網位址與端口。
伺服器交換位址資訊 ——S 將 A 的公網位址告知 B,同時將 B 的公網位址告知 A,讓雙方得悉對方在互聯網上的「入口」。
雙方同時嘗試互相發送封包 ——A 向 B 的公網位址發送封包,B 亦向 A 的公網位址發送封包,兩個動作不需要同步發生。
NAT 建立轉換記錄 ——當 A 的封包從 A 的 NAT 送出時,該 NAT 會在轉換表新增一筆「允許來自 B 位址的回應通過」的記錄;B 的 NAT 亦同理新增對應記錄。
通道打通,直接通訊 ——一旦雙方的 NAT 都已建立對應記錄,之後互相發送的封包便可以直接穿過 NAT 到達對方,形成一條點對點的直連通道,往後的影像數據盡量經此通道傳輸,減少依賴中央伺服器頻寬。
若雙方之中有一方使用「對稱型 NAT」(Symmetric NAT,常見於企業網絡),NAT 每次對外連線分配的端口都不固定,UDP 打洞的成功率會大幅下降,此時就需要下一節講到的雲端中繼伺服器介入。
打洞失敗時的後備方案:雲端中繼伺服器
當 UDP 打洞未能成功建立直連通道時,系統會自動改用雲端中繼(Relay) 方式,把攝影機與觀看端的所有數據都經由廠商的雲端伺服器轉發,這種做法在標準中稱為 TURN。用戶在體驗上不會察覺分別,畫面依然可以正常觀看,但因為多了一重伺服器轉發,延遲一般會略高於直連,亦會佔用伺服器頻寬。
因此,P2P 服務的實際表現很視乎廠商雲端伺服器的穩定性與覆蓋範圍——直連打洞成功率愈高,用戶體驗愈流暢;一旦大量連線都要靠中繼轉發,伺服器負載重時便有機會出現卡頓或連線逾時。