“IT小百科”之“路由、代理、NAT技術詳解”

很多人都知道局域網接入Internet互聯網的方式有三種

一是路由、二是通過代理服務器、三是網絡地址轉換(NAT)。但是我相信有很多小夥伴並不真的清楚它們的各自原理和區別。

今天我就以本篇文章內容,詳細講述一下路由、代理、NAT技術的實現原理與彼此區別!

一、 路由

1、 先了解一下什麼是路由

簡單理解路由就是從源頭到目的路徑的選擇,路徑選擇的過程會依據路由算法,用以確定到達目的地的最佳路徑的計量標準,如路徑。為了幫助選路,初始化並維護包含信息的,路徑信息根據使用的路由算法不同而不同。

根據許多信息來填充。目的/對告知到達該目的最佳方式是把分組發送給代表""的路由器,當路由器收到一個分組,它就檢查其目標地址,嘗試將此地址與其"下一跳"相聯繫。下表為一個目的/下一跳的例子。

“IT小百科”之“路由、代理、NAT技術詳解”

還可以包括其它信息。比較metric以確定最佳路徑,這些metric根據所用的而不同。彼此通信,通過交換路由信息維護其,路由更新信息通常包含全部或部分路由表,通過分析來自其它路由器的路由更新信息,該路由器可以建立。間發送的另一個信息是鏈接廣播信息,它通知其它路由器發送者的鏈接狀態,鏈接信息用於建立完整的拓撲圖,使路由器可以確定最佳路徑

2、 以實例理解IP路由的基本過程

下圖共有兩個不同的網段分別是NetworkA與NetworkB,這兩個網段是通過一個路由器(Server A)來進行數據傳遞,那麼當PC01這臺主機想要傳送數據到PC11時,它的IP數據包該如何傳輸?

“IT小百科”之“路由、代理、NAT技術詳解”

過程分析:

NetworkA(192.168.0.0/24)與NetworkB(192.169.1.0/24)是不同的網段,所以PC01與PC11是不能直接傳遞數據的。當主機要發送數據時,它主要參考是路由表,分析過程如下。

1、查詢IP數據包的目標IP地址

當PC01有IP數據包發送時,主要會查閱IP數據包報頭的目標IP地址。

2、查詢PC01的路由表

PC01主機會分析自己的路由表,當發現目標IP與本機IP在同一網段,則PC01會直接通過局域網,將數據直接傳送到目的主機。

3、查詢默認路由

因為PC01與PC11不在同一網絡,因此PC01會分析路由表當中是否有其他相符合的路由設置值,如果沒有,就直接將IP數據包發送到默認路由當中去,在本應用中,Default Gateway是Server A這臺。

4、送出數據包到Default Gateway後,不理會數據包流向

當IP由PC01送給Server A之後,PC01就不理會接下來的工作,而Server A接收到這個數據包後,會依據上面的流程,也分析自己的路由表,然後向後繼續傳輸到正確的目的主機上面。

3、 直接路由連接互聯網的方式並不可取

理解了路由的基本概念後,應該知道路由過程源iP是不變的,那麼就要求都有真實的公網IP,而公網IP地址屬於緊缺資源,並且直接用公網IP暴露在公網上安全也無法得到保障。所以直接路由這種上互聯網的方案在多數環境下並不可取。

二、 代理服務器

1、什麼是代理服務器

代理服務器(Proxy Server)是個人網絡和Internet服務商之間的中間代理機構,它負責轉發合法的網絡信息,對轉發進行控制和登記。代理服務器作為連接Internet(廣域網)與Intranet(局域網)的橋樑,在實際應用中發揮著極其重要的作用,它可用於多個目的,最基本的功能是連接,此外還包括安全性,緩存,內容過濾,訪問控制管理等功能。代理服務器,顧名思義就是局域上不能直接上網的機器將上網請求(比如說,瀏覽某個主頁)發給能夠直接上網的代理服務器,然後代理服務器代理完成這個上網請求,將它所要瀏覽的主頁調入代理服務器的緩存;然後將這個頁面傳給請求者。這樣局域網上的機器使用起來就像能夠直接訪問網絡一樣。並且,代理服務器還可以進行一些網站的過濾和控制的功能,這樣就實現了我們控制和節省上網費用。

通俗理解: 我們或許會幫忙家人去辦理一些雜務吧!舉個例子來說,例如繳費或者是申辦提款卡等等的, 由於你並不是『申請者本人』而是『代理人』的角色,因此有時候會需要拿出一些證件, 代理服務器(Proxy Server)與上面真實世界一樣,當客戶端有因特網的數據要求時, Proxy 會幫用戶去向目的地取得用戶所需要的數據。所以,當客戶端指定 WWW 的代理服務器之後,用戶的所有 WWW 相關要求就會通過代理服務器去捉取。

