iT邦幫忙

2021 iThome 鐵人賽

DAY 5
0
Software Development

新手也能打造網路電話系統-WebRTC入門與活用系列 第 5

Day 05 - 觀念篇 - Interactive Connectivity Establishment

Interactive Connectivity Establishment(簡稱ICE)互動式連結建立是一種整合STUN與TURN協議之框架,用於在NAT環境下尋找終端裝置的外網位址,並提供可連線的候選人資訊,使終端裝置之間的連線得以建立。STUN與TURN協議會於後續的文章中說明,這裡我們只需要知道ICE是一個用於取得終端裝置外網位址的一個框架即可。

為甚麼需要ICE?

為甚麼需要ICE這個框架呢? 其實是因為有NAT啦!它會阻擋外網位址直接訪問內網位址,這使得對等連線變得複雜,因此進行點對點連線時,需要建立擁有ICE框架的伺服器以穿透NAT。那...NAT到底是什麼?為甚麼它要阻止我啊?

當裝置或設備欲連上網路時,就必須擁有IP位址,但科技普及的現代,人手可能不只一機,而是擁有手機、平板、電腦等,但每個設備都要連上網路的話,就需要有許多的IP位址,如果有IT相關背景的人應該知道IP位址是有限的資源,而為了解決資源缺乏的問題,NAT誕生了!

Network Address Translator

Network Address Translator(簡稱NAT)網路位址轉換最早是為了解決IPv4位址資源缺乏的一項技術,它藉由少數的外網位址搭配路由器產生多個內網位址,以達成各個裝置皆擁有網路位址的需求,如下圖所示,一個外網位址就能提供多個設備連上網際網路,以取得網路上的服務。

NAT的運作原理

NAT會維護著一個對照表,表內會將內網位址映射到外網位址及Port號,當需要發送與接收封包時,NAT就會依照表來轉發封包至目的地。

舉例說明

這裡我以情境的方式說明,情境是UserA使用手機連上家中的Wifi分享器(具備無線網路功能的路由器),UserB則使用自己的手機網路,並在網路上互相傳遞訊息。

各自的網路位址

  • UserA的手機:192.168.0.1
  • UserA家的Wifi分享器:140.124.13.105
  • UserB的手機:216.122.1.1

Wifi分享器內的NAT對照表

內網位址 外網位址
192.168.0.1 140.124.13.105:5001
192.168.0.2 140.124.13.105:5002
... ...

運作流程

https://ithelp.ithome.com.tw/upload/images/20210916/20118188GxTLhSaod1.png

NAT的類型

NAT大致分成圓錐型與對稱型兩種類型,而圓錐型又有三種型式,但我們只需要了解在雙方是埠受限圓錐型NAT與對稱型NAT,或是雙方皆為對稱型NAT的狀況下,無法建立對等連線即可,而後續文章會說明在這個狀況下,我們要如何進行WebRTC。

  1. 完全圓錐型NAT(Full cone NAT):任何外網位址都可以發送封包至內網位址。
  2. 受限圓錐型NAT(Restricted cone NAT):僅有曾收過內網位址封包的外網位址(不限制Port號)能發送封包至內網位址。
  3. 埠受限圓錐型NAT(Port-Restricted cone NAT):僅有曾收過內網位址封包的外網位址與Port號(限制Port號)能發送封包至內網位址。
  4. 對稱型NAT(Symmetric NAT):僅有曾收過內網位址封包的外網位址與Port號(限制Port號)能發送封包至內網位址,但每當內網位址發送封包至不同的外網位址時,就會分配新的Port號。

舉例說明

看完上面的敘述可能還是不太好理解,我就以電話號碼與分機舉例說明,而NAT的類型大家可以想像成不同的電話系統,但這個說明只是用於舉例,跟現實中的電話號碼與分機沒有直接關係。

  1. 完全圓錐型NAT:來者不拒,任何人都可以打給我。
  2. 受限圓錐型NAT:我有打過電話給你,你就能用相同的電話號碼打給我。
  3. 埠受限圓錐型NAT:我有打過電話給你,你就能用相同的電話號碼打給我,但你的分機號碼必須跟我之前打給你的時候一樣。
  4. 對稱型NAT:與埠受限圓錐型NAT相似,但我每打一次電話給你,我的分機號碼就會變變變,因此當對方是埠受限圓錐型NAT或同為對稱型NAT時,無法進行通話。

上一篇
Day 04 - 觀念篇 - Session Description Protocol
下一篇
Day 06 - 觀念篇 - Session Traversal Utilities for NAT、Traversal Using Relays around NAT
系列文
新手也能打造網路電話系統-WebRTC入門與活用30

尚未有邦友留言

立即登入留言