P2P技術詳解(一):NAT詳解——詳細原理、P2P簡介(轉再)
阿新 • • 發佈:2018-12-10
這是一篇介紹NAT技術要點的精華文章,來自華3通訊官方資料庫,文中對NAT技術原理的介紹很全面也很權威,對網路應用的應用層開發人員而言有很高的參考價值。
《P2P技術詳解》系列文章
➊ 本文是《P2P理論詳解》系列文章中的第2篇,總目錄如下: ➋ P2P相關的其它資源: 另外,如果你覺得本文對網路通訊的基礎知識講的不夠系統話,可繼續看看下面這些精華文章大餐。➊ 網路程式設計基礎知識: ➋ 如果覺得上面的文章枯燥,則《網路程式設計懶人入門》系列可能是你的菜: ➌ 如果感到自已已經很牛逼了,《不為人知的網路程式設計》應該是你菜:1. IPv4協議和NAT的由來
今天,無數快樂的網際網路使用者在盡情享受Internet帶來的樂趣。他們瀏覽新聞,搜尋資料,下載軟體,廣交新朋,分享資訊,甚至於足不出戶獲取一切日用所需。企業利用網際網路釋出資訊,傳遞資料和訂單,提供技術支援,完成日常辦公。然而,Internet在給億萬使用者帶來便利的同時,自身卻面臨一個致命的問題:構建這個無所不能的Internet的基礎IPv4協議已經不能再提供新的網路地址了。 2011年2月3日中國農曆新年, IANA對外宣佈:IPv4地址空間最後5個地址塊已經被分配給下屬的5個地區委員會。2011年4月15日,亞太區委員會APNIC對外宣佈,除了個別保留地址外,本區域所有的IPv4地址基本耗盡。一時之間,IPv4地址作為一種瀕危資源身價陡增,各大網路公司出巨資收購剩餘的空閒地址。其實,IPv4地址不足問題已不是新問題,早在20年以前,IPv4地址即將耗盡的問題就已經擺在Internet先驅們面前。這不禁讓我們想去了解,是什麼技術使這一危機延緩了盡20年。 要找到問題的答案,讓我們先來簡略回顧一下IPv4協議。 IPv4即網際網協議第4版——Internet Protocol Version 4的縮寫。IPv4定義一個跨越異種網路互連的超級網,它為每個網際網的節點分配全球唯一IP地址。如果我們把Internet比作一個郵政系統,那麼IP地址的作用就等同於包含城市、街區、門牌編號在內的完整地址。IPv4使用32bits整數表達一個地址,地址最大範圍就是232 約為43億。以IP創始時期可被聯網的裝置來看,這樣的一個空間已經很大,很難被短時間用完。然而,事實遠遠超出人們的設想,計算機網路在此後的幾十年裡迅速壯大,網路終端數量呈爆炸性增長。 更為糟糕的是,為了路由和管理方便,43億的地址空間被按照不同字首長度劃分為A,B,C,D類地址網路和保留地址。其中,A類網路地址127段,每段包括主機地址約1678萬個。B類網路地址16384段,每段包括65536個主機地址。2. NAT的工作模型和特點
2.1 NAT的概念模型
NAT名字很準確,網路地址轉換,就是替換IP報文頭部的地址資訊。NAT通常部署在一個組織的網路出口位置,通過將內部網路IP地址替換為出口的IP地址提供公網可達性和上層協議的連線能力。那麼,什麼是內部網路IP地址? RFC1918規定了三個保留地址段落:10.0.0.0-10.255.255.255;172.16.0.0-172.31.255.255;192.168.0.0-192.168.255.255。這三個範圍分別處於A,B,C類的地址段,不向特定的使用者分配,被IANA作為私有地址保留。這些地址可以在任何組織或企業內部使用,和其他Internet地址的區別就是,僅能在內部使用,不能作為全球路由地址。這就是說,出了組織的管理範圍這些地址就不再有意義,無論是作為源地址,還是目的地址。對於一個封閉的組織,如果其網路不連線到Internet,就可以使用這些地址而不用向IANA提出申請,而在內部的路由管理和報文傳遞方式與其他網路沒有差異。 對於有Internet訪問需求而內部又使用私有地址的網路,就要在組織的出口位置部署NAT閘道器,在報文離開私網進入Internet時,將源IP替換為公網地址,通常是出口裝置的介面地址。一個對外的訪問請求在到達目標以後,表現為由本組織出口裝置發起,因此被請求的服務端可將響應由Internet發回出口閘道器。出口閘道器再將目的地址替換為私網的源主機地址,發回內部。這樣一次由私網主機向公網服務端的請求和響應就在通訊兩端均無感知的情況下完成了。依據這種模型,數量龐大的內網主機就不再需要公有IP地址了。 圖2 NAT轉換過程示意圖雖然實際過程遠比這個複雜,但上面的描述概括了NAT處理報文的幾個關鍵特點:1. 網路被分為私網和公網兩個部分,NAT閘道器設定在私網到公網的路由出口位置,雙向流量必須都要經過NAT閘道器; 2. 網路訪問只能先由私網側發起,公網無法主動訪問私網主機; 3. NAT閘道器在兩個訪問方向上完成兩次地址的轉換或翻譯,出方向做源資訊替換,入方向做目的資訊替換; 4. NAT閘道器的存在對通訊雙方是保持透明的; 5. NAT閘道器為了實現雙向翻譯的功能,需要維護一張關聯表,把會話的資訊儲存下來。
隨著後面對NAT的深入描述,讀者會發現,這些特點是鮮明的,但又不是絕對的。其中第二個特點打破了IP協議架構中所有節點在通訊中的對等地位,這是NAT最大的弊端,為對等通訊帶來了諸多問題,當然相應的克服手段也應運而生。事實上,第四點是NAT致力於達到的目標,但在很多情況下,NAT並沒有做到,因為除了IP首部,上層通訊協議經常在內部攜帶IP地址資訊。這些我們稍後解釋。