Private IP 網路協定 STUN IPv4 TCP NAT 路由器 交換器 協定

支持NAT環境的無名英雄 STUN協定從私有IP講起

2014-08-28
有些讀者可能知道什麼是NAT,有些讀者可能聽過,卻不知道細節。而知道NAT的讀者,可能只有非常少數了解什麼是STUN。事實上,STUN已被廣泛使用在NAT環境之中,它的全稱是Session Traversal Utilities for NAT,運作於網路七層架構的第四層應用層。
簡單來說,STUN就是一種網路協定,這個協定可以讓處於NAT環境內的各個用戶端了解自己通往外部網路之後在外部網路的位址,甚至還可以知道目前的NAT是使用怎樣的NAT種類。

而應用程式一旦知道這樣的資訊後,就可以直接用這個外部公開的IP位址與其他外部的各種用戶端聯繫,而不是使用私有IP位址。

舉例來說,廣為人知的SIP協定採用UDP協定來傳輸資料,不過,一般使用SIP協定的用戶端會處於NAT網路環境之中,此時STUN協定就可以發揮效用。

所以,這篇文章將介紹STUN協定,以及介紹其所運行的NAT網路環境。

NAT簡介

STUN網路協定運作於網路七層架構的第四層應用層,它的全稱是Session Traversal Utilities for NAT,如同其名,它與NAT有關,用於NAT環境中的工具。而什麼是NAT?在了解STUN之前,先來看看什麼是NAT。

NAT是Network Address Translation的縮寫。NAT是用來將已經註冊的IP位址轉換到私有的IP位址,簡化IP位址的管理,以便讓企業內部的網路連到外部的網際網路,而且甚至不需要有註冊的子網路。

NAT的做法,大致上來說,是在IP協定封包的Header中將Network Address的資料做置換的動作。以下就來說明NAT是如何做到這些事情。

私有IP位址

在開始介紹NAT之前,還是先介紹一下何謂私有IP位址(Private IP Address),以及介紹一下私有IP位址的範圍。

眾所周知,目前IPv4的規格與技術已經被使用多年,原本設計的IP位址個數也逐漸不敷使用,當初設計IPv4時,應該很難想像到網路普及如此迅速,以及IP位址的使用量會如此廣泛。

為了更有效地使用IP位址,因而出現了私有IP位址的設計,私有IP位址被定義在RFC 1918的規格中。當電腦不需要存取網際網路時,可以只用私有IP位址,而私有IP位址不需要註冊,因為私有IP位址只有在內部網路才能使用,私有IP位址的IP範圍如表1所示。

表1 私有IP位址的IP範圍

一般公司內部的網路都是分配私有IP位址給內部的電腦,不僅如此,若家裡有架設無線網路基地台,這個基地台也會分配私有IP位址給每一台連上網路的筆記型電腦,而這些私有的IP位址在外面的網際網路中是「根本不存在」的,也因為如此,各個內部網路(Intranet)就可以重複使用這些私有IP位址範圍,以增加IP位址的使用性。

Link-Local位址

另外,還有一段私有IP位址是被定義在RFC 3330和RFC 3927文件之中,這段私有IP位址稱為Link-Local Addresses。設計這段私有IP位址的目的在於,希望在沒有DHCP伺服器的情況下還能夠提供IP位址。而Link-local Addresses的範圍在於:


但是,在這段範圍內並不是所有的位址都可以使用,目前來說,169.254.0.0/24及169.254.255.0/24被保留起來,以便未來可以提供不同的用途。

如果是使用Windows 9x的作業系統平台(不包含Windows NT作業系統),是不能經由DHCP伺服器來取得IP位址,這個時候就會隨意從169.254.1.0~169.254.254.255這個範圍內取一個IP位址來使用,但這樣隨意取用的做法很可能會造成IP衝突。若有IP衝突,就只能靠自己去處理了。

與私有IP位址相比,Link-local Address受到的限制比較多,而這些限制都被定義在RFC 1918文件內。還有一點必須注意的是,Link-local Address所發送出來的網路封包,以及要送往Link-local Address的網路封包都不能經過路由器,這個限制被定義在RFC 3927之中,若有興趣可以參考RFC 3927和RFC 1918文件,這裡就不再額外敘述。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!