轉自:http://blog.sina.com.cn/s/blog_5d302bd20100gprv.htmlhtml
近年來,隨着 Internet 的迅猛發展,連入 Internet 的主機數量成倍增加。因爲最初設計 Internet 的時候並無考慮到須要支持這麼大的規模,於是 Internet 使用的 Ipv4 協議中 IP 地址的長度選擇了 32 位,它可使 IP 包的格式很好地對齊;可是,目前 IP 地址的短缺已經成爲 Internet 面臨的最大問題之一。
爲了解決 IP 地址短缺的問題,人們提出了許多解決方案,Internet 可以支持到新一代 IP 協議 Ipv6 的出臺。在衆多的解決方案中,網絡地址轉換 NAT(Network Address Translation)技術提供了一種徹底將私有網和公共網隔離的方法,從而獲得了普遍的應用。圖 1 NAT 工做原理示意圖 1 NAT 技術
NAT 技術的基本功能就是,用 1 個或幾個 IP 地址來實現 1 個私有網中的全部主機和公共網中主機的 IP 通訊。NAT 技術可爲 TCP、UDP 以及 ICMP 數據包提供透明轉發。
1.1 NAT 工做原理
NAT 的基本工做原理是,當私有網主機和公共網主機通訊的 IP 包通過 NAT 網關時,將 IP 包中的源 IP 或目的 IP 在私有 IP 和 NAT 的公共 IP 之間進行轉換。服務器
如圖 1 所示,NAT 網關有 2 個網絡端口,其中公共網絡端口的 IP 地址是統一分配的公共 IP,爲 202.204.65.2;私有網絡端口的 IP 地址是保留地址,爲 192.168.1.1。私有網中的主機 192.168.1.2 向公共網中的主機 166.111.80.200 發送了 1 個 IP 包(Des = 166.111.80.200, Src = 192.168.1.2)。當 IP 包通過 NAT 網關時,NAT 會將 IP 包的源 IP 轉換爲 NAT 的公共 IP 並轉發到公共網,此時 IP 包(Des = 166.111.80.200,Src = 202.204.65.2)中已經不含任何私有網 IP 的信息。因爲 IP 包的源 IP 已經被轉換成 NAT 的公共 IP,響應的 IP 包(Des = 202.204.65.2, Src = 166.111.80.200)將被髮送到 NAT。這時,NAT 會將 IP 包的目的 IP 轉換成私有網中主機的 IP,而後將 IP 包(Des = 192.168.1.2,Src = 166.111.80.200)轉發到私有網。對於通訊雙方而言,這種地址的轉換過程是徹底透明的。
1.2 NAPT 技術
因爲 NAT 實現是私有 IP 和 NAT 的公共 IP 之間的轉換,那麼,私有網中同時與公共網進行通訊的主機數量就受到 NAT 的公共 IP 地址數量的限制。爲了克服這種限制,NAT 被進一步擴展到在進行 IP 地址轉換的同時進行 Port 的轉換,這就是網絡地址端口轉換 NAPT(Network Address Port Translation)技術。
NAPT 與 NAT 的區別在於,NAPT 不只轉換 IP 包中的 IP 地址,還對 IP 包中 TCP 和 UDP 的 Port 進行轉換。這使得多臺私有網主機利用 1 個 NAT 公共 IP 就能夠同時和公共網進行通訊。網絡
如圖 2 所示,私有網主機 192.168.1.2 要訪問公共網中的 Http 服務器 166.111.80.200。首先,要創建 TCP 鏈接,假設分配的 TCP Port 是 1010,發送了 1 個 IP 包(Des = 166.111.80.200:80, Src = 192.168.1.2:1010), 當 IP 包通過 NAT 網關時,NAT 會將 IP 包的源 IP 轉換爲 NAT 的公共 IP,同時將源 Port 轉換爲 NAT 動態分配的 1 個Port。而後,轉發到公共網,此時 IP 包(Des = 166.111.80.200:80,Src = 202.204.65.2:2010)已經不含任何私有網 IP 和 Port 的信息。因爲 IP包的源 IP 和 Port 已經被轉換成 NAT 的公共 IP 和 Port,響應的 IP 包(Des = 202.204.65.2:, Src = 2010166.111.80.200:80)將被髮送到 NAT。這時 NAT 會將 IP 包的目的 IP 轉換成私有網主機的 IP,同時將目的 Port 轉換爲私有網主機的 Port,而後將 IP 包(Des = 192.168.1.2:1010,Src = 166.111.80.200:80)轉發到私網。對於通訊雙方而言,這種 IP 地址和 Port 的轉換是徹底透明的。url