“IT小百科”之“路由、代理、NAT技術詳解”

代理分類:HTTP代理;socks代理;VPN代理;FTP代理等

2、代理服務器的原理和運作流程

工作原理:

客戶端首先與代理服務器創建連接,接著根據代理服務器所使用的代理協議,請求對目標服務器創建連接、或者獲得目標服務器的指定資源(如:文件)。

在後一種情況中,代理服務器可能對目標服務器的資源下載至本地緩存,如果客戶端所要獲取的資源在代理服務器的緩存之中,則代理服務器並不會向目標服務器發送請求,而是直接返回緩存了的資源。一些代理協議允許代理服務器改變客戶端的原始請求、目標服務器的原始響應,以滿足代理協議的需要。代理服務器的選項和設置在計算機程序中,通常包括一個"防火牆",允許用戶輸入代理地址,它會遮蓋他們的網絡活動,可以允許繞過互聯網過濾實現網絡訪問。

運作流程:

“IT小百科”之“路由、代理、NAT技術詳解”

cache的存在,可以做假象的web加速;

當Proxy的快取擁有用戶所想要的數據時

· a. Client 端向 Server 端發送一個數據需求封包;

· b. Server 端接收之後,先比對這個封包的『來源』與預計要前往的『目標』網站是否為可接受? 如果來源與目標都是合法的,或者說,來源與目標網站我們的 Proxy 都能幫忙取得資料時,那麼 Server 端會開始替 Client 取得資料。這個步驟中比較重要的就是『比對政策』啦,有點像是認證的感覺啦;

· c. Server 首先會檢查自己快取 (新的數據可能在內存中,較舊的數據則放置在硬盤上) 數據, 如果有 Client 所需的數據,那就將數據準備取出,而不經過向 Internet 要求數據的程序;

· 最後當然就是將數據回傳給 Client 端!

當Proxy的快取沒有用戶所想要的數據時:

1) Client 端向 Server 端發送一個數據需求封包;

2) Server 端接收之後,開始進行政策比對;

3) Server 發現快取並沒有 Client 所需要的資料,準備前往因特網抓取數據;

4) Server 開始向 Internet 發送要求與取得相關資料;

5) 最後當然就是將數據回傳給 Client 端囉!

3、基本功能

(1) 充當局域網與外部網絡的連接出口 充當局域網與外部網絡的連接出口,同時將內部網絡結構的狀態對外屏蔽起來,使外部不能直接訪問內部網絡。從這一點上說,代理服務器就充當的網關。

(2)作為防火牆 代理服務器.可以保護局域網的安全,起防火牆的作用。通過設置防火牆,為公司內部的網絡提供安全邊界,防止外界的侵入。 (3)網址過濾和訪問權限限制 代理服務器可以設置IP地址過濾,對外界或內部的Internet地址進行過濾,限制不同用戶的訪問權限。例如代理服務器可以用來限制封鎖IP地址,禁止用戶對某些網頁進行瀏覽。 (4)提高訪問速度 代理服務器將遠程服務器提供的數據保存在自己的硬盤上,如果有許多用戶同時使用這一個代理服務器,他們對Internet站點所有的訪問都會經由這臺代理服務器來實現。當有人訪問過某一站點後,所訪問站點的內容便會被保存在代理服務器的硬盤上,如果下一次有人再要訪問這個站點時,這些內容便會直接從代理服務器磁盤中取得,而不必再次連接到遠程服務器上去取。因此,它可以節約帶寬、提高訪問速度。

三、NAT網絡地址轉換技術

1、先了解幾個基本名詞

公有IP地址:也叫全局地址,是指合法的IP地址,它是由NIC(網絡信息中心)或者ISP(網絡服務提供商)分配的地址,對外代表一個或多個內部局部地址,是全球統一的可尋 址的地址。

私有IP地址:也叫內部地址,屬於非註冊地址,專門為組織機構內部使用。因特網分配編號委員會(IANA)保留了3塊IP地址做為私有IP地址:

10.0.0.0 ——— 10.255.255.255

172.16.0.0——— 172.16.255.255

192.168.0.0———192.168.255.255

地址池:地址池是有一些外部地址(全球唯一的IP地址)組合而成,我們稱這樣的一個地址集合為地址池。在內部網絡的數據包通過地址轉換到達外部網絡時,將會在地址池中選擇某個IP地址作為數據包的源IP地址,這樣可以有效的利用用戶的外部地址,提高訪問外部網絡的能力。

2、什麼是NAT?

NAT(Network Address Translation,網絡地址轉換)是1994年提出的。它是一個IETF(Internet Engineering Task Force, Internet工程任務組)標準,允許一個整體機構以一個公用IP(Internet Protocol)地址出現在Internet上。顧名思義,它是一種把內部私有網絡地址(IP地址)翻譯成合法網絡IP地址的技術,如下圖所示。因此我們可以認為,NAT在一定程度上,能夠有效的解決公網地址不足的問題。

