網絡層-7、網絡地址轉換-NAT

參考哈工大公開課。


網絡地址轉換(NAT)的核心

網絡地址轉換的核心思想就是在局部範圍內用私有網絡IP(外部無法訪問),可以在這個局部範圍內相互訪問,但是如果需要訪問外部的資源就需要通過一個統一的對外公佈的非私有的IP地址進行數據交換。這個好比一羣人被關在一個封閉的房子裏面,聲音傳不出去,房間裏面只有一個電話,每個人在房間內可以隨意交流,但是要對外交流就必須通過這部電話機了。

圖一:網絡地址轉換的核心思想

當外面的數據報發進來,那個統一出口的服務器就會根據數據報的信息和本地網絡內的IP和端口號進行識別。這個就像上面那個比方,外面的人打電話進來,對方告訴我們讓誰接電話,然後根據這個名字找人。‘

 

動機

採用網絡地址轉換的方式進行數據訪問的動機有4個:

1、 IPv4規定的IP地址只有32位,只有40億+個,不夠用了;

2、 本地網絡設備IP地址的變更,無需通知外界網絡。

3、 當外界網絡IP地址變更時,無需修改內部網絡設備的IP地址。

4、 內部網絡設備對外界網絡是不可見的,即不能直接尋址,一定程度上保證了本地網絡的安全。

 

實現

網絡地址轉換的實現只需要三個步驟:替換、記錄和替換。

替換:當數據輸出時間,利用(NAT IP地址,新端口號)替換每一個外出IP數據報的(源IP地址,源端口號)。

記錄:將每對(NAT IP地址,新端口號)與(源IP地址,源端口號)的替換信息存儲到NAT轉換表中。

替換:當外部網絡向本地網絡發送數據時,根據NAT轉換表,利用(源IP地址,源端口號)替換每個進入內網的IP數據報的(目的IP地址,目的端口號),即(NATIP地址,新端口號)。

 

圖二:網絡轉換地址實現過程

 

但是上面的有個問題,就是如果本地網絡沒有對外訪問數據,那麼NAT表格就爲空,這時外面的網絡需要訪問本地網絡的服務器就實現不了。爲了解決這個問題,可以採用3種方式:

1、 靜態配置NAT,將特定端口的連接請求轉發給本地網絡的服務器。簡單的說就是人工輸入NAT表格中的內容。

2、 利用UPnP互聯網網關協議(IGD)自動配置,就是本地服務器自動學習到NAT公共IP地址,並下NAT轉換表中,增刪端口映射。

3、 中級(如Skype),NAT內部的客戶與中繼服務器建立連接,外部客戶也與中繼服務器建立連接,中繼服務器橋接兩個連接的分組。

 

圖三:2、3種方式示例

 

NAT的爭議

NAT通過修改端口號,做地址轉換解決了實際問題,但是也有不少爭議,主要有以下爭議:

1、 NAT是在路由器上面操作的,應該只處理第三層功能,但是NAT卻修改了運輸層的端口號

2、 NAT違背了端到端的通信原則,應用開發者必須考慮NAT的存在,比如:P2P應用。

地址短缺問題應該有64位IP地址的IPv6來解決,而不應該採用這種折中的方式
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章