地址轉換的概念
地址轉換,又稱地址代理,用來實現私有網絡地址與公有網絡地址之間的轉換。
什么是私有及公有網絡地址?
私有地址是指內部網絡(局域網內部)的主機地址,而公有地址是局域網的
外部地址(在因特網上的全球唯一的IP 地址)。因特網地址分配組織規
定以下的三個網絡地址保留用做私有地址:
10.0.0.0 —— 10.255.255.255
172.16.0.0 —— 172.31.255.255
192.168.0.0 —— 192.168.255.255
也就是說這三個網絡的地址不會在因特網上被分配,但可以在一個企業
(局域網)內部使用。各個企業根據在可預見的將來主機數量的多少,
來選擇一個合適的網絡地址。不同的企業,他們的內部網絡地址可以相
同。如果一個公司選擇其他的網段作為內部網絡地址,則有可能會引起
路由表的混亂。
什么情況下會用到地址轉換?
當內部網絡的主機訪問因特網或與外部網絡的主機通信時,需要用到地址轉換。如圖1 所示:
圖 1: 地址轉換示意圖
局域網內部網絡的地址是10.0.0.0 網段,而對外的正式IP 地址是
202.196.3.23 。內部的主機10.1.1.48 以www 方式訪問網外的服務器
202.18.245.251。主機10.1.1.48 發出一個數據報文,選擇一個源端口6084,目的端口為80。在通過代理服務器后,該報文的源地址和端口可
能改為203.196.3.23:32814,目的地址與端口不做改變。在代理服務器
中維護著一張地址端口對應表。當外部網絡的WWW 服務器返回結果時,
代理服務器會將結果數據報文中的目的IP 地址及端口轉化為
10.1.1.48:6084。這樣,內部主機10.1.1.48 就可以訪問外部的服務器了。
地址轉換的功能
在因特網的發展過程中,地址轉換的提出是為了解決因特網地址短缺所
面臨的問題。(RFC1631)。
路由器結合地址轉換可以完成以下功能:
一個企業通過路由器來訪問因特網,示意圖如圖2 所示;
圖2 通過路由器訪問因特網
另外一個部門的路由器通過缺省路由功能,如圖3 所示,利用此路由器訪問因特網;
地址轉換的實現
實現的機制是將網內主機的IP 地址和端口替換為路由器的外部網絡地址
和端口,以及從路由器的端口轉換為主機的IP 地址和端口。也就是<地
址+端口> ?? <端口>。(符號玙代表映射)
為了完成這樣的轉換,選取的數據結構至少需要包含下列信息:
主機地址;
主機端口;
轉換之后的端口;
?? 該連接的協議類型;
針對FTP 應用的“port”命令的特殊情況,需要對報文做sequence num
調整。對于該調整需要做相應記錄,數據結構中需要額外包括這些信息;
FTP 的“port”命令有什么特點?
FTP 涉及雙重連接,一個是控制連接,一個是數據連接。控制連接負責
傳輸控制信息,尤其是客戶命令??蛻籼岢鲆粋€請求,服務器與客戶建
立一個數據連接,進行實際數據傳輸?!皃ort”命令用來指明與FTP 客戶
端建立數據連接相關時,客戶端的IP 地址及端口。即“port”命令的數
據中含有IP 地址(這個IP 地址甚至可以填上不是客戶端地址的任意的一
個IP 地址。有關這個命令所引起的網絡安全方面的問題,有興趣的可以
在計算機緊急事件反應組織的網點查看:www.cert.org,由卡耐基.梅隆大
學維護)。這個IP 地址也需要進行轉換,從而引起該tcp 報文所攜帶的
數據發生變化,需要進行sequence num 調整。
經過把數據報文中的地址和端口轉換為路由器的地址與端口后,報頭數
據發生了變化。而一般性的協議報頭中都有一項稱為checksum(校驗和)
的域,那一項也需要做調整。否則在數據報文發送到對端,在IP 層進行
的校驗和計算后,會被以“bad checksum”的原因被丟棄。
對于TCP、UDP 這些上層協議(包括ICMP),需要進行兩次校驗和調
整。一次是IP 報頭自身的校驗和調整,一次是TCP 等頭標的校驗和調整。
為了有效的實現〈地址+端口〉與〈端口〉之間的映射,選取hash 表的方
式來實現映射算法。選取以下的HASH 函數:
usIndex = ((ulIpAddr&0x000000FF)<<4) + (usSrcPort&0x000F);
采取此種方式是對在一個C 類子網內部的主機地址取其低8 位,由于一
臺主機的socket API 中對于端口號一般是連續分配的(而在一臺主機上所
開的通信客戶端程序是有限的),再取其低4 位,可以較好地將由源地址
和源端口及協議所組成的半相關散列開至整個HASH 表中。采取hash 表結構后,還需要處理hash 沖突的情況,即需要維護一個鏈表
結構來放置hash 沖突之后的數據。
在具體實現的時候,考慮到一個連接都不會超過一定的時間。在數據結
構中增加一項用來記錄該連接創建時的時間,如果超過了所設定的時間,
則將此項從hash 表中刪除。
總結這一節,地址轉換的實現要點如下:
選擇一個數據結構來保存地址、端口等信息;
選擇一個合適的算法來實現地址加端口與端口之間的映射;
對轉換后的報文做校驗和調整;
對FTP 的“port”命令做sequence number 調整;
地址轉換的優缺點
地址轉換的優點在于:
內部網絡的主機可以通過該功能訪問網外資源;
為內部主機提供了“隱私”(privacy)保護;
缺點也是由轉換功能所引起:
由于需要對數據報文進行IP 地址的轉換,涉及IP 地址的數據報的報頭不
能被加密。在應用協議中,不能使用加密的FTP 連接。否則FTP 的port
命令不能被正確轉換。
網絡調試變得更加困難。比如,某一臺內部網絡的主機試圖攻擊其他網
絡,則很難指出究竟是哪一臺機器是惡意的,因為主機的IP 地址被屏蔽了。
評論
查看更多