“IT小百科”之“路由、代理、NAT技術詳解”

簡單理解,NAT就是在局域網內部網絡中使用內部地址,而當內部節點要與外部網絡進行通訊時,就在網關(可以理解為出口,打個比方就像院子的門一樣)處,將內部地址替換成公用地址,從而在外部公網(internet)上正常使用,NAT可以使多臺計算機共享Internet連接,這一功能很好地解決了公共 IP地址緊缺的問題。通過這種方法,可以只申請一個合法IP地址,就把整個局域網中的計算機接入Internet中。這時,NAT屏蔽了內部網絡,所有內部網計算機對於公共網絡來說是不可見的,而內部網計算機用戶通常不會意識到NAT的存在。如下圖所示。這裡提到的內部地址,是指在內部網絡中分配給節點的私有IP地址,這個地址只能在內部網絡中使用,不能被路由轉發。

3、NAT的功能

NAT不僅能解決了lP地址不足的問題,而且還能夠有效地避免來自網絡外部的攻擊,隱藏並保護網絡內部的計算機。

1)寬帶分享:這是 NAT 主機的最大功能。

2)安全防護:NAT 之內的 PC 聯機到 Internet 上面時,他所顯示的 IP 是 NAT 主機的公共 IP,所以 Client 端的 PC 當然就具有一定程度的安全了,外界在進行 portscan(端口掃描) 的時候,就偵測不到源Client 端的 PC 。

4、NAT的分類

NAT的分類有三種,即靜態轉換Static Nat、動態轉換Dynamic Nat和端口多路複用OverLoad。

靜態轉換是指將內部網絡的私有IP地址轉換為公有IP地址,IP地址對是一對一的,是一成不變的,某個私有IP地址只轉換為某個公有IP地址。藉助於靜態轉換,可以實現外部網絡對內部網絡中某些特定設備(如服務器)的訪問。

動態轉換是指將內部網絡的私有IP地址轉換為公用IP地址時,IP地址是不確定的,是隨機的,所有被授權訪問上Internet的私有IP地址可隨機轉換為任何指定的合法IP地址。也就是說,只要指定哪些內部地址可以進行轉換,以及用哪些合法地址作為外部地址時,就可以進行動態轉換。動態轉換可以使用多個合法外部地址集。當ISP提供的合法IP地址略少於網絡內部的計算機數量時。可以採用動態轉換的方式。

端口多路複用(Port address Translation,PAT)是指改變外出數據包的源端口並進行端口轉換,即端口地址轉換(PAT,Port Address Translation).採用端口多路複用方式。內部網絡的所有主機均可共享一個合法外部IP地址實現對Internet的訪問,從而可以最大限度地節約IP地址資源。同時,又可隱藏網絡內部的所有主機,有效避免來自internet的攻擊。因此,目前網絡中應用最多的就是端口多路複用方式。

ALG(Application Level Gateway),即應用程序級網關技術:傳統的NAT技術只對IP層和傳輸層頭部進行轉換處理,但是一些應用層協議,在協議數據報文中包含了地址信息。為了使得這些應用也能透明地完成NAT轉換,NAT使用一種稱作ALG的技術,它能對這些應用程序在通信時所包含的地址信息也進行相應的NAT轉換。例如:對於FTP協議的PORT/PASV命令、DNS協議的 "A" 和 "PTR" queries命令和部分ICMP消息類型等都需要相應的ALG來支持。

如果協議數據報文中不包含地址信息,則很容易利用傳統的NAT技術來完成透明的地址轉換功能,通常我們使用的如下應用就可以直接利用傳統的NAT技術:HTTP、TELNET、FINGER、NTP、NFS、ARCHIE、RLOGIN、RSH、RCP等。

NAT映射圖解:

“IT小百科”之“路由、代理、NAT技術詳解”

5、NAT工作原理

地址轉換:當私有網主機和公共網主機通信的IP包經過NAT網關時,將IP包中的源IP或目的IP在私有IP和NAT的公共IP之間進行轉換。

如下圖所示,NAT網關有2個網絡端口,其中公共網絡端口的IP地址是統一分配的公共 IP,為202.20.65.5;私有網絡端口的IP地址是保留地址為192.168.1.1。私有網中的主機192.168.1.2向公共網中的主機202.20.65.4發送了1個IP包(Dst=202.20.65.4,Src=192.168.1.2)。

“IT小百科”之“路由、代理、NAT技術詳解”

當IP包經過NAT網關時,NAT Gateway會將IP包的源IP轉換為NAT Gateway的公共IP並轉發到公共網,此時IP包(Dst=202.20.65.4,Src=202.20.65.5)中已經不含任何私有網IP的信息。由於IP包的源IP已經被轉換成NAT Gateway的公共IP,Web Server發出的響應IP包(Dst= 202.20.65.5,Src=202.20.65.4)將被髮送到NAT Gateway。

這時,NAT Gateway會將IP包的目的IP轉換成私有網中主機的IP,然後將IP包(Des=192.168.1.2,Src=202.20.65.4)轉發到私有網。對於通信雙方而言,這種地址的轉換過程是完全透明的。轉換示意圖如下。

“IT小百科”之“路由、代理、NAT技術詳解”

如果內網主機發出的請求包未經過NAT,那麼當Web Server收到請求包,回覆的響應包中的目的地址就是私有網絡IP地址,在Internet上無法正確送達,導致連接失敗。

連接跟蹤:

在上述過程中,NAT Gateway在收到響應包後,就需要判斷將數據包轉發給誰。此時如果子網內僅有少量客戶機,可以用靜態NAT手工指定;但如果內網有多臺客戶機,並且各自訪問不同網站,這時候就需要連接跟蹤(connection track)。如下圖所示:

“IT小百科”之“路由、代理、NAT技術詳解”

在NAT Gateway收到客戶機發來的請求包後,做源地址轉換,並且將該連接記錄保存下來,當NAT Gateway收到服務器來的響應包後,查找Track Table,確定轉發目標,做目的地址轉換,轉發給客戶機。

端口轉換:

以上述客戶機訪問服務器為例,當僅有一臺客戶機訪問服務器時,NAT Gateway只須更改數據包的源IP或目的IP即可正常通訊。但是如果Client A和Client B同時訪問Web Server,那麼當NAT Gateway收到響應包的時候,就無法判斷將數據包轉發給哪臺客戶機,如下圖所示。

“IT小百科”之“路由、代理、NAT技術詳解”

此時,NAT Gateway會在Connection Track中加入端口信息加以區分。如果兩客戶機訪問同一服務器的源端口不同,那麼在Track Table里加入端口信息即可區分,如果源端口正好相同,那麼在實行SNAT和DNAT的同時對源端口也要做相應的轉換,如下圖所示。

“IT小百科”之“路由、代理、NAT技術詳解”

四、路由、代理服務器、NAT區別

1、代理服務器和NAT區別

應用的區別, NAT 設備是網絡基礎設備之一, 解決的是IP不足的問題,而代理服務器則是更貼近具體應用。

例如: 通過代理服務器進行"翻牆", 另外像迅遊這樣的加速器, 也是使用代理服務器實現的

底層實現的區別, NAT 是工作在網絡層的, 直接對IP地址進行替換,而代理服務器往往工作在應用層。

使用範圍的區別, NAT 一般在局域網的出口部署,而代理服務器可以在局域網做, 也可以在廣域網做, 也可以跨網。

部署位置的區別, NAT 一般集成在防火牆, 路由器等硬件設備上,而代理服務器則是一個軟件程序, 需要部署在服務器上

2、路由與NAT的區別

本質區別:數據包通過路由可以從一個網絡到另一個網絡,他是通過數據包的目的IP和源IP實現的,當一個數據包進入路由器是,路由器會根據她的目標ip和源ip在路由表中查找,並將數據包原封不動的傳向路由器的某個端口。而數據包通過NAT,NAT將會根據規則將數據包中的源ip和目標IP改變,並在NAT機器上做改變記錄。

簡而言之,路由不改變數據包包頭信息,NAT則改變;

表面區別:路由打通的兩個網段地位是公平的,既都是公網或都是私網,理解起來比較簡單,因為路由不改變包頭信息,所以如果用路由連接公網和私網的話,目的地址為私網(192.168.1.2)的數據包在公網上找不到歸宿。其實路由表裡面也沒有相關的路由信息。

NAT打通的可以是兩個公平的網絡,也可以是一個內網和一個外網。

五、什麼時候用路由?什麼時候用代理?什麼時候用NAT?

1、公網與公網之間訪問用路由

2、專網之間訪問多數用路由,例如:政務專網、金融專網、集團專網、能源專網等

3、私網中不同網段之間訪問多數用路由

4、內網通過路由器訪問公網時多數用NAT

5、突破自身IP訪問限制,訪問一些國外的站點;比如Google,Facebook等網站時用代理

6、提高訪問速度可以用代理服務器,代理服務器都設置一個較大的硬盤緩衝區,當有外界的信息通過時,同時也將其保存到緩衝區中,當其他用戶再訪問相同的信息時, 則直接由緩衝區中取出信息,傳給用戶,以提高訪問速度;

7、隱藏真實IP用代理


分享到:


相關文章: